| Index: gpu/command_buffer/service/gpu_scheduler_unittest.cc
|
| ===================================================================
|
| --- gpu/command_buffer/service/gpu_scheduler_unittest.cc (revision 93137)
|
| +++ gpu/command_buffer/service/gpu_scheduler_unittest.cc (working copy)
|
| @@ -44,7 +44,7 @@
|
| ON_CALL(*command_buffer_.get(), GetState())
|
| .WillByDefault(Return(default_state));
|
|
|
| - async_api_.reset(new StrictMock<AsyncAPIMock>);
|
| + async_api_.reset(new StrictMock<SpecializedDoCommandAsyncAPIMock>);
|
|
|
| decoder_ = new gles2::MockGLES2Decoder();
|
|
|
| @@ -55,9 +55,10 @@
|
| 0,
|
| async_api_.get());
|
|
|
| - scheduler_.reset(gpu::GpuScheduler::CreateForTests(command_buffer_.get(),
|
| - decoder_,
|
| - parser_));
|
| + scheduler_.reset(new GpuScheduler(command_buffer_.get(),
|
| + decoder_,
|
| + parser_,
|
| + 2));
|
|
|
| EXPECT_CALL(*decoder_, Destroy())
|
| .Times(1)
|
| @@ -96,7 +97,7 @@
|
| EXPECT_CALL(*command_buffer_, SetParseError(_))
|
| .Times(0);
|
|
|
| - scheduler_->PutChanged();
|
| + scheduler_->PutChanged(true);
|
| }
|
|
|
| TEST_F(GpuSchedulerTest, ProcessesOneCommand) {
|
| @@ -118,7 +119,7 @@
|
| EXPECT_CALL(*command_buffer_, SetParseError(_))
|
| .Times(0);
|
|
|
| - scheduler_->PutChanged();
|
| + scheduler_->PutChanged(true);
|
| }
|
|
|
| TEST_F(GpuSchedulerTest, ProcessesTwoCommands) {
|
| @@ -143,7 +144,7 @@
|
| .WillOnce(Return(error::kNoError));
|
| EXPECT_CALL(*command_buffer_, SetGetOffset(3));
|
|
|
| - scheduler_->PutChanged();
|
| + scheduler_->PutChanged(true);
|
| }
|
|
|
| TEST_F(GpuSchedulerTest, SchedulerSetsTheGLContext) {
|
| @@ -156,9 +157,50 @@
|
| EXPECT_CALL(*command_buffer_, GetState())
|
| .WillRepeatedly(Return(state));
|
|
|
| - scheduler_->PutChanged();
|
| + scheduler_->PutChanged(true);
|
| }
|
|
|
| +TEST_F(GpuSchedulerTest, PostsTaskToFinishRemainingCommands) {
|
| + unsigned int pauseCmd = SpecializedDoCommandAsyncAPIMock::kTestQuantumCommand;
|
| + CommandHeader* header = reinterpret_cast<CommandHeader*>(&buffer_[0]);
|
| + header[0].command = 7;
|
| + header[0].size = 2;
|
| + buffer_[1] = 123;
|
| + header[2].command = pauseCmd;
|
| + header[2].size = 1;
|
| + header[3].command = 9;
|
| + header[3].size = 1;
|
| +
|
| + CommandBuffer::State state;
|
| +
|
| + state.put_offset = 4;
|
| + EXPECT_CALL(*command_buffer_, GetState())
|
| + .WillRepeatedly(Return(state));
|
| +
|
| + EXPECT_CALL(*async_api_, DoCommand(7, 1, &buffer_[0]))
|
| + .WillOnce(Return(error::kNoError));
|
| + EXPECT_CALL(*command_buffer_, SetGetOffset(2));
|
| +
|
| + EXPECT_CALL(*async_api_, DoCommand(pauseCmd, 0, &buffer_[2]))
|
| + .WillOnce(Return(error::kNoError));
|
| + EXPECT_CALL(*command_buffer_, SetGetOffset(3));
|
| +
|
| + scheduler_->PutChanged(true);
|
| +
|
| + // ProcessCommands is called a second time when the pending task is run.
|
| +
|
| + state.put_offset = 4;
|
| + EXPECT_CALL(*command_buffer_, GetState())
|
| + .WillRepeatedly(Return(state));
|
| +
|
| + EXPECT_CALL(*async_api_, DoCommand(9, 0, &buffer_[3]))
|
| + .WillOnce(Return(error::kNoError));
|
| +
|
| + EXPECT_CALL(*command_buffer_, SetGetOffset(4));
|
| +
|
| + MessageLoop::current()->RunAllPending();
|
| +}
|
| +
|
| TEST_F(GpuSchedulerTest, SetsErrorCodeOnCommandBuffer) {
|
| CommandHeader* header = reinterpret_cast<CommandHeader*>(&buffer_[0]);
|
| header[0].command = 7;
|
| @@ -180,7 +222,7 @@
|
| EXPECT_CALL(*command_buffer_,
|
| SetParseError(error::kUnknownCommand));
|
|
|
| - scheduler_->PutChanged();
|
| + scheduler_->PutChanged(true);
|
| }
|
|
|
| TEST_F(GpuSchedulerTest, ProcessCommandsDoesNothingAfterError) {
|
| @@ -190,7 +232,7 @@
|
| EXPECT_CALL(*command_buffer_, GetState())
|
| .WillRepeatedly(Return(state));
|
|
|
| - scheduler_->PutChanged();
|
| + scheduler_->PutChanged(true);
|
| }
|
|
|
| TEST_F(GpuSchedulerTest, CanGetAddressOfSharedMemory) {
|
|
|