The open source OpenXR runtime
0
fork

Configure Feed

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

vk: Refactor VkImageUsageFlags code into helper function

authored by

Jakob Bornecrantz and committed by
Jakob Bornecrantz
3a7a86aa ce7da394

+38 -45
+29 -21
src/xrt/auxiliary/vk/vk_helpers.c
··· 271 271 VkImage *out_image, 272 272 VkDeviceMemory *out_mem) 273 273 { 274 - VkImageUsageFlags image_usage = 275 - VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT; 274 + VkImageUsageFlags image_usage = vk_swapchain_usage_flags(info->bits); 276 275 VkImage image = VK_NULL_HANDLE; 277 276 VkResult ret = VK_SUCCESS; 278 277 ··· 280 279 .sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR, 281 280 .handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR, 282 281 }; 283 - 284 - if ((info->bits & XRT_SWAPCHAIN_USAGE_COLOR) != 0) { 285 - image_usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; 286 - } 287 - if ((info->bits & XRT_SWAPCHAIN_USAGE_DEPTH_STENCIL) != 0) { 288 - image_usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; 289 - } 290 - if ((info->bits & XRT_SWAPCHAIN_USAGE_TRANSFER_SRC) != 0) { 291 - image_usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; 292 - } 293 - if ((info->bits & XRT_SWAPCHAIN_USAGE_TRANSFER_DST) != 0) { 294 - image_usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT; 295 - } 296 - if ((info->bits & XRT_SWAPCHAIN_USAGE_SAMPLED) != 0) { 297 - image_usage |= VK_IMAGE_USAGE_SAMPLED_BIT; 298 - } 299 - if ((info->bits & XRT_SWAPCHAIN_USAGE_INPUT_ATTACHMENT) != 0) { 300 - image_usage |= VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT; 301 - } 302 282 303 283 VkImageCreateInfo vk_info = { 304 284 .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, ··· 1089 1069 result |= VK_ACCESS_SHADER_READ_BIT; 1090 1070 } 1091 1071 return result; 1072 + } 1073 + 1074 + VkImageUsageFlags 1075 + vk_swapchain_usage_flags(enum xrt_swapchain_usage_bits bits) 1076 + { 1077 + VkImageUsageFlags image_usage = 1078 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT; 1079 + 1080 + if ((bits & XRT_SWAPCHAIN_USAGE_COLOR) != 0) { 1081 + image_usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; 1082 + } 1083 + if ((bits & XRT_SWAPCHAIN_USAGE_DEPTH_STENCIL) != 0) { 1084 + image_usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; 1085 + } 1086 + if ((bits & XRT_SWAPCHAIN_USAGE_TRANSFER_SRC) != 0) { 1087 + image_usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; 1088 + } 1089 + if ((bits & XRT_SWAPCHAIN_USAGE_TRANSFER_DST) != 0) { 1090 + image_usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT; 1091 + } 1092 + if ((bits & XRT_SWAPCHAIN_USAGE_SAMPLED) != 0) { 1093 + image_usage |= VK_IMAGE_USAGE_SAMPLED_BIT; 1094 + } 1095 + if ((bits & XRT_SWAPCHAIN_USAGE_INPUT_ATTACHMENT) != 0) { 1096 + image_usage |= VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT; 1097 + } 1098 + 1099 + return image_usage; 1092 1100 } 1093 1101 1094 1102 bool
+8
src/xrt/auxiliary/vk/vk_helpers.h
··· 421 421 VkAccessFlags 422 422 vk_swapchain_access_flags(enum xrt_swapchain_usage_bits bits); 423 423 424 + /*! 425 + * Always adds `VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT` and 426 + * `VK_IMAGE_USAGE_SAMPLED_BIT` so they can be used by the compositor and 427 + * client. 428 + */ 429 + VkImageUsageFlags 430 + vk_swapchain_usage_flags(enum xrt_swapchain_usage_bits bits); 431 + 424 432 bool 425 433 vk_init_descriptor_pool(struct vk_bundle *vk, 426 434 const VkDescriptorPoolSize *pool_sizes,
+1 -24
src/xrt/auxiliary/vk/vk_image_allocator.c
··· 52 52 struct xrt_swapchain_create_info *info, 53 53 struct vk_image *out_image) 54 54 { 55 - VkImageUsageFlags image_usage = 56 - VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; 55 + VkImageUsageFlags image_usage = vk_swapchain_usage_flags(info->bits); 57 56 VkDeviceMemory device_memory = VK_NULL_HANDLE; 58 57 VkImage image = VK_NULL_HANDLE; 59 58 VkResult ret = VK_SUCCESS; ··· 68 67 .sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR, 69 68 .handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR, 70 69 }; 71 - 72 - if ((info->bits & XRT_SWAPCHAIN_USAGE_COLOR) != 0) { 73 - image_usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; 74 - } 75 - if ((info->bits & XRT_SWAPCHAIN_USAGE_DEPTH_STENCIL) != 0) { 76 - image_usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; 77 - } 78 - if ((info->bits & XRT_SWAPCHAIN_USAGE_UNORDERED_ACCESS) != 0) { 79 - image_usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; 80 - } 81 - if ((info->bits & XRT_SWAPCHAIN_USAGE_TRANSFER_SRC) != 0) { 82 - image_usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; 83 - } 84 - if ((info->bits & XRT_SWAPCHAIN_USAGE_TRANSFER_DST) != 0) { 85 - image_usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT; 86 - } 87 - if ((info->bits & XRT_SWAPCHAIN_USAGE_SAMPLED) != 0) { 88 - image_usage |= VK_IMAGE_USAGE_SAMPLED_BIT; 89 - } 90 - if ((info->bits & XRT_SWAPCHAIN_USAGE_INPUT_ATTACHMENT) != 0) { 91 - image_usage |= VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT; 92 - } 93 70 94 71 VkImageCreateInfo create_info = { 95 72 .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,