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