소스 검색

Added Saturation to FMUL32I

FernandoS27 7 년 전
부모
커밋
259da93567
2개의 변경된 파일8개의 추가작업 그리고 3개의 파일을 삭제
  1. 4 0
      src/video_core/engines/shader_bytecode.h
  2. 4 3
      src/video_core/renderer_opengl/gl_shader_decompiler.cpp

+ 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: {