[FFmpeg-devel] [PATCH] hwcontext_vulkan: use VkPhysicalDeviceTimelineSemaphoreFeatures to check for timeline semaphore supporting
Zhao Zhili
quinkblack at foxmail.com
Thu Jan 27 05:39:45 EET 2022
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.
---
libavutil/hwcontext_vulkan.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
index ae19fc2ab6..2e219511c9 100644
--- a/libavutil/hwcontext_vulkan.c
+++ b/libavutil/hwcontext_vulkan.c
@@ -1321,8 +1321,16 @@ 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 +1374,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;
--
2.31.1
More information about the ffmpeg-devel
mailing list