summaryrefslogtreecommitdiff
path: root/src/amd/common/ac_rgp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/amd/common/ac_rgp.h')
-rw-r--r--src/amd/common/ac_rgp.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/amd/common/ac_rgp.h b/src/amd/common/ac_rgp.h
index caef1e19ba9..f0a9be6f44c 100644
--- a/src/amd/common/ac_rgp.h
+++ b/src/amd/common/ac_rgp.h
@@ -27,10 +27,84 @@
#define AC_RGP_H
#include <stdint.h>
+#include "compiler/shader_enums.h"
+#include "list.h"
+#include "util/simple_mtx.h"
struct radeon_info;
struct ac_thread_trace;
+enum rgp_hardware_stages {
+ RGP_HW_STAGE_VS = 0,
+ RGP_HW_STAGE_LS,
+ RGP_HW_STAGE_HS,
+ RGP_HW_STAGE_ES,
+ RGP_HW_STAGE_GS,
+ RGP_HW_STAGE_PS,
+ RGP_HW_STAGE_CS,
+ RGP_HW_STAGE_MAX,
+};
+
+struct rgp_shader_data {
+ uint64_t hash[2];
+ uint32_t code_size;
+ uint8_t *code;
+ uint32_t vgpr_count;
+ uint32_t sgpr_count;
+ uint64_t base_address;
+ uint32_t elf_symbol_offset;
+ uint32_t hw_stage;
+ uint32_t is_combined;
+};
+
+struct rgp_code_object_record {
+ uint32_t shader_stages_mask;
+ struct rgp_shader_data shader_data[MESA_SHADER_STAGES];
+ uint32_t num_shaders_combined; /* count combined shaders as one count */
+ uint64_t pipeline_hash[2];
+ struct list_head list;
+};
+
+struct rgp_code_object {
+ uint32_t record_count;
+ struct list_head record;
+ simple_mtx_t lock;
+};
+
+enum rgp_loader_event_type
+{
+ RGP_LOAD_TO_GPU_MEMORY = 0,
+ RGP_UNLOAD_FROM_GPU_MEMORY,
+};
+
+struct rgp_loader_events_record {
+ uint32_t loader_event_type;
+ uint32_t reserved;
+ uint64_t base_address;
+ uint64_t code_object_hash[2];
+ uint64_t time_stamp;
+ struct list_head list;
+};
+
+struct rgp_loader_events {
+ uint32_t record_count;
+ struct list_head record;
+ simple_mtx_t lock;
+};
+
+struct rgp_pso_correlation_record {
+ uint64_t api_pso_hash;
+ uint64_t pipeline_hash[2];
+ char api_level_obj_name[64];
+ struct list_head list;
+};
+
+struct rgp_pso_correlation {
+ uint32_t record_count;
+ struct list_head record;
+ simple_mtx_t lock;
+};
+
int
ac_dump_thread_trace(struct radeon_info *info,
const struct ac_thread_trace *thread_trace);