mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-14 19:40:39 +02:00
glsl: In ast_to_hir, check sampler array indexing
Raise error if a sampler array is indexed with a non-constant expression. From section 4.1.7 of the GLSL 1.30 spec: "Samplers aggregated into arrays within a shader (using square brackets [ ]) can only be indexed with integral constant expressions [...]."
This commit is contained in:
parent
d547ab150a
commit
f0f2ec4d8a
1 changed files with 14 additions and 0 deletions
|
|
@ -1567,6 +1567,20 @@ ast_expression::hir(exec_list *instructions,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* From section 4.1.7 of the GLSL 1.30 spec:
|
||||||
|
* "Samplers aggregated into arrays within a shader (using square
|
||||||
|
* brackets [ ]) can only be indexed with integral constant
|
||||||
|
* expressions [...]."
|
||||||
|
*/
|
||||||
|
if (array->type->is_array() &&
|
||||||
|
array->type->element_type()->is_sampler() &&
|
||||||
|
const_index == NULL) {
|
||||||
|
|
||||||
|
_mesa_glsl_error(&loc, state, "sampler arrays can only be indexed "
|
||||||
|
"with constant expressions");
|
||||||
|
error_emitted = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (error_emitted)
|
if (error_emitted)
|
||||||
result->type = glsl_type::error_type;
|
result->type = glsl_type::error_type;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue