diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-07-11 04:24:57 -0300 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-07-11 04:27:00 -0300 |
commit | aca40de224994ba6bc7547224a4f8450a840fde3 (patch) | |
tree | c876b77fde62a8cd3aa86104cb5981e89ece9b25 | |
parent | c9d886c84e4102f7b9c464c704eecb61d37b3df4 (diff) |
gl_shader_decompiler: Fix conditional usage of GL_ARB_shader_viewport_layer_array
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 5 |
1 files 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"); |