From 1825627cf86d3762217d0c3ff86628c899ca0d73 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Mon, 8 Jun 2026 15:55:01 +0200 Subject: [PATCH] va: Set contiguous_planes for DMA-BUF imported surfaces Set contiguous_planes if all planes share the same fd. This makes vaDeriveImage work with DMA-BUF imported surfaces. Reviewed-by: Boyuan Zhang Part-of: --- src/gallium/frontends/va/surface.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/gallium/frontends/va/surface.c b/src/gallium/frontends/va/surface.c index cb92a8ae101..ffa0524cba9 100644 --- a/src/gallium/frontends/va/surface.c +++ b/src/gallium/frontends/va/surface.c @@ -35,6 +35,7 @@ #include "util/u_sampler.h" #include "util/u_video.h" #include "util/set.h" +#include "util/os_file.h" #include "vl/vl_compositor.h" #include "vl/vl_video_buffer.h" @@ -679,6 +680,13 @@ surface_from_prime(VADriverContextP ctx, vlVaSurface *surface, result = VA_STATUS_ERROR_ALLOCATION_FAILED; goto fail; } + + surface->buffer->contiguous_planes = true; + for (uint32_t i = 1; i < desc->num_objects; i++) { + if (os_same_file_description(desc->objects[0].fd, desc->objects[i].fd) != 0) + surface->buffer->contiguous_planes = false; + } + return VA_STATUS_SUCCESS; fail: