From 5e1d34394e80198da774ca87133da34506a89c29 Mon Sep 17 00:00:00 2001 From: Francisco Jerez Date: Tue, 19 Jul 2016 20:23:17 -0700 Subject: [PATCH] glsl: Don't attempt to do dead varying elimination on gl_LastFragData arrays. Apparently this pass can only handle elimination of a single built-in fragment output array, so the presence of gl_LastFragData (which it wouldn't split correctly anyway) could prevent it from splitting the actual gl_FragData array. Just match gl_FragData by name since it's the only built-in it can handle. Reviewed-by: Kenneth Graunke --- src/compiler/glsl/opt_dead_builtin_varyings.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/compiler/glsl/opt_dead_builtin_varyings.cpp b/src/compiler/glsl/opt_dead_builtin_varyings.cpp index 900a096..4526f2b 100644 --- a/src/compiler/glsl/opt_dead_builtin_varyings.cpp +++ b/src/compiler/glsl/opt_dead_builtin_varyings.cpp @@ -89,9 +89,10 @@ public: !is_gl_identifier(var->name)) return visit_continue; - /* Only match gl_FragData[], not gl_SecondaryFragDataEXT[] */ - if (this->find_frag_outputs && var->data.location == FRAG_RESULT_DATA0 && - var->data.index == 0) { + /* Only match gl_FragData[], not gl_SecondaryFragDataEXT[] or + * gl_LastFragData[]. + */ + if (this->find_frag_outputs && strcmp(var->name, "gl_FragData") == 0) { this->fragdata_array = var; ir_constant *index = ir->array_index->as_constant(); -- 2.7.4