Mesa (master): radeonsi/sqtt: keep a copy of the uploaded shader code
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Mar 5 13:21:11 UTC 2021
Module: Mesa
Branch: master
Commit: a27ea38d2ae5721f761ff230392796912711d092
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a27ea38d2ae5721f761ff230392796912711d092
Author: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Date: Tue Feb 23 15:05:19 2021 +0100
radeonsi/sqtt: keep a copy of the uploaded shader code
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9277>
---
src/gallium/drivers/radeonsi/si_shader.c | 15 +++++++++++++--
src/gallium/drivers/radeonsi/si_shader.h | 3 +++
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index 917b1475b3a..705e6e54c00 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -874,12 +874,19 @@ bool si_shader_binary_upload(struct si_screen *sscreen, struct si_shader *shader
if (!u.rx_ptr)
return false;
- bool ok = ac_rtld_upload(&u);
+ int size = ac_rtld_upload(&u);
+
+ if (sscreen->debug_flags & DBG(SQTT)) {
+ /* Remember the uploaded code */
+ shader->binary.uploaded_code_size = size;
+ shader->binary.uploaded_code = malloc(size);
+ memcpy(shader->binary.uploaded_code, u.rx_ptr, size);
+ }
sscreen->ws->buffer_unmap(shader->bo->buf);
ac_rtld_close(&binary);
- return ok;
+ return size >= 0;
}
static void si_shader_dump_disassembly(struct si_screen *screen,
@@ -2143,6 +2150,10 @@ void si_shader_binary_clean(struct si_shader_binary *binary)
free(binary->llvm_ir_string);
binary->llvm_ir_string = NULL;
+
+ free(binary->uploaded_code);
+ binary->uploaded_code = NULL;
+ binary->uploaded_code_size = 0;
}
void si_shader_destroy(struct si_shader *shader)
diff --git a/src/gallium/drivers/radeonsi/si_shader.h b/src/gallium/drivers/radeonsi/si_shader.h
index 07615fa87c7..d2d5718f201 100644
--- a/src/gallium/drivers/radeonsi/si_shader.h
+++ b/src/gallium/drivers/radeonsi/si_shader.h
@@ -723,6 +723,9 @@ struct si_shader_binary {
const char *elf_buffer;
size_t elf_size;
+ char *uploaded_code;
+ size_t uploaded_code_size;
+
char *llvm_ir_string;
};
More information about the mesa-commit
mailing list