mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
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.
This commit is contained in:
parent
61b104caaa
commit
b5a8b3d45a
@ -1321,8 +1321,18 @@ static int vulkan_device_create_internal(AVHWDeviceContext *ctx,
|
|||||||
VulkanDevicePriv *p = ctx->internal->priv;
|
VulkanDevicePriv *p = ctx->internal->priv;
|
||||||
FFVulkanFunctions *vk = &p->vkfn;
|
FFVulkanFunctions *vk = &p->vkfn;
|
||||||
AVVulkanDeviceContext *hwctx = ctx->hwctx;
|
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 = {
|
VkPhysicalDeviceVulkan12Features dev_features_1_2 = {
|
||||||
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,
|
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,
|
||||||
|
.pNext = &timeline_features,
|
||||||
};
|
};
|
||||||
VkPhysicalDeviceVulkan11Features dev_features_1_1 = {
|
VkPhysicalDeviceVulkan11Features dev_features_1_1 = {
|
||||||
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,
|
.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
|
#undef COPY_FEATURE
|
||||||
|
|
||||||
/* We require timeline semaphores */
|
/* 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");
|
av_log(ctx, AV_LOG_ERROR, "Device does not support timeline semaphores!\n");
|
||||||
err = AVERROR(ENOSYS);
|
err = AVERROR(ENOSYS);
|
||||||
goto end;
|
goto end;
|
||||||
|
Loading…
Reference in New Issue
Block a user