@@ -150,15 +150,20 @@ VulkanImage::VulkanImage(const VulkanContext& ctx,
150150
151151 const bool isDisjoint = (createFlags & VK_IMAGE_CREATE_DISJOINT_BIT ) != 0 ;
152152
153- const VkImageCreateInfo ci = ivkGetImageCreateInfo (type,
154- imageFormat_,
155- tiling,
156- usageFlags,
157- extent_,
158- mipLevels_,
159- arrayLayers_,
160- createFlags,
161- samples);
153+ const VkImageCreateInfo ci = {
154+ .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO ,
155+ .flags = createFlags,
156+ .imageType = type,
157+ .format = imageFormat_,
158+ .extent = extent_,
159+ .mipLevels = mipLevels_,
160+ .arrayLayers = arrayLayers_,
161+ .samples = samples,
162+ .tiling = tiling,
163+ .usage = usageFlags,
164+ .sharingMode = VK_SHARING_MODE_EXCLUSIVE ,
165+ .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED ,
166+ };
162167
163168 if (IGL_VULKAN_USE_VMA && !isDisjoint) {
164169 const VmaAllocationCreateInfo ciAlloc = {
@@ -240,18 +245,24 @@ VulkanImage::VulkanImage(const VulkanContext& ctx,
240245 IGL_DEBUG_ASSERT (numPlanes > 0 && numPlanes <= kMaxImagePlanes );
241246 // NOLINTNEXTLINE(modernize-avoid-c-arrays)
242247 const VkImagePlaneMemoryRequirementsInfo planes[kMaxImagePlanes ] = {
243- ivkGetImagePlaneMemoryRequirementsInfo (VK_IMAGE_ASPECT_PLANE_0_BIT ),
244- ivkGetImagePlaneMemoryRequirementsInfo (VK_IMAGE_ASPECT_PLANE_1_BIT ),
245- ivkGetImagePlaneMemoryRequirementsInfo (VK_IMAGE_ASPECT_PLANE_2_BIT ),
248+ {.sType = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO ,
249+ .planeAspect = VK_IMAGE_ASPECT_PLANE_0_BIT },
250+ {.sType = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO ,
251+ .planeAspect = VK_IMAGE_ASPECT_PLANE_1_BIT },
252+ {.sType = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO ,
253+ .planeAspect = VK_IMAGE_ASPECT_PLANE_2_BIT },
246254 };
247255 // NOLINTNEXTLINE(modernize-avoid-c-arrays)
248256 const VkImageMemoryRequirementsInfo2 imgRequirements[kMaxImagePlanes ] = {
249- ivkGetImageMemoryRequirementsInfo2 (isDisjoint && numPlanes > 0 ? &planes[0 ] : nullptr ,
250- vkImage_),
251- ivkGetImageMemoryRequirementsInfo2 (isDisjoint && numPlanes > 1 ? &planes[1 ] : nullptr ,
252- vkImage_),
253- ivkGetImageMemoryRequirementsInfo2 (isDisjoint && numPlanes > 2 ? &planes[2 ] : nullptr ,
254- vkImage_),
257+ {.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 ,
258+ .pNext = isDisjoint && numPlanes > 0 ? &planes[0 ] : nullptr ,
259+ .image = vkImage_},
260+ {.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 ,
261+ .pNext = isDisjoint && numPlanes > 1 ? &planes[1 ] : nullptr ,
262+ .image = vkImage_},
263+ {.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 ,
264+ .pNext = isDisjoint && numPlanes > 2 ? &planes[2 ] : nullptr ,
265+ .image = vkImage_},
255266 };
256267 for (uint32_t p = 0 ; p != numPlanes; p++) {
257268 ctx_->vf_ .vkGetImageMemoryRequirements2 (device_, &imgRequirements[p], &memRequirements[p]);
@@ -280,10 +291,18 @@ VulkanImage::VulkanImage(const VulkanContext& ctx,
280291 };
281292 // NOLINTNEXTLINE(modernize-avoid-c-arrays)
282293 const VkBindImageMemoryInfo bindInfo[kMaxImagePlanes ] = {
283- ivkGetBindImageMemoryInfo (
284- isDisjoint ? &bindImagePlaneMemoryInfo[0 ] : nullptr , vkImage_, vkMemory_[0 ]),
285- ivkGetBindImageMemoryInfo (&bindImagePlaneMemoryInfo[1 ], vkImage_, vkMemory_[1 ]),
286- ivkGetBindImageMemoryInfo (&bindImagePlaneMemoryInfo[2 ], vkImage_, vkMemory_[2 ]),
294+ {.sType = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO ,
295+ .pNext = isDisjoint ? &bindImagePlaneMemoryInfo[0 ] : nullptr ,
296+ .image = vkImage_,
297+ .memory = vkMemory_[0 ]},
298+ {.sType = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO ,
299+ .pNext = &bindImagePlaneMemoryInfo[1 ],
300+ .image = vkImage_,
301+ .memory = vkMemory_[1 ]},
302+ {.sType = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO ,
303+ .pNext = &bindImagePlaneMemoryInfo[2 ],
304+ .image = vkImage_,
305+ .memory = vkMemory_[2 ]},
287306 };
288307 VK_ASSERT (ctx_->vf_ .vkBindImageMemory2 (device_, numPlanes, bindInfo));
289308
@@ -349,21 +368,25 @@ VulkanImage::VulkanImage(const VulkanContext& ctx,
349368
350369 setName (debugName);
351370
352- VkImageCreateInfo ci = ivkGetImageCreateInfo (type,
353- imageFormat_,
354- tiling,
355- usageFlags,
356- extent_,
357- mipLevels_,
358- arrayLayers_,
359- createFlags,
360- samples);
361-
362371 const VkExternalMemoryImageCreateInfo extImgMem = {
363372 .sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO ,
364373 .handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID };
365374
366- ci.pNext = &extImgMem;
375+ const VkImageCreateInfo ci = {
376+ .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO ,
377+ .pNext = &extImgMem,
378+ .flags = createFlags,
379+ .imageType = type,
380+ .format = imageFormat_,
381+ .extent = extent_,
382+ .mipLevels = mipLevels_,
383+ .arrayLayers = arrayLayers_,
384+ .samples = samples,
385+ .tiling = tiling,
386+ .usage = usageFlags,
387+ .sharingMode = VK_SHARING_MODE_EXCLUSIVE ,
388+ .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED ,
389+ };
367390
368391 VK_ASSERT (ctx_->vf_ .vkCreateImage (device_, &ci, nullptr , &vkImage_));
369392 VK_ASSERT (ivkSetDebugObjectName (
@@ -450,22 +473,26 @@ VulkanImage::VulkanImage(const VulkanContext& ctx,
450473
451474 setName (debugName);
452475
453- VkImageCreateInfo ci = ivkGetImageCreateInfo (type,
454- imageFormat_,
455- tiling,
456- usageFlags,
457- extent_,
458- mipLevels_,
459- arrayLayers_,
460- createFlags,
461- samples);
462-
463476 VkExternalMemoryImageCreateInfo extImgMem = {
464477 .sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO ,
465478 .handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT ,
466479 };
467480
468- ci.pNext = &extImgMem;
481+ const VkImageCreateInfo ci = {
482+ .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO ,
483+ .pNext = &extImgMem,
484+ .flags = createFlags,
485+ .imageType = type,
486+ .format = imageFormat_,
487+ .extent = extent_,
488+ .mipLevels = mipLevels_,
489+ .arrayLayers = arrayLayers_,
490+ .samples = samples,
491+ .tiling = tiling,
492+ .usage = usageFlags,
493+ .sharingMode = VK_SHARING_MODE_EXCLUSIVE ,
494+ .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED ,
495+ };
469496
470497 // create image.. importing external memory cannot use VMA
471498 VK_ASSERT (ctx_->vf_ .vkCreateImage (device_, &ci, nullptr , &vkImage_));
@@ -579,22 +606,26 @@ VulkanImage::VulkanImage(const VulkanContext& ctx,
579606 IGL_DEBUG_ASSERT (imageFormat_ != VK_FORMAT_UNDEFINED , " Invalid VkFormat value" );
580607 IGL_DEBUG_ASSERT (samples_ > 0 , " The image must contain at least one sample" );
581608
582- VkImageCreateInfo ci = ivkGetImageCreateInfo (type,
583- imageFormat_,
584- tiling,
585- usageFlags,
586- extent_,
587- mipLevels_,
588- arrayLayers_,
589- createFlags,
590- samples);
591-
592609 const VkExternalMemoryImageCreateInfo extImgMem = {
593610 .sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO ,
594611 .handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT ,
595612 };
596613
597- ci.pNext = &extImgMem;
614+ const VkImageCreateInfo ci = {
615+ .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO ,
616+ .pNext = &extImgMem,
617+ .flags = createFlags,
618+ .imageType = type,
619+ .format = imageFormat_,
620+ .extent = extent_,
621+ .mipLevels = mipLevels_,
622+ .arrayLayers = arrayLayers_,
623+ .samples = samples,
624+ .tiling = tiling,
625+ .usage = usageFlags,
626+ .sharingMode = VK_SHARING_MODE_EXCLUSIVE ,
627+ .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED ,
628+ };
598629
599630 // create image. importing external memory cannot use VMA
600631 VK_ASSERT (ctx_->vf_ .vkCreateImage (device_, &ci, nullptr , &vkImage_));
@@ -760,17 +791,21 @@ VulkanImage::VulkanImage(const VulkanContext& ctx,
760791 .handleTypes = compatibleHandleTypes,
761792 };
762793
763- VkImageCreateInfo ci = ivkGetImageCreateInfo (type,
764- imageFormat_,
765- tiling,
766- usageFlags,
767- extent_,
768- mipLevels_,
769- arrayLayers_,
770- createFlags,
771- samples);
772-
773- ci.pNext = &externalImageCreateInfo;
794+ const VkImageCreateInfo ci = {
795+ .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO ,
796+ .pNext = &externalImageCreateInfo,
797+ .flags = createFlags,
798+ .imageType = type,
799+ .format = imageFormat_,
800+ .extent = extent_,
801+ .mipLevels = mipLevels_,
802+ .arrayLayers = arrayLayers_,
803+ .samples = samples,
804+ .tiling = tiling,
805+ .usage = usageFlags,
806+ .sharingMode = VK_SHARING_MODE_EXCLUSIVE ,
807+ .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED ,
808+ };
774809
775810 // create VkImage importing external memory cannot use VMA
776811 VK_ASSERT (ctx_->vf_ .vkCreateImage (device_, &ci, nullptr , &vkImage_));
@@ -801,8 +836,10 @@ VulkanImage::VulkanImage(const VulkanContext& ctx,
801836 const uint32_t numPlanes = igl::vulkan::getNumImagePlanes (format);
802837 IGL_DEBUG_ASSERT (numPlanes > 0 && numPlanes <= kMaxImagePlanes );
803838 for (uint32_t p = 0 ; p != numPlanes; p++) {
804- auto imagePlaneMemoryRequirementsInfo = ivkGetImagePlaneMemoryRequirementsInfo (
805- (VkImageAspectFlagBits)(VK_IMAGE_ASPECT_PLANE_0_BIT << p));
839+ auto imagePlaneMemoryRequirementsInfo = VkImagePlaneMemoryRequirementsInfo{
840+ .sType = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO ,
841+ .planeAspect = (VkImageAspectFlagBits)(VK_IMAGE_ASPECT_PLANE_0_BIT << p),
842+ };
806843
807844 const VkImageMemoryRequirementsInfo2 imageMemoryRequirementInfo = {
808845 .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 ,
@@ -840,8 +877,12 @@ VulkanImage::VulkanImage(const VulkanContext& ctx,
840877 .sType = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO ,
841878 .planeAspect = (VkImageAspectFlagBits)(VK_IMAGE_ASPECT_PLANE_0_BIT << p),
842879 };
843- bindInfo[p] = ivkGetBindImageMemoryInfo (
844- numPlanes > 1 ? &bindImagePlaneMemoryInfo[p] : nullptr , vkImage_, vkMemory_[p]);
880+ bindInfo[p] = VkBindImageMemoryInfo{
881+ .sType = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO ,
882+ .pNext = numPlanes > 1 ? &bindImagePlaneMemoryInfo[p] : nullptr ,
883+ .image = vkImage_,
884+ .memory = vkMemory_[p],
885+ };
845886 }
846887 VK_ASSERT (ctx_->vf_ .vkBindImageMemory2 (device_, numPlanes, bindInfo.data ()));
847888
0 commit comments