summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index 5bd128e4f..054b8b13d 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -1298,9 +1298,17 @@ private:
1298 regs.SetRegisterToFloat(instr.gpr0, 0, op_a, 1, 1, instr.alu.saturate_d); 1298 regs.SetRegisterToFloat(instr.gpr0, 0, op_a, 1, 1, instr.alu.saturate_d);
1299 break; 1299 break;
1300 } 1300 }
1301 case OpCode::Id::F2I_R: { 1301 case OpCode::Id::F2I_R:
1302 case OpCode::Id::F2I_C: {
1302 ASSERT_MSG(instr.conversion.src_size == Register::Size::Word, "Unimplemented"); 1303 ASSERT_MSG(instr.conversion.src_size == Register::Size::Word, "Unimplemented");
1303 std::string op_a = regs.GetRegisterAsFloat(instr.gpr20); 1304 std::string op_a{};
1305
1306 if (instr.is_b_gpr) {
1307 op_a = regs.GetRegisterAsFloat(instr.gpr20);
1308 } else {
1309 op_a = regs.GetUniform(instr.cbuf34.index, instr.cbuf34.offset,
1310 GLSLRegister::Type::Float);
1311 }
1304 1312
1305 if (instr.conversion.abs_a) { 1313 if (instr.conversion.abs_a) {
1306 op_a = "abs(" + op_a + ')'; 1314 op_a = "abs(" + op_a + ')';