diff options
Diffstat (limited to 'gpu/command_buffer/common/cmd_buffer_common.h')
-rw-r--r-- | gpu/command_buffer/common/cmd_buffer_common.h | 88 |
1 files changed, 51 insertions, 37 deletions
diff --git a/gpu/command_buffer/common/cmd_buffer_common.h b/gpu/command_buffer/common/cmd_buffer_common.h index f33f4ef..1d0c4cb 100644 --- a/gpu/command_buffer/common/cmd_buffer_common.h +++ b/gpu/command_buffer/common/cmd_buffer_common.h @@ -107,9 +107,10 @@ union CommandBufferEntry { float value_float; }; -COMPILE_ASSERT(sizeof(CommandBufferEntry) == 4, - Sizeof_CommandBufferEntry_is_not_4); +const size_t kCommandBufferEntrySize = 4; +COMPILE_ASSERT(sizeof(CommandBufferEntry) == kCommandBufferEntrySize, + Sizeof_CommandBufferEntry_is_not_4); // Make sure the compiler does not add extra padding to any of the command // structures. @@ -181,8 +182,8 @@ namespace cmd { OP(SetBucketSize) /* 7 */ \ OP(SetBucketData) /* 8 */ \ OP(SetBucketDataImmediate) /* 9 */ \ - OP(GetResultSize) /* 10 */ \ - OP(GetResultData) /* 11 */ \ + OP(GetBucketSize) /* 10 */ \ + OP(GetBucketData) /* 11 */ \ // Common commands. enum CommandId { @@ -566,76 +567,86 @@ COMPILE_ASSERT(offsetof(SetBucketDataImmediate, offset) == 8, COMPILE_ASSERT(offsetof(SetBucketDataImmediate, size) == 12, Offsetof_SetBucketDataImmediate_size_not_12); -// Gets the size of a result the service has available. -// Sending a variable size result back to the client, for example any API that -// returns a string, is problematic since the largest thing you can send back is -// the size of your shared memory. This command along with GetResultData -// implement a way to get a result a piece at a time to help solve that problem -// in a generic way. -struct GetResultSize { - typedef GetResultSize ValueType; - static const CommandId kCmdId = kGetResultSize; +// Gets the size of a bucket the service has available. Sending a variable size +// result back to the client, for example any API that returns a string, is +// problematic since the largest thing you can send back is the size of your +// shared memory. This command along with GetBucketData implements a way to get +// a result a piece at a time to help solve that problem in a generic way. +struct GetBucketSize { + typedef GetBucketSize ValueType; + static const CommandId kCmdId = kGetBucketSize; static const cmd::ArgFlags kArgFlags = cmd::kFixed; void SetHeader() { header.SetCmd<ValueType>(); } - void Init(uint32 _shared_memory_id, + void Init(uint32 _bucket_id, + uint32 _shared_memory_id, uint32 _shared_memory_offset) { SetHeader(); + bucket_id = _bucket_id; shared_memory_id = _shared_memory_id; shared_memory_offset = _shared_memory_offset; } static void* Set(void* cmd, + uint32 _bucket_id, uint32 _shared_memory_id, uint32 _shared_memory_offset) { static_cast<ValueType*>(cmd)->Init( + _bucket_id, _shared_memory_id, _shared_memory_offset); return NextCmdAddress<ValueType>(cmd); } CommandHeader header; + uint32 bucket_id; uint32 shared_memory_id; uint32 shared_memory_offset; }; -COMPILE_ASSERT(sizeof(GetResultSize) == 12, Sizeof_GetResultSize_is_not_12); -COMPILE_ASSERT(offsetof(GetResultSize, header) == 0, - Offsetof_GetResultSize_header_not_0); -COMPILE_ASSERT(offsetof(GetResultSize, shared_memory_id) == 4, - Offsetof_GetResultSize_shared_memory_id_not_4); -COMPILE_ASSERT(offsetof(GetResultSize, shared_memory_offset) == 8, - Offsetof_GetResultSize_shared_memory_offset_not_8); +COMPILE_ASSERT(sizeof(GetBucketSize) == 16, Sizeof_GetBucketSize_is_not_16); +COMPILE_ASSERT(offsetof(GetBucketSize, header) == 0, + Offsetof_GetBucketSize_header_not_0); +COMPILE_ASSERT(offsetof(GetBucketSize, bucket_id) == 4, + Offsetof_GetBucketSize_bucket_id_not_4); +COMPILE_ASSERT(offsetof(GetBucketSize, shared_memory_id) == 8, + Offsetof_GetBucketSize_shared_memory_id_not_8); +COMPILE_ASSERT(offsetof(GetBucketSize, shared_memory_offset) == 12, + Offsetof_GetBucketSize_shared_memory_offset_not_12); // Gets a piece of a result the service as available. -// See GetResultSize. -struct GetResultData { - typedef GetResultData ValueType; - static const CommandId kCmdId = kGetResultData; +// See GetBucketSize. +struct GetBucketData { + typedef GetBucketData ValueType; + static const CommandId kCmdId = kGetBucketData; static const cmd::ArgFlags kArgFlags = cmd::kFixed; void SetHeader() { header.SetCmd<ValueType>(); } - void Init(uint32 _offset, + void Init(uint32 _bucket_id, + uint32 _offset, uint32 _size, uint32 _shared_memory_id, uint32 _shared_memory_offset) { SetHeader(); + bucket_id = _bucket_id; offset = _offset; size = _size; shared_memory_id = _shared_memory_id; shared_memory_offset = _shared_memory_offset; } static void* Set(void* cmd, + uint32 _bucket_id, uint32 _offset, uint32 _size, uint32 _shared_memory_id, uint32 _shared_memory_offset) { static_cast<ValueType*>(cmd)->Init( + _bucket_id, _offset, _size, _shared_memory_id, @@ -644,23 +655,26 @@ struct GetResultData { } CommandHeader header; + uint32 bucket_id; uint32 offset; uint32 size; uint32 shared_memory_id; uint32 shared_memory_offset; }; -COMPILE_ASSERT(sizeof(GetResultData) == 20, Sizeof_GetResultData_is_not_20); -COMPILE_ASSERT(offsetof(GetResultData, header) == 0, - Offsetof_GetResultData_header_not_0); -COMPILE_ASSERT(offsetof(GetResultData, offset) == 4, - Offsetof_GetResultData_offset_not_4); -COMPILE_ASSERT(offsetof(GetResultData, size) == 8, - Offsetof_GetResultData_size_not_8); -COMPILE_ASSERT(offsetof(GetResultData, shared_memory_id) == 12, - Offsetof_GetResultData_shared_memory_id_not_12); -COMPILE_ASSERT(offsetof(GetResultData, shared_memory_offset) == 16, - Offsetof_GetResultData_shared_memory_offset_not_16); +COMPILE_ASSERT(sizeof(GetBucketData) == 24, Sizeof_GetBucketData_is_not_20); +COMPILE_ASSERT(offsetof(GetBucketData, header) == 0, + Offsetof_GetBucketData_header_not_0); +COMPILE_ASSERT(offsetof(GetBucketData, bucket_id) == 4, + Offsetof_GetBucketData_bucket_id_not_4); +COMPILE_ASSERT(offsetof(GetBucketData, offset) == 8, + Offsetof_GetBucketData_offset_not_8); +COMPILE_ASSERT(offsetof(GetBucketData, size) == 12, + Offsetof_GetBucketData_size_not_12); +COMPILE_ASSERT(offsetof(GetBucketData, shared_memory_id) == 16, + Offsetof_GetBucketData_shared_memory_id_not_16); +COMPILE_ASSERT(offsetof(GetBucketData, shared_memory_offset) == 20, + Offsetof_GetBucketData_shared_memory_offset_not_20); } // namespace cmd |