diff --git a/.pick_status.json b/.pick_status.json index 8a7ba4a302b..db4ccb7a9bb 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -76,7 +76,7 @@ "description": "radv/sqtt: fix GPU hangs when capturing from the compute queue", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/amd/vulkan/layers/radv_sqtt_layer.c b/src/amd/vulkan/layers/radv_sqtt_layer.c index 6a4acda4d17..fb0858bfdae 100644 --- a/src/amd/vulkan/layers/radv_sqtt_layer.c +++ b/src/amd/vulkan/layers/radv_sqtt_layer.c @@ -389,15 +389,6 @@ radv_handle_thread_trace(VkQueue _queue) #endif if (frame_trigger || file_trigger || resize_trigger) { - /* FIXME: SQTT on compute hangs. */ - if (queue->vk.queue_family_index == RADV_QUEUE_COMPUTE) { - fprintf(stderr, "RADV: Capturing a SQTT trace on the compute " - "queue is currently broken and might hang! " - "Please, disable presenting on compute if " - "you can.\n"); - return; - } - radv_begin_thread_trace(queue); assert(!thread_trace_enabled); thread_trace_enabled = true; diff --git a/src/amd/vulkan/radv_sqtt.c b/src/amd/vulkan/radv_sqtt.c index 71c489910a3..c09cd367e7c 100644 --- a/src/amd/vulkan/radv_sqtt.c +++ b/src/amd/vulkan/radv_sqtt.c @@ -271,7 +271,7 @@ radv_emit_thread_trace_stop(struct radv_device *device, struct radeon_cmdbuf *cs radeon_emit(cs, R_008D20_SQ_THREAD_TRACE_STATUS >> 2); /* register */ radeon_emit(cs, 0); radeon_emit(cs, 0); /* reference value */ - radeon_emit(cs, S_008D20_FINISH_DONE(1)); /* mask */ + radeon_emit(cs, ~C_008D20_FINISH_DONE); radeon_emit(cs, 4); /* poll interval */ /* Disable the thread trace mode. */ @@ -285,7 +285,7 @@ radv_emit_thread_trace_stop(struct radv_device *device, struct radeon_cmdbuf *cs radeon_emit(cs, R_008D20_SQ_THREAD_TRACE_STATUS >> 2); /* register */ radeon_emit(cs, 0); radeon_emit(cs, 0); /* reference value */ - radeon_emit(cs, S_008D20_BUSY(1)); /* mask */ + radeon_emit(cs, ~C_008D20_BUSY); /* mask */ radeon_emit(cs, 4); /* poll interval */ } else { /* Disable the thread trace mode. */ @@ -298,7 +298,7 @@ radv_emit_thread_trace_stop(struct radv_device *device, struct radeon_cmdbuf *cs radeon_emit(cs, R_030CE8_SQ_THREAD_TRACE_STATUS >> 2); /* register */ radeon_emit(cs, 0); radeon_emit(cs, 0); /* reference value */ - radeon_emit(cs, S_030CE8_BUSY(1)); /* mask */ + radeon_emit(cs, ~C_030CE8_BUSY); /* mask */ radeon_emit(cs, 4); /* poll interval */ }