glsl: Add check for unsized arrays to glsl types
The main purpose of this patch is to increase readability of the array code by introducing is_unsized_array() to glsl_types. Some redundent is_array() checks are also removed, and small number of other related clean ups. The introduction of is_unsized_array() should also make the ARB_arrays_of_arrays code simpler and more readable when it arrives. V2: Also replace code that checks for unsized arrays directly with the length variable Signed-off-by: Timothy Arceri <t_arceri@yahoo.com.au> v3 (Paul Berry <stereotype441@gmail.com>): clean up formatting. Separate whitespace cleanups to their own patch. Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
committed by
Paul Berry
parent
5cd7eb9f07
commit
b59c5926cb
@@ -732,21 +732,21 @@ process_array_constructor(exec_list *instructions,
|
||||
exec_list actual_parameters;
|
||||
const unsigned parameter_count =
|
||||
process_parameters(instructions, &actual_parameters, parameters, state);
|
||||
bool is_unsized_array = constructor_type->is_unsized_array();
|
||||
|
||||
if ((parameter_count == 0)
|
||||
|| ((constructor_type->length != 0)
|
||||
&& (constructor_type->length != parameter_count))) {
|
||||
const unsigned min_param = (constructor_type->length == 0)
|
||||
? 1 : constructor_type->length;
|
||||
if ((parameter_count == 0) ||
|
||||
(!is_unsized_array && (constructor_type->length != parameter_count))) {
|
||||
const unsigned min_param = is_unsized_array
|
||||
? 1 : constructor_type->length;
|
||||
|
||||
_mesa_glsl_error(loc, state, "array constructor must have %s %u "
|
||||
"parameter%s",
|
||||
(constructor_type->length == 0) ? "at least" : "exactly",
|
||||
is_unsized_array ? "at least" : "exactly",
|
||||
min_param, (min_param <= 1) ? "" : "s");
|
||||
return ir_rvalue::error_value(ctx);
|
||||
}
|
||||
|
||||
if (constructor_type->length == 0) {
|
||||
if (is_unsized_array) {
|
||||
constructor_type =
|
||||
glsl_type::get_array_instance(constructor_type->element_type(),
|
||||
parameter_count);
|
||||
|
||||
Reference in New Issue
Block a user