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 <kenneth@whitecape.org>
This commit is contained in:
@@ -89,9 +89,10 @@ public:
|
|||||||
!is_gl_identifier(var->name))
|
!is_gl_identifier(var->name))
|
||||||
return visit_continue;
|
return visit_continue;
|
||||||
|
|
||||||
/* Only match gl_FragData[], not gl_SecondaryFragDataEXT[] */
|
/* Only match gl_FragData[], not gl_SecondaryFragDataEXT[] or
|
||||||
if (this->find_frag_outputs && var->data.location == FRAG_RESULT_DATA0 &&
|
* gl_LastFragData[].
|
||||||
var->data.index == 0) {
|
*/
|
||||||
|
if (this->find_frag_outputs && strcmp(var->name, "gl_FragData") == 0) {
|
||||||
this->fragdata_array = var;
|
this->fragdata_array = var;
|
||||||
|
|
||||||
ir_constant *index = ir->array_index->as_constant();
|
ir_constant *index = ir->array_index->as_constant();
|
||||||
|
Reference in New Issue
Block a user