diff options
author | Lynne <dev@lynne.ee> | 2022-12-19 07:57:22 +0100 |
---|---|---|
committer | Lynne <dev@lynne.ee> | 2023-05-29 00:41:46 +0200 |
commit | d386988c39670aadb4fa9d22bc1e0f3be8373b5c (patch) | |
tree | ab4d7b81c490ca1e9053290b74dfaef9f7a79b41 | |
parent | bf69a641355771106b4836e0558d5c34e48870b9 (diff) | |
download | ffmpeg-d386988c39670aadb4fa9d22bc1e0f3be8373b5c.tar.gz |
vulkan: use device properties 2 and add a convenience loader function
-rw-r--r-- | libavutil/vulkan.c | 18 | ||||
-rw-r--r-- | 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; @@ -244,6 +245,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 */ int ff_vk_mt_is_np_rgb(enum AVPixelFormat pix_fmt); |