@@ -8258,15 +8258,50 @@ static void TestWin32Handles()
82588258{
82598259#if VMA_EXTERNAL_MEMORY_WIN32
82608260 wprintf (L" Test Win32 handles\n " );
8261- VkBufferCreateInfo bufCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
8262- bufCreateInfo.size = 1024 ;
8263- bufCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
8264- VmaAllocationCreateInfo allocCreateInfo = {};
8265- allocCreateInfo.usage = VMA_MEMORY_USAGE_AUTO;
8261+ constexpr static VkExportMemoryAllocateInfoKHR exportInfo{
8262+ VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR,
8263+ nullptr ,
8264+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
8265+ };
8266+ constexpr static VkExternalMemoryBufferCreateInfoKHR externalInfo{
8267+ VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR,
8268+ nullptr ,
8269+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
8270+ };
8271+
8272+ VkBufferCreateInfo sampleBufCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
8273+ sampleBufCreateInfo.size = 0x1000 ; // Doesn't matter.
8274+ sampleBufCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
8275+ sampleBufCreateInfo.pNext = &externalInfo;
8276+
8277+ VmaAllocationCreateInfo sampleAllocCreateInfo = {};
8278+ sampleAllocCreateInfo.usage = VMA_MEMORY_USAGE_AUTO;
8279+ sampleAllocCreateInfo.flags = VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT;
8280+
8281+ uint32_t memTypeIndex;
8282+ TEST (vmaFindMemoryTypeIndexForBufferInfo (g_hAllocator,
8283+ &sampleBufCreateInfo, &sampleAllocCreateInfo, &memTypeIndex) == VK_SUCCESS);
8284+ // Check res...
8285+
8286+
8287+ // Create a pool that can have at most 2 blocks, 128 MiB each.
8288+ VmaPoolCreateInfo poolCreateInfo = {};
8289+ poolCreateInfo.memoryTypeIndex = memTypeIndex;
8290+ poolCreateInfo.blockSize = 128ull * 1024 * 1024 ;
8291+ poolCreateInfo.maxBlockCount = 2 ;
8292+ poolCreateInfo.pMemoryAllocateNext = (void *)&exportInfo;
8293+
8294+
8295+ VmaPool pool;
8296+ TEST (vmaCreatePool (g_hAllocator, &poolCreateInfo, &pool) == VK_SUCCESS);
8297+
8298+
8299+ sampleAllocCreateInfo.pool = pool;
8300+
82668301 VkBuffer buf;
82678302 VmaAllocation alloc;
82688303 VmaAllocationInfo allocInfo;
8269- TEST (vmaCreateBuffer (g_hAllocator, &bufCreateInfo , &allocCreateInfo , &buf, &alloc, &allocInfo) == VK_SUCCESS);
8304+ TEST (vmaCreateBuffer (g_hAllocator, &sampleBufCreateInfo , &sampleAllocCreateInfo , &buf, &alloc, &allocInfo) == VK_SUCCESS);
82708305 HANDLE handle;
82718306 HANDLE handle2;
82728307 TEST (vmaGetMemoryWin32HandleKHR (g_hAllocator, alloc, nullptr , &handle) == VK_SUCCESS);
0 commit comments