diff --git a/.pick_status.json b/.pick_status.json index 596a45e1dff..7cadd71f24b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1165,7 +1165,7 @@ "description": "zink: use mixed zs renderpass for depth read/write", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "7781a75229d5d071fdeb75b9932cc52c37b28552" }, diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index bd0f02677f5..79d2ded9645 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -2075,7 +2075,11 @@ get_render_pass(struct zink_context *ctx) bool needs_write_s = state.rts[fb->nr_cbufs].clear_stencil || outputs_written & BITFIELD64_BIT(FRAG_RESULT_STENCIL); if (!needs_write_z && (!ctx->dsa_state || !ctx->dsa_state->base.depth_enabled)) + /* depth sample, stencil write */ state.rts[fb->nr_cbufs].mixed_zs = needs_write_s && zsbuf->bind_count[0]; + else + /* depth write + sample */ + state.rts[fb->nr_cbufs].mixed_zs = needs_write_z && zsbuf->bind_count[0]; state.rts[fb->nr_cbufs].needs_write = needs_write_z | needs_write_s; state.num_rts++; }