Re: [Mesa-dev] [PATCH] i965: Serialize nir later in the linking process
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
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 EkstrandOn 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
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