summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/panfrost/pan_context.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index bce57625163..b6839e71ca1 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -2153,12 +2153,15 @@ panfrost_set_framebuffer_state(struct pipe_context *pctx,
{
struct panfrost_context *ctx = pan_context(pctx);
- /* Flush when switching away from an FBO, but not if the framebuffer
+ /* Flush when switching framebuffers, but not if the framebuffer
* state is being restored by u_blitter
*/
- if (!panfrost_is_scanout(ctx) && !ctx->blitter->running) {
- panfrost_flush(pctx, NULL, 0);
+ bool is_scanout = panfrost_is_scanout(ctx);
+ bool has_draws = ctx->draw_count > 0;
+
+ if (!ctx->blitter->running && (!is_scanout || has_draws)) {
+ panfrost_flush(pctx, NULL, PIPE_FLUSH_END_OF_FRAME);
}
ctx->pipe_framebuffer.nr_cbufs = fb->nr_cbufs;