diff options
| -rw-r--r-- | src/video_core/engines/shader_bytecode.h | 4 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 7 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h index 67501cf0a..d3095089c 100644 --- a/src/video_core/engines/shader_bytecode.h +++ b/src/video_core/engines/shader_bytecode.h | |||
| @@ -564,6 +564,10 @@ union Instruction { | |||
| 564 | } fmul; | 564 | } fmul; |
| 565 | 565 | ||
| 566 | union { | 566 | union { |
| 567 | BitField<55, 1, u64> saturate; | ||
| 568 | } fmul32; | ||
| 569 | |||
| 570 | union { | ||
| 567 | BitField<48, 1, u64> is_signed; | 571 | BitField<48, 1, u64> is_signed; |
| 568 | } shift; | 572 | } shift; |
| 569 | 573 | ||
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index 09db58ab6..a3daef014 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp | |||
| @@ -1460,9 +1460,10 @@ private: | |||
| 1460 | break; | 1460 | break; |
| 1461 | } | 1461 | } |
| 1462 | case OpCode::Id::FMUL32_IMM: { | 1462 | case OpCode::Id::FMUL32_IMM: { |
| 1463 | regs.SetRegisterToFloat( | 1463 | regs.SetRegisterToFloat(instr.gpr0, 0, |
| 1464 | instr.gpr0, 0, | 1464 | regs.GetRegisterAsFloat(instr.gpr8) + " * " + |
| 1465 | regs.GetRegisterAsFloat(instr.gpr8) + " * " + GetImmediate32(instr), 1, 1); | 1465 | GetImmediate32(instr), |
| 1466 | 1, 1, instr.fmul32.saturate); | ||
| 1466 | break; | 1467 | break; |
| 1467 | } | 1468 | } |
| 1468 | case OpCode::Id::FADD32I: { | 1469 | case OpCode::Id::FADD32I: { |