nvk: Handle zero color attachments better

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
This commit is contained in:
Faith Ekstrand 2023-01-30 20:12:02 -06:00 committed by Marge Bot
parent 48f9ec1fe5
commit a34467001d

View file

@ -367,7 +367,6 @@ nvk_CmdBeginRendering(VkCommandBuffer commandBuffer,
{
VK_FROM_HANDLE(nvk_cmd_buffer, cmd, commandBuffer);
struct nvk_rendering_state *render = &cmd->state.gfx.render;
struct nv_push *p = nvk_cmd_buffer_push(cmd, 23 + pRenderingInfo->colorAttachmentCount * 10);
memset(render, 0, sizeof(*render));
@ -381,16 +380,6 @@ nvk_CmdBeginRendering(VkCommandBuffer commandBuffer,
render->view_mask ? util_last_bit(render->view_mask) :
render->layer_count;
P_MTHD(p, NV9097, SET_SURFACE_CLIP_HORIZONTAL);
P_NV9097_SET_SURFACE_CLIP_HORIZONTAL(p, {
.x = render->area.offset.x,
.width = render->area.extent.width,
});
P_NV9097_SET_SURFACE_CLIP_VERTICAL(p, {
.y = render->area.offset.y,
.height = render->area.extent.height,
});
render->color_att_count = pRenderingInfo->colorAttachmentCount;
for (uint32_t i = 0; i < render->color_att_count; i++) {
nvk_attachment_init(&render->color_att[i],
@ -408,6 +397,18 @@ nvk_CmdBeginRendering(VkCommandBuffer commandBuffer,
render->stencil_att.iview == NULL)
render->color_att_count = 1;
struct nv_push *p = nvk_cmd_buffer_push(cmd, render->color_att_count * 10 + 23);
P_MTHD(p, NV9097, SET_SURFACE_CLIP_HORIZONTAL);
P_NV9097_SET_SURFACE_CLIP_HORIZONTAL(p, {
.x = render->area.offset.x,
.width = render->area.extent.width,
});
P_NV9097_SET_SURFACE_CLIP_VERTICAL(p, {
.y = render->area.offset.y,
.height = render->area.extent.height,
});
for (uint32_t i = 0; i < render->color_att_count; i++) {
if (render->color_att[i].iview) {
const struct nvk_image_view *iview = render->color_att[i].iview;