| Index: command_buffer/common/cross/cmd_buffer_common.h
|
| ===================================================================
|
| --- command_buffer/common/cross/cmd_buffer_common.h (revision 30289)
|
| +++ command_buffer/common/cross/cmd_buffer_common.h (working copy)
|
| @@ -171,7 +171,7 @@
|
| OP(SetToken) /* 1 */ \
|
|
|
| // Common commands.
|
| -enum CommonCommandId {
|
| +enum CommandId {
|
| #define COMMON_COMMAND_BUFFER_CMD_OP(name) k ## name,
|
|
|
| COMMON_COMMAND_BUFFER_CMDS(COMMON_COMMAND_BUFFER_CMD_OP)
|
| @@ -179,11 +179,66 @@
|
| #undef COMMON_COMMAND_BUFFER_CMD_OP
|
|
|
| kNumCommands,
|
| - kLastCommonId = 1023, // reserver 1024 spaces for common commands
|
| + kLastCommonId = 1023, // reserve 1024 spaces for common commands.
|
| };
|
|
|
| COMPILE_ASSERT(kNumCommands - 1 <= kLastCommonId, Too_many_common_commands);
|
|
|
| +const char* GetCommandName(CommandId id);
|
| +
|
| +struct Noop {
|
| + typedef Noop ValueType;
|
| + static const CommandId kCmdId = kNoop;
|
| + static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN;
|
| +
|
| + void SetHeader(uint32 skip_count) {
|
| + header.Init(kCmdId, skip_count + 1);
|
| + }
|
| +
|
| + void Init(uint32 skip_count) {
|
| + SetHeader(skip_count);
|
| + }
|
| +
|
| + static void* Set(void* cmd, uint32 skip_count) {
|
| + static_cast<ValueType*>(cmd)->Init(skip_count);
|
| + return NextImmediateCmdAddress<ValueType>(
|
| + cmd, skip_count * sizeof(CommandBufferEntry)); // NOLINT
|
| + }
|
| +
|
| + CommandHeader header;
|
| +};
|
| +
|
| +COMPILE_ASSERT(sizeof(Noop) == 4, Sizeof_Noop_is_not_4);
|
| +COMPILE_ASSERT(offsetof(Noop, header) == 0, Offsetof_Noop_header_not_0);
|
| +
|
| +struct SetToken {
|
| + typedef SetToken ValueType;
|
| + static const CommandId kCmdId = kSetToken;
|
| + static const cmd::ArgFlags kArgFlags = cmd::kFixed;
|
| +
|
| + void SetHeader() {
|
| + header.SetCmd<ValueType>();
|
| + }
|
| +
|
| + void Init(uint32 _token) {
|
| + SetHeader();
|
| + token = _token;
|
| + }
|
| + static void* Set(void* cmd, uint32 token) {
|
| + static_cast<ValueType*>(cmd)->Init(token);
|
| + return NextCmdAddress<ValueType>(cmd);
|
| + }
|
| +
|
| + CommandHeader header;
|
| + uint32 token;
|
| +};
|
| +
|
| +COMPILE_ASSERT(sizeof(SetToken) == 8, Sizeof_SetToken_is_not_8);
|
| +COMPILE_ASSERT(offsetof(SetToken, header) == 0,
|
| + Offsetof_SetToken_header_not_0);
|
| +COMPILE_ASSERT(offsetof(SetToken, token) == 4,
|
| + Offsetof_SetToken_token_not_4);
|
| +
|
| } // namespace cmd
|
|
|
| O3D_POP_STRUCTURE_PACKING;
|
|
|