diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 7 |
1 files changed, 5 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 68db3c22a..e3217db81 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp | |||
| @@ -766,13 +766,16 @@ private: | |||
| 766 | // goes into gpr28+0 and gpr28+1 | 766 | // goes into gpr28+0 and gpr28+1 |
| 767 | size_t texs_offset{}; | 767 | size_t texs_offset{}; |
| 768 | 768 | ||
| 769 | size_t src_elem{}; | ||
| 769 | for (const auto& dest : {instr.gpr0.Value(), instr.gpr28.Value()}) { | 770 | for (const auto& dest : {instr.gpr0.Value(), instr.gpr28.Value()}) { |
| 771 | size_t dest_elem{}; | ||
| 770 | for (unsigned elem = 0; elem < 2; ++elem) { | 772 | for (unsigned elem = 0; elem < 2; ++elem) { |
| 771 | if (!instr.texs.IsComponentEnabled(elem)) { | 773 | if (!instr.texs.IsComponentEnabled(src_elem++)) { |
| 772 | // Skip disabled components | 774 | // Skip disabled components |
| 773 | continue; | 775 | continue; |
| 774 | } | 776 | } |
| 775 | regs.SetRegisterToFloat(dest, elem + texs_offset, texture, 1, 4, false, elem); | 777 | regs.SetRegisterToFloat(dest, elem + texs_offset, texture, 1, 4, false, |
| 778 | dest_elem++); | ||
| 776 | } | 779 | } |
| 777 | 780 | ||
| 778 | if (!instr.texs.HasTwoDestinations()) { | 781 | if (!instr.texs.HasTwoDestinations()) { |