i965: Use ShaderCacheSerializeDriverBlob driver function

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@intel.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
Jordan Justen 2018-04-08 23:16:19 -07:00
parent 450f00e39d
commit 6497be42b7
No known key found for this signature in database
GPG Key ID: 37F99F68CAF992EB
3 changed files with 7 additions and 11 deletions

View File

@ -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

View File

@ -359,17 +359,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;

View File

@ -843,6 +843,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);