diff mbox series

[FFmpeg-devel,v2] avutil/hwcontext_vulkan: fix run on macOS

Message ID tencent_C8349C698B90261B1094E6FEA7D02AB69306@qq.com
State Accepted
Commit 6f39dee9747144106c6f4d6be9ebf9fe50491162
Headers show
Series [FFmpeg-devel,v2] avutil/hwcontext_vulkan: fix run on macOS | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Zhao Zhili Nov. 7, 2023, 3:44 p.m. UTC
From: Zhao Zhili <zhilizhao@tencent.com>

VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME is required on macOS,
and VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR flag should
be set.
---
 libavutil/hwcontext_vulkan.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
index 8481427b42..521ad76690 100644
--- a/libavutil/hwcontext_vulkan.c
+++ b/libavutil/hwcontext_vulkan.c
@@ -405,7 +405,6 @@  typedef struct VulkanOptExtension {
 } VulkanOptExtension;
 
 static const VulkanOptExtension optional_instance_exts[] = {
-    /* Pointless, here avoid zero-sized structs */
     { VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,          FF_VK_EXT_NO_FLAG                },
 };
 
@@ -784,6 +783,16 @@  static int create_instance(AVHWDeviceContext *ctx, AVDictionary *opts)
         inst_props.pNext = &validation_features;
     }
 
+#ifdef __APPLE__
+    for (int i = 0; i < inst_props.enabledExtensionCount; i++) {
+        if (!strcmp(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,
+                    inst_props.ppEnabledExtensionNames[i])) {
+            inst_props.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
+            break;
+        }
+    }
+#endif
+
     /* Try to create the instance */
     ret = vk->CreateInstance(&inst_props, hwctx->alloc, &hwctx->inst);