Index: gpu/command_buffer/common/gles2_cmd_format.h |
diff --git a/gpu/command_buffer/common/gles2_cmd_format.h b/gpu/command_buffer/common/gles2_cmd_format.h |
index e4d00dd41ea7ee54d64e191e1db885e06dc05020..09b87a9a9fce6b6ec581ac875f01f0618f312e7d 100644 |
--- a/gpu/command_buffer/common/gles2_cmd_format.h |
+++ b/gpu/command_buffer/common/gles2_cmd_format.h |
@@ -18,6 +18,7 @@ |
#include "base/macros.h" |
#include "gpu/command_buffer/common/bitfield_helpers.h" |
#include "gpu/command_buffer/common/cmd_buffer_common.h" |
+#include "gpu/command_buffer/common/constants.h" |
#include "gpu/command_buffer/common/gles2_cmd_ids.h" |
#include "gpu/command_buffer/common/gles2_cmd_utils.h" |
@@ -202,6 +203,23 @@ struct UniformsES3Header { |
// UniformES3Info uniforms[num_uniforms]; |
}; |
+// The format of fence sync tokens. |
+struct SyncToken { |
+ CommandBufferNamespace namespace_id; |
+ uint64_t command_buffer_id; |
+ uint64_t release_count; |
+ |
+ bool operator<(const SyncToken& other) const { |
+ // TODO(dyen): Once all our compilers support c++11, we can replace this |
+ // long list of comparisons with std::tie(). |
+ return (namespace_id < other.namespace_id) || |
+ ((namespace_id == other.namespace_id) && |
+ ((command_buffer_id < other.command_buffer_id) || |
+ ((command_buffer_id == other.command_buffer_id) && |
+ (release_count < other.release_count)))); |
+ } |
+}; |
+ |
// The format of QuerySync used by EXT_occlusion_query_boolean |
struct QuerySync { |
void Reset() { |
@@ -296,6 +314,9 @@ static_assert(sizeof(UniformBlocksHeader) == 4, |
static_assert(offsetof(UniformBlocksHeader, num_uniform_blocks) == 0, |
"offset of UniformBlocksHeader.num_uniform_blocks should be 0"); |
+static_assert(sizeof(SyncToken) <= GL_SYNC_TOKEN_SIZE_CHROMIUM, |
+ "size of SyncToken must not exceed GL_SYNC_TOKEN_SIZE_CHROMIUM"); |
+ |
namespace cmds { |
#include "../common/gles2_cmd_format_autogen.h" |