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

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

Issue 555020: Redesigned CommandBuffer and NPDevice3D interfaces (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 10 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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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/at_exit.h" 7 #include "base/at_exit.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "gpu/command_buffer/client/cmd_buffer_helper.h" 9 #include "gpu/command_buffer/client/cmd_buffer_helper.h"
10 #include "gpu/command_buffer/client/fenced_allocator.h" 10 #include "gpu/command_buffer/client/fenced_allocator.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 command_buffer_.get(), NULL, parser_, INT_MAX)); 54 command_buffer_.get(), NULL, parser_, INT_MAX));
55 command_buffer_->SetPutOffsetChangeCallback(NewCallback( 55 command_buffer_->SetPutOffsetChangeCallback(NewCallback(
56 gpu_processor.get(), &GPUProcessor::ProcessCommands)); 56 gpu_processor.get(), &GPUProcessor::ProcessCommands));
57 57
58 api_mock_->set_engine(gpu_processor.get()); 58 api_mock_->set_engine(gpu_processor.get());
59 59
60 helper_.reset(new CommandBufferHelper(command_buffer_.get())); 60 helper_.reset(new CommandBufferHelper(command_buffer_.get()));
61 helper_->Initialize(); 61 helper_->Initialize();
62 } 62 }
63 63
64 int32 GetToken() {
65 return command_buffer_->GetState().token;
66 }
67
64 virtual void TearDown() { 68 virtual void TearDown() {
65 helper_.release(); 69 helper_.release();
66 } 70 }
67 71
68 base::AtExitManager at_exit_manager_; 72 base::AtExitManager at_exit_manager_;
69 MessageLoop message_loop_; 73 MessageLoop message_loop_;
70 scoped_ptr<AsyncAPIMock> api_mock_; 74 scoped_ptr<AsyncAPIMock> api_mock_;
71 scoped_ptr<CommandBufferService> command_buffer_; 75 scoped_ptr<CommandBufferService> command_buffer_;
72 CommandParser* parser_; 76 CommandParser* parser_;
73 scoped_ptr<CommandBufferHelper> helper_; 77 scoped_ptr<CommandBufferHelper> helper_;
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 EXPECT_TRUE(allocator_->CheckConsistency()); 184 EXPECT_TRUE(allocator_->CheckConsistency());
181 185
182 // Free one successful allocation, pending fence. 186 // Free one successful allocation, pending fence.
183 int32 token = helper_.get()->InsertToken(); 187 int32 token = helper_.get()->InsertToken();
184 allocator_->FreePendingToken(offsets[0], token); 188 allocator_->FreePendingToken(offsets[0], token);
185 EXPECT_TRUE(allocator_->CheckConsistency()); 189 EXPECT_TRUE(allocator_->CheckConsistency());
186 190
187 // The way we hooked up the helper and engine, it won't process commands 191 // The way we hooked up the helper and engine, it won't process commands
188 // until it has to wait for something. Which means the token shouldn't have 192 // until it has to wait for something. Which means the token shouldn't have
189 // passed yet at this point. 193 // passed yet at this point.
190 EXPECT_GT(token, command_buffer_->GetToken()); 194 EXPECT_GT(token, GetToken());
191 195
192 // This allocation will need to reclaim the space freed above, so that should 196 // This allocation will need to reclaim the space freed above, so that should
193 // process the commands until the token is passed. 197 // process the commands until the token is passed.
194 offsets[0] = allocator_->Alloc(kSize); 198 offsets[0] = allocator_->Alloc(kSize);
195 EXPECT_NE(FencedAllocator::kInvalidOffset, offsets[0]); 199 EXPECT_NE(FencedAllocator::kInvalidOffset, offsets[0]);
196 EXPECT_GE(kBufferSize, offsets[0]+kSize); 200 EXPECT_GE(kBufferSize, offsets[0]+kSize);
197 EXPECT_TRUE(allocator_->CheckConsistency()); 201 EXPECT_TRUE(allocator_->CheckConsistency());
198 // Check that the token has indeed passed. 202 // Check that the token has indeed passed.
199 EXPECT_LE(token, command_buffer_->GetToken()); 203 EXPECT_LE(token, GetToken());
200 204
201 // Free up everything. 205 // Free up everything.
202 for (unsigned int i = 0; i < kAllocCount; ++i) { 206 for (unsigned int i = 0; i < kAllocCount; ++i) {
203 allocator_->Free(offsets[i]); 207 allocator_->Free(offsets[i]);
204 EXPECT_TRUE(allocator_->CheckConsistency()); 208 EXPECT_TRUE(allocator_->CheckConsistency());
205 } 209 }
206 } 210 }
207 211
208 // Tests GetLargestFreeSize 212 // Tests GetLargestFreeSize
209 TEST_F(FencedAllocatorTest, TestGetLargestFreeSize) { 213 TEST_F(FencedAllocatorTest, TestGetLargestFreeSize) {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 289
286 // Now all the buffers have been freed... 290 // Now all the buffers have been freed...
287 EXPECT_EQ(kBufferSize, allocator_->GetLargestFreeOrPendingSize()); 291 EXPECT_EQ(kBufferSize, allocator_->GetLargestFreeOrPendingSize());
288 // .. but one is still waiting for the token. 292 // .. but one is still waiting for the token.
289 EXPECT_EQ(kBufferSize - 3 * kSize, 293 EXPECT_EQ(kBufferSize - 3 * kSize,
290 allocator_->GetLargestFreeSize()); 294 allocator_->GetLargestFreeSize());
291 295
292 // The way we hooked up the helper and engine, it won't process commands 296 // The way we hooked up the helper and engine, it won't process commands
293 // until it has to wait for something. Which means the token shouldn't have 297 // until it has to wait for something. Which means the token shouldn't have
294 // passed yet at this point. 298 // passed yet at this point.
295 EXPECT_GT(token, command_buffer_->GetToken()); 299 EXPECT_GT(token, GetToken());
296 // This allocation will need to reclaim the space freed above, so that should 300 // This allocation will need to reclaim the space freed above, so that should
297 // process the commands until the token is passed, but it will succeed. 301 // process the commands until the token is passed, but it will succeed.
298 offset = allocator_->Alloc(kBufferSize); 302 offset = allocator_->Alloc(kBufferSize);
299 ASSERT_NE(FencedAllocator::kInvalidOffset, offset); 303 ASSERT_NE(FencedAllocator::kInvalidOffset, offset);
300 // Check that the token has indeed passed. 304 // Check that the token has indeed passed.
301 EXPECT_LE(token, command_buffer_->GetToken()); 305 EXPECT_LE(token, GetToken());
302 allocator_->Free(offset); 306 allocator_->Free(offset);
303 307
304 // Everything now has been freed... 308 // Everything now has been freed...
305 EXPECT_EQ(kBufferSize, allocator_->GetLargestFreeOrPendingSize()); 309 EXPECT_EQ(kBufferSize, allocator_->GetLargestFreeOrPendingSize());
306 // ... for real. 310 // ... for real.
307 EXPECT_EQ(kBufferSize, allocator_->GetLargestFreeSize()); 311 EXPECT_EQ(kBufferSize, allocator_->GetLargestFreeSize());
308 } 312 }
309 313
310 // Test fixture for FencedAllocatorWrapper test - Creates a 314 // Test fixture for FencedAllocatorWrapper test - Creates a
311 // FencedAllocatorWrapper, using a CommandBufferHelper with a mock 315 // FencedAllocatorWrapper, using a CommandBufferHelper with a mock
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 EXPECT_TRUE(allocator_->CheckConsistency()); 440 EXPECT_TRUE(allocator_->CheckConsistency());
437 441
438 // Free one successful allocation, pending fence. 442 // Free one successful allocation, pending fence.
439 int32 token = helper_.get()->InsertToken(); 443 int32 token = helper_.get()->InsertToken();
440 allocator_->FreePendingToken(pointers[0], token); 444 allocator_->FreePendingToken(pointers[0], token);
441 EXPECT_TRUE(allocator_->CheckConsistency()); 445 EXPECT_TRUE(allocator_->CheckConsistency());
442 446
443 // The way we hooked up the helper and engine, it won't process commands 447 // The way we hooked up the helper and engine, it won't process commands
444 // until it has to wait for something. Which means the token shouldn't have 448 // until it has to wait for something. Which means the token shouldn't have
445 // passed yet at this point. 449 // passed yet at this point.
446 EXPECT_GT(token, command_buffer_->GetToken()); 450 EXPECT_GT(token, GetToken());
447 451
448 // This allocation will need to reclaim the space freed above, so that should 452 // This allocation will need to reclaim the space freed above, so that should
449 // process the commands until the token is passed. 453 // process the commands until the token is passed.
450 pointers[0] = allocator_->Alloc(kSize); 454 pointers[0] = allocator_->Alloc(kSize);
451 EXPECT_TRUE(pointers[0]); 455 EXPECT_TRUE(pointers[0]);
452 EXPECT_TRUE(allocator_->CheckConsistency()); 456 EXPECT_TRUE(allocator_->CheckConsistency());
453 // Check that the token has indeed passed. 457 // Check that the token has indeed passed.
454 EXPECT_LE(token, command_buffer_->GetToken()); 458 EXPECT_LE(token, GetToken());
455 459
456 // Free up everything. 460 // Free up everything.
457 for (unsigned int i = 0; i < kAllocCount; ++i) { 461 for (unsigned int i = 0; i < kAllocCount; ++i) {
458 allocator_->Free(pointers[i]); 462 allocator_->Free(pointers[i]);
459 EXPECT_TRUE(allocator_->CheckConsistency()); 463 EXPECT_TRUE(allocator_->CheckConsistency());
460 } 464 }
461 } 465 }
462 466
463 } // namespace gpu 467 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/client/cmd_buffer_helper_test.cc ('k') | gpu/command_buffer/common/command_buffer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698