[FFmpeg-cvslog] hwcontext_vulkan: use VkPhysicalDeviceTimelineSemaphoreFeatures
Zhao Zhili
git at videolan.org
Tue Feb 1 23:55:06 EET 2022
ffmpeg | branch: master | Zhao Zhili <quinkblack at foxmail.com> | Thu Jan 27 11:39:45 2022 +0800| [b5a8b3d45a292746a08317752ac01d216077e948] | committer: Lynne
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.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b5a8b3d45a292746a08317752ac01d216077e948
---
libavutil/hwcontext_vulkan.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
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;
More information about the ffmpeg-cvslog
mailing list