diff options
author | Rob Clark <robdclark@chromium.org> | 2023-04-22 12:32:21 -0700 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2023-05-10 15:36:02 +0000 |
commit | c29e9dc0543e1c6ef8dc9268fe3ca25451199e99 (patch) | |
tree | 9c929466956feb210c3646142f7d7086548fb708 | |
parent | 9af6f2574165bdba5eeea8179842723efcc6fae3 (diff) |
freedreno/batch: Add helper to set fb state
Stop open-coding and add a helper.
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22895>
4 files changed, 12 insertions, 1 deletions
diff --git a/src/gallium/drivers/freedreno/freedreno_batch.c b/src/gallium/drivers/freedreno/freedreno_batch.c index d26fec2e849..ef702764c44 100644 --- a/src/gallium/drivers/freedreno/freedreno_batch.c +++ b/src/gallium/drivers/freedreno/freedreno_batch.c @@ -339,6 +339,14 @@ batch_flush(struct fd_batch *batch) assert_dt cleanup_submit(batch); } +void +fd_batch_set_fb(struct fd_batch *batch, const struct pipe_framebuffer_state *pfb) +{ + assert(!batch->nondraw); + + util_copy_framebuffer_state(&batch->framebuffer, pfb); +} + /* NOTE: could drop the last ref to batch */ void diff --git a/src/gallium/drivers/freedreno/freedreno_batch.h b/src/gallium/drivers/freedreno/freedreno_batch.h index c1ed2e38bc1..38efc622477 100644 --- a/src/gallium/drivers/freedreno/freedreno_batch.h +++ b/src/gallium/drivers/freedreno/freedreno_batch.h @@ -256,6 +256,8 @@ struct fd_batch { struct fd_batch *fd_batch_create(struct fd_context *ctx, bool nondraw); +void fd_batch_set_fb(struct fd_batch *batch, const struct pipe_framebuffer_state *pfb) assert_dt; + void fd_batch_flush(struct fd_batch *batch) assert_dt; bool fd_batch_has_dep(struct fd_batch *batch, struct fd_batch *dep) assert_dt; void fd_batch_add_dep(struct fd_batch *batch, struct fd_batch *dep) assert_dt; diff --git a/src/gallium/drivers/freedreno/freedreno_batch_cache.c b/src/gallium/drivers/freedreno/freedreno_batch_cache.c index df49d945f64..9028f0a5d25 100644 --- a/src/gallium/drivers/freedreno/freedreno_batch_cache.c +++ b/src/gallium/drivers/freedreno/freedreno_batch_cache.c @@ -552,5 +552,7 @@ fd_batch_from_fb(struct fd_context *ctx, struct fd_batch *batch = batch_from_key(ctx, key); fd_screen_unlock(ctx->screen); + fd_batch_set_fb(batch, pfb); + return batch; } diff --git a/src/gallium/drivers/freedreno/freedreno_context.c b/src/gallium/drivers/freedreno/freedreno_context.c index b566a30dc56..577ce4e5fee 100644 --- a/src/gallium/drivers/freedreno/freedreno_context.c +++ b/src/gallium/drivers/freedreno/freedreno_context.c @@ -343,7 +343,6 @@ fd_context_batch(struct fd_context *ctx) if (unlikely(!batch)) { batch = fd_batch_from_fb(ctx, &ctx->framebuffer); - util_copy_framebuffer_state(&batch->framebuffer, &ctx->framebuffer); fd_batch_reference(&ctx->batch, batch); fd_context_all_dirty(ctx); } |