From c132a2874554d069d6aa1887e7ab037ad73e9926 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 5 Apr 2022 15:00:16 -0400 Subject: [PATCH] zink: use store op NONE when necessary for depth usage Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_render_pass.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_render_pass.c b/src/gallium/drivers/zink/zink_render_pass.c index 0506f354504..ab29435d345 100644 --- a/src/gallium/drivers/zink/zink_render_pass.c +++ b/src/gallium/drivers/zink/zink_render_pass.c @@ -75,7 +75,10 @@ create_render_pass(struct zink_screen *screen, struct zink_render_pass_state *st pstate->attachments[num_attachments].format = attachments[num_attachments].format = rt->format; pstate->attachments[num_attachments].samples = attachments[num_attachments].samples = rt->samples; attachments[num_attachments].loadOp = rt->clear_color ? VK_ATTACHMENT_LOAD_OP_CLEAR : VK_ATTACHMENT_LOAD_OP_LOAD; - attachments[num_attachments].storeOp = VK_ATTACHMENT_STORE_OP_STORE; + if (rt->mixed_zs) + attachments[num_attachments].storeOp = VK_ATTACHMENT_STORE_OP_NONE; + else + attachments[num_attachments].storeOp = VK_ATTACHMENT_STORE_OP_STORE; attachments[num_attachments].stencilLoadOp = rt->clear_stencil ? VK_ATTACHMENT_LOAD_OP_CLEAR : VK_ATTACHMENT_LOAD_OP_LOAD; attachments[num_attachments].stencilStoreOp = VK_ATTACHMENT_STORE_OP_STORE; /* if layout changes are ever handled here, need VkAttachmentSampleLocationsEXT */ @@ -203,7 +206,10 @@ create_render_pass2(struct zink_screen *screen, struct zink_render_pass_state *s /* TODO: need replicate EXT */ //attachments[num_attachments].storeOp = rt->resolve ? VK_ATTACHMENT_LOAD_OP_DONT_CARE : VK_ATTACHMENT_STORE_OP_STORE; //attachments[num_attachments].stencilStoreOp = rt->resolve ? VK_ATTACHMENT_LOAD_OP_DONT_CARE : VK_ATTACHMENT_STORE_OP_STORE; - attachments[num_attachments].storeOp = VK_ATTACHMENT_STORE_OP_STORE; + if (rt->mixed_zs) + attachments[num_attachments].storeOp = VK_ATTACHMENT_STORE_OP_NONE; + else + attachments[num_attachments].storeOp = VK_ATTACHMENT_STORE_OP_STORE; attachments[num_attachments].stencilStoreOp = VK_ATTACHMENT_STORE_OP_STORE; /* if layout changes are ever handled here, need VkAttachmentSampleLocationsEXT */ attachments[num_attachments].initialLayout = layout;