Răsfoiți Sursa

Added Saturation to FMUL32I

FernandoS27 7 ani în urmă
părinte
comite
259da93567

+ 4 - 0
src/video_core/engines/shader_bytecode.h

@@ -563,6 +563,10 @@ union Instruction {
         BitField<48, 1, u64> negate_b;
     } fmul;
 
+    union {
+        BitField<55, 1, u64> saturate;
+    } fmul32;
+
     union {
         BitField<48, 1, u64> is_signed;
     } shift;

+ 4 - 3
src/video_core/renderer_opengl/gl_shader_decompiler.cpp

@@ -1459,9 +1459,10 @@ private:
                 break;
             }
             case OpCode::Id::FMUL32_IMM: {
-                regs.SetRegisterToFloat(
-                    instr.gpr0, 0,
-                    regs.GetRegisterAsFloat(instr.gpr8) + " * " + GetImmediate32(instr), 1, 1);
+                regs.SetRegisterToFloat(instr.gpr0, 0,
+                                        regs.GetRegisterAsFloat(instr.gpr8) + " * " +
+                                            GetImmediate32(instr),
+                                        1, 1, instr.fmul32.saturate);
                 break;
             }
             case OpCode::Id::FADD32I: {