This function is called just before the gl_program::driver_cache_blob is saved out as part of the gl_program serialization.
Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com> --- src/mesa/drivers/dri/i965/brw_context.c | 4 ++++ src/mesa/drivers/dri/i965/brw_link.cpp | 11 ----------- src/mesa/drivers/dri/i965/brw_program.c | 3 +++ 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index ec3fe3be40d..0a87cc83e35 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -343,6 +343,10 @@ brw_init_driver_functions(struct brw_context *brw, functions->ProgramBinarySerializeDriverBlob = brw_program_serialize_nir; functions->ProgramBinaryDeserializeDriverBlob = brw_deserialize_program_binary; + + if (brw->screen->disk_cache) { + functions->ShaderCacheSerializeDriverBlob = brw_program_serialize_nir; + } } static void diff --git a/src/mesa/drivers/dri/i965/brw_link.cpp b/src/mesa/drivers/dri/i965/brw_link.cpp index 39fa94c0f8d..6f748659982 100644 --- a/src/mesa/drivers/dri/i965/brw_link.cpp +++ b/src/mesa/drivers/dri/i965/brw_link.cpp @@ -350,17 +350,6 @@ 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; - brw_program_serialize_nir(ctx, prog); - } - } - if (brw->precompile && !brw_shader_precompile(ctx, shProg)) return false; diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c index fc77926d6e0..3f18a0f7d47 100644 --- a/src/mesa/drivers/dri/i965/brw_program.c +++ b/src/mesa/drivers/dri/i965/brw_program.c @@ -834,6 +834,9 @@ brw_assign_common_binding_table_offsets(const struct gen_device_info *devinfo, void brw_program_serialize_nir(struct gl_context *ctx, struct gl_program *prog) { + if (prog->driver_cache_blob) + return; + struct blob writer; blob_init(&writer); nir_serialize(&writer, prog->nir); -- 2.16.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev