| 6901 | } |
| 6902 | |
| 6903 | static 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); |
no test coverage detected