mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 11:38:05 +02:00
nvk: Don't LOAD_ZCULL w/ VK_RENDERING_RESUMING_BIT
Reviewed-by: Mary Guillemard <mary@mary.zone> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41275>
This commit is contained in:
parent
8d054c390e
commit
0a3eb2b9fb
1 changed files with 33 additions and 28 deletions
|
|
@ -1191,7 +1191,7 @@ nvk_CmdBeginRendering(VkCommandBuffer commandBuffer,
|
|||
|
||||
nvk_cmd_buffer_dirty_render_pass(cmd);
|
||||
|
||||
const size_t zcull_count = 51;
|
||||
const size_t zcull_count = 47;
|
||||
struct nv_push *p = nvk_cmd_buffer_push(
|
||||
cmd, NVK_MAX_RTS * 12 + 44 + zcull_count
|
||||
);
|
||||
|
|
@ -1553,33 +1553,6 @@ nvk_CmdBeginRendering(VkCommandBuffer commandBuffer,
|
|||
.type = TYPE_DEPTH_TEST,
|
||||
});
|
||||
|
||||
float depth = 0.0f;
|
||||
switch (pRenderingInfo->pDepthAttachment->loadOp) {
|
||||
case VK_ATTACHMENT_LOAD_OP_CLEAR:
|
||||
depth =
|
||||
pRenderingInfo->pDepthAttachment->clearValue.depthStencil.depth;
|
||||
FALLTHROUGH;
|
||||
case VK_ATTACHMENT_LOAD_OP_DONT_CARE:
|
||||
P_IMMD(p, NV9097, SET_Z_CLEAR_VALUE, fui(depth));
|
||||
|
||||
P_IMMD(p, NV9097, CLEAR_ZCULL_REGION, {
|
||||
.z_enable = true,
|
||||
.stencil_enable = false,
|
||||
.use_clear_rect = false,
|
||||
.use_rt_array_index = false,
|
||||
.make_conservative = true,
|
||||
});
|
||||
break;
|
||||
|
||||
case VK_ATTACHMENT_LOAD_OP_LOAD:
|
||||
assert(zcull_plane);
|
||||
P_IMMD(p, NV9097, LOAD_ZCULL, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
assert(!"Unhandled loadOp");
|
||||
break;
|
||||
}
|
||||
uint32_t end_count = nv_push_dw_count(p);
|
||||
assert(end_count - start_count <= zcull_count);
|
||||
} else {
|
||||
|
|
@ -1674,6 +1647,38 @@ nvk_CmdBeginRendering(VkCommandBuffer commandBuffer,
|
|||
if (render->flags & VK_RENDERING_RESUMING_BIT)
|
||||
return;
|
||||
|
||||
if (use_zcull) {
|
||||
float depth = 0.0f;
|
||||
switch (pRenderingInfo->pDepthAttachment->loadOp) {
|
||||
case VK_ATTACHMENT_LOAD_OP_CLEAR:
|
||||
depth =
|
||||
pRenderingInfo->pDepthAttachment->clearValue.depthStencil.depth;
|
||||
FALLTHROUGH;
|
||||
case VK_ATTACHMENT_LOAD_OP_DONT_CARE:
|
||||
p = nvk_cmd_buffer_push(cmd, 4);
|
||||
P_IMMD(p, NV9097, SET_Z_CLEAR_VALUE, fui(depth));
|
||||
|
||||
P_IMMD(p, NV9097, CLEAR_ZCULL_REGION, {
|
||||
.z_enable = true,
|
||||
.stencil_enable = false,
|
||||
.use_clear_rect = false,
|
||||
.use_rt_array_index = false,
|
||||
.make_conservative = true,
|
||||
});
|
||||
break;
|
||||
|
||||
case VK_ATTACHMENT_LOAD_OP_LOAD:
|
||||
assert(zcull_plane);
|
||||
p = nvk_cmd_buffer_push(cmd, 2);
|
||||
P_IMMD(p, NV9097, LOAD_ZCULL, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
assert(!"Unhandled loadOp");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < pRenderingInfo->colorAttachmentCount; i++) {
|
||||
const struct nvk_image_view *iview = render->color_att[i].iview;
|
||||
if (iview == NULL)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue