diff options
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/engines/shader_bytecode.h | 3 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h index 7cd125f05..b0da805db 100644 --- a/src/video_core/engines/shader_bytecode.h +++ b/src/video_core/engines/shader_bytecode.h | |||
| @@ -13,6 +13,9 @@ namespace Tegra { | |||
| 13 | namespace Shader { | 13 | namespace Shader { |
| 14 | 14 | ||
| 15 | struct Register { | 15 | struct Register { |
| 16 | // Register 255 is special cased to always be 0 | ||
| 17 | static constexpr size_t ZeroIndex = 255; | ||
| 18 | |||
| 16 | constexpr Register() = default; | 19 | constexpr Register() = default; |
| 17 | 20 | ||
| 18 | constexpr Register(u64 value) : value(value) {} | 21 | constexpr Register(u64 value) : value(value) {} |
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index c23f590cd..6db0b7d39 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp | |||
| @@ -220,6 +220,8 @@ private: | |||
| 220 | 220 | ||
| 221 | /// Generates code representing a temporary (GPR) register. | 221 | /// Generates code representing a temporary (GPR) register. |
| 222 | std::string GetRegister(const Register& reg, unsigned elem = 0) { | 222 | std::string GetRegister(const Register& reg, unsigned elem = 0) { |
| 223 | if (reg == Register::ZeroIndex) | ||
| 224 | return "0"; | ||
| 223 | if (stage == Maxwell3D::Regs::ShaderStage::Fragment && reg < 4) { | 225 | if (stage == Maxwell3D::Regs::ShaderStage::Fragment && reg < 4) { |
| 224 | // GPRs 0-3 are output color for the fragment shader | 226 | // GPRs 0-3 are output color for the fragment shader |
| 225 | return std::string{"color."} + "rgba"[(reg + elem) & 3]; | 227 | return std::string{"color."} + "rgba"[(reg + elem) & 3]; |