X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fstate_tracker%2Fst_shader_cache.c;h=c82ce3eaa2d8dc32e199f196e7d68d4659929203;hb=331ae3cde5fd6689cd00112fd365da0d00dc5e56;hp=3ca3fef1df2aad10c7ce7f1a12655259ffb862d0;hpb=d88a2906f86843fa11d95f7ac2f39cd0b2713d72;p=mesa.git diff --git a/src/mesa/state_tracker/st_shader_cache.c b/src/mesa/state_tracker/st_shader_cache.c index 3ca3fef1df2..c82ce3eaa2d 100644 --- a/src/mesa/state_tracker/st_shader_cache.c +++ b/src/mesa/state_tracker/st_shader_cache.c @@ -74,6 +74,9 @@ static void st_serialise_ir_program(struct gl_context *ctx, struct gl_program *prog, bool nir) { + if (prog->driver_cache_blob) + return; + struct blob blob; blob_init(&blob); @@ -84,6 +87,8 @@ st_serialise_ir_program(struct gl_context *ctx, struct gl_program *prog, blob_write_uint32(&blob, stvp->num_inputs); blob_write_bytes(&blob, stvp->index_to_input, sizeof(stvp->index_to_input)); + blob_write_bytes(&blob, stvp->input_to_index, + sizeof(stvp->input_to_index)); blob_write_bytes(&blob, stvp->result_to_output, sizeof(stvp->result_to_output)); @@ -206,6 +211,8 @@ st_deserialise_ir_program(struct gl_context *ctx, stvp->num_inputs = blob_read_uint32(&blob_reader); blob_copy_bytes(&blob_reader, (uint8_t *) stvp->index_to_input, sizeof(stvp->index_to_input)); + blob_copy_bytes(&blob_reader, (uint8_t *) stvp->input_to_index, + sizeof(stvp->input_to_index)); blob_copy_bytes(&blob_reader, (uint8_t *) stvp->result_to_output, sizeof(stvp->result_to_output)); @@ -407,6 +414,14 @@ st_serialise_tgsi_program(struct gl_context *ctx, struct gl_program *prog) st_serialise_ir_program(ctx, prog, false); } +void +st_serialise_tgsi_program_binary(struct gl_context *ctx, + struct gl_shader_program *shProg, + struct gl_program *prog) +{ + st_serialise_ir_program(ctx, prog, false); +} + void st_deserialise_tgsi_program(struct gl_context *ctx, struct gl_shader_program *shProg, @@ -421,6 +436,14 @@ st_serialise_nir_program(struct gl_context *ctx, struct gl_program *prog) st_serialise_ir_program(ctx, prog, true); } +void +st_serialise_nir_program_binary(struct gl_context *ctx, + struct gl_shader_program *shProg, + struct gl_program *prog) +{ + st_serialise_ir_program(ctx, prog, true); +} + void st_deserialise_nir_program(struct gl_context *ctx, struct gl_shader_program *shProg,