On Sat, Dec 30, 2017 at 3:57 PM, Grazvydas Ignotas <nota...@gmail.com>
wrote:

> Hi,
>
> I don't know if it's the game's fault, but it appears this change broke
> DOOM.
> here is the offending spirv binary:
> https://people.freedesktop.org/~notaz/doom_compute_spirv
>

Have you filed a bug?  Please do and assign it to me.  I'll take a look at
it in a week or so.

--Jason



> Gražvydas
>
>
> On Thu, Dec 7, 2017 at 6:12 PM, Jason Ekstrand <ja...@jlekstrand.net>
> wrote:
> > ---
> >  src/compiler/spirv/vtn_variables.c | 18 ++++++++++++++----
> >  1 file changed, 14 insertions(+), 4 deletions(-)
> >
> > diff --git a/src/compiler/spirv/vtn_variables.c
> b/src/compiler/spirv/vtn_variables.c
> > index cf44ed3..8ce19ff 100644
> > --- a/src/compiler/spirv/vtn_variables.c
> > +++ b/src/compiler/spirv/vtn_variables.c
> > @@ -1969,6 +1969,9 @@ vtn_handle_variables(struct vtn_builder *b, SpvOp
> opcode,
> >        struct vtn_value *dest = vtn_value(b, w[1],
> vtn_value_type_pointer);
> >        struct vtn_value *src = vtn_value(b, w[2],
> vtn_value_type_pointer);
> >
> > +      vtn_fail_if(dest->type->deref != src->type->deref,
> > +                  "Result and pointer types of OpLoad do not match");
> > +
> >        vtn_variable_copy(b, dest->pointer, src->pointer);
> >        break;
> >     }
> > @@ -1976,8 +1979,11 @@ vtn_handle_variables(struct vtn_builder *b, SpvOp
> opcode,
> >     case SpvOpLoad: {
> >        struct vtn_type *res_type =
> >           vtn_value(b, w[1], vtn_value_type_type)->type;
> > -      struct vtn_pointer *src =
> > -         vtn_value(b, w[3], vtn_value_type_pointer)->pointer;
> > +      struct vtn_value *src_val = vtn_value(b, w[3],
> vtn_value_type_pointer);
> > +      struct vtn_pointer *src = src_val->pointer;
> > +
> > +      vtn_fail_if(res_type != src_val->type->deref,
> > +                  "Result and pointer types of OpLoad do not match");
> >
> >        if (src->mode == vtn_variable_mode_image ||
> >            src->mode == vtn_variable_mode_sampler) {
> > @@ -1990,8 +1996,12 @@ vtn_handle_variables(struct vtn_builder *b, SpvOp
> opcode,
> >     }
> >
> >     case SpvOpStore: {
> > -      struct vtn_pointer *dest =
> > -         vtn_value(b, w[1], vtn_value_type_pointer)->pointer;
> > +      struct vtn_value *dest_val = vtn_value(b, w[1],
> vtn_value_type_pointer);
> > +      struct vtn_pointer *dest = dest_val->pointer;
> > +      struct vtn_value *src_val = vtn_untyped_value(b, w[2]);
> > +
> > +      vtn_fail_if(dest_val->type->deref != src_val->type,
> > +                  "Value and pointer types of OpStore do not match");
> >
> >        if (glsl_type_is_sampler(dest->type->type)) {
> >           vtn_warn("OpStore of a sampler detected.  Doing on-the-fly
> copy "
> > --
> > 2.5.0.400.gff86faf
> >
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to