| Index: gpu/command_buffer/service/gpu_processor_unittest.cc
|
| ===================================================================
|
| --- gpu/command_buffer/service/gpu_processor_unittest.cc (revision 37414)
|
| +++ gpu/command_buffer/service/gpu_processor_unittest.cc (working copy)
|
| @@ -39,9 +39,12 @@
|
| command_buffer_.reset(new MockCommandBuffer);
|
| ON_CALL(*command_buffer_.get(), GetRingBuffer())
|
| .WillByDefault(Return(shared_memory_buffer_));
|
| - ON_CALL(*command_buffer_.get(), GetSize())
|
| - .WillByDefault(Return(kRingBufferEntries));
|
|
|
| + CommandBuffer::State default_state;
|
| + default_state.size = kRingBufferEntries;
|
| + ON_CALL(*command_buffer_.get(), GetState())
|
| + .WillByDefault(Return(default_state));
|
| +
|
| async_api_.reset(new StrictMock<AsyncAPIMock>);
|
|
|
| decoder_ = new gles2::MockGLES2Decoder();
|
| @@ -65,6 +68,10 @@
|
| MessageLoop::current()->RunAllPending();
|
| }
|
|
|
| + parse_error::ParseError GetError() {
|
| + return command_buffer_->GetState().error;
|
| + }
|
| +
|
| base::AtExitManager at_exit_manager;
|
| MessageLoop message_loop;
|
| scoped_ptr<MockCommandBuffer> command_buffer_;
|
| @@ -78,15 +85,17 @@
|
| };
|
|
|
| TEST_F(GPUProcessorTest, ProcessorDoesNothingIfRingBufferIsEmpty) {
|
| - EXPECT_CALL(*command_buffer_, GetPutOffset())
|
| - .WillOnce(Return(0));
|
| + CommandBuffer::State state;
|
| +
|
| + state.put_offset = 0;
|
| + EXPECT_CALL(*command_buffer_, GetState())
|
| + .WillOnce(Return(state));
|
| EXPECT_CALL(*command_buffer_, SetGetOffset(0));
|
|
|
| - processor_->ProcessCommands();
|
| + EXPECT_CALL(*command_buffer_, SetParseError(_))
|
| + .Times(0);
|
|
|
| - EXPECT_EQ(parse_error::kParseNoError,
|
| - command_buffer_->ResetParseError());
|
| - EXPECT_FALSE(command_buffer_->GetErrorStatus());
|
| + processor_->ProcessCommands();
|
| }
|
|
|
| TEST_F(GPUProcessorTest, ProcessesOneCommand) {
|
| @@ -95,18 +104,20 @@
|
| header[0].size = 2;
|
| buffer_[1] = 123;
|
|
|
| - EXPECT_CALL(*command_buffer_, GetPutOffset())
|
| - .WillOnce(Return(2));
|
| + CommandBuffer::State state;
|
| +
|
| + state.put_offset = 2;
|
| + EXPECT_CALL(*command_buffer_, GetState())
|
| + .WillOnce(Return(state));
|
| EXPECT_CALL(*command_buffer_, SetGetOffset(2));
|
|
|
| EXPECT_CALL(*async_api_, DoCommand(7, 1, &buffer_[0]))
|
| .WillOnce(Return(parse_error::kParseNoError));
|
|
|
| - processor_->ProcessCommands();
|
| + EXPECT_CALL(*command_buffer_, SetParseError(_))
|
| + .Times(0);
|
|
|
| - EXPECT_EQ(parse_error::kParseNoError,
|
| - command_buffer_->ResetParseError());
|
| - EXPECT_FALSE(command_buffer_->GetErrorStatus());
|
| + processor_->ProcessCommands();
|
| }
|
|
|
| TEST_F(GPUProcessorTest, ProcessesTwoCommands) {
|
| @@ -117,8 +128,11 @@
|
| header[2].command = 8;
|
| header[2].size = 1;
|
|
|
| - EXPECT_CALL(*command_buffer_, GetPutOffset())
|
| - .WillOnce(Return(3));
|
| + CommandBuffer::State state;
|
| +
|
| + state.put_offset = 3;
|
| + EXPECT_CALL(*command_buffer_, GetState())
|
| + .WillOnce(Return(state));
|
| EXPECT_CALL(*command_buffer_, SetGetOffset(3));
|
|
|
| EXPECT_CALL(*async_api_, DoCommand(7, 1, &buffer_[0]))
|
| @@ -130,11 +144,15 @@
|
| processor_->ProcessCommands();
|
| }
|
|
|
| -TEST_F(GPUProcessorTest, ProcessorSetsAndResetsTheGLContext) {
|
| +TEST_F(GPUProcessorTest, ProcessorSetsTheGLContext) {
|
| EXPECT_CALL(*decoder_, MakeCurrent())
|
| .WillOnce(Return(true));
|
| - EXPECT_CALL(*command_buffer_, GetPutOffset())
|
| - .WillOnce(Return(0));
|
| +
|
| + CommandBuffer::State state;
|
| + state.put_offset = 0;
|
| + EXPECT_CALL(*command_buffer_, GetState())
|
| + .WillOnce(Return(state));
|
| +
|
| EXPECT_CALL(*command_buffer_, SetGetOffset(0));
|
|
|
| processor_->ProcessCommands();
|
| @@ -150,9 +168,12 @@
|
| header[3].command = 9;
|
| header[3].size = 1;
|
|
|
| - EXPECT_CALL(*command_buffer_, GetPutOffset())
|
| - .WillOnce(Return(4));
|
| + CommandBuffer::State state;
|
|
|
| + state.put_offset = 4;
|
| + EXPECT_CALL(*command_buffer_, GetState())
|
| + .WillOnce(Return(state));
|
| +
|
| EXPECT_CALL(*async_api_, DoCommand(7, 1, &buffer_[0]))
|
| .WillOnce(Return(parse_error::kParseNoError));
|
|
|
| @@ -165,8 +186,9 @@
|
|
|
| // ProcessCommands is called a second time when the pending task is run.
|
|
|
| - EXPECT_CALL(*command_buffer_, GetPutOffset())
|
| - .WillOnce(Return(4));
|
| + state.put_offset = 4;
|
| + EXPECT_CALL(*command_buffer_, GetState())
|
| + .WillOnce(Return(state));
|
|
|
| EXPECT_CALL(*async_api_, DoCommand(9, 0, &buffer_[3]))
|
| .WillOnce(Return(parse_error::kParseNoError));
|
| @@ -181,77 +203,32 @@
|
| header[0].command = 7;
|
| header[0].size = 1;
|
|
|
| - EXPECT_CALL(*command_buffer_, GetPutOffset())
|
| - .WillOnce(Return(1));
|
| - EXPECT_CALL(*command_buffer_, SetGetOffset(1));
|
| + CommandBuffer::State state;
|
|
|
| - EXPECT_CALL(*async_api_, DoCommand(7, 0, &buffer_[0]))
|
| - .WillOnce(Return(
|
| - parse_error::kParseUnknownCommand));
|
| + state.put_offset = 1;
|
| + EXPECT_CALL(*command_buffer_, GetState())
|
| + .WillOnce(Return(state));
|
|
|
| - EXPECT_CALL(*command_buffer_,
|
| - SetParseError(parse_error::kParseUnknownCommand));
|
| -
|
| - processor_->ProcessCommands();
|
| -}
|
| -
|
| -TEST_F(GPUProcessorTest,
|
| - RecoverableParseErrorsAreNotClearedByFollowingSuccessfulCommands) {
|
| - CommandHeader* header = reinterpret_cast<CommandHeader*>(&buffer_[0]);
|
| - header[0].command = 7;
|
| - header[0].size = 1;
|
| - header[1].command = 8;
|
| - header[1].size = 1;
|
| -
|
| - EXPECT_CALL(*command_buffer_, GetPutOffset())
|
| - .WillOnce(Return(2));
|
| - EXPECT_CALL(*command_buffer_, SetGetOffset(2));
|
| -
|
| EXPECT_CALL(*async_api_, DoCommand(7, 0, &buffer_[0]))
|
| .WillOnce(Return(
|
| parse_error::kParseUnknownCommand));
|
|
|
| - EXPECT_CALL(*async_api_, DoCommand(8, 0, &buffer_[1]))
|
| - .WillOnce(Return(parse_error::kParseNoError));
|
| -
|
| EXPECT_CALL(*command_buffer_,
|
| SetParseError(parse_error::kParseUnknownCommand));
|
|
|
| processor_->ProcessCommands();
|
| }
|
|
|
| -TEST_F(GPUProcessorTest, UnrecoverableParseErrorsRaiseTheErrorStatus) {
|
| - CommandHeader* header =
|
| - reinterpret_cast<CommandHeader*>(&buffer_[0]);
|
| - header[0].command = 7;
|
| - header[0].size = 1;
|
| - header[1].command = 8;
|
| - header[1].size = 1;
|
| +TEST_F(GPUProcessorTest, ProcessCommandsDoesNothingAfterError) {
|
| + CommandBuffer::State state;
|
| + state.error = parse_error::kParseGenericError;
|
|
|
| - EXPECT_CALL(*command_buffer_, GetPutOffset())
|
| - .WillOnce(Return(2));
|
| + EXPECT_CALL(*command_buffer_, GetState())
|
| + .WillOnce(Return(state));
|
|
|
| - EXPECT_CALL(*async_api_, DoCommand(7, 0, &buffer_[0]))
|
| - .WillOnce(Return(parse_error::kParseInvalidSize));
|
| -
|
| - EXPECT_CALL(*command_buffer_,
|
| - SetParseError(parse_error::kParseInvalidSize));
|
| -
|
| - EXPECT_CALL(*command_buffer_, RaiseErrorStatus());
|
| -
|
| processor_->ProcessCommands();
|
| }
|
|
|
| -TEST_F(GPUProcessorTest, ProcessCommandsDoesNothingAfterUnrecoverableError) {
|
| - EXPECT_CALL(*command_buffer_, GetErrorStatus())
|
| - .WillOnce(Return(true));
|
| -
|
| - EXPECT_CALL(*command_buffer_, GetPutOffset())
|
| - .Times(0);
|
| -
|
| - processor_->ProcessCommands();
|
| -}
|
| -
|
| TEST_F(GPUProcessorTest, CanGetAddressOfSharedMemory) {
|
| EXPECT_CALL(*command_buffer_.get(), GetTransferBuffer(7))
|
| .WillOnce(Return(shared_memory_buffer_));
|
|
|