[Mesa-dev] [PATCH 04/19] i965: Use ShaderCacheSerializeDriverBlob driver function

Jordan Justen jordan.l.justen at intel.com
Mon May 14 16:52:05 UTC 2018


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.justen at 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



More information about the mesa-dev mailing list