Mesa (main): vulkan/wsi: Fix structure chaining in wsi_create_buffer_image_mem

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jul 8 22:34:31 UTC 2022


Module: Mesa
Branch: main
Commit: 048435b44caeafa5fa0d7a81fe2d77bc9fd5f6ea
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=048435b44caeafa5fa0d7a81fe2d77bc9fd5f6ea

Author: Jason Ekstrand <jason.ekstrand at collabora.com>
Date:   Fri Jul  8 15:55:51 2022 -0500

vulkan/wsi: Fix structure chaining in wsi_create_buffer_image_mem

First, because we're using __vk_append_struct which attacks it on the
end, memory_wsi_info is modified even though it's const.  Make things
non-const so we aren't silently violating assumptions.  Also, we set a
pNext in memory_export_info which causes a loop in the pNext chain in
the handle_types != 0 case.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6826
Fixes: 124848bf9efa ("vulkan/wsi: Support tiled CPU images")
Reviewed-by: Jesse Natalie <jenatali at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17434>

---

 src/vulkan/wsi/wsi_common.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c
index 7a1c6e6ed2b..9be60dddf9c 100644
--- a/src/vulkan/wsi/wsi_common.c
+++ b/src/vulkan/wsi/wsi_common.c
@@ -1350,12 +1350,12 @@ wsi_create_buffer_image_mem(const struct wsi_swapchain *chain,
    wsi->GetBufferMemoryRequirements(chain->device, image->buffer.buffer, &reqs);
    assert(reqs.size <= info->linear_size);
 
-   const struct wsi_memory_allocate_info memory_wsi_info = {
+   struct wsi_memory_allocate_info memory_wsi_info = {
       .sType = VK_STRUCTURE_TYPE_WSI_MEMORY_ALLOCATE_INFO_MESA,
       .pNext = NULL,
       .implicit_sync = implicit_sync,
    };
-   const VkMemoryDedicatedAllocateInfo buf_mem_dedicated_info = {
+   VkMemoryDedicatedAllocateInfo buf_mem_dedicated_info = {
       .sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
       .pNext = &memory_wsi_info,
       .image = VK_NULL_HANDLE,
@@ -1385,7 +1385,6 @@ wsi_create_buffer_image_mem(const struct wsi_swapchain *chain,
    } else if (handle_types != 0) {
       memory_export_info = (VkExportMemoryAllocateInfo) {
          .sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
-         .pNext = &memory_wsi_info,
          .handleTypes = handle_types,
       };
       __vk_append_struct(&buf_mem_info, &memory_export_info);



More information about the mesa-commit mailing list