From 69ebba82d422a7f2dcff4eaa7c05642e063d7486 Mon Sep 17 00:00:00 2001 From: Konstantin Seurer Date: Sun, 6 Oct 2024 09:39:49 +0200 Subject: [PATCH] aco: Pass debug information to the driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Timur Kristóf Part-of: --- src/amd/compiler/aco_interface.cpp | 5 +++-- src/amd/compiler/aco_interface.h | 4 +++- src/amd/vulkan/radv_shader.c | 3 ++- src/gallium/drivers/radeonsi/si_shader_aco.c | 3 ++- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/amd/compiler/aco_interface.cpp b/src/amd/compiler/aco_interface.cpp index 99525f54eb8..46817ae9154 100644 --- a/src/amd/compiler/aco_interface.cpp +++ b/src/amd/compiler/aco_interface.cpp @@ -300,7 +300,8 @@ aco_compile_shader(const struct aco_compiler_options* options, const struct aco_ (*build_binary)(binary, &config, llvm_ir.c_str(), llvm_ir.size(), disasm.c_str(), disasm.size(), program->statistics, stats_size, exec_size, code.data(), code.size(), - symbols.data(), symbols.size()); + symbols.data(), symbols.size(), program->debug_info.data(), + program->debug_info.size()); } void @@ -344,7 +345,7 @@ aco_compile_rt_prolog(const struct aco_compiler_options* options, disasm = get_disasm_string(program.get(), code, exec_size); (*build_prolog)(binary, &config, NULL, 0, disasm.c_str(), disasm.size(), program->statistics, 0, - exec_size, code.data(), code.size(), NULL, 0); + exec_size, code.data(), code.size(), NULL, 0, NULL, 0); } void diff --git a/src/amd/compiler/aco_interface.h b/src/amd/compiler/aco_interface.h index 462727432a1..d9427c19533 100644 --- a/src/amd/compiler/aco_interface.h +++ b/src/amd/compiler/aco_interface.h @@ -8,6 +8,7 @@ #define ACO_INTERFACE_H #include "aco_shader_info.h" +#include "ac_shader_debug_info.h" #include "nir.h" @@ -34,7 +35,8 @@ typedef void(aco_callback)(void** priv_ptr, const struct ac_shader_config* confi const char* llvm_ir_str, unsigned llvm_ir_size, const char* disasm_str, unsigned disasm_size, uint32_t* statistics, uint32_t stats_size, uint32_t exec_size, const uint32_t* code, uint32_t code_dw, - const struct aco_symbol* symbols, unsigned num_symbols); + const struct aco_symbol* symbols, unsigned num_symbols, + const struct ac_shader_debug_info* debug_info, unsigned debug_info_count); typedef void(aco_shader_part_callback)(void** priv_ptr, uint32_t num_sgprs, uint32_t num_vgprs, const uint32_t* code, uint32_t code_size, diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index 19c03191a68..75e7514d656 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -2841,7 +2841,8 @@ static void radv_aco_build_shader_binary(void **bin, const struct ac_shader_config *config, const char *llvm_ir_str, unsigned llvm_ir_size, const char *disasm_str, unsigned disasm_size, uint32_t *statistics, uint32_t stats_size, uint32_t exec_size, const uint32_t *code, uint32_t code_dw, - const struct aco_symbol *symbols, unsigned num_symbols) + const struct aco_symbol *symbols, unsigned num_symbols, + const struct ac_shader_debug_info *debug_info, unsigned debug_info_count) { struct radv_shader_binary **binary = (struct radv_shader_binary **)bin; size_t size = llvm_ir_size; diff --git a/src/gallium/drivers/radeonsi/si_shader_aco.c b/src/gallium/drivers/radeonsi/si_shader_aco.c index 201dd39f424..c04aec63362 100644 --- a/src/gallium/drivers/radeonsi/si_shader_aco.c +++ b/src/gallium/drivers/radeonsi/si_shader_aco.c @@ -113,7 +113,8 @@ si_aco_build_shader_binary(void **data, const struct ac_shader_config *config, const char *llvm_ir_str, unsigned llvm_ir_size, const char *disasm_str, unsigned disasm_size, uint32_t *statistics, uint32_t stats_size, uint32_t exec_size, const uint32_t *code, uint32_t code_dw, - const struct aco_symbol *symbols, unsigned num_symbols) + const struct aco_symbol *symbols, unsigned num_symbols, + const struct ac_shader_debug_info *debug_info, unsigned debug_info_count) { struct si_shader *shader = (struct si_shader *)data;