zink: flag some rp ends as unsafe

the only "safe" rp ends are:
* set_framebuffer_state (new rp)
* flush_resource (present)
* flush (end of rp)

any other rp end needs its rp info sanitized to avoid e.g., reapplying clears

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22027>
This commit is contained in:
Mike Blumenkrantz
2023-03-20 09:43:50 -04:00
committed by Marge Bot
parent 7ca5656c49
commit c2d2cb5e45
2 changed files with 3 additions and 3 deletions
+2 -2
View File
@@ -2710,7 +2710,7 @@ begin_rendering(struct zink_context *ctx)
if (!rp_changed && ctx->batch.in_rp)
return 0;
zink_batch_no_rp_safe(ctx);
zink_batch_no_rp(ctx);
for (int i = 0; i < ctx->fb_state.nr_cbufs; i++) {
struct zink_surface *surf = zink_csurface(ctx->fb_state.cbufs[i]);
VkImageView iv = zink_prep_fb_attachment(ctx, surf, i);
@@ -2797,7 +2797,7 @@ zink_batch_rp(struct zink_context *ctx)
/* this is a driver that doesn't need dummy surfaces but does need rasterization discard, so flush clears first */
ctx->queries_disabled = true;
zink_batch_rp(ctx);
zink_batch_no_rp_safe(ctx);
zink_batch_no_rp(ctx);
ctx->queries_disabled = false;
}
zink_resume_queries(ctx, &ctx->batch);
+1 -1
View File
@@ -614,7 +614,7 @@ setup_framebuffer(struct zink_context *ctx)
zink_init_framebuffer(screen, ctx->framebuffer, rp);
ctx->fb_changed = false;
ctx->gfx_pipeline_state.render_pass = rp;
zink_batch_no_rp_safe(ctx);
zink_batch_no_rp(ctx);
}
static bool