| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
The "VK" prefix predates the "Vulkan" namespace. It was carried around
the codebase for consistency. "VKDevice" currently is a bad alias with
"VkDevice" (only an upcase character of difference) that can cause
confusion. Rename all instances of it.
|
|
|
|
| |
Allows sharing Vulkan wrapper code between different rendering backends.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The current texture cache has several points that hurt maintainability
and performance. It's easy to break unrelated parts of the cache
when doing minor changes. The cache can easily forget valuable
information about the cached textures by CPU writes or simply by its
normal usage.The current texture cache has several points that hurt
maintainability and performance. It's easy to break unrelated parts
of the cache when doing minor changes. The cache can easily forget
valuable information about the cached textures by CPU writes or simply
by its normal usage.
This commit aims to address those issues.
|
|
|
|
|
|
|
| |
fmt now automatically prints the numeric value of an enum class member
by default, so we don't need to use casts any more.
Reduces the line noise a bit.
|
|
|
|
|
| |
Cleans out the rest of the occurrences of variable shadowing and makes
any further occurrences of shadowing compiler errors.
|
|
|
|
|
|
|
|
| |
Force early fragment tests when the 3D method is enabled.
The established pipeline cache takes care of recompiling if needed.
This is implemented only on Vulkan to avoid invalidating the shader
cache on OpenGL.
|
|
|
|
| |
Co-Authored-By: Rodrigo Locatti <reinuseslisp@airmail.cc>
|
| |
|
|
|
|
| |
Used by various textures in many titles, e.g. SSBU menu.
|
|
|
|
|
|
|
|
|
| |
Vulkan has requirements for primitive topologies that don't play nicely
with yuzu's. Since it's only 4 bits, we can move it to fixed state
without changing the size of the pipeline key.
- Fixes a regression on recent Nvidia drivers on Fire Emblem: Three
Houses.
|
|
|
|
|
|
|
|
|
| |
Now that the GPU is initialized when video backends are initialized,
it's no longer needed to query components once the game is running: it
can be done when yuzu is booting.
This allows us to pass components between constructors and in the
process remove all Core::System references in the video backend.
|
|
|
|
| |
Addressing feedback from Rodrigo
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
With extended dynamic states, some bytes don't have to be collected from
the pipeline key, hence we can avoid hashing and comparing them on
lookups.
|
| |
|
|
|
|
|
|
|
| |
This moves dynamic state present in VK_EXT_extended_dynamic_state to a
separate structure in FixedPipelineState. This is structure is at the
bottom allowing us to hash and memcmp only when the extension is not
supported.
|
|\
| |
| | |
shader_cache: Implement a generic runtime shader cache
|
| |
| |
| |
| |
| | |
The rasterizer cache is no longer used. Each cache has its own generic
implementation optimized for the cached data.
|
| |
| |
| |
| | |
Trivial port the generic shader cache to Vulkan.
|
|/
|
|
|
|
| |
This is the equivalent of an image buffer on OpenGL.
- Used by Octopath Traveler
|
|\
| |
| | |
vk_rasterizer: Implement constant attributes
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Constant attributes (in OpenGL known disabled attributes) are not
supported on Vulkan, even with extensions. To emulate this behavior we
return zero on reads from disabled vertex attributes in shader code.
This has no caching cost because attribute formats are not dynamic state
on Vulkan and we have to store it in the pipeline cache anyway.
- Fixes Animal Crossing: New Horizons terrain borders
|
|/ |
|
|\
| |
| | |
vulkan: Remove unnecessary includes
|
| |
| |
| |
| |
| |
| |
| | |
Reduces some header churn and reduces rebuilds when some header
internals change.
While we're at it we can also resolve a missing include in buffer_cache.
|
|\ \
| |/
|/| |
shader/texture: Support multiple unknown sampler properties
|
| | |
|
|\ \
| | |
| | | |
shader/memory_util: Deduplicate code
|
| |/
| |
| |
| |
| |
| |
| |
| | |
Deduplicate code shared between vk_pipeline_cache and gl_shader_cache as
well as shader decoder code.
While we are at it, fix a bug in gl_shader_cache where compute shaders
had an start offset of a stage shader.
|
|/
|
|
|
| |
This allows us to call Common::CityHash and std::memcmp only once for
GraphicsPipelineCacheKey. While we are at it, do the same for compute.
|
|\
| |
| | |
Introduce Predictive Flushing and Improve ASYNC GPU
|
| | |
|
|/
|
|
|
|
|
|
| |
The intention behind this was to assign a float to from an uint32_t, but
it was unintentionally being copied directly into the std::optional.
Copy to a temporary and assign that temporary to std::optional. This can
be replaced with std::bit_cast<float> once we are in C++20.
|
|
|
|
| |
Reduce FixedPipelineState's size to 600 bytes.
|
|
|
|
| |
Reduce FixedPipelineState's size from 1384 to 664 bytes
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| | |
video_core: Remove gl_state and use a state tracker based on dirty flags
|
| | |
|
|/
|
|
|
|
|
| |
Implement accessing textures through an index. It uses the same
interface as OpenGL, the main difference is that Vulkan bindings are
forced to be arrayed (the binding index doesn't change for stacked
textures in SPIR-V).
|
|
|
|
|
|
|
|
|
| |
Some games like The Legend of Zelda: Breath of the Wild assign
render targets without writing them from the fragment shader. This
generates Vulkan validation errors, so silence these I previously
introduced a commit to set "vec4(0, 0, 0, 1)" for these attachments. The
problem is that this is not what games expect. This commit reverts that
change.
|
|
|
|
|
| |
Given a pipeline key, this cache returns a pipeline abstraction (for
graphics or compute).
|
|
This function allows us to share code between compute and graphics
pipelines compilation.
|