From 0b20bddb8a31b72d2d0e00cf7efa96bd4c9b9b67 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Thu, 5 Jun 2025 08:07:45 -0700 Subject: [PATCH] freedreno: correct resource usage check Usage is not a bitmask. This was causing us to not pick cached-coherent for staging read buffers (ie. clEnqueueReadBuffer() and friends). Signed-off-by: Rob Clark Part-of: --- src/gallium/drivers/freedreno/freedreno_resource.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/freedreno/freedreno_resource.c b/src/gallium/drivers/freedreno/freedreno_resource.c index 7789e088e7d..268980e9b73 100644 --- a/src/gallium/drivers/freedreno/freedreno_resource.c +++ b/src/gallium/drivers/freedreno/freedreno_resource.c @@ -190,9 +190,9 @@ realloc_bo(struct fd_resource *rsc, uint32_t size) struct pipe_resource *prsc = &rsc->b.b; struct fd_screen *screen = fd_screen(rsc->b.b.screen); uint32_t flags = - (prsc->target == PIPE_BUFFER) ? FD_BO_HINT_BUFFER : FD_BO_HINT_IMAGE | + ((prsc->target == PIPE_BUFFER) ? FD_BO_HINT_BUFFER : FD_BO_HINT_IMAGE) | COND(rsc->layout.tile_mode, FD_BO_NOMAP) | - COND((prsc->usage & PIPE_USAGE_STAGING) && + COND((prsc->usage == PIPE_USAGE_STAGING) && (prsc->flags & PIPE_RESOURCE_FLAG_MAP_COHERENT), FD_BO_CACHED_COHERENT) | COND(prsc->bind & PIPE_BIND_SHARED, FD_BO_SHARED) |