From b7bcffd564e933de6c85d2bb7be6b8c02f710866 Mon Sep 17 00:00:00 2001 From: ravi688 Date: Fri, 16 Feb 2024 21:53:57 +0530 Subject: [PATCH] Second plane (PLANE_1)'s storage must be aligned to VkMemoryRequirements::alignment --- include/PlayVk/PlayVk.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/PlayVk/PlayVk.h b/include/PlayVk/PlayVk.h index b97981c..0db9fd3 100644 --- a/include/PlayVk/PlayVk.h +++ b/include/PlayVk/PlayVk.h @@ -1435,12 +1435,14 @@ PVK_LINKAGE PvkImage pvkCreateImage2(VkPhysicalDevice physicalDevice, VkDevice d uint32_t imageBits = imageMemoryRequirements.memoryRequirements.memoryTypeBits; VkDeviceSize imageSize = imageMemoryRequirements.memoryRequirements.size; uint32_t plane0Offset = 0; - uint32_t plane1Offset = imageSize; imagePlaneRequirementInfo.planeAspect = (VkImageAspectFlagBits)(VK_IMAGE_ASPECT_PLANE_1_BIT); vkGetImageMemoryRequirements2(device, &info, &imageMemoryRequirements); __pvkCheckForMemoryTypesSupport(physicalDevice, imageMemoryRequirements.memoryRequirements.memoryTypeBits); imageBits |= imageMemoryRequirements.memoryRequirements.memoryTypeBits; + imageSize += (imageMemoryRequirements.memoryRequirements.alignment - (imageSize % imageMemoryRequirements.memoryRequirements.alignment)) + % imageMemoryRequirements.memoryRequirements.alignment; + uint32_t plane1Offset = imageSize; imageSize += imageMemoryRequirements.memoryRequirements.size; VkDeviceMemory memory = pvkAllocateMemory(device, imageSize, __pvkGetMemoryTypeIndexFromMemoryProperty(physicalDevice, mflags));