mirror of
https://github.com/PabloMK7/citra.git
synced 2024-12-26 17:37:19 +00:00
52f06f757f
* 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. |
||
---|---|---|
.ci | ||
.github | ||
CMakeModules | ||
dist | ||
externals | ||
hooks | ||
src | ||
tools | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
CMakeLists.txt | ||
CONTRIBUTING.md | ||
Doxyfile | ||
license.txt | ||
README.md |