From 2a55553be3336d5bc969a7569cccbfab85671153 Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Sun, 8 Apr 2018 17:56:34 -0700 Subject: [PATCH] mesa: Add disk shader cache driver blob callback Signed-off-by: Jordan Justen Reviewed-by: Timothy Arceri --- src/compiler/glsl/shader_cache.cpp | 8 ++++++++ src/mesa/main/dd.h | 15 +++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/compiler/glsl/shader_cache.cpp b/src/compiler/glsl/shader_cache.cpp index 042f3a60f5b..31d0aa62966 100644 --- a/src/compiler/glsl/shader_cache.cpp +++ b/src/compiler/glsl/shader_cache.cpp @@ -102,6 +102,14 @@ shader_cache_write_program_metadata(struct gl_context *ctx, struct blob metadata; blob_init(&metadata); + if (ctx->Driver.ShaderCacheSerializeDriverBlob) { + for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { + struct gl_linked_shader *sh = prog->_LinkedShaders[i]; + if (sh) + ctx->Driver.ShaderCacheSerializeDriverBlob(ctx, sh->Program); + } + } + serialize_glsl_program(&metadata, ctx, prog); struct cache_item_metadata cache_item_metadata; diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index 1b048d3ff8e..7081d586700 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -1282,6 +1282,21 @@ struct dd_function_table { struct gl_semaphore_object *semObj, int fd); /*@}*/ + + /** + * \name Disk shader cache functions + */ + /*@{*/ + /** + * Called to initialize gl_program::driver_cache_blob (and size) with a + * ralloc allocated buffer. + * + * This buffer will be saved and restored as part of the gl_program + * serialization and deserialization. + */ + void (*ShaderCacheSerializeDriverBlob)(struct gl_context *ctx, + struct gl_program *prog); + /*@}*/ }; -- 2.30.2