Re: [Mesa-dev] [PATCH] i965: Serialize nir later in the linking process

2017-12-01 Thread Kenneth Graunke
On Friday, December 1, 2017 3:08:07 PM PST Jordan Justen wrote:
> Fixes MESA_GLSL=cache_fb with piglit
> tests/spec/glsl-1.50/execution/geometry/clip-distance-vs-gs-out.shader_test
> 
> Fixes: 0610a624a12 i965/link: Serialize program to nir after linking for 
> shader cache
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103988
> Signed-off-by: Jordan Justen 
> ---
>  src/mesa/drivers/dri/i965/brw_link.cpp | 25 -
>  1 file changed, 16 insertions(+), 9 deletions(-)

Reviewed-by: Kenneth Graunke 


signature.asc
Description: This is a digitally signed message part.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH] i965: Serialize nir later in the linking process

2017-12-01 Thread Jason Ekstrand
Based on what you pasted on IRC the other day, I'm guessing the problem was
the missing unify_interfaces().  In any case, this looks much better.  The
closer serialization happens to back-end shader compilation, the better.

Reviewed-by: Jason Ekstrand 

On Fri, Dec 1, 2017 at 3:08 PM, Jordan Justen 
wrote:

> Fixes MESA_GLSL=cache_fb with piglit
> tests/spec/glsl-1.50/execution/geometry/clip-
> distance-vs-gs-out.shader_test
>
> Fixes: 0610a624a12 i965/link: Serialize program to nir after linking for
> shader cache
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103988
> Signed-off-by: Jordan Justen 
> ---
>  src/mesa/drivers/dri/i965/brw_link.cpp | 25 -
>  1 file changed, 16 insertions(+), 9 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_link.cpp
> b/src/mesa/drivers/dri/i965/brw_link.cpp
> index d18521e792d..6177c8f5ebd 100644
> --- a/src/mesa/drivers/dri/i965/brw_link.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_link.cpp
> @@ -302,15 +302,6 @@ brw_link_shader(struct gl_context *ctx, struct
> gl_shader_program *shProg)
>NIR_PASS_V(prog->nir, nir_lower_atomics_to_ssbo,
>   prog->nir->info.num_abos);
>
> -  if (brw->ctx.Cache) {
> - struct blob writer;
> - blob_init();
> - nir_serialize(, prog->nir);
> - prog->driver_cache_blob = ralloc_size(NULL, writer.size);
> - memcpy(prog->driver_cache_blob, writer.data, writer.size);
> - prog->driver_cache_blob_size = writer.size;
> -  }
> -
>infos[stage] = >nir->info;
>
>update_xfb_info(prog->sh.LinkedTransformFeedback, infos[stage]);
> @@ -357,6 +348,22 @@ brw_link_shader(struct gl_context *ctx, struct
> gl_shader_program *shProg)
>}
> }
>
> +   if (brw->ctx.Cache) {
> +  for (stage = 0; stage < ARRAY_SIZE(shProg->_LinkedShaders);
> stage++) {
> + struct gl_linked_shader *shader = shProg->_LinkedShaders[stage];
> + if (!shader)
> +continue;
> +
> + struct gl_program *prog = shader->Program;
> + struct blob writer;
> + blob_init();
> + nir_serialize(, prog->nir);
> + prog->driver_cache_blob = ralloc_size(NULL, writer.size);
> + memcpy(prog->driver_cache_blob, writer.data, writer.size);
> + prog->driver_cache_blob_size = writer.size;
> +  }
> +   }
> +
> if (brw->precompile && !brw_shader_precompile(ctx, shProg))
>return false;
>
> --
> 2.15.0
>
> ___
> 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


[Mesa-dev] [PATCH] i965: Serialize nir later in the linking process

2017-12-01 Thread Jordan Justen
Fixes MESA_GLSL=cache_fb with piglit
tests/spec/glsl-1.50/execution/geometry/clip-distance-vs-gs-out.shader_test

Fixes: 0610a624a12 i965/link: Serialize program to nir after linking for shader 
cache
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103988
Signed-off-by: Jordan Justen 
---
 src/mesa/drivers/dri/i965/brw_link.cpp | 25 -
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_link.cpp 
b/src/mesa/drivers/dri/i965/brw_link.cpp
index d18521e792d..6177c8f5ebd 100644
--- a/src/mesa/drivers/dri/i965/brw_link.cpp
+++ b/src/mesa/drivers/dri/i965/brw_link.cpp
@@ -302,15 +302,6 @@ brw_link_shader(struct gl_context *ctx, struct 
gl_shader_program *shProg)
   NIR_PASS_V(prog->nir, nir_lower_atomics_to_ssbo,
  prog->nir->info.num_abos);
 
-  if (brw->ctx.Cache) {
- struct blob writer;
- blob_init();
- nir_serialize(, prog->nir);
- prog->driver_cache_blob = ralloc_size(NULL, writer.size);
- memcpy(prog->driver_cache_blob, writer.data, writer.size);
- prog->driver_cache_blob_size = writer.size;
-  }
-
   infos[stage] = >nir->info;
 
   update_xfb_info(prog->sh.LinkedTransformFeedback, infos[stage]);
@@ -357,6 +348,22 @@ brw_link_shader(struct gl_context *ctx, struct 
gl_shader_program *shProg)
   }
}
 
+   if (brw->ctx.Cache) {
+  for (stage = 0; stage < ARRAY_SIZE(shProg->_LinkedShaders); stage++) {
+ struct gl_linked_shader *shader = shProg->_LinkedShaders[stage];
+ if (!shader)
+continue;
+
+ struct gl_program *prog = shader->Program;
+ struct blob writer;
+ blob_init();
+ nir_serialize(, prog->nir);
+ prog->driver_cache_blob = ralloc_size(NULL, writer.size);
+ memcpy(prog->driver_cache_blob, writer.data, writer.size);
+ prog->driver_cache_blob_size = writer.size;
+  }
+   }
+
if (brw->precompile && !brw_shader_precompile(ctx, shProg))
   return false;
 
-- 
2.15.0

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev