diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index f8a67e5a9bb..ec7be4419d3 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -2786,6 +2786,7 @@ static void radv_aco_build_shader_part(void **bin, part_binary->num_sgprs = num_sgprs; part_binary->num_vgprs = num_vgprs; + part_binary->total_size = size; part_binary->code_size = code_size * sizeof(uint32_t); memcpy(part_binary->data, code, part_binary->code_size); if (disasm_size) { diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h index 4ae59c0a09e..8d526599e4f 100644 --- a/src/amd/vulkan/radv_shader.h +++ b/src/amd/vulkan/radv_shader.h @@ -466,6 +466,10 @@ struct radv_shader_part_binary { uint8_t num_vgprs; unsigned code_size; unsigned disasm_size; + + /* Self-referential size so we avoid consistency issues. */ + uint32_t total_size; + uint8_t data[0]; };