zink: resume queries after conditional render and clears are processed
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Wed, 1 Mar 2023 14:08:58 +0000 (09:08 -0500)
committerMarge Bot <emma+marge@anholt.net>
Mon, 6 Mar 2023 02:00:06 +0000 (02:00 +0000)
this should have no functional effect other than ensuring primgen queries
don't recurse when detecting clears

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21628>

src/gallium/drivers/zink/zink_context.c

index ef9473a..0a97ce3 100644 (file)
@@ -2754,16 +2754,17 @@ zink_batch_rp(struct zink_context *ctx)
    else
       clear_buffers = begin_rendering(ctx);
    assert(!ctx->rp_changed);
+   if (!in_rp && ctx->batch.in_rp) {
+      /* only hit this for valid swapchain and new renderpass */
+      if (ctx->render_condition.query)
+         zink_start_conditional_render(ctx);
+      zink_clear_framebuffer(ctx, clear_buffers);
+   }
    /* unable to previously determine that queries didn't split renderpasses: ensure queries start inside renderpass */
    if (!ctx->queries_disabled && maybe_has_query_ends) {
       zink_resume_queries(ctx, &ctx->batch);
       zink_query_update_gs_states(ctx);
    }
-   if (in_rp || !ctx->batch.in_rp)
-      return; //dead swapchain or continued renderpass
-   if (ctx->render_condition.query)
-      zink_start_conditional_render(ctx);
-   zink_clear_framebuffer(ctx, clear_buffers);
 }
 
 void