zink: never split a renderpass for a loadop change
not sure if this was possible, but make sure it's not
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22027>
diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c
index 083c211..7d72e38 100644
--- a/src/gallium/drivers/zink/zink_context.c
+++ b/src/gallium/drivers/zink/zink_context.c
@@ -2580,7 +2580,7 @@
bool changed_size = false;
bool zsbuf_used = zink_is_zsbuf_used(ctx);
bool use_tc_info = !ctx->blitting && ctx->tc && zink_screen(ctx->base.screen)->driver_workarounds.track_renderpasses;
- if (ctx->rp_changed || ctx->rp_layout_changed || ctx->rp_loadop_changed) {
+ if (ctx->rp_changed || ctx->rp_layout_changed || (!ctx->batch.in_rp && ctx->rp_loadop_changed)) {
/* init imageviews, base loadOp, formats */
for (int i = 0; i < ctx->fb_state.nr_cbufs; i++) {
struct zink_surface *surf = zink_csurface(ctx->fb_state.cbufs[i]);
diff --git a/src/gallium/drivers/zink/zink_render_pass.c b/src/gallium/drivers/zink/zink_render_pass.c
index f6dbe1e..18e7be9 100644
--- a/src/gallium/drivers/zink/zink_render_pass.c
+++ b/src/gallium/drivers/zink/zink_render_pass.c
@@ -571,7 +571,7 @@
zink_update_vk_sample_locations(ctx);
- if (ctx->rp_changed || ctx->rp_layout_changed || ctx->rp_loadop_changed) {
+ if (ctx->rp_changed || ctx->rp_layout_changed || (!ctx->batch.in_rp && ctx->rp_loadop_changed)) {
/* 0. ensure no stale pointers are set */
ctx->gfx_pipeline_state.next_render_pass = NULL;
/* 1. calc new rp */