diff --git a/.pick_status.json b/.pick_status.json index d2f28177f00..ef7b60b6814 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -139,7 +139,7 @@ "description": "zink: manually re-set framebuffer after msrtss replicate blit", "nominated": false, "nomination_type": null, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/drivers/zink/zink_render_pass.c b/src/gallium/drivers/zink/zink_render_pass.c index 8b705529cbd..333c750fa7e 100644 --- a/src/gallium/drivers/zink/zink_render_pass.c +++ b/src/gallium/drivers/zink/zink_render_pass.c @@ -769,6 +769,7 @@ zink_begin_render_pass(struct zink_context *ctx) if (ctx->framebuffer->rp->state.msaa_expand_mask) { uint32_t rp_state = ctx->gfx_pipeline_state.rp_state; struct zink_render_pass *rp = ctx->gfx_pipeline_state.render_pass; + struct zink_framebuffer *fb = ctx->framebuffer; u_foreach_bit(i, ctx->framebuffer->rp->state.msaa_expand_mask) { struct zink_ctx_surface *csurf = (struct zink_ctx_surface*)ctx->fb_state.cbufs[i]; @@ -801,6 +802,9 @@ zink_begin_render_pass(struct zink_context *ctx) ctx->fb_changed = ctx->rp_changed = false; ctx->gfx_pipeline_state.rp_state = rp_state; ctx->gfx_pipeline_state.render_pass = rp; + /* manually re-set fb: depth buffer may have been eliminated */ + ctx->framebuffer = fb; + ctx->framebuffer->rp = rp; } assert(ctx->gfx_pipeline_state.render_pass); return begin_render_pass(ctx);