glsl: Don't allow array splitting on function arguments.
This is the reason the declaration member existed in the reference visitor, but I didn't copy the code from structure splitting that avoided setting it. This wasn't currently a problem, because we don't allow splitting of in/out variables. But that would be nice to change some day. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
538ba0a363
commit
6de5da0796
|
@ -65,7 +65,11 @@ public:
|
|||
/** Whether this array should be split or not. */
|
||||
bool split;
|
||||
|
||||
bool declaration; /* If the variable had a decl in the instruction stream */
|
||||
/* If the variable had a decl we can work with in the instruction
|
||||
* stream. We can't do splitting on function arguments, which
|
||||
* don't get this variable set.
|
||||
*/
|
||||
bool declaration;
|
||||
|
||||
ir_variable **components;
|
||||
|
||||
|
@ -99,6 +103,7 @@ public:
|
|||
virtual ir_visitor_status visit(ir_variable *);
|
||||
virtual ir_visitor_status visit(ir_dereference_variable *);
|
||||
virtual ir_visitor_status visit_enter(ir_dereference_array *);
|
||||
virtual ir_visitor_status visit_enter(ir_function_signature *);
|
||||
|
||||
variable_entry *get_variable_entry(ir_variable *var);
|
||||
|
||||
|
@ -183,6 +188,17 @@ ir_array_reference_visitor::visit_enter(ir_dereference_array *ir)
|
|||
return visit_continue_with_parent;
|
||||
}
|
||||
|
||||
ir_visitor_status
|
||||
ir_array_reference_visitor::visit_enter(ir_function_signature *ir)
|
||||
{
|
||||
/* We don't have logic for array-splitting function arguments,
|
||||
* so just look at the body instructions and not the parameter
|
||||
* declarations.
|
||||
*/
|
||||
visit_list_elements(this, &ir->body);
|
||||
return visit_continue_with_parent;
|
||||
}
|
||||
|
||||
bool
|
||||
ir_array_reference_visitor::get_split_list(exec_list *instructions,
|
||||
bool linked)
|
||||
|
|
Loading…
Reference in New Issue