diff options
author | Lynne <dev@lynne.ee> | 2024-09-21 08:03:40 +0200 |
---|---|---|
committer | Lynne <dev@lynne.ee> | 2024-09-22 02:11:07 +0200 |
commit | c4048013e5064deeb4d4ff37f2c65a45f7e3f6c3 (patch) | |
tree | d195370e86c5f90b003f6f57b37535b11452526c /libavutil/vulkan.c | |
parent | 1445102e68561b17c6f97f27ede37414c938e808 (diff) | |
download | ffmpeg-c4048013e5064deeb4d4ff37f2c65a45f7e3f6c3.tar.gz |
vulkan: flexibly allocate temporary imageviews
No reason to allocate 16 when 3 will do.
Diffstat (limited to 'libavutil/vulkan.c')
-rw-r--r-- | libavutil/vulkan.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index e9f094261d..cca04fb88f 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -1176,8 +1176,8 @@ const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pixfmt) } typedef struct ImageViewCtx { - VkImageView views[AV_NUM_DATA_POINTERS]; int nb_views; + VkImageView views[]; } ImageViewCtx; static void destroy_imageviews(void *opaque, uint8_t *data) @@ -1206,7 +1206,8 @@ int ff_vk_create_imageviews(FFVulkanContext *s, FFVkExecContext *e, const int nb_images = ff_vk_count_images(vkf); const int nb_planes = av_pix_fmt_count_planes(hwfc->sw_format); - ImageViewCtx *iv = av_mallocz(sizeof(*iv)); + const size_t buf_size = sizeof(int) + nb_planes*sizeof(VkImageView); + ImageViewCtx *iv = av_mallocz(buf_size); if (!iv) return AVERROR(ENOMEM); @@ -1243,7 +1244,7 @@ int ff_vk_create_imageviews(FFVulkanContext *s, FFVkExecContext *e, iv->nb_views++; } - buf = av_buffer_create((uint8_t *)iv, sizeof(*iv), destroy_imageviews, s, 0); + buf = av_buffer_create((uint8_t *)iv, buf_size, destroy_imageviews, s, 0); if (!buf) { err = AVERROR(ENOMEM); goto fail; |