The open source OpenXR runtime
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

aux/vk: Fixes #410, mutable format bit not set on client vk images

Part-of: <https://gitlab.freedesktop.org/monado/monado/-/merge_requests/2352>

+15 -5
+15 -5
src/xrt/auxiliary/vk/vk_helpers.c
··· 1 - // Copyright 2019-2023, Collabora, Ltd. 1 + // Copyright 2019-2024, Collabora, Ltd. 2 2 // SPDX-License-Identifier: BSL-1.0 3 3 /*! 4 4 * @file ··· 14 14 * @author Jakob Bornecrantz <jakob@collabora.com> 15 15 * @author Lubosz Sarnecki <lubosz.sarnecki@collabora.com> 16 16 * @author Moses Turner <moses@collabora.com> 17 + * @author Korcan Hussein <korcan.hussein@collabora.com> 17 18 * @ingroup aux_vk 18 19 */ 19 20 ··· 1117 1118 return VK_ERROR_INITIALIZATION_FAILED; 1118 1119 } 1119 1120 1121 + VkImageCreateFlags image_create_flags = 0; 1122 + // Set the image create mutable flag if usage mutable is given. 1123 + const bool has_mutable_usage = (info->bits & XRT_SWAPCHAIN_USAGE_MUTABLE_FORMAT) != 0; 1124 + if (has_mutable_usage) { 1125 + image_create_flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; 1126 + } 1127 + 1128 + const bool has_create_protected_content = (info->create & XRT_SWAPCHAIN_CREATE_PROTECTED_CONTENT) != 0; 1129 + if (has_create_protected_content) { 1130 + image_create_flags |= VK_IMAGE_CREATE_PROTECTED_BIT; 1131 + } 1132 + 1120 1133 // In->pNext 1121 1134 VkExternalMemoryImageCreateInfoKHR external_memory_image_create_info = { 1122 1135 .sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR, ··· 1127 1140 VkImageCreateInfo vk_info = { 1128 1141 .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, 1129 1142 .pNext = &external_memory_image_create_info, 1143 + .flags = image_create_flags, 1130 1144 .imageType = VK_IMAGE_TYPE_2D, 1131 1145 .format = image_format, 1132 1146 .extent = {.width = info->width, .height = info->height, .depth = 1}, ··· 1138 1152 .sharingMode = VK_SHARING_MODE_EXCLUSIVE, 1139 1153 .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED, 1140 1154 }; 1141 - 1142 - if (0 != (info->create & XRT_SWAPCHAIN_CREATE_PROTECTED_CONTENT)) { 1143 - vk_info.flags |= VK_IMAGE_CREATE_PROTECTED_BIT; 1144 - } 1145 1155 1146 1156 VkImage image = VK_NULL_HANDLE; 1147 1157 ret = vk->vkCreateImage(vk->device, &vk_info, NULL, &image);