aboutsummaryrefslogtreecommitdiffstats
path: root/libavutil/hwcontext_vulkan.c
diff options
context:
space:
mode:
authorZhao Zhili <zhilizhao@tencent.com>2023-11-07 23:44:45 +0800
committerZhao Zhili <zhilizhao@tencent.com>2023-11-09 19:23:01 +0800
commit6f39dee9747144106c6f4d6be9ebf9fe50491162 (patch)
tree2c543bd6f19b66ab2e972d5381a031f563009380 /libavutil/hwcontext_vulkan.c
parentf16900bda23414caf9ec3f9dc50db7d4caf59a8b (diff)
downloadffmpeg-6f39dee9747144106c6f4d6be9ebf9fe50491162.tar.gz
avutil/hwcontext_vulkan: fix run on macOS
VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME is required on macOS, and VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR flag should be set. Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Diffstat (limited to 'libavutil/hwcontext_vulkan.c')
-rw-r--r--libavutil/hwcontext_vulkan.c11
1 files changed, 10 insertions, 1 deletions
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);