From 736eaadce249af4eae5978d781efaa815a241d44 Mon Sep 17 00:00:00 2001 From: Lynne Date: Mon, 19 Dec 2022 07:57:22 +0100 Subject: [PATCH 50/97] vulkan: use device properties 2 and add a convenience loader function --- libavutil/vulkan.c | 18 +++++++++++++++++- libavutil/vulkan.h | 8 +++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index faf5cd5508..8a583248d1 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -108,6 +108,22 @@ const char *ff_vk_ret2str(VkResult res) #undef CASE } +void ff_vk_load_props(FFVulkanContext *s) +{ + FFVulkanFunctions *vk = &s->vkfn; + + s->driver_props = (VkPhysicalDeviceDriverProperties) { + .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, + }; + s->props = (VkPhysicalDeviceProperties2) { + .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, + .pNext = &s->driver_props, + }; + + vk->GetPhysicalDeviceProperties2(s->hwctx->phys_dev, &s->props); + vk->GetPhysicalDeviceMemoryProperties(s->hwctx->phys_dev, &s->mprops); +} + void ff_vk_qf_fill(FFVulkanContext *s) { s->nb_qfs = 0; @@ -189,7 +205,7 @@ int ff_vk_alloc_mem(FFVulkanContext *s, VkMemoryRequirements *req, /* Align if we need to */ if ((req_flags != UINT32_MAX) && req_flags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) - req->size = FFALIGN(req->size, s->props.limits.minMemoryMapAlignment); + req->size = FFALIGN(req->size, s->props.properties.limits.minMemoryMapAlignment); alloc_info.allocationSize = req->size; diff --git a/libavutil/vulkan.h b/libavutil/vulkan.h index f2c4a79102..2cd2c1f8fa 100644 --- a/libavutil/vulkan.h +++ b/libavutil/vulkan.h @@ -197,7 +197,8 @@ typedef struct FFVulkanContext { FFVulkanFunctions vkfn; FFVulkanExtensions extensions; - VkPhysicalDeviceProperties props; + VkPhysicalDeviceProperties2 props; + VkPhysicalDeviceDriverProperties driver_props; VkPhysicalDeviceMemoryProperties mprops; AVBufferRef *device_ref; @@ -243,6 +244,11 @@ extern const VkComponentMapping ff_comp_identity_map; */ const char *ff_vk_ret2str(VkResult res); +/** + * Loads props/mprops/driver_props + */ +void ff_vk_load_props(FFVulkanContext *s); + /** * Returns 1 if the image is any sort of supported RGB */ -- 2.40.0