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;
