Commit Graph

267 Commits

Author SHA1 Message Date
d2b54c6e42 shader: Fix VMNMX selector B 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
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
f18a6dd1bd shader: Implement SR_Y_DIRECTION 2021-07-22 21:51:28 -04:00
50f8007172 shader: Fix Phi node types 2021-07-22 21:51:28 -04:00
0a0818c025 shader: Fix memory barriers 2021-07-22 21:51:28 -04:00
c9e4609d87 spirv: Fix implicit lod type 2021-07-22 21:51:28 -04:00
7cfa403683 spirv: Use explicit lods outside of fragment shaders 2021-07-22 21:51:28 -04:00
dbbd4b5496 spirv: Use ConstOffset instead of Offset when possible 2021-07-22 21:51:28 -04:00
be431f5ed0 shader: Implement BFE and BFI CC
Fix two bugs in BFI.
2021-07-22 21:51:28 -04:00
80940b1706 shader: Implement SampleMask 2021-07-22 21:51:28 -04:00
95815a3883 shader: Implement PIXLD.MY_INDEX 2021-07-22 21:51:28 -04:00
f3473c5143 spirv: Bitcast non-F32 output attributes to their type before store 2021-07-22 21:51:28 -04:00
e3514bcd6b spirv: Implement ViewportMask with NV_viewport_array2 2021-07-22 21:51:28 -04:00
4657cf78fd spirv: Bitcast non-F32 attributes to F32 2021-07-22 21:51:27 -04:00
b0f1255c8c shader: Implement PrimitiveId 2021-07-22 21:51:27 -04:00