| Index: gpu/command_buffer/client/mapped_memory_unittest.cc
|
| diff --git a/gpu/command_buffer/client/mapped_memory_unittest.cc b/gpu/command_buffer/client/mapped_memory_unittest.cc
|
| index 6430b667d3f4c7683ade442d208ae246040f45bf..20b4c532f354af02039caf565f6a4c88de93b1e5 100644
|
| --- a/gpu/command_buffer/client/mapped_memory_unittest.cc
|
| +++ b/gpu/command_buffer/client/mapped_memory_unittest.cc
|
| @@ -394,6 +394,54 @@ TEST_F(MappedMemoryManagerTest, MemoryLimitWithReuse) {
|
| manager_->Free(mem3);
|
| }
|
|
|
| +TEST_F(MappedMemoryManagerTest, MaxAllocationTest) {
|
| + const unsigned int kSize = 1024;
|
| + // Reset the manager with a memory limit.
|
| + manager_.reset(new MappedMemoryManager(
|
| + helper_.get(), base::Bind(&EmptyPoll), kSize));
|
| +
|
| + const size_t kLimit = 512;
|
| + manager_->set_chunk_size_multiple(kLimit);
|
| +
|
| + // Allocate twice the limit worth of memory (currently unbounded).
|
| + int32 id1 = -1;
|
| + unsigned int offset1 = 0xFFFFFFFFU;
|
| + void* mem1 = manager_->Alloc(kLimit, &id1, &offset1);
|
| + ASSERT_TRUE(mem1);
|
| + EXPECT_NE(-1, id1);
|
| + EXPECT_EQ(0u, offset1);
|
| +
|
| + int32 id2 = -1;
|
| + unsigned int offset2 = 0xFFFFFFFFU;
|
| + void* mem2 = manager_->Alloc(kLimit, &id2, &offset2);
|
| + ASSERT_TRUE(mem2);
|
| + EXPECT_NE(-1, id2);
|
| + EXPECT_EQ(0u, offset2);
|
| +
|
| + manager_->set_max_allocated_bytes(kLimit);
|
| +
|
| + // A new allocation should now fail.
|
| + int32 id3 = -1;
|
| + unsigned int offset3 = 0xFFFFFFFFU;
|
| + void* mem3 = manager_->Alloc(kLimit, &id3, &offset3);
|
| + ASSERT_FALSE(mem3);
|
| + EXPECT_EQ(-1, id3);
|
| + EXPECT_EQ(0xFFFFFFFFU, offset3);
|
| +
|
| + manager_->Free(mem2);
|
| +
|
| + // New allocation is over the limit but should reuse allocated space
|
| + int32 id4 = -1;
|
| + unsigned int offset4 = 0xFFFFFFFFU;
|
| + void* mem4 = manager_->Alloc(kLimit, &id4, &offset4);
|
| + ASSERT_TRUE(mem4);
|
| + EXPECT_EQ(id2, id4);
|
| + EXPECT_EQ(offset2, offset4);
|
| +
|
| + manager_->Free(mem1);
|
| + manager_->Free(mem4);
|
| +}
|
| +
|
| namespace {
|
| void Poll(MappedMemoryManagerTest *test, std::list<void*>* list) {
|
| std::list<void*>::iterator it = list->begin();
|
|
|