summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp7
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:
882 case PredCondition::Equal: 882 case PredCondition::Equal:
883 SetPredicate(instr.fsetp.pred3, '(' + op_a + ") == (" + op_b + ')'); 883 SetPredicate(instr.fsetp.pred3, '(' + op_a + ") == (" + op_b + ')');
884 break; 884 break;
885 case PredCondition::LessEqual:
886 SetPredicate(instr.fsetp.pred3, '(' + op_a + ") <= (" + op_b + ')');
887 break;
885 default: 888 default:
886 NGLOG_CRITICAL(HW_GPU, "Unhandled predicate condition: {} (a: {}, b: {})", 889 NGLOG_CRITICAL(HW_GPU, "Unhandled predicate condition: {} (a: {}, b: {})",
887 static_cast<unsigned>(instr.fsetp.cond.Value()), op_a, op_b); 890 static_cast<unsigned>(instr.fsetp.cond.Value()), op_a, op_b);
@@ -933,6 +936,10 @@ private:
933 regs.SetRegisterToFloat(instr.gpr0, 0, 936 regs.SetRegisterToFloat(instr.gpr0, 0,
934 "((" + op_a + ") == (" + op_b + ")) ? 1.0 : 0", 1, 1); 937 "((" + op_a + ") == (" + op_b + ")) ? 1.0 : 0", 1, 1);
935 break; 938 break;
939 case PredCondition::LessEqual:
940 regs.SetRegisterToFloat(instr.gpr0, 0,
941 "((" + op_a + ") <= (" + op_b + ")) ? 1.0 : 0", 1, 1);
942 break;
936 case PredCondition::GreaterThan: 943 case PredCondition::GreaterThan:
937 regs.SetRegisterToFloat(instr.gpr0, 0, 944 regs.SetRegisterToFloat(instr.gpr0, 0,
938 "((" + op_a + ") > (" + op_b + ")) ? 1.0 : 0", 1, 1); 945 "((" + op_a + ") > (" + op_b + ")) ? 1.0 : 0", 1, 1);