summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Clark <robdclark@chromium.org>2023-04-22 12:32:21 -0700
committerMarge Bot <emma+marge@anholt.net>2023-05-10 15:36:02 +0000
commitc29e9dc0543e1c6ef8dc9268fe3ca25451199e99 (patch)
tree9c929466956feb210c3646142f7d7086548fb708
parent9af6f2574165bdba5eeea8179842723efcc6fae3 (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>
-rw-r--r--src/gallium/drivers/freedreno/freedreno_batch.c8
-rw-r--r--src/gallium/drivers/freedreno/freedreno_batch.h2
-rw-r--r--src/gallium/drivers/freedreno/freedreno_batch_cache.c2
-rw-r--r--src/gallium/drivers/freedreno/freedreno_context.c1
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);
}