<div dir="ltr"><div>Patches 1 and 2 are</div><div><br></div><div>Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>></div><div><br></div><div>As I commented on IRC, I'd recommend we also review and land my emit pointers on-the-fly patch.  I don't know that it's strictly necessary but I do think it's better.<br></div></div><br><div class="gmail_quote"><div dir="ltr">On Sun, Nov 18, 2018 at 9:57 PM Dave Airlie <<a href="mailto:airlied@gmail.com">airlied@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: Dave Airlie <<a href="mailto:airlied@redhat.com" target="_blank">airlied@redhat.com</a>><br>
<br>
I posted a load of hacks before to do this, Jason suggested this,<br>
just check the deref mode, not the variable mode and delay getting<br>
the variable until we know the type.<br>
<br>
avoids crashes when derefing shared memory pointers.<br>
---<br>
 src/compiler/nir/nir_gather_info.c | 7 +++----<br>
 1 file changed, 3 insertions(+), 4 deletions(-)<br>
<br>
diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c<br>
index 15d38f036b5..7eaa4c27c1f 100644<br>
--- a/src/compiler/nir/nir_gather_info.c<br>
+++ b/src/compiler/nir/nir_gather_info.c<br>
@@ -210,10 +210,9 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader,<br>
    case nir_intrinsic_load_deref:<br>
    case nir_intrinsic_store_deref:{<br>
       nir_deref_instr *deref = nir_src_as_deref(instr->src[0]);<br>
-      nir_variable *var = nir_deref_instr_get_variable(deref);<br>
-<br>
-      if (var->data.mode == nir_var_shader_in ||<br>
-          var->data.mode == nir_var_shader_out) {<br>
+      if (deref->mode == nir_var_shader_in ||<br>
+          deref->mode == nir_var_shader_out) {<br>
+         nir_variable *var = nir_deref_instr_get_variable(deref);<br>
          bool is_output_read = false;<br>
          if (var->data.mode == nir_var_shader_out &&<br>
              instr->intrinsic == nir_intrinsic_load_deref)<br>
-- <br>
2.17.2<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">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/mailman/listinfo/mesa-dev</a><br>
</blockquote></div>