Commit graph

217 commits

Author SHA1 Message Date
ReinUsesLisp
5c6dc51c69 shader: Read branch conditions from an instruction
Fixes the identity removal pass.
2021-07-22 21:51:32 -04:00
ReinUsesLisp
0b3a3f35e8 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
lat9nq
69210028b4 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
ReinUsesLisp
f2ab3993eb shader: Use a non-trivial dummy to construct ASL node union 2021-07-22 21:51:31 -04:00
ReinUsesLisp
f2ae32fa76 glasm: Initial implementation of phi nodes on GLASM 2021-07-22 21:51:31 -04:00
ReinUsesLisp
03f6d424ce 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
ReinUsesLisp
cef625a9b2 shader: Add floating-point rounding to I2F 2021-07-22 21:51:31 -04:00
ReinUsesLisp
6c0a696179 glasm: Implement basic GLASM instructions 2021-07-22 21:51:30 -04:00
ReinUsesLisp
d9b9c10f32 glasm: Add GLASM backend infrastructure 2021-07-22 21:51:30 -04:00
ameerj
a739b6933e shader: ISET.X implementation 2021-07-22 21:51:30 -04:00
FernandoS27
007a11014c shader: Optimize NVN Fallthrough 2021-07-22 21:51:30 -04:00
FernandoS27
fb20effc51 shader: Stub SR_AFFINITY 2021-07-22 21:51:30 -04:00
ameerj
455872a4af shader: Implement Int32 SUATOM/SURED 2021-07-22 21:51:30 -04:00
ReinUsesLisp
5ca5988c63 shader: Initial OpenGL implementation 2021-07-22 21:51:30 -04:00
FernandoS27
6aff9b4476 shader: Address feedback 2021-07-22 21:51:29 -04:00
FernandoS27
a2fac91c47 shader: Implement VertexA stage 2021-07-22 21:51:29 -04:00
FernandoS27
cb0587f841 shader: Implement delegation of Exit to dispatcher on CFG 2021-07-22 21:51:29 -04:00
ameerj
031e91e7e5 shader: Fix IADD3.CC 2021-07-22 21:51:29 -04:00
ReinUsesLisp
c8b0377a67 shader: Fix VMNMX selector B 2021-07-22 21:51:29 -04:00
ReinUsesLisp
1d861a6e90 shader: Remove identity removal pass for better build times 2021-07-22 21:51:29 -04:00
ReinUsesLisp
12d7acf707 shader: Add missing UndoUse case for GetSparseFromOp 2021-07-22 21:51:29 -04:00
ReinUsesLisp
04e042d3b3 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
ReinUsesLisp
052317e748 shader: Implement indexed textures 2021-07-22 21:51:28 -04:00
ameerj
3089fb1e2a shader: Refactor atomic_operations_global_memory 2021-07-22 21:51:28 -04:00
ameerj
8202ace3e9 shader: add missing include guard in half_floating_point_helper.h 2021-07-22 21:51:28 -04:00
ReinUsesLisp
172942911a shader: Fix gcc warnings 2021-07-22 21:51:28 -04:00
ReinUsesLisp
16a869571e shader: Inline common Value getters 2021-07-22 21:51:28 -04:00
ReinUsesLisp
9f5c43dd53 shader: Intrusively store in a block if it's sealed or not 2021-07-22 21:51:28 -04:00
ReinUsesLisp
3c1229a7c5 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
ReinUsesLisp
1a44a5cafa shader: Use memset to reset instruction arguments 2021-07-22 21:51:28 -04:00
ReinUsesLisp
9edc2bd70f shader: Inline common Value functions into the header 2021-07-22 21:51:28 -04:00
ReinUsesLisp
6236b611cf shader: Move microinstruction header to the value header 2021-07-22 21:51:28 -04:00
ReinUsesLisp
7769517fc0 shader: Move siblings check to a separate function and comment them out 2021-07-22 21:51:28 -04:00
ReinUsesLisp
7bf134b294 shader: Intrusively store register values in block for SSA pass 2021-07-22 21:51:28 -04:00
ReinUsesLisp
3a39124359 shader: Inline common Opcode and Inst functions 2021-07-22 21:51:28 -04:00
ReinUsesLisp
b6bd6a5bce shader: Inline common IR::Block methods 2021-07-22 21:51:28 -04:00
ReinUsesLisp
8d1327bf78 shader: Use a small_vector for phi blocks 2021-07-22 21:51:28 -04:00
ReinUsesLisp
c44139cda0 shader: Calculate number of arguments in an opcode at compile time 2021-07-22 21:51:28 -04:00
ReinUsesLisp
56aae7efcf shader: Simplify code for local memory 2021-07-22 21:51:28 -04:00
ReinUsesLisp
e54171c1a9 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
FernandoS27
4a97dd4483 shader: Address feedback 2021-07-22 21:51:28 -04:00
FernandoS27
b85c9d8e84 shader: Implement F2F (Imm) 2021-07-22 21:51:28 -04:00
FernandoS27
fbb642f433 shader: Implement IADD3.CC/.X 2021-07-22 21:51:28 -04:00
FernandoS27
2f01c7fb62 shader: Add coarse derivatives 2021-07-22 21:51:28 -04:00
FernandoS27
b1e325f317 shader: Implement fine derivates constant propagation 2021-07-22 21:51:28 -04:00
FernandoS27
6c60109967 shader: Implement SR_Y_DIRECTION 2021-07-22 21:51:28 -04:00
ReinUsesLisp
99e6cd3916 shader: Fix Phi node types 2021-07-22 21:51:28 -04:00
ReinUsesLisp
6d540c6f2e shader: Fix memory barriers 2021-07-22 21:51:28 -04:00
ameerj
bfdb38404c shader: Implement BFE and BFI CC
Fix two bugs in BFI.
2021-07-22 21:51:28 -04:00
ReinUsesLisp
ad1507b4a5 shader: Implement SampleMask 2021-07-22 21:51:28 -04:00