diff options
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index 85297bd00..d21daf28a 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp | |||
| @@ -1667,7 +1667,15 @@ private: | |||
| 1667 | } | 1667 | } |
| 1668 | case OpCode::Id::KIL: { | 1668 | case OpCode::Id::KIL: { |
| 1669 | ASSERT(instr.flow.cond == Tegra::Shader::FlowCondition::Always); | 1669 | ASSERT(instr.flow.cond == Tegra::Shader::FlowCondition::Always); |
| 1670 | |||
| 1671 | // Enclose "discard" in a conditional, so that GLSL compilation does not complain | ||
| 1672 | // about unexecuted instructions that may follow this. | ||
| 1673 | shader.AddLine("if (true) {"); | ||
| 1674 | ++shader.scope; | ||
| 1670 | shader.AddLine("discard;"); | 1675 | shader.AddLine("discard;"); |
| 1676 | --shader.scope; | ||
| 1677 | shader.AddLine("}"); | ||
| 1678 | |||
| 1671 | break; | 1679 | break; |
| 1672 | } | 1680 | } |
| 1673 | case OpCode::Id::BRA: { | 1681 | case OpCode::Id::BRA: { |