diff options
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 12 |
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 + ')'; |