[Mesa-dev] [PATCH v3 12/34] main: Add driver cache blob fields to gl_program

Jordan Justen jordan.l.justen at intel.com
Sun Oct 22 20:01:20 UTC 2017


These fields can be used to optionally save off a driver blob with the
program metadata. For example, serialized nir, or tgsi.

v3:
 * Rename serialized_nir* to driver_cache_blob*. (Tim)
 * Free memory. (Jason)

Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>
---
 src/mesa/main/mtypes.h     | 4 ++++
 src/mesa/program/program.c | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 2802a0e3605..b7a46aed534 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -2079,6 +2079,10 @@ struct gl_program
 
    struct nir_shader *nir;
 
+   /* Saved and restored with metadata. Freed with ralloc. */
+   void *driver_cache_blob;
+   size_t driver_cache_blob_size;
+
    bool is_arb_asm; /** Is this an ARB assembly-style program */
 
    /** Is this program written to on disk shader cache */
diff --git a/src/mesa/program/program.c b/src/mesa/program/program.c
index 0defa012aee..faf5b7fa28a 100644
--- a/src/mesa/program/program.c
+++ b/src/mesa/program/program.c
@@ -279,6 +279,10 @@ _mesa_delete_program(struct gl_context *ctx, struct gl_program *prog)
       ralloc_free(prog->sh.BindlessImages);
    }
 
+   if (prog->driver_cache_blob) {
+      ralloc_free(prog->driver_cache_blob);
+   }
+
    ralloc_free(prog);
 }
 
-- 
2.15.0.rc0



More information about the mesa-dev mailing list