<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sat, Dec 30, 2017 at 3:57 PM, Grazvydas Ignotas <span dir="ltr"><<a href="mailto:notasas@gmail.com" target="_blank">notasas@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I don't know if it's the game's fault, but it appears this change broke DOOM.<br>
here is the offending spirv binary:<br>
<a href="https://people.freedesktop.org/~notaz/doom_compute_spirv" rel="noreferrer" target="_blank">https://people.freedesktop.<wbr>org/~notaz/doom_compute_spirv</a><br></blockquote><div><br></div><div>Have you filed a bug? Please do and assign it to me. I'll take a look at it in a week or so.</div><div><br></div><div>--Jason</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Gražvydas<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
On Thu, Dec 7, 2017 at 6:12 PM, Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
> ---<br>
> src/compiler/spirv/vtn_<wbr>variables.c | 18 ++++++++++++++----<br>
> 1 file changed, 14 insertions(+), 4 deletions(-)<br>
><br>
> diff --git a/src/compiler/spirv/vtn_<wbr>variables.c b/src/compiler/spirv/vtn_<wbr>variables.c<br>
> index cf44ed3..8ce19ff 100644<br>
> --- a/src/compiler/spirv/vtn_<wbr>variables.c<br>
> +++ b/src/compiler/spirv/vtn_<wbr>variables.c<br>
> @@ -1969,6 +1969,9 @@ vtn_handle_variables(struct vtn_builder *b, SpvOp opcode,<br>
> struct vtn_value *dest = vtn_value(b, w[1], vtn_value_type_pointer);<br>
> struct vtn_value *src = vtn_value(b, w[2], vtn_value_type_pointer);<br>
><br>
> + vtn_fail_if(dest->type->deref != src->type->deref,<br>
> + "Result and pointer types of OpLoad do not match");<br>
> +<br>
> vtn_variable_copy(b, dest->pointer, src->pointer);<br>
> break;<br>
> }<br>
> @@ -1976,8 +1979,11 @@ vtn_handle_variables(struct vtn_builder *b, SpvOp opcode,<br>
> case SpvOpLoad: {<br>
> struct vtn_type *res_type =<br>
> vtn_value(b, w[1], vtn_value_type_type)->type;<br>
> - struct vtn_pointer *src =<br>
> - vtn_value(b, w[3], vtn_value_type_pointer)-><wbr>pointer;<br>
> + struct vtn_value *src_val = vtn_value(b, w[3], vtn_value_type_pointer);<br>
> + struct vtn_pointer *src = src_val->pointer;<br>
> +<br>
> + vtn_fail_if(res_type != src_val->type->deref,<br>
> + "Result and pointer types of OpLoad do not match");<br>
><br>
> if (src->mode == vtn_variable_mode_image ||<br>
> src->mode == vtn_variable_mode_sampler) {<br>
> @@ -1990,8 +1996,12 @@ vtn_handle_variables(struct vtn_builder *b, SpvOp opcode,<br>
> }<br>
><br>
> case SpvOpStore: {<br>
> - struct vtn_pointer *dest =<br>
> - vtn_value(b, w[1], vtn_value_type_pointer)-><wbr>pointer;<br>
> + struct vtn_value *dest_val = vtn_value(b, w[1], vtn_value_type_pointer);<br>
> + struct vtn_pointer *dest = dest_val->pointer;<br>
> + struct vtn_value *src_val = vtn_untyped_value(b, w[2]);<br>
> +<br>
> + vtn_fail_if(dest_val->type-><wbr>deref != src_val->type,<br>
> + "Value and pointer types of OpStore do not match");<br>
><br>
> if (glsl_type_is_sampler(dest-><wbr>type->type)) {<br>
> vtn_warn("OpStore of a sampler detected. Doing on-the-fly copy "<br>
> --<br>
> 2.5.0.400.gff86faf<br>
><br>
</div></div><div class="HOEnZb"><div class="h5">> ______________________________<wbr>_________________<br>
> mesa-dev mailing list<br>
> <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</div></div></blockquote></div><br></div></div>