From: Samuel Pitoiset Date: Mon, 20 Mar 2023 12:58:31 +0000 (+0100) Subject: radv: stop storing the binary as part of radv_shader_part X-Git-Tag: upstream/23.3.3~11323 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a455e0c99f761d8693de068dff08d6774b74e895;p=platform%2Fupstream%2Fmesa.git radv: stop storing the binary as part of radv_shader_part It's unnecessary to keep a pointer to the binary. Signed-off-by: Samuel Pitoiset Part-of: --- diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index a1dafb1..c3d9460 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -2498,7 +2498,6 @@ radv_shader_part_create(struct radv_shader_part_binary *binary, unsigned wave_si return NULL; shader_part->ref_count = 1; - shader_part->binary = binary; shader_part->code_size = code_size; shader_part->rsrc1 = S_00B848_VGPRS((binary->num_vgprs - 1) / (wave_size == 32 ? 8 : 4)) | S_00B228_SGPRS((binary->num_sgprs - 1) / 8); @@ -2509,9 +2508,9 @@ radv_shader_part_create(struct radv_shader_part_binary *binary, unsigned wave_si } bool -radv_shader_part_binary_upload(struct radv_device *device, struct radv_shader_part *shader_part) +radv_shader_part_binary_upload(struct radv_device *device, const struct radv_shader_part_binary *bin, + struct radv_shader_part *shader_part) { - const struct radv_shader_part_binary *bin = shader_part->binary; uint32_t code_size = radv_get_shader_binary_size(bin->code_size); struct radv_shader_dma_submission *submission = NULL; void *dest_ptr; @@ -2919,7 +2918,7 @@ radv_create_vs_prolog(struct radv_device *device, const struct radv_vs_prolog_ke prolog->bo = prolog->alloc->arena->bo; prolog->va = radv_buffer_get_va(prolog->bo) + prolog->alloc->offset; - if (!radv_shader_part_binary_upload(device, prolog)) + if (!radv_shader_part_binary_upload(device, binary, prolog)) goto fail_alloc; if (options.dump_shader) { @@ -2927,8 +2926,7 @@ radv_create_vs_prolog(struct radv_device *device, const struct radv_vs_prolog_ke fprintf(stderr, "\ndisasm:\n%s\n", prolog->disasm_string); } - free(prolog->binary); - prolog->binary = NULL; + free(binary); return prolog; @@ -2984,7 +2982,7 @@ radv_create_ps_epilog(struct radv_device *device, const struct radv_ps_epilog_ke epilog->bo = epilog->alloc->arena->bo; epilog->va = radv_buffer_get_va(epilog->bo) + epilog->alloc->offset; - if (!radv_shader_part_binary_upload(device, epilog)) + if (!radv_shader_part_binary_upload(device, binary, epilog)) goto fail_alloc; if (options.dump_shader) { @@ -2992,8 +2990,7 @@ radv_create_ps_epilog(struct radv_device *device, const struct radv_ps_epilog_ke fprintf(stderr, "\ndisasm:\n%s\n", epilog->disasm_string); } - free(epilog->binary); - epilog->binary = NULL; + free(binary); return epilog; @@ -3037,7 +3034,6 @@ radv_shader_part_destroy(struct radv_device *device, struct radv_shader_part *sh if (shader_part->alloc) radv_free_shader_memory(device, shader_part->alloc); - free(shader_part->binary); free(shader_part->disasm_string); free(shader_part); } diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h index ca6c8d5..73ec735 100644 --- a/src/amd/vulkan/radv_shader.h +++ b/src/amd/vulkan/radv_shader.h @@ -526,8 +526,6 @@ struct radv_shader_part { uint32_t spi_shader_col_format; uint64_t upload_seq; - struct radv_shader_part_binary *binary; - /* debug only */ char *disasm_string; }; @@ -584,6 +582,7 @@ struct radv_shader *radv_shader_nir_to_asm( VkResult radv_shader_wait_for_upload(struct radv_device *device, uint64_t seq); bool radv_shader_part_binary_upload(struct radv_device *device, + const struct radv_shader_part_binary *bin, struct radv_shader_part *shader_part); struct radv_shader_dma_submission *