summaryrefslogtreecommitdiff
path: root/src/amd/common/ac_rgp.h
diff options
context:
space:
mode:
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>2021-11-05 15:42:43 +0100
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>2021-11-09 11:20:10 +0100
commitaebf04ab3ff2d3d96a546771e1a8a1d3811b6dd0 (patch)
treec78a628c9fa7460ef6d96d4add1d5051b0d50d47 /src/amd/common/ac_rgp.h
parente04101c34e9d196dc5452a045bd049165b8c5f8a (diff)
ac/rgp: add support for queue event timings
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13709>
Diffstat (limited to 'src/amd/common/ac_rgp.h')
-rw-r--r--src/amd/common/ac_rgp.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/amd/common/ac_rgp.h b/src/amd/common/ac_rgp.h
index 51799ce061c..ce06f644c7c 100644
--- a/src/amd/common/ac_rgp.h
+++ b/src/amd/common/ac_rgp.h
@@ -108,6 +108,73 @@ struct rgp_pso_correlation {
simple_mtx_t lock;
};
+enum sqtt_queue_type {
+ SQTT_QUEUE_TYPE_UNKNOWN = 0x0,
+ SQTT_QUEUE_TYPE_UNIVERSAL = 0x1,
+ SQTT_QUEUE_TYPE_COMPUTE = 0x2,
+ SQTT_QUEUE_TYPE_DMA = 0x3,
+};
+
+enum sqtt_engine_type {
+ SQTT_ENGINE_TYPE_UNKNOWN = 0x0,
+ SQTT_ENGINE_TYPE_UNIVERSAL = 0x1,
+ SQTT_ENGINE_TYPE_COMPUTE = 0x2,
+ SQTT_ENGINE_TYPE_EXCLUSIVE_COMPUTE = 0x3,
+ SQTT_ENGINE_TYPE_DMA = 0x4,
+ SQTT_ENGINE_TYPE_HIGH_PRIORITY_UNIVERSAL = 0x7,
+ SQTT_ENGINE_TYPE_HIGH_PRIORITY_GRAPHICS = 0x8,
+};
+
+struct sqtt_queue_hardware_info {
+ union {
+ struct {
+ enum sqtt_queue_type queue_type : 8;
+ enum sqtt_engine_type engine_type : 8;
+ uint32_t reserved : 16;
+ };
+ uint32_t value;
+ };
+};
+
+struct rgp_queue_info_record {
+ uint64_t queue_id;
+ uint64_t queue_context;
+ struct sqtt_queue_hardware_info hardware_info;
+ uint32_t reserved;
+ struct list_head list;
+};
+
+struct rgp_queue_info {
+ uint32_t record_count;
+ struct list_head record;
+ simple_mtx_t lock;
+};
+
+enum sqtt_queue_event_type {
+ SQTT_QUEUE_TIMING_EVENT_CMDBUF_SUBMIT,
+ SQTT_QUEUE_TIMING_EVENT_SIGNAL_SEMAPHORE,
+ SQTT_QUEUE_TIMING_EVENT_WAIT_SEMAPHORE,
+ SQTT_QUEUE_TIMING_EVENT_PRESENT
+};
+
+struct rgp_queue_event_record {
+ enum sqtt_queue_event_type event_type;
+ uint32_t sqtt_cb_id;
+ uint64_t frame_index;
+ uint32_t queue_info_index;
+ uint32_t submit_sub_index;
+ uint64_t api_id;
+ uint64_t cpu_timestamp;
+ uint64_t gpu_timestamps[2];
+ struct list_head list;
+};
+
+struct rgp_queue_event {
+ uint32_t record_count;
+ struct list_head record;
+ simple_mtx_t lock;
+};
+
int
ac_dump_rgp_capture(struct radeon_info *info,
struct ac_thread_trace *thread_trace);