| 2994 | } |
| 2995 | |
| 2996 | static void TestUserData() |
| 2997 | { |
| 2998 | VkResult res; |
| 2999 | |
| 3000 | VkBufferCreateInfo bufCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO }; |
| 3001 | bufCreateInfo.usage = VK_BUFFER_USAGE_INDEX_BUFFER_BIT; |
| 3002 | bufCreateInfo.size = 0x10000; |
| 3003 | |
| 3004 | for(uint32_t testIndex = 0; testIndex < 2; ++testIndex) |
| 3005 | { |
| 3006 | // Opaque pointer |
| 3007 | { |
| 3008 | |
| 3009 | void* numberAsPointer = (void*)(size_t)0xC2501FF3u; |
| 3010 | void* pointerToSomething = &res; |
| 3011 | |
| 3012 | VmaAllocationCreateInfo allocCreateInfo = {}; |
| 3013 | allocCreateInfo.usage = VMA_MEMORY_USAGE_AUTO; |
| 3014 | allocCreateInfo.pUserData = numberAsPointer; |
| 3015 | if(testIndex == 1) |
| 3016 | allocCreateInfo.flags |= VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT; |
| 3017 | |
| 3018 | VkBuffer buf; VmaAllocation alloc; VmaAllocationInfo allocInfo; |
| 3019 | res = vmaCreateBuffer(g_hAllocator, &bufCreateInfo, &allocCreateInfo, &buf, &alloc, &allocInfo); |
| 3020 | TEST(res == VK_SUCCESS); |
| 3021 | TEST(allocInfo.pUserData == numberAsPointer); |
| 3022 | |
| 3023 | vmaGetAllocationInfo(g_hAllocator, alloc, &allocInfo); |
| 3024 | TEST(allocInfo.pUserData == numberAsPointer); |
| 3025 | |
| 3026 | vmaSetAllocationUserData(g_hAllocator, alloc, pointerToSomething); |
| 3027 | vmaGetAllocationInfo(g_hAllocator, alloc, &allocInfo); |
| 3028 | TEST(allocInfo.pUserData == pointerToSomething); |
| 3029 | |
| 3030 | vmaDestroyBuffer(g_hAllocator, buf, alloc); |
| 3031 | } |
| 3032 | |
| 3033 | // String |
| 3034 | { |
| 3035 | const char* name1 = "Buffer name \\\"\'<>&% \nSecond line .,;="; |
| 3036 | const char* name2 = "2"; |
| 3037 | const size_t name1Len = strlen(name1); |
| 3038 | |
| 3039 | char* name1Buf = new char[name1Len + 1]; |
| 3040 | strcpy_s(name1Buf, name1Len + 1, name1); |
| 3041 | |
| 3042 | VmaAllocationCreateInfo allocCreateInfo = {}; |
| 3043 | allocCreateInfo.usage = VMA_MEMORY_USAGE_AUTO; |
| 3044 | allocCreateInfo.flags = VMA_ALLOCATION_CREATE_USER_DATA_COPY_STRING_BIT; |
| 3045 | allocCreateInfo.pUserData = name1Buf; |
| 3046 | if(testIndex == 1) |
| 3047 | allocCreateInfo.flags |= VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT; |
| 3048 | |
| 3049 | VkBuffer buf; VmaAllocation alloc; VmaAllocationInfo allocInfo; |
| 3050 | res = vmaCreateBuffer(g_hAllocator, &bufCreateInfo, &allocCreateInfo, &buf, &alloc, &allocInfo); |
| 3051 | TEST(res == VK_SUCCESS); |
| 3052 | TEST(allocInfo.pName != nullptr && allocInfo.pName != name1Buf); |
| 3053 | TEST(strcmp(name1, allocInfo.pName) == 0); |
no test coverage detected