diff options
author | Samuel Pitoiset <samuel.pitoiset@gmail.com> | 2021-11-05 15:42:43 +0100 |
---|---|---|
committer | Samuel Pitoiset <samuel.pitoiset@gmail.com> | 2021-11-09 11:20:10 +0100 |
commit | aebf04ab3ff2d3d96a546771e1a8a1d3811b6dd0 (patch) | |
tree | c78a628c9fa7460ef6d96d4add1d5051b0d50d47 /src/amd/common/ac_rgp.h | |
parent | e04101c34e9d196dc5452a045bd049165b8c5f8a (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.h | 67 |
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); |