Commit Graph

140 Commits

Author SHA1 Message Date
06ca911621 shader_recompiler: Remove unnecessary [[nodiscard]] instances
[[nodiscard]] doesn't do anything on functions with a void return type
and causes superfluous warnings.
2021-07-26 04:23:59 -04:00
49946cf780 shader_recompiler, video_core: Resolve clang errors
Silences the following warnings-turned-errors:
-Wsign-conversion
-Wunused-private-field
-Wbraced-scalar-init
-Wunused-variable

And some other errors
2021-07-22 21:51:40 -04:00
11f04f1022 shader: Ignore global memory ops on devices lacking int64 support 2021-07-22 21:51:40 -04:00
7dafa96ab5 shader: Rework varyings and implement passthrough geometry shaders
Put all varyings into a single std::bitset with helpers to access it.

Implement passthrough geometry shaders using host's.
2021-07-22 21:51:39 -04:00
4397053d5c shader: Remove IAbs64 2021-07-22 21:51:39 -04:00
808ef97a08 shader: Move loop safety tests to code emission 2021-07-22 21:51:39 -04:00
61cd7dd301 shader: Add logging 2021-07-22 21:51:35 -04:00
373f75d944 shader: Add shader loop safety check settings
Also add a setting for enable Nsight Aftermath.
2021-07-22 21:51:35 -04:00
8f3043c3cf Revert "glasm: Skip phi moves on undefined instructions"
Causes regressions on Bowser's Fury.
2021-07-22 21:51:33 -04:00
586c785366 glasm: Skip phi moves on undefined instructions 2021-07-22 21:51:33 -04:00
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
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
b541f5e5e3 shader: Implement VertexA stage 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
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
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
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
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
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
183855e396 shader: Implement tessellation shaders, polygon mode and invocation id 2021-07-22 21:51:27 -04:00
b126987c59 shader: Implement transform feedbacks and define file format 2021-07-22 21:51:27 -04:00
f263760c5a shader: Implement geometry shaders 2021-07-22 21:51:27 -04:00
a6cef71cc0 shader: Implement OUT 2021-07-22 21:51:27 -04:00
5c61e860e4 shader: Implement SR_THREAD_KILL 2021-07-22 21:51:27 -04:00
3db2b3effa shader: Implement ATOM/S and RED 2021-07-22 21:51:27 -04:00