DE_ASSERT((bufferMemRequirement.size % bufferMemRequirement.alignment) == 0);
- std::vector<DeviceMemoryUniquePtr> deviceMemUniquePtrVec;
+ Move<VkDeviceMemory> sparseMemoryAllocation;
{
std::vector<VkSparseMemoryBind> sparseMemoryBinds;
const deUint32 numSparseBinds = static_cast<deUint32>(bufferMemRequirement.size / bufferMemRequirement.alignment);
- const deUint32 memoryType = findMatchingMemoryType(instance, physicalDevice, bufferMemRequirement, MemoryRequirement::Any);
+ const deUint32 memoryType = findMatchingMemoryType(instance, physicalDevice, bufferMemRequirement, MemoryRequirement::Any);
if (memoryType == NO_MATCH_FOUND)
return tcu::TestStatus::fail("No matching memory type found");
- for (deUint32 sparseBindNdx = 0; sparseBindNdx < numSparseBinds; ++sparseBindNdx)
{
- const VkSparseMemoryBind sparseMemoryBind = makeSparseMemoryBind(deviceInterface, *m_logicalDevice, bufferMemRequirement.alignment, memoryType, bufferMemRequirement.alignment * sparseBindNdx);
+ const VkMemoryAllocateInfo allocateInfo =
+ {
+ VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, // VkStructureType sType;
+ DE_NULL, // const void* pNext;
+ bufferMemRequirement.size, // VkDeviceSize allocationSize;
+ memoryType, // uint32_t memoryTypeIndex;
+ };
+
+ sparseMemoryAllocation = allocateMemory(deviceInterface, *m_logicalDevice, &allocateInfo);
+ }
- deviceMemUniquePtrVec.push_back(makeVkSharedPtr(Move<VkDeviceMemory>(check<VkDeviceMemory>(sparseMemoryBind.memory), Deleter<VkDeviceMemory>(deviceInterface, *m_logicalDevice, DE_NULL))));
+ for (deUint32 sparseBindNdx = 0; sparseBindNdx < numSparseBinds; ++sparseBindNdx)
+ {
+ const VkSparseMemoryBind sparseMemoryBind =
+ {
+ bufferMemRequirement.alignment * sparseBindNdx, // VkDeviceSize resourceOffset;
+ bufferMemRequirement.alignment, // VkDeviceSize size;
+ *sparseMemoryAllocation, // VkDeviceMemory memory;
+ bufferMemRequirement.alignment * sparseBindNdx, // VkDeviceSize memoryOffset;
+ (VkSparseMemoryBindFlags)0, // VkSparseMemoryBindFlags flags;
+ };
sparseMemoryBinds.push_back(sparseMemoryBind);
}