From aca40de224994ba6bc7547224a4f8450a840fde3 Mon Sep 17 00:00:00 2001
From: ReinUsesLisp <reinuseslisp@airmail.cc>
Date: Thu, 11 Jul 2019 04:24:57 -0300
Subject: [PATCH] gl_shader_decompiler: Fix conditional usage of
 GL_ARB_shader_viewport_layer_array

---
 src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index a4451dd2f..d0f579323 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -246,7 +246,7 @@ public:
         }
         entries.clip_distances = ir.GetClipDistances();
         entries.shader_viewport_layer_array =
-            stage == ShaderStage::Vertex && (ir.UsesLayer() || ir.UsesPointSize());
+            stage == ShaderStage::Vertex && (ir.UsesLayer() || ir.UsesViewportIndex());
         entries.shader_length = ir.GetLength();
         return entries;
     }
@@ -302,7 +302,8 @@ private:
             if (ir.UsesViewportIndex()) {
                 code.AddLine("int gl_ViewportIndex;");
             }
-        } else if (stage == ShaderStage::Vertex && !device.HasVertexViewportLayer()) {
+        } else if ((ir.UsesLayer() || ir.UsesViewportIndex()) && stage == ShaderStage::Vertex &&
+                   !device.HasVertexViewportLayer()) {
             LOG_ERROR(
                 Render_OpenGL,
                 "GL_ARB_shader_viewport_layer_array is not available and its required by a shader");