From aec9fd394f0abea0282d0278b284d2d653281024 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 10 Mar 2023 15:40:22 +0100 Subject: [PATCH] radv: store spi_shader_col_format to radv_shader_part_binary For PS epilogs in the cache. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_shader.c | 6 ++++-- src/amd/vulkan/radv_shader.h | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index c3d946082fa..f8a67e5a9bb 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -2504,6 +2504,8 @@ radv_shader_part_create(struct radv_shader_part_binary *binary, unsigned wave_si shader_part->disasm_string = binary->disasm_size ? strdup((const char *)(binary->data + binary->code_size)) : NULL; + shader_part->spi_shader_col_format = binary->info.spi_shader_col_format; + return shader_part; } @@ -2968,12 +2970,12 @@ radv_create_ps_epilog(struct radv_device *device, const struct radv_ps_epilog_ke aco_compile_ps_epilog(&ac_opts, &ac_info, &ac_epilog_info, &args.ac, &radv_aco_build_shader_part, (void **)&binary); + binary->info.spi_shader_col_format = key->spi_shader_col_format; + epilog = radv_shader_part_create(binary, info.wave_size); if (!epilog) goto fail_create; - epilog->spi_shader_col_format = key->spi_shader_col_format; - /* Allocate memory and upload the epilog. */ epilog->alloc = radv_alloc_shader_memory(device, epilog->code_size, NULL); if (!epilog->alloc) diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h index 73ec735992a..4ae59c0a09e 100644 --- a/src/amd/vulkan/radv_shader.h +++ b/src/amd/vulkan/radv_shader.h @@ -458,6 +458,10 @@ struct radv_shader_binary_rtld { }; struct radv_shader_part_binary { + struct { + uint32_t spi_shader_col_format; + } info; + uint8_t num_sgprs; uint8_t num_vgprs; unsigned code_size;