Module: Mesa Branch: main Commit: c85aa41046351e7352d5fb6dc936f46ee03d3b50 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c85aa41046351e7352d5fb6dc936f46ee03d3b50
Author: Chia-I Wu <[email protected]> Date: Wed May 5 10:42:50 2021 -0700 venus: remember framebuffer attachments We need them for wsi queue ownership transfer. Signed-off-by: Chia-I Wu <[email protected]> Reviewed-by: Yiwei Zhang <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10709> --- src/virtio/vulkan/vn_render_pass.c | 16 ++++++++++++++-- src/virtio/vulkan/vn_render_pass.h | 3 +++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/virtio/vulkan/vn_render_pass.c b/src/virtio/vulkan/vn_render_pass.c index afba80d4b9c..777b893112a 100644 --- a/src/virtio/vulkan/vn_render_pass.c +++ b/src/virtio/vulkan/vn_render_pass.c @@ -285,13 +285,25 @@ vn_CreateFramebuffer(VkDevice device, const VkAllocationCallbacks *alloc = pAllocator ? pAllocator : &dev->base.base.alloc; - struct vn_framebuffer *fb = vk_zalloc(alloc, sizeof(*fb), VN_DEFAULT_ALIGN, - VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); + /* Two render passes differ only in attachment image layouts are considered + * compatible. We must not use pCreateInfo->renderPass here. + */ + const bool imageless = + pCreateInfo->flags & VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT; + const uint32_t view_count = imageless ? 0 : pCreateInfo->attachmentCount; + + struct vn_framebuffer *fb = + vk_zalloc(alloc, sizeof(*fb) + sizeof(*fb->image_views) * view_count, + VN_DEFAULT_ALIGN, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); if (!fb) return vn_error(dev->instance, VK_ERROR_OUT_OF_HOST_MEMORY); vn_object_base_init(&fb->base, VK_OBJECT_TYPE_FRAMEBUFFER, &dev->base); + fb->image_view_count = view_count; + memcpy(fb->image_views, pCreateInfo->pAttachments, + sizeof(*pCreateInfo->pAttachments) * view_count); + VkFramebuffer fb_handle = vn_framebuffer_to_handle(fb); vn_async_vkCreateFramebuffer(dev->instance, device, pCreateInfo, NULL, &fb_handle); diff --git a/src/virtio/vulkan/vn_render_pass.h b/src/virtio/vulkan/vn_render_pass.h index 9590ad43095..f96ae502346 100644 --- a/src/virtio/vulkan/vn_render_pass.h +++ b/src/virtio/vulkan/vn_render_pass.h @@ -44,6 +44,9 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(vn_render_pass, struct vn_framebuffer { struct vn_object_base base; + + uint32_t image_view_count; + VkImageView image_views[]; }; VK_DEFINE_NONDISP_HANDLE_CASTS(vn_framebuffer, base.base, _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
