From: Friedrich Vock Date: Sat, 8 Jul 2023 10:32:07 +0000 (+0200) Subject: radv: Handle VK_SUBOPTIMAL_KHR in trace layers X-Git-Tag: upstream/23.3.3~3523 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b8edd19358eaba847de3063b24f2ab0dd6f69f14;p=platform%2Fupstream%2Fmesa.git radv: Handle VK_SUBOPTIMAL_KHR in trace layers vkQueuePresentKHR might return VK_SUBOPTIMAL_KHR which is not VK_SUCCESS but presentation succeeded anyway. We should capture a trace even if VK_SUBOPTIMAL_KHR is returned. Cc: mesa-stable Part-of: --- diff --git a/src/amd/vulkan/layers/radv_rmv_layer.c b/src/amd/vulkan/layers/radv_rmv_layer.c index 90a1c6a..5e05c12 100644 --- a/src/amd/vulkan/layers/radv_rmv_layer.c +++ b/src/amd/vulkan/layers/radv_rmv_layer.c @@ -34,7 +34,7 @@ rmv_QueuePresentKHR(VkQueue _queue, const VkPresentInfoKHR *pPresentInfo) struct radv_device *device = queue->device; VkResult res = queue->device->layer_dispatch.rmv.QueuePresentKHR(_queue, pPresentInfo); - if (res != VK_SUCCESS || !device->vk.memory_trace_data.is_enabled) + if ((res != VK_SUCCESS && res != VK_SUBOPTIMAL_KHR) || !device->vk.memory_trace_data.is_enabled) return res; vk_rmv_log_misc_token(&device->vk, VK_RMV_MISC_EVENT_TYPE_PRESENT); diff --git a/src/amd/vulkan/layers/radv_rra_layer.c b/src/amd/vulkan/layers/radv_rra_layer.c index 84ffcd1..2c1e835 100644 --- a/src/amd/vulkan/layers/radv_rra_layer.c +++ b/src/amd/vulkan/layers/radv_rra_layer.c @@ -33,7 +33,7 @@ rra_QueuePresentKHR(VkQueue _queue, const VkPresentInfoKHR *pPresentInfo) { RADV_FROM_HANDLE(radv_queue, queue, _queue); VkResult result = queue->device->layer_dispatch.rra.QueuePresentKHR(_queue, pPresentInfo); - if (result != VK_SUCCESS) + if (result != VK_SUCCESS && result != VK_SUBOPTIMAL_KHR) return result; if (!queue->device->rra_trace.copy_after_build) diff --git a/src/amd/vulkan/layers/radv_sqtt_layer.c b/src/amd/vulkan/layers/radv_sqtt_layer.c index 7806923..726dc43 100644 --- a/src/amd/vulkan/layers/radv_sqtt_layer.c +++ b/src/amd/vulkan/layers/radv_sqtt_layer.c @@ -579,7 +579,7 @@ sqtt_QueuePresentKHR(VkQueue _queue, const VkPresentInfoKHR *pPresentInfo) VkResult result; result = queue->device->layer_dispatch.rgp.QueuePresentKHR(_queue, pPresentInfo); - if (result != VK_SUCCESS) + if (result != VK_SUCCESS && result != VK_SUBOPTIMAL_KHR) return result; radv_handle_sqtt(_queue);