[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