summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Subv2018-06-04 11:57:47 -0500
committerGravatar Subv2018-06-04 16:41:27 -0500
commitf6679ce422ad825113b40e416452c9c43be3b73e (patch)
tree0795cfdd30c2574df98e7d9c4bc9fe7a272e840a
parentMerge pull request #499 from bunnei/am-stuff (diff)
downloadyuzu-f6679ce422ad825113b40e416452c9c43be3b73e.tar.gz
yuzu-f6679ce422ad825113b40e416452c9c43be3b73e.tar.xz
yuzu-f6679ce422ad825113b40e416452c9c43be3b73e.zip
GPU: Corrected the I2F_R implementation.
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp14
1 files changed, 12 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 bb5209a7e..ffb89e4f4 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -849,8 +849,7 @@ private:
849 ASSERT_MSG(!instr.conversion.saturate_a, "Unimplemented"); 849 ASSERT_MSG(!instr.conversion.saturate_a, "Unimplemented");
850 850
851 switch (opcode->GetId()) { 851 switch (opcode->GetId()) {
852 case OpCode::Id::I2I_R: 852 case OpCode::Id::I2I_R: {
853 case OpCode::Id::I2F_R: {
854 ASSERT_MSG(!instr.conversion.selector, "Unimplemented"); 853 ASSERT_MSG(!instr.conversion.selector, "Unimplemented");
855 854
856 std::string op_a = 855 std::string op_a =
@@ -863,6 +862,17 @@ private:
863 regs.SetRegisterToInteger(instr.gpr0, instr.conversion.is_signed, 0, op_a, 1, 1); 862 regs.SetRegisterToInteger(instr.gpr0, instr.conversion.is_signed, 0, op_a, 1, 1);
864 break; 863 break;
865 } 864 }
865 case OpCode::Id::I2F_R: {
866 std::string op_a =
867 regs.GetRegisterAsInteger(instr.gpr20, 0, instr.conversion.is_signed);
868
869 if (instr.conversion.abs_a) {
870 op_a = "abs(" + op_a + ')';
871 }
872
873 regs.SetRegisterToFloat(instr.gpr0, 0, op_a, 1, 1);
874 break;
875 }
866 case OpCode::Id::F2F_R: { 876 case OpCode::Id::F2F_R: {
867 std::string op_a = regs.GetRegisterAsFloat(instr.gpr20); 877 std::string op_a = regs.GetRegisterAsFloat(instr.gpr20);
868 878