5 #include "flutter/testing/testing.h"
6 #include "gtest/gtest.h"
13 #include "impeller/renderer/backend/vulkan/test/mock_vulkan.h"
14 #include "vulkan/vulkan_enums.hpp"
19 TEST(AllocatorVKTest, ToVKImageUsageFlags) {
25 vk::ImageUsageFlagBits::eInputAttachment |
26 vk::ImageUsageFlagBits::eColorAttachment |
27 vk::ImageUsageFlagBits::eTransientAttachment);
34 vk::ImageUsageFlagBits::eDepthStencilAttachment |
35 vk::ImageUsageFlagBits::eTransientAttachment);
38 TEST(AllocatorVKTest, MemoryTypeSelectionSingleHeap) {
39 vk::PhysicalDeviceMemoryProperties properties;
40 properties.memoryTypeCount = 1;
41 properties.memoryHeapCount = 1;
42 properties.memoryTypes[0].heapIndex = 0;
43 properties.memoryTypes[0].propertyFlags =
44 vk::MemoryPropertyFlagBits::eDeviceLocal;
45 properties.memoryHeaps[0].size = 1024 * 1024 * 1024;
46 properties.memoryHeaps[0].flags = vk::MemoryHeapFlagBits::eDeviceLocal;
53 TEST(AllocatorVKTest, MemoryTypeSelectionTwoHeap) {
54 vk::PhysicalDeviceMemoryProperties properties;
55 properties.memoryTypeCount = 2;
56 properties.memoryHeapCount = 2;
57 properties.memoryTypes[0].heapIndex = 0;
58 properties.memoryTypes[0].propertyFlags =
59 vk::MemoryPropertyFlagBits::eHostVisible;
60 properties.memoryHeaps[0].size = 1024 * 1024 * 1024;
61 properties.memoryHeaps[0].flags = vk::MemoryHeapFlagBits::eDeviceLocal;
63 properties.memoryTypes[1].heapIndex = 1;
64 properties.memoryTypes[1].propertyFlags =
65 vk::MemoryPropertyFlagBits::eDeviceLocal;
66 properties.memoryHeaps[1].size = 1024 * 1024 * 1024;
67 properties.memoryHeaps[1].flags = vk::MemoryHeapFlagBits::eDeviceLocal;
78 TEST(AllocatorVKTest, RecreateSwapchainWhenSizeChanges) {
79 auto const context = MockVulkanContextBuilder().Build();
80 auto allocator = context->GetResourceAllocator();
82 EXPECT_EQ(
reinterpret_cast<AllocatorVK*
>(allocator.get())
95 EXPECT_EQ(
reinterpret_cast<AllocatorVK*
>(allocator.get())
constexpr uint64_t GetByteSize() const
static int32_t FindMemoryTypeIndex(uint32_t memory_type_bits_requirement, vk::PhysicalDeviceMemoryProperties &memory_properties)
Select a matching memory type for the given [memory_type_bits_requirement], or -1 if none is found.
static vk::ImageUsageFlags ToVKImageUsageFlags(PixelFormat format, TextureUsageMask usage, StorageMode mode, bool supports_memoryless_textures)
Bytes DebugGetHeapUsage() const override
TEST(AllocationSizeTest, CanCreateTypedAllocations)
AllocationSize< 1 '024u *1 '024u > MebiBytes