Index: gpu/command_buffer/common/gles2_cmd_format.h |
=================================================================== |
--- gpu/command_buffer/common/gles2_cmd_format.h (revision 33021) |
+++ gpu/command_buffer/common/gles2_cmd_format.h (working copy) |
@@ -29,6 +29,251 @@ |
#include "gpu/command_buffer/common/gles2_cmd_format_autogen.h" |
+// These are hand written commands. |
+// TODO(gman): Attempt to make these auto-generated. |
+ |
+struct GetAttribLocation { |
+ typedef GetAttribLocation ValueType; |
+ static const CommandId kCmdId = kGetAttribLocation; |
+ static const cmd::ArgFlags kArgFlags = cmd::kFixed; |
+ |
+ static uint32 ComputeSize() { |
+ return static_cast<uint32>(sizeof(ValueType)); // NOLINT |
+ } |
+ |
+ void SetHeader() { |
+ header.SetCmd<ValueType>(); |
+ } |
+ |
+ void Init( |
+ GLuint _program, uint32 _name_shm_id, uint32 _name_shm_offset, |
+ uint32 _location_shm_id, uint32 _location_shm_offset, |
+ uint32 _data_size) { |
+ SetHeader(); |
+ program = _program; |
+ name_shm_id = _name_shm_id; |
+ name_shm_offset = _name_shm_offset; |
+ location_shm_id = _location_shm_id; |
+ location_shm_offset = _location_shm_offset; |
+ data_size = _data_size; |
+ } |
+ |
+ void* Set( |
+ void* cmd, GLuint _program, uint32 _name_shm_id, uint32 _name_shm_offset, |
+ uint32 _location_shm_id, uint32 _location_shm_offset, |
+ uint32 _data_size) { |
+ static_cast<ValueType*>( |
+ cmd)->Init( |
+ _program, _name_shm_id, _name_shm_offset, _location_shm_id, |
+ _location_shm_offset, _data_size); |
+ return NextCmdAddress<ValueType>(cmd); |
+ } |
+ |
+ command_buffer::CommandHeader header; |
+ uint32 program; |
+ uint32 name_shm_id; |
+ uint32 name_shm_offset; |
+ uint32 location_shm_id; |
+ uint32 location_shm_offset; |
+ uint32 data_size; |
+}; |
+ |
+COMPILE_ASSERT(sizeof(GetAttribLocation) == 28, |
+ Sizeof_GetAttribLocation_is_not_28); |
+COMPILE_ASSERT(offsetof(GetAttribLocation, header) == 0, |
+ OffsetOf_GetAttribLocation_header_not_0); |
+COMPILE_ASSERT(offsetof(GetAttribLocation, program) == 4, |
+ OffsetOf_GetAttribLocation_program_not_4); |
+COMPILE_ASSERT(offsetof(GetAttribLocation, name_shm_id) == 8, |
+ OffsetOf_GetAttribLocation_name_shm_id_not_8); |
+COMPILE_ASSERT(offsetof(GetAttribLocation, name_shm_offset) == 12, |
+ OffsetOf_GetAttribLocation_name_shm_offset_not_12); |
+COMPILE_ASSERT(offsetof(GetAttribLocation, location_shm_id) == 16, |
+ OffsetOf_GetAttribLocation_location_shm_id_not_16); |
+COMPILE_ASSERT(offsetof(GetAttribLocation, location_shm_offset) == 20, |
+ OffsetOf_GetAttribLocation_location_shm_offset_not_20); |
+COMPILE_ASSERT(offsetof(GetAttribLocation, data_size) == 24, |
+ OffsetOf_GetAttribLocation_data_size_not_24); |
+ |
+struct GetAttribLocationImmediate { |
+ typedef GetAttribLocationImmediate ValueType; |
+ static const CommandId kCmdId = kGetAttribLocationImmediate; |
+ static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN; |
+ |
+ static uint32 ComputeDataSize(const char* s) { |
+ return strlen(s); |
+ } |
+ |
+ static uint32 ComputeSize(const char* s) { |
+ return static_cast<uint32>(sizeof(ValueType) + ComputeDataSize(s)); |
+ } |
+ |
+ void SetHeader(const char* s) { |
+ header.SetCmdByTotalSize<ValueType>(ComputeSize(s)); |
+ } |
+ |
+ void Init( |
+ GLuint _program, const char* _name, |
+ uint32 _location_shm_id, uint32 _location_shm_offset) { |
+ SetHeader(_name); |
+ program = _program; |
+ location_shm_id = _location_shm_id; |
+ location_shm_offset = _location_shm_offset; |
+ data_size = ComputeDataSize(_name); |
+ memcpy(ImmediateDataAddress(this), _name, data_size); |
+ } |
+ |
+ void* Set( |
+ void* cmd, GLuint _program, const char* _name, |
+ uint32 _location_shm_id, uint32 _location_shm_offset) { |
+ uint32 total_size = ComputeSize(_name); |
+ static_cast<ValueType*>( |
+ cmd)->Init(_program, _name, _location_shm_id, _location_shm_offset); |
+ return NextImmediateCmdAddressTotalSize<ValueType>(cmd, total_size); |
+ } |
+ |
+ command_buffer::CommandHeader header; |
+ uint32 program; |
+ uint32 location_shm_id; |
+ uint32 location_shm_offset; |
+ uint32 data_size; |
+}; |
+ |
+COMPILE_ASSERT(sizeof(GetAttribLocationImmediate) == 20, |
+ Sizeof_GetAttribLocationImmediate_is_not_20); |
+COMPILE_ASSERT(offsetof(GetAttribLocationImmediate, header) == 0, |
+ OffsetOf_GetAttribLocationImmediate_header_not_0); |
+COMPILE_ASSERT(offsetof(GetAttribLocationImmediate, program) == 4, |
+ OffsetOf_GetAttribLocationImmediate_program_not_4); |
+COMPILE_ASSERT(offsetof(GetAttribLocationImmediate, location_shm_id) == 8, |
+ OffsetOf_GetAttribLocationImmediate_location_shm_id_not_8); |
+COMPILE_ASSERT(offsetof(GetAttribLocationImmediate, location_shm_offset) == 12, |
+ OffsetOf_GetAttribLocationImmediate_location_shm_offset_not_12); |
+COMPILE_ASSERT(offsetof(GetAttribLocationImmediate, data_size) == 16, |
+ OffsetOf_GetAttribLocationImmediate_data_size_not_16); |
+ |
+struct GetUniformLocation { |
+ typedef GetUniformLocation ValueType; |
+ static const CommandId kCmdId = kGetUniformLocation; |
+ static const cmd::ArgFlags kArgFlags = cmd::kFixed; |
+ |
+ static uint32 ComputeSize() { |
+ return static_cast<uint32>(sizeof(ValueType)); // NOLINT |
+ } |
+ |
+ void SetHeader() { |
+ header.SetCmd<ValueType>(); |
+ } |
+ |
+ void Init( |
+ GLuint _program, uint32 _name_shm_id, uint32 _name_shm_offset, |
+ uint32 _location_shm_id, uint32 _location_shm_offset, |
+ uint32 _data_size) { |
+ SetHeader(); |
+ program = _program; |
+ name_shm_id = _name_shm_id; |
+ name_shm_offset = _name_shm_offset; |
+ location_shm_id = _location_shm_id; |
+ location_shm_offset = _location_shm_offset; |
+ data_size = _data_size; |
+ } |
+ |
+ void* Set( |
+ void* cmd, GLuint _program, uint32 _name_shm_id, uint32 _name_shm_offset, |
+ uint32 _location_shm_id, uint32 _location_shm_offset, |
+ uint32 _data_size) { |
+ static_cast<ValueType*>( |
+ cmd)->Init( |
+ _program, _name_shm_id, _name_shm_offset, _location_shm_id, |
+ _location_shm_offset, _data_size); |
+ return NextCmdAddress<ValueType>(cmd); |
+ } |
+ |
+ command_buffer::CommandHeader header; |
+ uint32 program; |
+ uint32 name_shm_id; |
+ uint32 name_shm_offset; |
+ uint32 location_shm_id; |
+ uint32 location_shm_offset; |
+ uint32 data_size; |
+}; |
+ |
+COMPILE_ASSERT(sizeof(GetUniformLocation) == 28, |
+ Sizeof_GetUniformLocation_is_not_28); |
+COMPILE_ASSERT(offsetof(GetUniformLocation, header) == 0, |
+ OffsetOf_GetUniformLocation_header_not_0); |
+COMPILE_ASSERT(offsetof(GetUniformLocation, program) == 4, |
+ OffsetOf_GetUniformLocation_program_not_4); |
+COMPILE_ASSERT(offsetof(GetUniformLocation, name_shm_id) == 8, |
+ OffsetOf_GetUniformLocation_name_shm_id_not_8); |
+COMPILE_ASSERT(offsetof(GetUniformLocation, name_shm_offset) == 12, |
+ OffsetOf_GetUniformLocation_name_shm_offset_not_12); |
+COMPILE_ASSERT(offsetof(GetUniformLocation, location_shm_id) == 16, |
+ OffsetOf_GetUniformLocation_location_shm_id_not_16); |
+COMPILE_ASSERT(offsetof(GetUniformLocation, location_shm_offset) == 20, |
+ OffsetOf_GetUniformLocation_location_shm_offset_not_20); |
+COMPILE_ASSERT(offsetof(GetUniformLocation, data_size) == 24, |
+ OffsetOf_GetUniformLocation_data_size_not_24); |
+ |
+struct GetUniformLocationImmediate { |
+ typedef GetUniformLocationImmediate ValueType; |
+ static const CommandId kCmdId = kGetUniformLocationImmediate; |
+ static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN; |
+ |
+ static uint32 ComputeDataSize(const char* s) { |
+ return strlen(s); |
+ } |
+ |
+ static uint32 ComputeSize(const char* s) { |
+ return static_cast<uint32>(sizeof(ValueType) + ComputeDataSize(s)); |
+ } |
+ |
+ void SetHeader(const char* s) { |
+ header.SetCmdByTotalSize<ValueType>(ComputeSize(s)); |
+ } |
+ |
+ void Init( |
+ GLuint _program, const char* _name, |
+ uint32 _location_shm_id, uint32 _location_shm_offset) { |
+ SetHeader(_name); |
+ program = _program; |
+ location_shm_id = _location_shm_id; |
+ location_shm_offset = _location_shm_offset; |
+ data_size = ComputeDataSize(_name); |
+ memcpy(ImmediateDataAddress(this), _name, data_size); |
+ } |
+ |
+ void* Set( |
+ void* cmd, GLuint _program, const char* _name, |
+ uint32 _location_shm_id, uint32 _location_shm_offset) { |
+ uint32 total_size = ComputeSize(_name); |
+ static_cast<ValueType*>( |
+ cmd)->Init(_program, _name, _location_shm_id, _location_shm_offset); |
+ return NextImmediateCmdAddressTotalSize<ValueType>(cmd, total_size); |
+ } |
+ |
+ command_buffer::CommandHeader header; |
+ uint32 program; |
+ uint32 location_shm_id; |
+ uint32 location_shm_offset; |
+ uint32 data_size; |
+}; |
+ |
+COMPILE_ASSERT(sizeof(GetUniformLocationImmediate) == 20, |
+ Sizeof_GetUniformLocationImmediate_is_not_20); |
+COMPILE_ASSERT(offsetof(GetUniformLocationImmediate, header) == 0, |
+ OffsetOf_GetUniformLocationImmediate_header_not_0); |
+COMPILE_ASSERT(offsetof(GetUniformLocationImmediate, program) == 4, |
+ OffsetOf_GetUniformLocationImmediate_program_not_4); |
+COMPILE_ASSERT(offsetof(GetUniformLocationImmediate, location_shm_id) == 8, |
+ OffsetOf_GetUniformLocationImmediate_location_shm_id_not_8); |
+COMPILE_ASSERT( |
+ offsetof(GetUniformLocationImmediate, location_shm_offset) == 12, |
+ OffsetOf_GetUniformLocationImmediate_location_shm_offset_not_12); |
+COMPILE_ASSERT(offsetof(GetUniformLocationImmediate, data_size) == 16, |
+ OffsetOf_GetUniformLocationImmediate_data_size_not_16); |
+ |
+ |
} // namespace gles2 |
} // namespace command_buffer |