summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index f5a592490..2c818f406 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -619,6 +619,21 @@ private:
619 } 619 }
620 } 620 }
621 621
622 if (stage != ShaderType::Geometry &&
623 (stage != ShaderType::Vertex || device.HasVertexViewportLayer())) {
624 if (ir.UsesLayer()) {
625 code.AddLine("int gl_Layer;");
626 }
627 if (ir.UsesViewportIndex()) {
628 code.AddLine("int gl_ViewportIndex;");
629 }
630 } else if ((ir.UsesLayer() || ir.UsesViewportIndex()) && stage == ShaderType::Vertex &&
631 !device.HasVertexViewportLayer()) {
632 LOG_ERROR(
633 Render_OpenGL,
634 "GL_ARB_shader_viewport_layer_array is not available and its required by a shader");
635 }
636
622 if (ir.UsesPointSize()) { 637 if (ir.UsesPointSize()) {
623 code.AddLine("float gl_PointSize;"); 638 code.AddLine("float gl_PointSize;");
624 } 639 }
@@ -635,18 +650,13 @@ private:
635 code.AddLine("}};"); 650 code.AddLine("}};");
636 code.AddNewLine(); 651 code.AddNewLine();
637 652
638 if (stage != ShaderType::Vertex || device.HasVertexViewportLayer()) { 653 if (stage == ShaderType::Geometry) {
639 if (ir.UsesLayer()) { 654 if (ir.UsesLayer()) {
640 code.AddLine("out int gl_Layer;"); 655 code.AddLine("out int gl_Layer;");
641 } 656 }
642 if (ir.UsesViewportIndex()) { 657 if (ir.UsesViewportIndex()) {
643 code.AddLine("out int gl_ViewportIndex;"); 658 code.AddLine("out int gl_ViewportIndex;");
644 } 659 }
645 } else if ((ir.UsesLayer() || ir.UsesViewportIndex()) && stage == ShaderType::Vertex &&
646 !device.HasVertexViewportLayer()) {
647 LOG_ERROR(
648 Render_OpenGL,
649 "GL_ARB_shader_viewport_layer_array is not available and its required by a shader");
650 } 660 }
651 code.AddNewLine(); 661 code.AddNewLine();
652 } 662 }