ac8835659e
vulkan: Defer descriptor set work to the Vulkan thread
...
Move descriptor lookup and update code to a separate thread. Delaying
this removes work from the main GPU thread and allows creating
descriptor layouts on another thread. This reduces a bit the workload
of the main thread when new pipelines are encountered.
2021-07-22 21:51:29 -04:00
2f3c3dfc10
vulkan: Rework descriptor allocation algorithm
...
Create multiple descriptor pools on demand. There are some degrees of
freedom what is considered a compatible pool to avoid wasting large
pools on small descriptors.
2021-07-22 21:51:29 -04:00
5ed871398b
vk_graphics_pipeline: Generate specialized pipeline config functions and improve code
2021-07-22 21:51:29 -04:00
f4ace63957
shader: Accelerate pipeline transitions and use dirty flags for shaders
2021-07-22 21:51:29 -04:00
20e86fd615
shader: Fix BFE s32 undefined check
...
Our unit tests were hitting this exception.
2021-07-22 21:51:29 -04:00
8fda599a31
vk_compute_pipeline: Fix index comparison oversight on compute texture buffers
2021-07-22 21:51:29 -04:00
50eb03382e
shader: Fix error checking in bitfieldExtract and implement bitfieldInsert folding
2021-07-22 21:51:29 -04:00
0c0ee9d897
vulkan_device: Require shaderClipDistance and shaderCullDistance features
2021-07-22 21:51:29 -04:00
5b1b06f11e
vk_graphics_pipeline: Guard against non-tessellation pipelines using patches
2021-07-22 21:51:29 -04:00
57464e3b72
shader: Fix storage type when reading patches on tess control
2021-07-22 21:51:29 -04:00
d2b54c6e42
shader: Fix VMNMX selector B
2021-07-22 21:51:29 -04:00
2dc86372c7
shader: Fix bugs and build issues on GCC
2021-07-22 21:51:29 -04:00
7a1f296cda
shader: Fix render targets with null attachments
2021-07-22 21:51:29 -04:00
155be4a8d3
shader: Increase the maximum number of storage buffers
...
Compute shaders spill uniform buffers on storage buffers, increasing the
expected number.
2021-07-22 21:51:29 -04:00
fe25f42403
shader: Remove identity removal pass for better build times
2021-07-22 21:51:29 -04:00
0c7230a606
shader: Add more strict validation the pass
2021-07-22 21:51:29 -04:00
25949b864c
shader: Fix forward referencing identity instructions when inserting phi
2021-07-22 21:51:29 -04:00
92a01984e6
shader: Remove invalidated blocks in dead code elimination pass
2021-07-22 21:51:29 -04:00
aece958c2b
shader: Add missing UndoUse case for GetSparseFromOp
2021-07-22 21:51:29 -04:00
0ace34575c
shader: Require dual source blending
2021-07-22 21:51:29 -04:00
21e3382830
shader: Simplify code in opcodes.h to fix Intellisense
...
Avoid using std::array to fix Intellisense not properly compiling this
code and disabling itself on all files that include it.
While we are at it, change the code to use u8 instead of size_t for the
number of instructions in an opcode.
2021-07-22 21:51:29 -04:00
d10cf55353
shader: Implement indexed textures
2021-07-22 21:51:28 -04:00
7a9dc78398
shader: Refactor atomic_operations_global_memory
2021-07-22 21:51:28 -04:00
427951d6fe
shader: add missing include guard in half_floating_point_helper.h
2021-07-22 21:51:28 -04:00
c8f9772d65
shader: Fix gcc warnings
2021-07-22 21:51:28 -04:00
75dee55486
shader: Inline common Value getters
2021-07-22 21:51:28 -04:00
23182fa59c
shader: Intrusively store in a block if it's sealed or not
2021-07-22 21:51:28 -04:00
eed6da55b8
cmake: Link to common in shader_recompiler
2021-07-22 21:51:28 -04:00
cc0fcd1b8d
shader: Improve goto removal algorithm complexity
...
Find sibling node containing a nephew searching from the nephew itself
instead of the uncle.
2021-07-22 21:51:28 -04:00
f66851e376
shader: Use memset to reset instruction arguments
2021-07-22 21:51:28 -04:00
c84bbd9e44
shader: Inline common Value functions into the header
2021-07-22 21:51:28 -04:00
050e81500c
shader: Move microinstruction header to the value header
2021-07-22 21:51:28 -04:00
e4d1122082
shader: Move siblings check to a separate function and comment them out
2021-07-22 21:51:28 -04:00
4209828646
shader: Intrusively store register values in block for SSA pass
2021-07-22 21:51:28 -04:00
6944cabb89
shader: Inline common Opcode and Inst functions
2021-07-22 21:51:28 -04:00
4bbe530337
shader: Inline common IR::Block methods
2021-07-22 21:51:28 -04:00
24cc298660
shader: Use a small_vector for phi blocks
2021-07-22 21:51:28 -04:00
79c2e43fcd
shader: Calculate number of arguments in an opcode at compile time
2021-07-22 21:51:28 -04:00
dd860b684c
shader: Implement D3D samplers
2021-07-22 21:51:28 -04:00
a8d46a5eae
shader: Add constant propagation for arithmetic right shifts
2021-07-22 21:51:28 -04:00
469f8bb857
shader: Simplify code for local memory
2021-07-22 21:51:28 -04:00
7018e524f5
shader: Add NVN storage buffer fallbacks
...
When we can't track the SSBO origin of a global memory instruction,
leave it as a global memory operation and assume these pointers are in
the NVN storage buffer slots, then apply a linear search in the shader's
runtime.
2021-07-22 21:51:28 -04:00
6325601947
spirv: Fix ViewportMask
2021-07-22 21:51:28 -04:00
5b8afed871
spirv: Replace Constant/ConstantComposite with Const helper
2021-07-22 21:51:28 -04:00
2999028976
shader: Address feedback
2021-07-22 21:51:28 -04:00
881b33da3b
shader: Implement F2F (Imm)
2021-07-22 21:51:28 -04:00
21a878237b
shader: Implement IADD3.CC/.X
2021-07-22 21:51:28 -04:00
f69d0b91ff
shader: Address feedback
2021-07-22 21:51:28 -04:00
080857b60e
shader: Add coarse derivatives
2021-07-22 21:51:28 -04:00
04c459fc8d
shader: Implement fine derivates constant propagation
2021-07-22 21:51:28 -04:00