<div dir="ltr"><div>This should be fine.  It was, effectively, happening in the back-end so moving it later is fine.</div><div><br></div><div>Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Sep 5, 2018 at 9:11 AM Alejandro Piñeiro <<a href="mailto:apinheiro@igalia.com">apinheiro@igalia.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">At this moment that lowering is using info coming from the<br>
UniformStorage, so for the ARB_gl_spirv codepath, it needs to be done<br>
after calling gl_nir_link_uniforms. As for the GLSL codepath it can<br>
also be called later, we just move the call on both cases, to avoid<br>
adding several shader->spirv_data checks, and keep the patch as small<br>
as possible.<br>
<br>
This is the first patch needed to fix the following piglit tests:<br>
<br>
tests/spec/arb_gl_spirv/linker/uniform/multisampler.shader_test<br>
tests/spec/arb_gl_spirv/linker/uniform/multisampler-array.shader_test<br>
<br>
but fixes thousands of tests when borrowing the tests from other specs<br>
(that needs to be done manually right now).<br>
---<br>
 src/mesa/drivers/dri/i965/brw_link.cpp  | 10 ++++++++++<br>
 src/mesa/drivers/dri/i965/brw_program.c |  1 -<br>
 2 files changed, 10 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/brw_link.cpp b/src/mesa/drivers/dri/i965/brw_link.cpp<br>
index 0723255dec6..2cbb1e0b879 100644<br>
--- a/src/mesa/drivers/dri/i965/brw_link.cpp<br>
+++ b/src/mesa/drivers/dri/i965/brw_link.cpp<br>
@@ -270,6 +270,16 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *shProg)<br>
       gl_nir_link_assign_xfb_resources(ctx, shProg);<br>
    }<br>
<br>
+   for (stage = 0; stage < ARRAY_SIZE(shProg->_LinkedShaders); stage++) {<br>
+      struct gl_linked_shader *shader = shProg->_LinkedShaders[stage];<br>
+      if (!shader)<br>
+         continue;<br>
+<br>
+      struct gl_program *prog = shader->Program;<br>
+<br>
+      NIR_PASS_V(prog->nir, brw_nir_lower_gl_images, prog);<br>
+   }<br>
+<br>
    /* Determine first and last stage. */<br>
    unsigned first = MESA_SHADER_STAGES;<br>
    unsigned last = 0;<br>
diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c<br>
index ba418e45b85..f5ebd3c3b05 100644<br>
--- a/src/mesa/drivers/dri/i965/brw_program.c<br>
+++ b/src/mesa/drivers/dri/i965/brw_program.c<br>
@@ -140,7 +140,6 @@ brw_create_nir(struct brw_context *brw,<br>
    }<br>
<br>
    NIR_PASS_V(nir, brw_nir_lower_uniforms, is_scalar);<br>
-   NIR_PASS_V(nir, brw_nir_lower_gl_images, prog);<br>
<br>
    return nir;<br>
 }<br>
-- <br>
2.14.1<br>
<br>
</blockquote></div>