summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Natalie <jenatali@microsoft.com>2024-01-22 16:52:48 -0800
committerMarge Bot <emma+marge@anholt.net>2024-01-24 22:32:59 +0000
commitf4c6d9d9a993fe1457a09eb8b1eba90e07b2b39f (patch)
tree3636946ddefdca1b3d63134061666f18fc651792
parentdf684ee653a24e377d135f9a57cc88762f1a0f6c (diff)
dzn: Handle VkBindImageMemorySwapchainInfoKHR
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27224>
-rw-r--r--src/microsoft/vulkan/dzn_device.c7
-rw-r--r--src/microsoft/vulkan/dzn_image.c12
-rw-r--r--src/microsoft/vulkan/dzn_private.h7
3 files changed, 17 insertions, 9 deletions
diff --git a/src/microsoft/vulkan/dzn_device.c b/src/microsoft/vulkan/dzn_device.c
index 130298cb61b..75e407402a9 100644
--- a/src/microsoft/vulkan/dzn_device.c
+++ b/src/microsoft/vulkan/dzn_device.c
@@ -60,13 +60,6 @@
#include <directx/d3d12sdklayers.h>
-#if defined(VK_USE_PLATFORM_WIN32_KHR) || \
- defined(VK_USE_PLATFORM_WAYLAND_KHR) || \
- defined(VK_USE_PLATFORM_XCB_KHR) || \
- defined(VK_USE_PLATFORM_XLIB_KHR)
-#define DZN_USE_WSI_PLATFORM
-#endif
-
#define DZN_API_VERSION VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION)
#define MAX_TIER2_MEMORY_TYPES 4
diff --git a/src/microsoft/vulkan/dzn_image.c b/src/microsoft/vulkan/dzn_image.c
index c948e592ec4..21d7093b20a 100644
--- a/src/microsoft/vulkan/dzn_image.c
+++ b/src/microsoft/vulkan/dzn_image.c
@@ -820,9 +820,17 @@ dzn_BindImageMemory2(VkDevice dev,
VK_FROM_HANDLE(dzn_device_memory, mem, bind_info->memory);
VK_FROM_HANDLE(dzn_image, image, bind_info->image);
- vk_foreach_struct_const(s, bind_info->pNext) {
- dzn_debug_ignored_stype(s->sType);
+#ifdef DZN_USE_WSI_PLATFORM
+ const VkBindImageMemorySwapchainInfoKHR *swapchain_info =
+ vk_find_struct_const(pBindInfos[i].pNext, BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR);
+
+ if (swapchain_info && swapchain_info->swapchain != VK_NULL_HANDLE) {
+ struct dzn_image *swapchain_img =
+ dzn_image_from_handle(wsi_common_get_image(swapchain_info->swapchain, swapchain_info->imageIndex));
+
+ mem = swapchain_img->mem;
}
+#endif
image->mem = mem;
diff --git a/src/microsoft/vulkan/dzn_private.h b/src/microsoft/vulkan/dzn_private.h
index 4577d08bbd7..8742dbd55f3 100644
--- a/src/microsoft/vulkan/dzn_private.h
+++ b/src/microsoft/vulkan/dzn_private.h
@@ -75,6 +75,13 @@
#define dzn_stub() unreachable("Unsupported feature")
+#if defined(VK_USE_PLATFORM_WIN32_KHR) || \
+ defined(VK_USE_PLATFORM_WAYLAND_KHR) || \
+ defined(VK_USE_PLATFORM_XCB_KHR) || \
+ defined(VK_USE_PLATFORM_XLIB_KHR)
+#define DZN_USE_WSI_PLATFORM
+#endif
+
struct dxil_validator;
struct util_dl_library;