ameerj
fde8102a41
Remove unneeded newlines, optional Registry in shader params
...
Addressing feedback from Rodrigo
2020-08-16 16:33:21 -04:00
ameerj
31a76410e8
Address feedback, add shader compile notifier, update setting text
2020-08-16 12:02:22 -04:00
ameerj
c02464f64e
Vk Async Worker directly emplace in cache
2020-08-16 12:02:22 -04:00
ameerj
4539073ce1
Address feedback. Bruteforce delete duplicates
2020-08-16 12:02:22 -04:00
ameerj
6ac97405df
Vk Async pipeline compilation
2020-08-16 12:02:22 -04:00
Lioncash
06809ad7bc
vulkan: Silence more -Wmissing-field-initializer warnings
2020-08-03 12:28:57 -04:00
Lioncash
d43e923990
vk_pipeline_cache: Make use of designated initializers where applicable
2020-07-16 18:32:29 -04:00
ReinUsesLisp
8584a77eb2
vk_pipeline_cache: Avoid hashing and comparing dynamic state when possible
...
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.
2020-06-26 20:57:22 -03:00
ReinUsesLisp
1a84209418
vulkan/fixed_pipeline_state: Move state out of individual structures
2020-06-26 20:57:22 -03:00
ReinUsesLisp
c387a72c76
fixed_pipeline_state: Add requirements for VK_EXT_extended_dynamic_state
...
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.
2020-06-26 20:55:15 -03:00
bunnei
5633887569
Merge pull request #3986 from ReinUsesLisp/shader-cache
...
shader_cache: Implement a generic runtime shader cache
2020-06-12 23:14:48 -04:00
ReinUsesLisp
abcea1bb18
rasterizer_cache: Remove files and includes
...
The rasterizer cache is no longer used. Each cache has its own generic
implementation optimized for the cached data.
2020-06-07 04:32:57 -03:00
ReinUsesLisp
678f95e4f8
vk_pipeline_cache: Use generic shader cache
...
Trivial port the generic shader cache to Vulkan.
2020-06-07 04:32:57 -03:00
ReinUsesLisp
4a6b9a1a71
vk_rasterizer: Implement storage texels
...
This is the equivalent of an image buffer on OpenGL.
- Used by Octopath Traveler
2020-06-02 02:16:33 -03:00
bunnei
e68ee43a1a
Merge pull request #3930 from ReinUsesLisp/animal-borders
...
vk_rasterizer: Implement constant attributes
2020-05-31 18:40:17 -04:00
ReinUsesLisp
91dddca26e
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
2020-05-13 04:36:47 -03:00
Fernando Sahmkow
8d15f8b28e
VkPipelineCache: Use a null shader on invalid address.
2020-05-09 20:51:34 -04:00
bunnei
f4ca8e0d3e
Merge pull request #3732 from lioncash/header
...
vulkan: Remove unnecessary includes
2020-05-02 01:36:57 -04:00
bunnei
e6b4311178
Merge pull request #3693 from ReinUsesLisp/clean-samplers
...
shader/texture: Support multiple unknown sampler properties
2020-05-02 00:45:41 -04:00
Lioncash
6c53edd4d3
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.
2020-04-28 21:54:46 -04:00
bunnei
72b73d22ab
Merge pull request #3784 from ReinUsesLisp/shader-memory-util
...
shader/memory_util: Deduplicate code
2020-04-28 12:05:50 -04:00
ReinUsesLisp
ddd82ef42b
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.
2020-04-26 01:38:51 -03:00
ReinUsesLisp
72deb773fd
shader_ir: Turn classes into data structures
2020-04-23 18:00:06 -03:00
ReinUsesLisp
8c37cd1af6
vk_pipeline_cache: Unify pipeline cache keys into a single operation
...
This allows us to call Common::CityHash and std::memcmp only once for
GraphicsPipelineCacheKey. While we are at it, do the same for compute.
2020-04-23 17:34:16 -03:00
bunnei
bf2ddb8fd5
Merge pull request #3677 from FernandoS27/better-sync
...
Introduce Predictive Flushing and Improve ASYNC GPU
2020-04-22 22:09:38 -04:00
ReinUsesLisp
d9463f4562
vk_pipeline_cache: Fix unintentional memcpy into optional
...
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.
2020-04-22 21:36:05 -03:00
Fernando Sahmkow
644588fd88
ShaderCache/PipelineCache: Cache null shaders.
2020-04-22 11:36:25 -04:00
ReinUsesLisp
548dd27f45
fixed_pipeline_state: Pack rasterizer state
...
Reduce FixedPipelineState's size to 600 bytes.
2020-04-18 19:22:57 -03:00
ReinUsesLisp
ab6704f20c
fixed_pipeline_state: Pack attribute state
...
Reduce FixedPipelineState's size from 1384 to 664 bytes
2020-04-18 19:21:19 -03:00
ReinUsesLisp
2905142f47
renderer_vulkan: Drop Vulkan-Hpp
2020-04-10 22:49:02 -03:00
Fernando Sahmkow
ea535d9470
Shader/Pipeline Cache: Use VAddr instead of physical memory for addressing.
2020-04-06 09:23:07 -04:00
ReinUsesLisp
98d85cdc20
vk_pipeline_cache: Remove unused variable
2020-03-18 20:03:19 -03:00
ReinUsesLisp
8baf98e439
vk_rasterizer: Reimplement clears with vkCmdClearAttachments
2020-03-15 03:40:41 -03:00
ReinUsesLisp
7acebd7eb6
vk_shader_decompiler: Use registry for specialization
2020-03-13 18:33:05 -03:00
ReinUsesLisp
e8efd5a901
video_core: Rename "const buffer locker" to "registry"
2020-03-09 18:40:06 -03:00
Rodrigo Locatti
22e825a3bc
Merge pull request #3301 from ReinUsesLisp/state-tracker
...
video_core: Remove gl_state and use a state tracker based on dirty flags
2020-03-09 18:34:37 -03:00
ReinUsesLisp
96ac3d518a
gl_rasterizer: Remove dirty flags
2020-02-28 16:39:27 -03:00
ReinUsesLisp
1e9213632a
vk_shader_decompiler: Implement indexed textures
...
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).
2020-02-24 01:26:07 -03:00
ReinUsesLisp
1690f1adba
vk_shader_decompiler: Disable default values on unwritten render targets
...
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.
2020-01-24 01:16:21 -03:00
ReinUsesLisp
6888d776ff
vk_pipeline_cache: Initial implementation
...
Given a pipeline key, this cache returns a pipeline abstraction (for
graphics or compute).
2020-01-06 22:02:26 -03:00
ReinUsesLisp
b392a5986e
vk_pipeline_cache: Add file and define descriptor update template filler
...
This function allows us to share code between compute and graphics
pipelines compilation.
2020-01-06 22:02:26 -03:00