a49532c8eb
video_core,shader: Clang-format fixes
2021-07-22 21:51:33 -04:00
9bb3e008c9
shader: Read branch conditions from an instruction
...
Fixes the identity removal pass.
2021-07-22 21:51:32 -04:00
ec6fc5fe78
glasm: Implement TEX and TEXS instructions
...
Remove lod clamp from texture instructions with lod, as this is not
needed (nor supported).
2021-07-22 21:51:31 -04:00
f7a2340205
shader_recompiler: GCC fixes
...
Fixes members of unnamed union not being accessible, and one function
without a declaration.
2021-07-22 21:51:31 -04:00
776ab3ea12
shader: Use a non-trivial dummy to construct ASL node union
2021-07-22 21:51:31 -04:00
bf5e48ffe4
glasm: Initial implementation of phi nodes on GLASM
2021-07-22 21:51:31 -04:00
d54d7de40e
glasm: Rework control flow introducing a syntax list
...
This commit regresses VertexA shaders, their transformation pass has to
be adapted to the new control flow.
2021-07-22 21:51:31 -04:00
3b6a632237
shader: Add floating-point rounding to I2F
2021-07-22 21:51:31 -04:00
6fd190d1ae
glasm: Implement basic GLASM instructions
2021-07-22 21:51:30 -04:00
b10cf64c48
glasm: Add GLASM backend infrastructure
2021-07-22 21:51:30 -04:00
09dc23f971
shader: ISET.X implementation
2021-07-22 21:51:30 -04:00
ee61ec2c39
shader: Optimize NVN Fallthrough
2021-07-22 21:51:30 -04:00
153a77efee
shader: Stub SR_AFFINITY
2021-07-22 21:51:30 -04:00
7ecc6de56a
shader: Implement Int32 SUATOM/SURED
2021-07-22 21:51:30 -04:00
d621e96d0d
shader: Initial OpenGL implementation
2021-07-22 21:51:30 -04:00
c49d56c931
shader: Address feedback
2021-07-22 21:51:29 -04:00
b541f5e5e3
shader: Implement VertexA stage
2021-07-22 21:51:29 -04:00
da936d6ad8
shader: Implement delegation of Exit to dispatcher on CFG
2021-07-22 21:51:29 -04:00
fb14820c86
shader: Fix IADD3.CC
2021-07-22 21:51:29 -04:00
d2b54c6e42
shader: Fix VMNMX selector B
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
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
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
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
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
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
be431f5ed0
shader: Implement BFE and BFI CC
...
Fix two bugs in BFI.
2021-07-22 21:51:28 -04:00