diff options
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 14 |
1 files changed, 13 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 502b95973..d6e30b321 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp | |||
| @@ -626,7 +626,9 @@ private: | |||
| 626 | break; | 626 | break; |
| 627 | } | 627 | } |
| 628 | } | 628 | } |
| 629 | if (stage != ShaderType::Vertex || device.HasVertexViewportLayer()) { | 629 | |
| 630 | if (stage != ShaderType::Geometry && | ||
| 631 | (stage != ShaderType::Vertex || device.HasVertexViewportLayer())) { | ||
| 630 | if (ir.UsesLayer()) { | 632 | if (ir.UsesLayer()) { |
| 631 | code.AddLine("int gl_Layer;"); | 633 | code.AddLine("int gl_Layer;"); |
| 632 | } | 634 | } |
| @@ -655,6 +657,16 @@ private: | |||
| 655 | --code.scope; | 657 | --code.scope; |
| 656 | code.AddLine("}};"); | 658 | code.AddLine("}};"); |
| 657 | code.AddNewLine(); | 659 | code.AddNewLine(); |
| 660 | |||
| 661 | if (stage == ShaderType::Geometry) { | ||
| 662 | if (ir.UsesLayer()) { | ||
| 663 | code.AddLine("out int gl_Layer;"); | ||
| 664 | } | ||
| 665 | if (ir.UsesViewportIndex()) { | ||
| 666 | code.AddLine("out int gl_ViewportIndex;"); | ||
| 667 | } | ||
| 668 | } | ||
| 669 | code.AddNewLine(); | ||
| 658 | } | 670 | } |
| 659 | 671 | ||
| 660 | void DeclareRegisters() { | 672 | void DeclareRegisters() { |