mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-17 19:10:36 +02:00
glsl: Handle array declarations in function parameters.
The 'vec4[12] foo' style already worked, but the 'vec4 foo[12]' style did not. Also, 'vec4[] foo' was wrongly accepted. Fixes piglit test cases array-19.vert and array-21.vert. May fix fd.o bug #29684 (or at least part of it).
This commit is contained in:
parent
4edeeaf715
commit
e511a35fc5
1 changed files with 13 additions and 4 deletions
|
|
@ -2040,13 +2040,22 @@ ast_parameter_declarator::hir(exec_list *instructions,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/* This only handles "vec4 foo[..]". The earlier specifier->glsl_type(...)
|
||||
* call already handled the "vec4[..] foo" case.
|
||||
*/
|
||||
if (this->is_array) {
|
||||
type = process_array_type(type, this->array_size, state);
|
||||
}
|
||||
|
||||
if (type->array_size() == 0) {
|
||||
_mesa_glsl_error(&loc, state, "arrays passed as parameters must have "
|
||||
"a declared size.");
|
||||
type = glsl_type::error_type;
|
||||
}
|
||||
|
||||
is_void = false;
|
||||
ir_variable *var = new(ctx) ir_variable(type, this->identifier, ir_var_in);
|
||||
|
||||
/* FINISHME: Handle array declarations. Note that this requires
|
||||
* FINISHME: complete handling of constant expressions.
|
||||
*/
|
||||
|
||||
/* Apply any specified qualifiers to the parameter declaration. Note that
|
||||
* for function parameters the default mode is 'in'.
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue