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);