diff options
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index 28dba0084..55c33c3a9 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp @@ -2293,6 +2293,8 @@ private:                  ASSERT_MSG(!instr.tlds.UsesMiscMode(Tegra::Shader::TextureMiscMode::MZ),                             "MZ is not implemented"); +                u32 op_c_offset = 0; +                  switch (texture_type) {                  case Tegra::Shader::TextureType::Texture1D: {                      const std::string x = regs.GetRegisterAsInteger(instr.gpr8); @@ -2307,6 +2309,7 @@ private:                          const std::string x = regs.GetRegisterAsInteger(instr.gpr8);                          const std::string y = regs.GetRegisterAsInteger(instr.gpr20);                          coord = "ivec2 coords = ivec2(" + x + ", " + y + ");"; +                        op_c_offset = 1;                      }                      break;                  } @@ -2318,13 +2321,14 @@ private:                  const std::string sampler =                      GetSampler(instr.sampler, texture_type, is_array, false);                  std::string texture = "texelFetch(" + sampler + ", coords, 0)"; -                const std::string op_c = regs.GetRegisterAsInteger(instr.gpr20.Value() + 1);                  switch (instr.tlds.GetTextureProcessMode()) {                  case Tegra::Shader::TextureProcessMode::LZ: {                      texture = "texelFetch(" + sampler + ", coords, 0)";                      break;                  }                  case Tegra::Shader::TextureProcessMode::LL: { +                    const std::string op_c = +                        regs.GetRegisterAsInteger(instr.gpr20.Value() + op_c_offset);                      texture = "texelFetch(" + sampler + ", coords, " + op_c + ')';                      break;                  } | 
