Since subroutine types are really just integers, should we just make glsl_type_is_vector_or_scalar() return true for them?
On Tue, Nov 10, 2015 at 5:18 PM, Jason Ekstrand <ja...@jlekstrand.net> wrote: > 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 > Cc: Mark Janes <mark.a.ja...@intel.com> > --- > src/glsl/nir/nir_validate.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/src/glsl/nir/nir_validate.c b/src/glsl/nir/nir_validate.c > index a42e830..51c2529 100644 > --- a/src/glsl/nir/nir_validate.c > +++ b/src/glsl/nir/nir_validate.c > @@ -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 && > -- > 2.5.0.400.gff86faf > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev