Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(520)

Side by Side Diff: gpu/command_buffer/client/fenced_allocator_test.cc

Issue 8369010: Add GLES2Implemention::FreeUnusedSharedMemory (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This file contains the tests for the FencedAllocator class. 5 // This file contains the tests for the FencedAllocator class.
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/mac/scoped_nsautorelease_pool.h" 9 #include "base/mac/scoped_nsautorelease_pool.h"
10 #include "gpu/command_buffer/client/cmd_buffer_helper.h" 10 #include "gpu/command_buffer/client/cmd_buffer_helper.h"
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 98
99 BaseFencedAllocatorTest::TearDown(); 99 BaseFencedAllocatorTest::TearDown();
100 } 100 }
101 101
102 scoped_ptr<FencedAllocator> allocator_; 102 scoped_ptr<FencedAllocator> allocator_;
103 }; 103 };
104 104
105 // Checks basic alloc and free. 105 // Checks basic alloc and free.
106 TEST_F(FencedAllocatorTest, TestBasic) { 106 TEST_F(FencedAllocatorTest, TestBasic) {
107 allocator_->CheckConsistency(); 107 allocator_->CheckConsistency();
108 EXPECT_FALSE(allocator_->InUse());
108 109
109 const unsigned int kSize = 16; 110 const unsigned int kSize = 16;
110 FencedAllocator::Offset offset = allocator_->Alloc(kSize); 111 FencedAllocator::Offset offset = allocator_->Alloc(kSize);
112 EXPECT_TRUE(allocator_->InUse());
111 EXPECT_NE(FencedAllocator::kInvalidOffset, offset); 113 EXPECT_NE(FencedAllocator::kInvalidOffset, offset);
112 EXPECT_GE(kBufferSize, offset+kSize); 114 EXPECT_GE(kBufferSize, offset+kSize);
113 EXPECT_TRUE(allocator_->CheckConsistency()); 115 EXPECT_TRUE(allocator_->CheckConsistency());
114 116
115 allocator_->Free(offset); 117 allocator_->Free(offset);
118 EXPECT_FALSE(allocator_->InUse());
116 EXPECT_TRUE(allocator_->CheckConsistency()); 119 EXPECT_TRUE(allocator_->CheckConsistency());
117 } 120 }
118 121
119 // Checks out-of-memory condition. 122 // Checks out-of-memory condition.
120 TEST_F(FencedAllocatorTest, TestOutOfMemory) { 123 TEST_F(FencedAllocatorTest, TestOutOfMemory) {
121 EXPECT_TRUE(allocator_->CheckConsistency()); 124 EXPECT_TRUE(allocator_->CheckConsistency());
122 125
123 const unsigned int kSize = 16; 126 const unsigned int kSize = 16;
124 const unsigned int kAllocCount = kBufferSize / kSize; 127 const unsigned int kAllocCount = kBufferSize / kSize;
125 CHECK(kAllocCount * kSize == kBufferSize); 128 CHECK(kAllocCount * kSize == kBufferSize);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 CHECK(kAllocCount * kSize == kBufferSize); 218 CHECK(kAllocCount * kSize == kBufferSize);
216 219
217 // Allocate several buffers to fill in the memory. 220 // Allocate several buffers to fill in the memory.
218 FencedAllocator::Offset offsets[kAllocCount]; 221 FencedAllocator::Offset offsets[kAllocCount];
219 for (unsigned int i = 0; i < kAllocCount; ++i) { 222 for (unsigned int i = 0; i < kAllocCount; ++i) {
220 offsets[i] = allocator_->Alloc(kSize); 223 offsets[i] = allocator_->Alloc(kSize);
221 EXPECT_NE(FencedAllocator::kInvalidOffset, offsets[i]); 224 EXPECT_NE(FencedAllocator::kInvalidOffset, offsets[i]);
222 EXPECT_GE(kBufferSize, offsets[i]+kSize); 225 EXPECT_GE(kBufferSize, offsets[i]+kSize);
223 EXPECT_TRUE(allocator_->CheckConsistency()); 226 EXPECT_TRUE(allocator_->CheckConsistency());
224 } 227 }
228 EXPECT_TRUE(allocator_->InUse());
225 229
226 // No memory should be available. 230 // No memory should be available.
227 EXPECT_EQ(0u, allocator_->GetLargestFreeSize()); 231 EXPECT_EQ(0u, allocator_->GetLargestFreeSize());
228 232
229 // Free one successful allocation, pending fence. 233 // Free one successful allocation, pending fence.
230 int32 token = helper_.get()->InsertToken(); 234 int32 token = helper_.get()->InsertToken();
231 allocator_->FreePendingToken(offsets[0], token); 235 allocator_->FreePendingToken(offsets[0], token);
232 EXPECT_TRUE(allocator_->CheckConsistency()); 236 EXPECT_TRUE(allocator_->CheckConsistency());
233 237
234 // Force the command buffer to process the token. 238 // Force the command buffer to process the token.
(...skipping 16 matching lines...) Expand all
251 EXPECT_EQ(kSize, allocator_->GetLargestFreeSize()); 255 EXPECT_EQ(kSize, allocator_->GetLargestFreeSize());
252 256
253 // Force the command buffer to process the token. 257 // Force the command buffer to process the token.
254 helper_->Finish(); 258 helper_->Finish();
255 259
256 // Tell the allocator to update what's available based on the current token. 260 // Tell the allocator to update what's available based on the current token.
257 allocator_->FreeUnused(); 261 allocator_->FreeUnused();
258 262
259 // Check that the new largest free size takes into account the unused blocks. 263 // Check that the new largest free size takes into account the unused blocks.
260 EXPECT_EQ(kSize * 3, allocator_->GetLargestFreeSize()); 264 EXPECT_EQ(kSize * 3, allocator_->GetLargestFreeSize());
265 EXPECT_TRUE(allocator_->InUse());
261 266
262 // Free up everything. 267 // Free up everything.
263 for (unsigned int i = 3; i < kAllocCount; ++i) { 268 for (unsigned int i = 3; i < kAllocCount; ++i) {
264 allocator_->Free(offsets[i]); 269 allocator_->Free(offsets[i]);
265 EXPECT_TRUE(allocator_->CheckConsistency()); 270 EXPECT_TRUE(allocator_->CheckConsistency());
266 } 271 }
272 EXPECT_FALSE(allocator_->InUse());
267 } 273 }
268 274
269 // Tests GetLargestFreeSize 275 // Tests GetLargestFreeSize
270 TEST_F(FencedAllocatorTest, TestGetLargestFreeSize) { 276 TEST_F(FencedAllocatorTest, TestGetLargestFreeSize) {
271 EXPECT_TRUE(allocator_->CheckConsistency()); 277 EXPECT_TRUE(allocator_->CheckConsistency());
272 EXPECT_EQ(kBufferSize, allocator_->GetLargestFreeSize()); 278 EXPECT_EQ(kBufferSize, allocator_->GetLargestFreeSize());
273 279
274 FencedAllocator::Offset offset = allocator_->Alloc(kBufferSize); 280 FencedAllocator::Offset offset = allocator_->Alloc(kBufferSize);
275 ASSERT_NE(FencedAllocator::kInvalidOffset, offset); 281 ASSERT_NE(FencedAllocator::kInvalidOffset, offset);
276 EXPECT_EQ(0u, allocator_->GetLargestFreeSize()); 282 EXPECT_EQ(0u, allocator_->GetLargestFreeSize());
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 EXPECT_LE(token, GetToken()); 519 EXPECT_LE(token, GetToken());
514 520
515 // Free up everything. 521 // Free up everything.
516 for (unsigned int i = 0; i < kAllocCount; ++i) { 522 for (unsigned int i = 0; i < kAllocCount; ++i) {
517 allocator_->Free(pointers[i]); 523 allocator_->Free(pointers[i]);
518 EXPECT_TRUE(allocator_->CheckConsistency()); 524 EXPECT_TRUE(allocator_->CheckConsistency());
519 } 525 }
520 } 526 }
521 527
522 } // namespace gpu 528 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/client/fenced_allocator.cc ('k') | gpu/command_buffer/client/gles2_implementation.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698