From 63b33eb4d9c444add6c37e3aaf08edd308ccfe73 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Mon, 30 Jun 2025 14:09:02 -0700 Subject: [PATCH] dri: Correct handle-usage flags If we can only import for sampling from, don't tell the driver that we want to render to the handle. Signed-off-by: Rob Clark Part-of: --- src/gallium/frontends/dri/dri2.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/gallium/frontends/dri/dri2.c b/src/gallium/frontends/dri/dri2.c index f70b3f0cc3e..db505ff5e03 100644 --- a/src/gallium/frontends/dri/dri2.c +++ b/src/gallium/frontends/dri/dri2.c @@ -988,6 +988,11 @@ dri_create_image_from_winsys(struct dri_screen *screen, if (!img) return NULL; + unsigned handle_usage = 0; + + if (tex_usage & PIPE_BIND_RENDER_TARGET) + handle_usage |= PIPE_HANDLE_USAGE_FRAMEBUFFER_WRITE; + memset(&templ, 0, sizeof(templ)); templ.bind = tex_usage | bind; templ.target = screen->target; @@ -1002,8 +1007,7 @@ dri_create_image_from_winsys(struct dri_screen *screen, templ.next = img->texture; - tex = pscreen->resource_from_handle(pscreen, &templ, &whandle[i], - PIPE_HANDLE_USAGE_FRAMEBUFFER_WRITE); + tex = pscreen->resource_from_handle(pscreen, &templ, &whandle[i], handle_usage); if (!tex) { pipe_resource_reference(&img->texture, NULL); FREE(img); @@ -1027,7 +1031,7 @@ dri_create_image_from_winsys(struct dri_screen *screen, tex = pscreen->resource_from_handle(pscreen, &templ, &whandle[use_lowered ? map->planes[i].buffer_index : i], - PIPE_HANDLE_USAGE_FRAMEBUFFER_WRITE); + handle_usage); if (!tex) { pipe_resource_reference(&img->texture, NULL); FREE(img);