ffmpeg | branch: master | Lynne <d...@lynne.ee> | Fri Nov 12 13:05:42 2021 
+0100| [57e11321ea378a57a909d817c2fcf2ebcaf8c123] | committer: Lynne

hwcontext_vulkan: use vkDeviceWaitIdle instead of vkWaitSemaphores on uninit

To silence a possible validation layer bug, switch the function. It only gets
triggered by vf_libplacebo, which is odd.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=57e11321ea378a57a909d817c2fcf2ebcaf8c123
---

 libavutil/hwcontext_vulkan.c | 12 +++---------
 libavutil/vulkan_functions.h |  1 +
 2 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
index 93a304ca95..6e746d4aa4 100644
--- a/libavutil/hwcontext_vulkan.c
+++ b/libavutil/hwcontext_vulkan.c
@@ -1589,15 +1589,9 @@ static void vulkan_frame_free(void *opaque, uint8_t 
*data)
     FFVulkanFunctions *vk = &p->vkfn;
     int planes = av_pix_fmt_count_planes(hwfc->sw_format);
 
-    VkSemaphoreWaitInfo wait_info = {
-        .sType          = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,
-        .flags          = 0x0,
-        .pSemaphores    = f->sem,
-        .pValues        = f->sem_value,
-        .semaphoreCount = planes,
-    };
-
-    vk->WaitSemaphores(hwctx->act_dev, &wait_info, UINT64_MAX);
+    /* We could use vkWaitSemaphores, but the validation layer seems to have
+     * issues tracking command buffer execution state on uninit. */
+    vk->DeviceWaitIdle(hwctx->act_dev);
 
     vulkan_free_internal(f->internal);
 
diff --git a/libavutil/vulkan_functions.h b/libavutil/vulkan_functions.h
index de2054e0c2..913667befb 100644
--- a/libavutil/vulkan_functions.h
+++ b/libavutil/vulkan_functions.h
@@ -47,6 +47,7 @@ typedef enum FFVulkanExtensions {
     MACRO(1, 0, FF_VK_EXT_NO_FLAG,              CreateDevice)                  
          \
     MACRO(1, 0, FF_VK_EXT_NO_FLAG,              GetPhysicalDeviceFeatures2)    
          \
     MACRO(1, 0, FF_VK_EXT_NO_FLAG,              GetPhysicalDeviceProperties)   
          \
+    MACRO(1, 0, FF_VK_EXT_NO_FLAG,              DeviceWaitIdle)                
          \
     MACRO(1, 0, FF_VK_EXT_NO_FLAG,              DestroyDevice)                 
          \
                                                                                
          \
     MACRO(1, 0, FF_VK_EXT_NO_FLAG,              EnumeratePhysicalDevices)      
          \

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to