On Wed, Dec 9, 2015 at 8:06 AM, Dave Airlie <airl...@gmail.com> wrote: > From: Dave Airlie <airl...@redhat.com> > > The old function didn't work for matrices, and we need this > in other places to fix some other problems, so move to a helper > in glsl type and fix the one user so far. > > A dual slot double is one that has 3 or 4 components in it's > base type. > > Signed-off-by: Dave Airlie <airl...@redhat.com> > --- > src/glsl/ir_set_program_inouts.cpp | 10 +--------- > src/glsl/nir/glsl_types.h | 8 ++++++++ > 2 files changed, 9 insertions(+), 9 deletions(-) > > diff --git a/src/glsl/ir_set_program_inouts.cpp > b/src/glsl/ir_set_program_inouts.cpp > index 70d754f..782f1b1 100644 > --- a/src/glsl/ir_set_program_inouts.cpp > +++ b/src/glsl/ir_set_program_inouts.cpp > @@ -81,13 +81,6 @@ is_shader_inout(ir_variable *var) > var->data.mode == ir_var_system_value; > } > > -static inline bool > -is_dual_slot(ir_variable *var) > -{ > - const glsl_type *type = var->type->without_array(); > - return type == glsl_type::dvec4_type || type == glsl_type::dvec3_type; > -} > - > static void > mark(struct gl_program *prog, ir_variable *var, int offset, int len, > gl_shader_stage stage) > @@ -101,7 +94,6 @@ mark(struct gl_program *prog, ir_variable *var, int > offset, int len, > */ > > for (int i = 0; i < len; i++) { > - bool dual_slot = is_dual_slot(var); > int idx = var->data.location + var->data.index + offset + i; > bool is_patch_generic = var->data.patch && > idx != VARYING_SLOT_TESS_LEVEL_INNER && > @@ -123,7 +115,7 @@ mark(struct gl_program *prog, ir_variable *var, int > offset, int len, > else > prog->InputsRead |= bitfield; > > - if (dual_slot) > + if (var->type->without_array()->is_dual_slot_double()) > prog->DoubleInputsRead |= bitfield; > if (stage == MESA_SHADER_FRAGMENT) { > gl_fragment_program *fprog = (gl_fragment_program *) prog; > diff --git a/src/glsl/nir/glsl_types.h b/src/glsl/nir/glsl_types.h > index d8a999a..26f25a1 100644 > --- a/src/glsl/nir/glsl_types.h > +++ b/src/glsl/nir/glsl_types.h > @@ -471,6 +471,14 @@ struct glsl_type { > } > > /** > + * Query whether a double takes two slots. > + */ > + bool is_dual_slot_double() const > + { > + return base_type == GLSL_TYPE_DOUBLE && vector_elements > 2; > + } > + > + /** > * Query whether or not a type is a non-array boolean type > */ > bool is_boolean() const > -- > 2.5.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Reviewed-by: Oded Gabbay <oded.gab...@gmail.com> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev