mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 18:40:13 +01:00
nir/validate: Allow subroutine types for the tails of derefs
The shader-subroutine code creates uniforms of type SUBROUTINE for subroutines that are then read as integers in the backends. If we ever want to do any optimizations on these, we'll need to come up with a better plan where they are actual scalars or something, but this works for now. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92859 Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
This commit is contained in:
parent
79f68306d2
commit
4bbf2ac06e
1 changed files with 6 additions and 2 deletions
|
|
@ -401,7 +401,9 @@ validate_intrinsic_instr(nir_intrinsic_instr *instr, validate_state *state)
|
|||
case nir_intrinsic_load_var: {
|
||||
const struct glsl_type *type =
|
||||
nir_deref_tail(&instr->variables[0]->deref)->type;
|
||||
assert(glsl_type_is_vector_or_scalar(type));
|
||||
assert(glsl_type_is_vector_or_scalar(type) ||
|
||||
(instr->variables[0]->var->data.mode == nir_var_uniform &&
|
||||
glsl_get_base_type(type) == GLSL_TYPE_SUBROUTINE));
|
||||
assert(instr->num_components == glsl_get_vector_elements(type));
|
||||
assert(instr->variables[0]->var->data.mode != nir_var_shader_out);
|
||||
break;
|
||||
|
|
@ -409,7 +411,9 @@ validate_intrinsic_instr(nir_intrinsic_instr *instr, validate_state *state)
|
|||
case nir_intrinsic_store_var: {
|
||||
const struct glsl_type *type =
|
||||
nir_deref_tail(&instr->variables[0]->deref)->type;
|
||||
assert(glsl_type_is_vector_or_scalar(type));
|
||||
assert(glsl_type_is_vector_or_scalar(type) ||
|
||||
(instr->variables[0]->var->data.mode == nir_var_uniform &&
|
||||
glsl_get_base_type(type) == GLSL_TYPE_SUBROUTINE));
|
||||
assert(instr->num_components == glsl_get_vector_elements(type));
|
||||
assert(instr->variables[0]->var->data.mode != nir_var_shader_in &&
|
||||
instr->variables[0]->var->data.mode != nir_var_uniform &&
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue