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

Lynne dev at lynne.ee
Tue Nov 7 13:42:39 EET 2023


Nov 7, 2023, 12:25 by quinkblack at foxmail.com:

> Ping.
>
>> 在 2023年10月30日,下午4:17,Zhao Zhili <quinkblack at foxmail.com> 写道:
>>
>> From: Zhao Zhili <zhilizhao at 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 | 9 ++++++++-
>> 1 file changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
>> index 8481427b42..9fbf61ee70 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,14 @@ static int create_instance(AVHWDeviceContext *ctx, AVDictionary *opts)
>>  inst_props.pNext = &validation_features;
>>  }
>>
>> +    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;
>> +        }
>> +    }
>> +
>>  /* Try to create the instance */
>>  ret = vk->CreateInstance(&inst_props, hwctx->alloc, &hwctx->inst);
>>

Pong. It is a bit incorrect - from memory,
VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR requires that
only Vulkan 1.1 features are enabled, while we require 1.3.
But if it works, sure. Could you ifdef it out everywhere outside of OSX?


More information about the ffmpeg-devel mailing list