From 746e283fc399c7830f7ce12688af077281298514 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Tue, 6 Aug 2024 10:25:50 +0200 Subject: [PATCH] gallium/ddebug: implement modifiers function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-By: Mike Blumenkrantz Reviewed-by: Marek Olšák Part-of: --- .../auxiliary/driver_ddebug/dd_screen.c | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/gallium/auxiliary/driver_ddebug/dd_screen.c b/src/gallium/auxiliary/driver_ddebug/dd_screen.c index fe742d86906..fec7902f754 100644 --- a/src/gallium/auxiliary/driver_ddebug/dd_screen.c +++ b/src/gallium/auxiliary/driver_ddebug/dd_screen.c @@ -251,6 +251,34 @@ dd_screen_resource_from_handle(struct pipe_screen *_screen, return res; } +static struct pipe_resource * +dd_screen_resource_create_with_modifiers(struct pipe_screen *_screen, + const struct pipe_resource *templat, + const uint64_t *modifiers, int count) +{ + struct pipe_screen *screen = dd_screen(_screen)->screen; + struct pipe_resource *res = + screen->resource_create_with_modifiers(screen, templat, + modifiers, count); + + if (!res) + return NULL; + res->screen = _screen; + return res; +} + +static void +dd_screen_query_dmabuf_modifiers(struct pipe_screen *_screen, + enum pipe_format format, int max, + uint64_t *modifiers, + unsigned int *external_only, int *count) +{ + struct pipe_screen *screen = dd_screen(_screen)->screen; + screen->query_dmabuf_modifiers(screen, format, max, modifiers, + external_only, count); +} + + static struct pipe_resource * dd_screen_resource_from_user_memory(struct pipe_screen *_screen, const struct pipe_resource *templ, @@ -634,6 +662,8 @@ ddebug_screen_create(struct pipe_screen *screen) /* is_video_format_supported */ SCR_INIT(can_create_resource); dscreen->base.resource_create = dd_screen_resource_create; + dscreen->base.resource_create_with_modifiers = dd_screen_resource_create_with_modifiers; + dscreen->base.query_dmabuf_modifiers = dd_screen_query_dmabuf_modifiers; dscreen->base.resource_from_handle = dd_screen_resource_from_handle; SCR_INIT(resource_from_memobj); SCR_INIT(resource_from_user_memory);