mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 15:20:10 +01:00
glsl: Don't emit spurious errors for constant indexes of the wrong type
Previously the shader
uniform float x[6];
void main() { gl_Position.x = x[1.0]; }
would have generated the errors
0:2(33): error: array index must be integer type
0:2(36): error: array index must be < 6
Now only
0:2(33): error: array index must be integer type
will be generated.
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
a70d2f05dc
commit
a131b87706
1 changed files with 2 additions and 2 deletions
|
|
@ -58,7 +58,7 @@ _mesa_ast_array_index_to_hir(void *mem_ctx,
|
|||
* declared size.
|
||||
*/
|
||||
ir_constant *const const_index = idx->constant_expression_value();
|
||||
if (const_index != NULL) {
|
||||
if (const_index != NULL && idx->type->is_integer()) {
|
||||
const int idx = const_index->value.i[0];
|
||||
const char *type_name = "error";
|
||||
unsigned bound = 0;
|
||||
|
|
@ -118,7 +118,7 @@ _mesa_ast_array_index_to_hir(void *mem_ctx,
|
|||
check_builtin_array_max_size(v->name, idx+1, loc, state);
|
||||
}
|
||||
}
|
||||
} else if (array->type->is_array()) {
|
||||
} else if (const_index == NULL && array->type->is_array()) {
|
||||
if (array->type->array_size() == 0) {
|
||||
_mesa_glsl_error(&loc, state, "unsized array index must be constant");
|
||||
} else if (array->type->fields.array->is_interface()) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue