diff options
author | Zhao Zhili <quinkblack@foxmail.com> | 2022-01-27 11:39:45 +0800 |
---|---|---|
committer | Lynne <dev@lynne.ee> | 2022-02-01 22:54:24 +0100 |
commit | b5a8b3d45a292746a08317752ac01d216077e948 (patch) | |
tree | ca573dc0b7af3be7103c984d7a84a296c0126f47 /libavutil | |
parent | 61b104caaace2dd182b0cb3a51265342b323eb2c (diff) | |
download | ffmpeg-b5a8b3d45a292746a08317752ac01d216077e948.tar.gz |
hwcontext_vulkan: use VkPhysicalDeviceTimelineSemaphoreFeatures
VkPhysicalDeviceVulkan12Features isn't implemented on MoltenVK yet.
VkPhysicalDeviceTimelineSemaphoreFeatures is less versatile but
simple. None of device_features_1_1 nor device_features_1_2 has real
usage yet, keep the code for future.
Diffstat (limited to 'libavutil')
-rw-r--r-- | libavutil/hwcontext_vulkan.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c index ae19fc2ab6..0c942fbc96 100644 --- a/libavutil/hwcontext_vulkan.c +++ b/libavutil/hwcontext_vulkan.c @@ -1321,8 +1321,18 @@ static int vulkan_device_create_internal(AVHWDeviceContext *ctx, VulkanDevicePriv *p = ctx->internal->priv; FFVulkanFunctions *vk = &p->vkfn; AVVulkanDeviceContext *hwctx = ctx->hwctx; + + /* + * VkPhysicalDeviceVulkan12Features has a timelineSemaphore field, but + * MoltenVK doesn't implement VkPhysicalDeviceVulkan12Features yet, so we + * use VkPhysicalDeviceTimelineSemaphoreFeatures directly. + */ + VkPhysicalDeviceTimelineSemaphoreFeatures timeline_features = { + .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, + }; VkPhysicalDeviceVulkan12Features dev_features_1_2 = { .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES, + .pNext = &timeline_features, }; VkPhysicalDeviceVulkan11Features dev_features_1_1 = { .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES, @@ -1366,7 +1376,7 @@ static int vulkan_device_create_internal(AVHWDeviceContext *ctx, #undef COPY_FEATURE /* We require timeline semaphores */ - if (!dev_features_1_2.timelineSemaphore) { + if (!timeline_features.timelineSemaphore) { av_log(ctx, AV_LOG_ERROR, "Device does not support timeline semaphores!\n"); err = AVERROR(ENOSYS); goto end; |