Module: Mesa
Branch: staging/23.2
Commit: 87153053976e1f7510ff8591ee699fd5109cf16d
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=87153053976e1f7510ff8591ee699fd5109cf16d

Author: Rob Clark <[email protected]>
Date:   Wed Sep 27 10:24:13 2023 -0700

freedreno: Fix user const buffer dirtiness

If we went the upload_user_buffer() path, cb->buffer would be null,
causing fd_dirty_shader_resource() to be a no-op.  What we want to
use is &so->cb[index].

Fixes: b43e5aec0d2c ("freedreno/batch: Move submit bo tracking to batch")
Signed-off-by: Rob Clark <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25465>
(cherry picked from commit 2189920e49d86e011276d1d84a3ab437aa0ca1b6)

---

 .pick_status.json                               | 2 +-
 src/gallium/drivers/freedreno/freedreno_state.c | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index 01efdf1de32..5f8fb34b17e 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -1704,7 +1704,7 @@
         "description": "freedreno: Fix user const buffer dirtiness",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": "b43e5aec0d2ce542d4ba68da947e3ad752855979",
         "notes": null
diff --git a/src/gallium/drivers/freedreno/freedreno_state.c 
b/src/gallium/drivers/freedreno/freedreno_state.c
index 19d40c9f1a6..f8bbfcc3343 100644
--- a/src/gallium/drivers/freedreno/freedreno_state.c
+++ b/src/gallium/drivers/freedreno/freedreno_state.c
@@ -140,8 +140,10 @@ fd_set_constant_buffer(struct pipe_context *pctx, enum 
pipe_shader_type shader,
       return;
    }
 
-   if (cb->user_buffer && ctx->screen->gen >= 6)
+   if (cb->user_buffer && ctx->screen->gen >= 6) {
       upload_user_buffer(pctx, &so->cb[index]);
+      cb = &so->cb[index];
+   }
 
    so->enabled_mask |= 1 << index;
 

Reply via email to