Module: Mesa Branch: main Commit: a1e68790212c30797605f699a96b813456c4b8ef URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a1e68790212c30797605f699a96b813456c4b8ef
Author: Mark Janes <markja...@swizzler.org> Date: Wed Sep 20 15:17:00 2023 -0700 anv: make shader cache content deterministic Pointer values in shader cache data generate binary differences for functionally identical shader content. Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25923> --- src/intel/vulkan/anv_pipeline_cache.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/intel/vulkan/anv_pipeline_cache.c b/src/intel/vulkan/anv_pipeline_cache.c index 06f2573abe8..880b297858b 100644 --- a/src/intel/vulkan/anv_pipeline_cache.c +++ b/src/intel/vulkan/anv_pipeline_cache.c @@ -218,7 +218,14 @@ anv_shader_bin_serialize(struct vk_pipeline_cache_object *object, blob_write_bytes(blob, shader->kernel.map, shader->kernel_size); blob_write_uint32(blob, shader->prog_data_size); - blob_write_bytes(blob, shader->prog_data, shader->prog_data_size); + + union brw_any_prog_data prog_data; + assert(shader->prog_data_size <= sizeof(prog_data)); + memcpy(&prog_data, shader->prog_data, shader->prog_data_size); + prog_data.base.relocs = NULL; + prog_data.base.param = NULL; + blob_write_bytes(blob, &prog_data, shader->prog_data_size); + blob_write_bytes(blob, shader->prog_data->relocs, shader->prog_data->num_relocs * sizeof(shader->prog_data->relocs[0]));