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

Function TestAliasing

src/Tests.cpp:6903–6982  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6901}
6902
6903static void TestAliasing()
6904{
6905 wprintf(L"Testing aliasing...\n");
6906
6907 /*
6908 This is just a simple test, more like a code sample to demonstrate it's possible.
6909 */
6910
6911 // A 512x512 texture to be sampled.
6912 VkImageCreateInfo img1CreateInfo = { VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO };
6913 img1CreateInfo.imageType = VK_IMAGE_TYPE_2D;
6914 img1CreateInfo.extent.width = 512;
6915 img1CreateInfo.extent.height = 512;
6916 img1CreateInfo.extent.depth = 1;
6917 img1CreateInfo.mipLevels = 10;
6918 img1CreateInfo.arrayLayers = 1;
6919 img1CreateInfo.format = VK_FORMAT_R8G8B8A8_SRGB;
6920 img1CreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
6921 img1CreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
6922 img1CreateInfo.usage = VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT;
6923 img1CreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;
6924
6925 // A full screen texture to be used as color attachment.
6926 VkImageCreateInfo img2CreateInfo = { VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO };
6927 img2CreateInfo.imageType = VK_IMAGE_TYPE_2D;
6928 img2CreateInfo.extent.width = 1920;
6929 img2CreateInfo.extent.height = 1080;
6930 img2CreateInfo.extent.depth = 1;
6931 img2CreateInfo.mipLevels = 1;
6932 img2CreateInfo.arrayLayers = 1;
6933 img2CreateInfo.format = VK_FORMAT_R8G8B8A8_UNORM;
6934 img2CreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
6935 img2CreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
6936 img2CreateInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
6937 img2CreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;
6938
6939 VkImage img1 = VK_NULL_HANDLE;
6940 ERR_GUARD_VULKAN(vkCreateImage(g_hDevice, &img1CreateInfo, g_Allocs, &img1));
6941 VkImage img2 = VK_NULL_HANDLE;
6942 ERR_GUARD_VULKAN(vkCreateImage(g_hDevice, &img2CreateInfo, g_Allocs, &img2));
6943
6944 VkMemoryRequirements img1MemReq = {};
6945 vkGetImageMemoryRequirements(g_hDevice, img1, &img1MemReq);
6946 VkMemoryRequirements img2MemReq = {};
6947 vkGetImageMemoryRequirements(g_hDevice, img2, &img2MemReq);
6948
6949 VkMemoryRequirements finalMemReq = {};
6950 finalMemReq.size = std::max(img1MemReq.size, img2MemReq.size);
6951 finalMemReq.alignment = std::max(img1MemReq.alignment, img2MemReq.alignment);
6952 finalMemReq.memoryTypeBits = img1MemReq.memoryTypeBits & img2MemReq.memoryTypeBits;
6953 if(finalMemReq.memoryTypeBits != 0)
6954 {
6955 wprintf(L" size: max(%llu, %llu) = %llu\n",
6956 img1MemReq.size, img2MemReq.size, finalMemReq.size);
6957 wprintf(L" alignment: max(%llu, %llu) = %llu\n",
6958 img1MemReq.alignment, img2MemReq.alignment, finalMemReq.alignment);
6959 wprintf(L" memoryTypeBits: %u & %u = %u\n",
6960 img1MemReq.memoryTypeBits, img2MemReq.memoryTypeBits, finalMemReq.memoryTypeBits);

Callers 1

TestFunction · 0.85

Calls 3

vmaAllocateMemoryFunction · 0.85
vmaBindImageMemoryFunction · 0.85
vmaFreeMemoryFunction · 0.85

Tested by

no test coverage detected