From 15de0af8f0f620d4c38ca5fe88dc5c1412ea8354 Mon Sep 17 00:00:00 2001 From: Lynne Date: Thu, 15 Dec 2022 17:43:27 +0100 Subject: [PATCH] vulkan: allow alloc pNext in ff_vk_create_buf --- libavfilter/vf_gblur_vulkan.c | 2 +- libavfilter/vf_scale_vulkan.c | 2 +- libavutil/vulkan.c | 5 +++-- libavutil/vulkan.h | 3 ++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/libavfilter/vf_gblur_vulkan.c b/libavfilter/vf_gblur_vulkan.c index 80d1dc61c0..a6037e0888 100644 --- a/libavfilter/vf_gblur_vulkan.c +++ b/libavfilter/vf_gblur_vulkan.c @@ -174,7 +174,7 @@ static int init_gblur_pipeline(GBlurVulkanContext *s, FFVulkanPipeline *pl, FFVk RET(ff_vk_init_pipeline_layout(&s->vkctx, pl)); RET(ff_vk_init_compute_pipeline(&s->vkctx, pl)); - RET(ff_vk_create_buf(&s->vkctx, params_buf, sizeof(float) * ksize, NULL, + RET(ff_vk_create_buf(&s->vkctx, params_buf, sizeof(float) * ksize, NULL, NULL, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)); RET(ff_vk_map_buffers(&s->vkctx, params_buf, &kernel_mapped, 1, 0)); diff --git a/libavfilter/vf_scale_vulkan.c b/libavfilter/vf_scale_vulkan.c index d14b32277d..cd37a861b1 100644 --- a/libavfilter/vf_scale_vulkan.c +++ b/libavfilter/vf_scale_vulkan.c @@ -253,7 +253,7 @@ static av_cold int init_filter(AVFilterContext *ctx, AVFrame *in) } RET(ff_vk_create_buf(vkctx, &s->params_buf, - sizeof(*par), NULL, + sizeof(*par), NULL, NULL, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)); diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index b1553c6537..0bb5b1eebf 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -232,7 +232,8 @@ int ff_vk_alloc_mem(FFVulkanContext *s, VkMemoryRequirements *req, return 0; } -int ff_vk_create_buf(FFVulkanContext *s, FFVkBuffer *buf, size_t size, void *pNext, +int ff_vk_create_buf(FFVulkanContext *s, FFVkBuffer *buf, size_t size, + void *pNext, void *alloc_pNext, VkBufferUsageFlags usage, VkMemoryPropertyFlagBits flags) { int err; @@ -254,7 +255,7 @@ int ff_vk_create_buf(FFVulkanContext *s, FFVkBuffer *buf, size_t size, void *pNe }; VkMemoryDedicatedAllocateInfo ded_alloc = { .sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO, - .pNext = NULL, + .pNext = alloc_pNext, }; VkMemoryDedicatedRequirements ded_req = { .sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS, diff --git a/libavutil/vulkan.h b/libavutil/vulkan.h index 85836a7807..d75be26977 100644 --- a/libavutil/vulkan.h +++ b/libavutil/vulkan.h @@ -413,7 +413,8 @@ int ff_vk_submit_exec_queue(FFVulkanContext *s, FFVkExecContext *e); /** * Create a VkBuffer with the specified parameters. */ -int ff_vk_create_buf(FFVulkanContext *s, FFVkBuffer *buf, size_t size, void *pNext, +int ff_vk_create_buf(FFVulkanContext *s, FFVkBuffer *buf, size_t size, + void *pNext, void *alloc_pNext, VkBufferUsageFlags usage, VkMemoryPropertyFlagBits flags); /**