[Mesa-dev] [PATCH 05/19] mesa: Always call ProgramBinarySerializeDriverBlob

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


The driver may prefer to have a different blob for
ARB_get_program_binary compared to the version saved out for the disk
shader cache.

Since they both use the driver_cache_blob field, we need to always
give the driver the opportunity to fill in the driver_cache_blob when
saving the program binary.

Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
---
 src/mesa/main/program_binary.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/src/mesa/main/program_binary.c b/src/mesa/main/program_binary.c
index 021f6315e72..078d59d13f8 100644
--- a/src/mesa/main/program_binary.c
+++ b/src/mesa/main/program_binary.c
@@ -169,24 +169,22 @@ static void
 write_program_payload(struct gl_context *ctx, struct blob *blob,
                       struct gl_shader_program *sh_prog)
 {
-   bool serialize[MESA_SHADER_STAGES];
    for (unsigned stage = 0; stage < MESA_SHADER_STAGES; stage++) {
       struct gl_linked_shader *shader = sh_prog->_LinkedShaders[stage];
-      serialize[stage] = shader && shader->Program->driver_cache_blob == NULL;
-      if (serialize[stage])
+      if (shader)
          ctx->Driver.ProgramBinarySerializeDriverBlob(ctx, shader->Program);
    }
 
    serialize_glsl_program(blob, ctx, sh_prog);
 
    for (unsigned stage = 0; stage < MESA_SHADER_STAGES; stage++) {
-      if (!serialize[stage])
-         continue;
-
-      struct gl_program *prog = sh_prog->_LinkedShaders[stage]->Program;
-      ralloc_free(prog->driver_cache_blob);
-      prog->driver_cache_blob = NULL;
-      prog->driver_cache_blob_size = 0;
+      struct gl_linked_shader *shader = sh_prog->_LinkedShaders[stage];
+      if (shader) {
+         struct gl_program *prog = sh_prog->_LinkedShaders[stage]->Program;
+         ralloc_free(prog->driver_cache_blob);
+         prog->driver_cache_blob = NULL;
+         prog->driver_cache_blob_size = 0;
+      }
    }
 }
 
-- 
2.16.2



More information about the mesa-dev mailing list