8 #include "flutter/testing/testing.h"
9 #include "gmock/gmock.h"
28 auto mock_idle_waiter = std::make_shared<MockIdleWaiter>();
31 mock_idle_waiter, 256);
32 EXPECT_CALL(*mock_idle_waiter, WaitIdle());
40 static_assert(
sizeof(Length2) == 2u);
43 GetContext()->GetIdleWaiter(), 256);
45 for (
size_t i = 0; i < 12500; i++) {
46 auto view = buffer->Emplace(Length2{});
48 ASSERT_EQ(view.GetRange(),
Range(i *
sizeof(Length2), 2u));
56 static_assert(
sizeof(Length2) == 2);
57 struct alignas(16) Align16 {
60 static_assert(
alignof(Align16) == 16);
61 static_assert(
sizeof(Align16) == 16);
64 GetContext()->GetIdleWaiter(), 256);
68 auto view = buffer->Emplace(Length2{});
70 ASSERT_EQ(view.GetRange(),
Range(0u, 2u));
74 auto view = buffer->Emplace(Align16{});
76 ASSERT_EQ(view.GetRange().offset, 16u);
77 ASSERT_EQ(view.GetRange().length, 16u);
80 auto view = buffer->Emplace(Length2{});
82 ASSERT_EQ(view.GetRange(),
Range(32u, 2u));
86 auto view = buffer->Emplace(Align16{});
88 ASSERT_EQ(view.GetRange().offset, 48u);
89 ASSERT_EQ(view.GetRange().length, 16u);
95 GetContext()->GetIdleWaiter(), 256);
97 EXPECT_EQ(buffer->GetStateForTest().current_buffer, 0u);
98 EXPECT_EQ(buffer->GetStateForTest().current_frame, 0u);
99 EXPECT_EQ(buffer->GetStateForTest().total_buffer_count, 1u);
104 GetContext()->GetIdleWaiter(), 256);
106 EXPECT_EQ(buffer->GetStateForTest().current_frame, 0u);
109 EXPECT_EQ(buffer->GetStateForTest().current_frame, 1u);
112 EXPECT_EQ(buffer->GetStateForTest().current_frame, 2u);
115 EXPECT_EQ(buffer->GetStateForTest().current_frame, 3u);
118 EXPECT_EQ(buffer->GetStateForTest().current_frame, 0u);
122 EmplacingLargerThanBlockSizeCreatesOneOffBufferCallback) {
124 GetContext()->GetIdleWaiter(), 256);
128 auto buffer_view = buffer->Emplace(1024000 + 10, 0, [](uint8_t*
data) {});
130 EXPECT_EQ(buffer->GetStateForTest().current_buffer, 0u);
131 EXPECT_EQ(buffer->GetStateForTest().current_frame, 0u);
132 EXPECT_EQ(buffer->GetStateForTest().total_buffer_count, 1u);
137 GetContext()->GetIdleWaiter(), 256);
141 auto buffer_view = buffer->Emplace(
nullptr, 1024000 + 10, 0);
143 EXPECT_EQ(buffer->GetStateForTest().current_buffer, 0u);
144 EXPECT_EQ(buffer->GetStateForTest().current_frame, 0u);
145 EXPECT_EQ(buffer->GetStateForTest().total_buffer_count, 1u);
150 GetContext()->GetIdleWaiter(), 256);
153 auto buffer_view_a = buffer->Emplace(1020000, 0, [](uint8_t*
data) {});
154 auto buffer_view_b = buffer->Emplace(1020000, 0, [](uint8_t*
data) {});
156 EXPECT_EQ(buffer->GetStateForTest().current_buffer, 1u);
157 EXPECT_EQ(buffer->GetStateForTest().total_buffer_count, 2u);
158 EXPECT_EQ(buffer->GetStateForTest().current_frame, 0u);
161 for (
auto i = 0; i < 4; i++) {
165 EXPECT_EQ(buffer->GetStateForTest().current_buffer, 0u);
166 EXPECT_EQ(buffer->GetStateForTest().total_buffer_count, 2u);
167 EXPECT_EQ(buffer->GetStateForTest().current_frame, 0u);
171 for (
auto i = 0; i < 4; i++) {
175 EXPECT_EQ(buffer->GetStateForTest().current_buffer, 0u);
176 EXPECT_EQ(buffer->GetStateForTest().total_buffer_count, 1u);
177 EXPECT_EQ(buffer->GetStateForTest().current_frame, 0u);
182 GetContext()->GetIdleWaiter(), 256);
184 BufferView view = buffer->Emplace(std::array<char, 21>());
187 view = buffer->Emplace(64, 16, [](uint8_t*) {});
206 return delegate_->CreateBuffer(desc);
210 return delegate_->CreateTexture(desc);
214 return delegate_->GetMaxTextureSizeSupported();
218 std::shared_ptr<Allocator> delegate_;
223 std::shared_ptr<FailingAllocator> allocator =
224 std::make_shared<FailingAllocator>(GetContext()->GetResourceAllocator());
230 EXPECT_EQ(view.GetBuffer(),
nullptr);
231 EXPECT_EQ(view.GetRange().offset, 0u);
232 EXPECT_EQ(view.GetRange().length, 0u);
An object that allocates device memory.
static std::shared_ptr< HostBuffer > Create(const std::shared_ptr< Allocator > &allocator, const std::shared_ptr< const IdleWaiter > &idle_waiter, size_t minimum_uniform_alignment)
virtual void WaitIdle() const =0
~FailingAllocator()=default
std::shared_ptr< DeviceBuffer > OnCreateBuffer(const DeviceBufferDescriptor &desc)
std::shared_ptr< Texture > OnCreateTexture(const TextureDescriptor &desc)
ISize GetMaxTextureSizeSupported() const override
FailingAllocator(std::shared_ptr< Allocator > delegate)
MOCK_METHOD(void, WaitIdle,(),(const, override))
static constexpr const size_t kMagicFailingAllocation
TEST_P(AiksTest, DrawAtlasNoColor)
INSTANTIATE_PLAYGROUND_SUITE(AiksTest)
A lightweight object that describes the attributes of a texture that can then used an allocator to cr...
std::shared_ptr< const fml::Mapping > data