summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index 9cb115959..f5a592490 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -618,19 +618,6 @@ private:
618 break; 618 break;
619 } 619 }
620 } 620 }
621 if (stage != ShaderType::Vertex || device.HasVertexViewportLayer()) {
622 if (ir.UsesLayer()) {
623 code.AddLine("int gl_Layer;");
624 }
625 if (ir.UsesViewportIndex()) {
626 code.AddLine("int gl_ViewportIndex;");
627 }
628 } else if ((ir.UsesLayer() || ir.UsesViewportIndex()) && stage == ShaderType::Vertex &&
629 !device.HasVertexViewportLayer()) {
630 LOG_ERROR(
631 Render_OpenGL,
632 "GL_ARB_shader_viewport_layer_array is not available and its required by a shader");
633 }
634 621
635 if (ir.UsesPointSize()) { 622 if (ir.UsesPointSize()) {
636 code.AddLine("float gl_PointSize;"); 623 code.AddLine("float gl_PointSize;");
@@ -647,6 +634,21 @@ private:
647 --code.scope; 634 --code.scope;
648 code.AddLine("}};"); 635 code.AddLine("}};");
649 code.AddNewLine(); 636 code.AddNewLine();
637
638 if (stage != ShaderType::Vertex || device.HasVertexViewportLayer()) {
639 if (ir.UsesLayer()) {
640 code.AddLine("out int gl_Layer;");
641 }
642 if (ir.UsesViewportIndex()) {
643 code.AddLine("out int gl_ViewportIndex;");
644 }
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 }
651 code.AddNewLine();
650 } 652 }
651 653
652 void DeclareRegisters() { 654 void DeclareRegisters() {