radv: Handle VK_SUBOPTIMAL_KHR in trace layers
authorFriedrich Vock <friedrich.vock@gmx.de>
Sat, 8 Jul 2023 10:32:07 +0000 (12:32 +0200)
committerMarge Bot <emma+marge@anholt.net>
Thu, 10 Aug 2023 17:39:07 +0000 (17:39 +0000)
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: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24052>

src/amd/vulkan/layers/radv_rmv_layer.c
src/amd/vulkan/layers/radv_rra_layer.c
src/amd/vulkan/layers/radv_sqtt_layer.c

index 90a1c6a..5e05c12 100644 (file)
@@ -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);
index 84ffcd1..2c1e835 100644 (file)
@@ -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)
index 7806923..726dc43 100644 (file)
@@ -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);