| Index: gpu/command_buffer/client/cmd_buffer_helper.cc
|
| ===================================================================
|
| --- gpu/command_buffer/client/cmd_buffer_helper.cc (revision 37414)
|
| +++ gpu/command_buffer/client/cmd_buffer_helper.cc (working copy)
|
| @@ -24,12 +24,11 @@
|
| if (!ring_buffer_.ptr)
|
| return false;
|
|
|
| + CommandBuffer::State state = command_buffer_->GetState();
|
| entries_ = static_cast<CommandBufferEntry*>(ring_buffer_.ptr);
|
| - entry_count_ = command_buffer_->GetSize();
|
| - get_ = command_buffer_->GetGetOffset();
|
| - put_ = command_buffer_->GetPutOffset();
|
| - last_token_read_ = command_buffer_->GetToken();
|
| -
|
| + entry_count_ = state.size;
|
| + put_ = state.put_offset;
|
| + SynchronizeState(state);
|
| return true;
|
| }
|
|
|
| @@ -37,8 +36,9 @@
|
| }
|
|
|
| bool CommandBufferHelper::Flush() {
|
| - get_ = command_buffer_->SyncOffsets(put_);
|
| - return !command_buffer_->GetErrorStatus();
|
| + CommandBuffer::State state = command_buffer_->Flush(put_);
|
| + SynchronizeState(state);
|
| + return state.error == parse_error::kParseNoError;
|
| }
|
|
|
| // Calls Flush() and then waits until the buffer is empty. Break early if the
|
| @@ -46,7 +46,7 @@
|
| bool CommandBufferHelper::Finish() {
|
| do {
|
| // Do not loop forever if the flush fails, meaning the command buffer reader
|
| - // has shutdown).
|
| + // has shutdown.
|
| if (!Flush())
|
| return false;
|
| } while (put_ != get_);
|
| @@ -69,7 +69,6 @@
|
| if (token_ == 0) {
|
| // we wrapped
|
| Finish();
|
| - last_token_read_ = command_buffer_->GetToken();
|
| DCHECK_EQ(token_, last_token_read_);
|
| }
|
| return token_;
|
| @@ -84,7 +83,6 @@
|
| if (last_token_read_ >= token) return; // fast path.
|
| if (token > token_) return; // we wrapped
|
| Flush();
|
| - last_token_read_ = command_buffer_->GetToken();
|
| while (last_token_read_ < token) {
|
| if (get_ == put_) {
|
| LOG(FATAL) << "Empty command buffer while waiting on a token.";
|
| @@ -94,7 +92,6 @@
|
| // has shutdown.
|
| if (!Flush())
|
| return;
|
| - last_token_read_ = command_buffer_->GetToken();
|
| }
|
| }
|
|
|
| @@ -149,9 +146,15 @@
|
| return space;
|
| }
|
|
|
| -parse_error::ParseError CommandBufferHelper::GetParseError() {
|
| - int32 parse_error = command_buffer_->ResetParseError();
|
| - return static_cast<parse_error::ParseError>(parse_error);
|
| +parse_error::ParseError CommandBufferHelper::GetError() {
|
| + CommandBuffer::State state = command_buffer_->GetState();
|
| + SynchronizeState(state);
|
| + return static_cast<parse_error::ParseError>(state.error);
|
| }
|
|
|
| +void CommandBufferHelper::SynchronizeState(CommandBuffer::State state) {
|
| + get_ = state.get_offset;
|
| + last_token_read_ = state.token;
|
| +}
|
| +
|
| } // namespace gpu
|
|
|