diff options
author | bunnei <bunneidev@gmail.com> | 2018-04-29 21:59:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-29 21:59:33 +0200 |
commit | 869075867bf7bda1323ee2bb32ec45a89dfdb0ca (patch) | |
tree | 6a0c7db0c07e9b1cc919c1bd017451be5354d2b1 | |
parent | Merge pull request #416 from bunnei/shader-ints-p3 (diff) | |
parent | Shaders: Implemented predicate condition 3 (LessEqual) in the fset and fsetp instructions. (diff) | |
download | yuzu-869075867bf7bda1323ee2bb32ec45a89dfdb0ca.tar yuzu-869075867bf7bda1323ee2bb32ec45a89dfdb0ca.tar.gz yuzu-869075867bf7bda1323ee2bb32ec45a89dfdb0ca.tar.bz2 yuzu-869075867bf7bda1323ee2bb32ec45a89dfdb0ca.tar.lz yuzu-869075867bf7bda1323ee2bb32ec45a89dfdb0ca.tar.xz yuzu-869075867bf7bda1323ee2bb32ec45a89dfdb0ca.tar.zst yuzu-869075867bf7bda1323ee2bb32ec45a89dfdb0ca.zip |
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index 27190cc45..96d39c5c7 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp @@ -882,6 +882,9 @@ private: case PredCondition::Equal: SetPredicate(instr.fsetp.pred3, '(' + op_a + ") == (" + op_b + ')'); break; + case PredCondition::LessEqual: + SetPredicate(instr.fsetp.pred3, '(' + op_a + ") <= (" + op_b + ')'); + break; default: NGLOG_CRITICAL(HW_GPU, "Unhandled predicate condition: {} (a: {}, b: {})", static_cast<unsigned>(instr.fsetp.cond.Value()), op_a, op_b); @@ -933,6 +936,10 @@ private: regs.SetRegisterToFloat(instr.gpr0, 0, "((" + op_a + ") == (" + op_b + ")) ? 1.0 : 0", 1, 1); break; + case PredCondition::LessEqual: + regs.SetRegisterToFloat(instr.gpr0, 0, + "((" + op_a + ") <= (" + op_b + ")) ? 1.0 : 0", 1, 1); + break; case PredCondition::GreaterThan: regs.SetRegisterToFloat(instr.gpr0, 0, "((" + op_a + ") > (" + op_b + ")) ? 1.0 : 0", 1, 1); |