mirror of
https://github.com/PabloMK7/citra.git
synced 2025-02-17 10:58:38 +01:00
* shader_jit: Add conditional unit-tests Tests all permutations of X, Y, AND, OR with each possible input value. * video_core: Fix shader-interpreter conditional-code initialization Rather than reserving the incoming state of the conditional codes, the shader-interpreter was setting them both to false. In pretty much all cases, the initial state of a shaderunit can be zero-initialized statically. Just running the interpreter shouldn't necessarily reset the conditional codes though. The JIT loads incoming conditional codes while the shader-interpreter resets them to false. This makes the interpreter match the behavior of the shader-jit. * shader_jit_a64: Fix/optimize conditional evaluation Fix some of the regressions introduced by the previous optimization. EOR does not support a constant of `0` in its immediate. In these cases the COND{0,1} registers can be utilized immediately. * shader_jit_x64: Fix conditional evaluation extended-bit hazard The unit test seems to have identified a bug in the x64 jit too. The x64 jit was doing 32-bit comparisons despite the condition flags being 8-bit values and is sensitive to garbage being in the upper 24 bits of the register. This is fixed by using the proper 8-bit register types rather than the 32-bit ones(`eax,`ebx` -> `al`, `bl`). * shader_jit_x64: Zero-extend conditional-code bytes `mov` was doing a partial update of bits within the register, allowing garbage to be introduced in the upper bits of the register.
Description
Languages
cpp
64.5%
C++
31.1%
Kotlin
3.5%
CMake
0.6%
GLSL
0.2%