diff --git a/src/nouveau/vulkan/nvk_cmd_buffer.h b/src/nouveau/vulkan/nvk_cmd_buffer.h index 3fb44572df9..089ad8ddf24 100644 --- a/src/nouveau/vulkan/nvk_cmd_buffer.h +++ b/src/nouveau/vulkan/nvk_cmd_buffer.h @@ -138,6 +138,8 @@ struct nvk_descriptor_state { } while (0) struct nvk_attachment { + VkRenderingAttachmentFlagBitsKHR flags; + VkFormat vk_format; struct nvk_image_view *iview; diff --git a/src/nouveau/vulkan/nvk_cmd_draw.c b/src/nouveau/vulkan/nvk_cmd_draw.c index 9f43b16d546..45f37e32869 100644 --- a/src/nouveau/vulkan/nvk_cmd_draw.c +++ b/src/nouveau/vulkan/nvk_cmd_draw.c @@ -803,6 +803,7 @@ nvk_attachment_init(struct nvk_attachment *att, VK_FROM_HANDLE(nvk_image_view, iview, info->imageView); *att = (struct nvk_attachment) { + .flags = vk_get_rendering_attachment_flags(info), .vk_format = iview->vk.format, .iview = iview, }; @@ -1505,12 +1506,19 @@ nvk_CmdEndRendering(VkCommandBuffer commandBuffer) /* Translate render state back to VK for meta */ VkRenderingAttachmentInfo vk_color_att[NVK_MAX_RTS]; + VkRenderingAttachmentFlagsInfoKHR vk_color_att_flags[NVK_MAX_RTS]; for (uint32_t i = 0; i < render->color_att_count; i++) { if (render->color_att[i].resolve_mode != VK_RESOLVE_MODE_NONE) need_resolve = true; + vk_color_att_flags[i] = (VkRenderingAttachmentFlagsInfoKHR) { + .sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR, + .flags = render->color_att[i].flags, + }; + vk_color_att[i] = (VkRenderingAttachmentInfo) { .sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO, + .pNext = &vk_color_att_flags[i], .imageView = nvk_image_view_to_handle(render->color_att[i].iview), .imageLayout = VK_IMAGE_LAYOUT_GENERAL, .resolveMode = render->color_att[i].resolve_mode, @@ -1520,8 +1528,13 @@ nvk_CmdEndRendering(VkCommandBuffer commandBuffer) }; } + const VkRenderingAttachmentFlagsInfoKHR vk_depth_att_flags = { + .sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR, + .flags = render->depth_att.flags, + }; const VkRenderingAttachmentInfo vk_depth_att = { .sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO, + .pNext = &vk_depth_att_flags, .imageView = nvk_image_view_to_handle(render->depth_att.iview), .imageLayout = VK_IMAGE_LAYOUT_GENERAL, .resolveMode = render->depth_att.resolve_mode, @@ -1532,8 +1545,13 @@ nvk_CmdEndRendering(VkCommandBuffer commandBuffer) if (render->depth_att.resolve_mode != VK_RESOLVE_MODE_NONE) need_resolve = true; + const VkRenderingAttachmentFlagsInfoKHR vk_stencil_att_flags = { + .sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR, + .flags = render->stencil_att.flags, + }; const VkRenderingAttachmentInfo vk_stencil_att = { .sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO, + .pNext = &vk_stencil_att_flags, .imageView = nvk_image_view_to_handle(render->stencil_att.iview), .imageLayout = VK_IMAGE_LAYOUT_GENERAL, .resolveMode = render->stencil_att.resolve_mode,