| Index: gpu/command_buffer/client/cmd_buffer_helper.h
|
| diff --git a/gpu/command_buffer/client/cmd_buffer_helper.h b/gpu/command_buffer/client/cmd_buffer_helper.h
|
| index a50dc7bfe4e4e73e4bc4ce392bc1cb85e32182be..528695c04af764c014da18c6f90997af66c89ec4 100644
|
| --- a/gpu/command_buffer/client/cmd_buffer_helper.h
|
| +++ b/gpu/command_buffer/client/cmd_buffer_helper.h
|
| @@ -83,6 +83,15 @@ class GPU_EXPORT CommandBufferHelper {
|
| // shutdown.
|
| int32 InsertToken();
|
|
|
| + // Returns true if the token has passed.
|
| + // Parameters:
|
| + // the value of the token to check whether it has passed
|
| + bool HasTokenPassed(int32 token) const {
|
| + if (token > token_)
|
| + return true; // we wrapped
|
| + return last_token_read() >= token;
|
| + }
|
| +
|
| // Waits until the token of a particular value has passed through the command
|
| // stream (i.e. commands inserted before that token have been executed).
|
| // NOTE: This will call Flush if it needs to block.
|
| @@ -90,6 +99,23 @@ class GPU_EXPORT CommandBufferHelper {
|
| // the value of the token to wait for.
|
| void WaitForToken(int32 token);
|
|
|
| + // Returns true if the serial has passed.
|
| + //
|
| + // NOTE: This will detect wrapped serials by checking if the most significant
|
| + // bit of serial to check is 1 but the last read is 0, i.e. the uint32
|
| + // wrapped.
|
| + //
|
| + // Parameters:
|
| + // the value of the serial to check whether it has passed
|
| + bool HasSerialPassed(uint32 serial) const {
|
| + uint32 last_serial = last_serial_read();
|
| + if (serial <= last_serial)
|
| + return true;
|
| + if (serial & 0x80000000 && !(last_serial & 0x80000000))
|
| + return true; // we wrapped
|
| + return false;
|
| + }
|
| +
|
| // Called prior to each command being issued. Waits for a certain amount of
|
| // space to be available. Returns address of space.
|
| CommandBufferEntry* GetSpace(uint32 entries);
|
| @@ -244,6 +270,11 @@ class GPU_EXPORT CommandBufferHelper {
|
| bool AllocateRingBuffer();
|
| void FreeResources();
|
|
|
| + // Get the serial number last read by the command buffer.
|
| + uint32 last_serial_read() const {
|
| + return command_buffer_->GetLastState().serial;
|
| + }
|
| +
|
| CommandBuffer* command_buffer_;
|
| int32 ring_buffer_id_;
|
| int32 ring_buffer_size_;
|
|
|