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