Mesa (master): radv: trigger a new SQTT capture automatically after resizing the buffer
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Mar 3 08:14:53 UTC 2021
Module: Mesa
Branch: master
Commit: 6813b52290da93fcec3369bc97e0009bf80b1bc7
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6813b52290da93fcec3369bc97e0009bf80b1bc7
Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date: Tue Mar 2 15:29:25 2021 +0100
radv: trigger a new SQTT capture automatically after resizing the buffer
It's way better.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9367>
---
src/amd/vulkan/layers/radv_sqtt_layer.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/src/amd/vulkan/layers/radv_sqtt_layer.c b/src/amd/vulkan/layers/radv_sqtt_layer.c
index e1f298444f7..cdb3489e7c7 100644
--- a/src/amd/vulkan/layers/radv_sqtt_layer.c
+++ b/src/amd/vulkan/layers/radv_sqtt_layer.c
@@ -360,6 +360,7 @@ radv_handle_thread_trace(VkQueue _queue)
RADV_FROM_HANDLE(radv_queue, queue, _queue);
static bool thread_trace_enabled = false;
static uint64_t num_frames = 0;
+ bool resize_trigger = false;
if (thread_trace_enabled) {
struct ac_thread_trace thread_trace = {0};
@@ -370,11 +371,19 @@ radv_handle_thread_trace(VkQueue _queue)
/* TODO: Do something better than this whole sync. */
radv_QueueWaitIdle(_queue);
- if (radv_get_thread_trace(queue, &thread_trace))
+ if (radv_get_thread_trace(queue, &thread_trace)) {
ac_dump_thread_trace(&queue->device->physical_device->rad_info,
&thread_trace,
&queue->device->thread_trace);
- } else {
+ } else {
+ /* Trigger a new capture if the driver failed to get
+ * the trace because the buffer was too small.
+ */
+ resize_trigger = true;
+ }
+ }
+
+ if (!thread_trace_enabled) {
bool frame_trigger = num_frames == queue->device->thread_trace.start_frame;
bool file_trigger = false;
#ifndef _WIN32
@@ -390,7 +399,7 @@ radv_handle_thread_trace(VkQueue _queue)
}
#endif
- if (frame_trigger || file_trigger) {
+ if (frame_trigger || file_trigger || resize_trigger) {
/* FIXME: SQTT on compute hangs. */
if (queue->queue_family_index == RADV_QUEUE_COMPUTE) {
fprintf(stderr, "RADV: Capturing a SQTT trace on the compute "
More information about the mesa-commit
mailing list