[FFmpeg-devel] [PATCH] avutil/hwcontext_vulkan: don't over-map buffers with prior padding

Lynne dev at lynne.ee
Tue Jul 15 14:45:09 EEST 2025


On 15/07/2025 19:51, Niklas Haas wrote:
> From: Niklas Haas <git at haasn.dev>
> 
> If the image data is not at the start of the buffer allocation, such as
> when the buffer has padding before the image data, this function maps too
> much memory, since src_data + src_buf->size exceeds the buffer size.
> 
> Fix this by subtracting the difference between the buffer start and the
> provided image data pointer from the size of the memory range to map.
> 
> An easy way to reproduce this issue is using the vf_pad filter, which
> allocates image data buffers with a nonzero offset whenever padding is
> requested before the start of the image data.
> ---
>   libavutil/vulkan.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c
> index f36f2bb7cf..04cc45ee05 100644
> --- a/libavutil/vulkan.c
> +++ b/libavutil/vulkan.c
> @@ -1408,7 +1408,8 @@ int ff_vk_host_map_buffer(FFVulkanContext *s, AVBufferRef **dst,
>           return AVERROR(ENOMEM);
>   
>       /* Add the offset at the start, which gets ignored */
> -    buffer_size = offs + src_buf->size;
> +    const ptrdiff_t src_offset = src_data - src_buf->data;
> +    buffer_size = offs + (src_buf->size - src_offset);
>       buffer_size = FFALIGN(buffer_size, s->props.properties.limits.minMemoryMapAlignment);
>       buffer_size = FFALIGN(buffer_size, s->hprops.minImportedHostPointerAlignment);
>   

lgtm


More information about the ffmpeg-devel mailing list