Commit Graph

170 Commits

Author SHA1 Message Date
6fa17f3372 shader_recompiler/EXIT: increment output register on failed enable test 2022-03-17 22:09:31 -04:00
1415542f73 shader_recompiler: Implement LDC.IS address mode 2022-03-16 11:05:04 -04:00
c78c8190d5 shader_recompiler/LOP3: Use brute force python results within switch/case.
Thanks to @asLody for optimizing this function. This raised the focus that this function should be optimized more.

The current table assumes that the host GPU is able to invert for free, so only AND,OR,XOR are accumulated in the performance metrik.

Performance results:

Instructions
0: 8
1: 30
2: 114
3: 80
4: 24

Latency
0: 8
1: 30
2: 194
3: 24
2022-03-08 09:44:28 +01:00
74e6e3623f video_minimum_maximum: Implement src operand selectors
Used by Pokemon Legends: Arceus
2022-01-27 14:55:08 -05:00
7f13104c17 shader: Support out of bound local memory reads and immediate writes
Support ignoring immediate out of bound writes. Writing dynamically out
of bounds is not yet supported (e.g. R0+0x4).

Reading out of bounds yields zero. This is supported checking for the
size from the IR; if the input is immediate, the optimization passes
will drop it.
2021-07-22 21:51:41 -04:00
fc7bed21b5 shader: Implement ISETP.X 2021-07-22 21:51:40 -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
b9069c7891 shader: Account for 33-bit IADD3 scenario 2021-07-22 21:51:40 -04:00
b21bf79bd2 shader: Only apply shift on register mode for IADD3 2021-07-22 21:51:39 -04:00
a7536825df shader_recompiler: Fix IADD3 input partitioning 2021-07-22 21:51:39 -04:00
61cd7dd301 shader: Add logging 2021-07-22 21:51:35 -04:00
487057b8d2 shader: Comment why the array component is not read in TMML 2021-07-22 21:51:35 -04:00
3c125d4134 tmml: Remove index component from coords vec
The lod query functions exposed by the rendering API's do not make use of the texturearray layer indexing.
2021-07-22 21:51:35 -04:00
ec9a78885e shader: Add 2D and 3D variants to SUATOM and SURED
Used by Claybook.
2021-07-22 21:51:34 -04:00
4f8b68fb04 shader: Avoid CPU side undefined behavior on I2F 2021-07-22 21:51:34 -04:00
05d41fa9b7 shader: Add support for "negative" and unaligned offsets
"Negative" offsets don't exist. They are shown as such due to a bug in
nvdisasm.

Unaligned offsets have been proved to read the aligned offset. For
example, when reading an U32, if the offset is 6, the offset read will
be 4.
2021-07-22 21:51:34 -04:00
5d170de0b5 shader: Implement ISCADD32I 2021-07-22 21:51:34 -04:00
d093522fac shader: Fix ImageWrite indexing 2021-07-22 21:51:34 -04:00
b659212dbd shader: Fix TMML queries 2021-07-22 21:51:34 -04:00
b7764c3a79 shader: Handle host exceptions 2021-07-22 21:51:34 -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
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
09dc23f971 shader: ISET.X implementation 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
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
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
469f8bb857 shader: Simplify code for local memory 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
f18a6dd1bd shader: Implement SR_Y_DIRECTION 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
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
09165ae189 shader: Document and relax cache control on surface instructions 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
dd3432d357 internal_stage_buffer_entry_read: Remove pragma optimize off 2021-07-22 21:51:27 -04:00
4b0172f6de shader: Stub SR_INVOCATION_INFO 2021-07-22 21:51:27 -04:00
f712084147 shader: Stub ISBERD 2021-07-22 21:51:27 -04:00
2516829e4c shader: Fix CC in I2I 2021-07-22 21:51:27 -04:00
415c7e46ed shader: Simplify FLO and throw on CC 2021-07-22 21:51:27 -04:00
2ed80f6b1e shader: Implement LOP CC 2021-07-22 21:51:27 -04:00