[Mesa-dev] [PATCH 11/17] glsl: Don't attempt to do dead varying elimination on gl_LastFragData arrays.
Francisco Jerez
currojerez at riseup.net
Thu Jul 21 04:49:41 UTC 2016
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.
---
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 a28887f..6f2f539 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.9.0
More information about the mesa-dev
mailing list