nvk: Plumb attachment flags through to MSAA resolve

Reviewed-by: Mel Henning <mhenning@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38094>
This commit is contained in:
Faith Ekstrand
2025-10-27 12:19:43 -04:00
parent bbbf037303
commit 6e3eeb6118
2 changed files with 20 additions and 0 deletions
+2
View File
@@ -138,6 +138,8 @@ struct nvk_descriptor_state {
} while (0)
struct nvk_attachment {
VkRenderingAttachmentFlagBitsKHR flags;
VkFormat vk_format;
struct nvk_image_view *iview;
+18
View File
@@ -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,