On Mon, Dec 11, 2017 at 10:05 AM, Ian Romanick <i...@freedesktop.org> wrote:

> On 12/07/2017 08:12 AM, Jason Ekstrand wrote:
> > ---
> >  src/compiler/spirv/spirv_to_nir.c | 14 +++++++++++---
> >  1 file changed, 11 insertions(+), 3 deletions(-)
> >
> > diff --git a/src/compiler/spirv/spirv_to_nir.c
> b/src/compiler/spirv/spirv_to_nir.c
> > index 11c8c2a..4b93b11 100644
> > --- a/src/compiler/spirv/spirv_to_nir.c
> > +++ b/src/compiler/spirv/spirv_to_nir.c
> > @@ -934,7 +934,11 @@ vtn_handle_type(struct vtn_builder *b, SpvOp opcode,
> >        struct vtn_type *base = vtn_value(b, w[2],
> vtn_value_type_type)->type;
> >        unsigned elems = w[3];
> >
> > -      vtn_assert(glsl_type_is_scalar(base->type));
> > +      vtn_fail_if(base->base_type != vtn_base_type_scalar,
> > +                  "Base type for OpTypeVector must be a scalar");
> > +      vtn_fail_if(elems < 2 || elems > 4,
> > +                  "Invalid component count for OpTypeVector");
> > +
> >        val->type->base_type = vtn_base_type_vector;
> >        val->type->type = glsl_vector_type(glsl_get_base_type(base->type),
> elems);
> >        val->type->length = elems;
> > @@ -947,12 +951,16 @@ vtn_handle_type(struct vtn_builder *b, SpvOp
> opcode,
> >        struct vtn_type *base = vtn_value(b, w[2],
> vtn_value_type_type)->type;
> >        unsigned columns = w[3];
> >
> > -      vtn_assert(glsl_type_is_vector(base->type));
> > +      vtn_fail_if(columns < 2 || columns > 4,
> > +                  "Invalid column count for OpTypeMatrix");
> > +
>
> I think we should still check glsl_type_is_vector here.  The
> glsl_type_is_error check below will catch that case, but we'll give a
> better error message with the explicit check here.
>

Sure.  I'll add something and send a v2.


> >        val->type->base_type = vtn_base_type_matrix;
> >        val->type->type = glsl_matrix_type(glsl_get_
> base_type(base->type),
> >                                           glsl_get_vector_elements(base-
> >type),
> >                                           columns);
> > -      vtn_assert(!glsl_type_is_error(val->type->type));
> > +      vtn_fail_if(glsl_type_is_error(val->type->type),
> > +                  "Unsupported base type for OpTypeMatrix");
> > +      assert(!glsl_type_is_error(val->type->type));
> >        val->type->length = columns;
> >        val->type->array_element = base;
> >        val->type->row_major = false;
> >
>
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to