MCPcopy Create free account
hub / github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator / TestMemoryRequirements

Function TestMemoryRequirements

src/Tests.cpp:3122–3181  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3120}
3121
3122static void TestMemoryRequirements()
3123{
3124 VkResult res;
3125 VkBuffer buf;
3126 VmaAllocation alloc;
3127 VmaAllocationInfo allocInfo;
3128
3129 const VkPhysicalDeviceMemoryProperties* memProps;
3130 vmaGetMemoryProperties(g_hAllocator, &memProps);
3131
3132 VkBufferCreateInfo bufInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
3133 bufInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
3134 bufInfo.size = 128;
3135
3136 VmaAllocationCreateInfo allocCreateInfo = {};
3137
3138 // No requirements.
3139 res = vmaCreateBuffer(g_hAllocator, &bufInfo, &allocCreateInfo, &buf, &alloc, &allocInfo);
3140 TEST(res == VK_SUCCESS);
3141 vmaDestroyBuffer(g_hAllocator, buf, alloc);
3142
3143 // Usage = auto + host access.
3144 allocCreateInfo.usage = VMA_MEMORY_USAGE_AUTO;
3145 allocCreateInfo.flags = VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT;
3146 allocCreateInfo.requiredFlags = 0;
3147 allocCreateInfo.preferredFlags = 0;
3148 allocCreateInfo.memoryTypeBits = UINT32_MAX;
3149
3150 res = vmaCreateBuffer(g_hAllocator, &bufInfo, &allocCreateInfo, &buf, &alloc, &allocInfo);
3151 TEST(res == VK_SUCCESS);
3152 TEST(memProps->memoryTypes[allocInfo.memoryType].propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT);
3153 vmaDestroyBuffer(g_hAllocator, buf, alloc);
3154
3155 // Required flags, preferred flags.
3156 allocCreateInfo.usage = VMA_MEMORY_USAGE_UNKNOWN;
3157 allocCreateInfo.flags = 0;
3158 allocCreateInfo.requiredFlags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT;
3159 allocCreateInfo.preferredFlags = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | VK_MEMORY_PROPERTY_HOST_CACHED_BIT;
3160 allocCreateInfo.memoryTypeBits = 0;
3161
3162 res = vmaCreateBuffer(g_hAllocator, &bufInfo, &allocCreateInfo, &buf, &alloc, &allocInfo);
3163 TEST(res == VK_SUCCESS);
3164 TEST(memProps->memoryTypes[allocInfo.memoryType].propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT);
3165 TEST(memProps->memoryTypes[allocInfo.memoryType].propertyFlags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
3166 vmaDestroyBuffer(g_hAllocator, buf, alloc);
3167
3168 // memoryTypeBits.
3169 const uint32_t memType = allocInfo.memoryType;
3170 allocCreateInfo.usage = VMA_MEMORY_USAGE_UNKNOWN;
3171 allocCreateInfo.flags = 0;
3172 allocCreateInfo.requiredFlags = 0;
3173 allocCreateInfo.preferredFlags = 0;
3174 allocCreateInfo.memoryTypeBits = 1u << memType;
3175
3176 res = vmaCreateBuffer(g_hAllocator, &bufInfo, &allocCreateInfo, &buf, &alloc, &allocInfo);
3177 TEST(res == VK_SUCCESS);
3178 TEST(allocInfo.memoryType == memType);
3179 vmaDestroyBuffer(g_hAllocator, buf, alloc);

Callers 1

TestBasicsFunction · 0.85

Calls 4

vmaGetMemoryPropertiesFunction · 0.85
vmaCreateBufferFunction · 0.85
TESTEnum · 0.85
vmaDestroyBufferFunction · 0.85

Tested by

no test coverage detected