Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Unified Diff: command_buffer/common/cross/cmd_buffer_format.h

Issue 212018: Change command buffer client code to use structures.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/o3d/
Patch Set: '' Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « command_buffer/common/cross/buffer_sync_api.h ('k') | command_buffer/common/cross/gapi_interface.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: command_buffer/common/cross/cmd_buffer_format.h
===================================================================
--- command_buffer/common/cross/cmd_buffer_format.h (revision 26638)
+++ command_buffer/common/cross/cmd_buffer_format.h (working copy)
@@ -30,7 +30,31 @@
*/
-// This file contains the binary format definition of the command buffer.
+// This file contains the binary format definition of the command buffer and
+// command buffer commands.
+// It is recommended you use the CommandBufferHelper object to create commands
+// but if you want to go lower level you can use the structures here to help.
+//
+// A few ways to use them:
+//
+// Fill out a structure in place:
+//
+// cmd::SetViewport::Set(ptrToSomeSharedMemory,
+// left, right, width, height, z_min, z_max);
+//
+// Fill out consecutive commands:
+//
+// Note that each cmd::XXX::Set function returns a pointer to the place
+// the next command should go.
+//
+// void* dest = ptrToSomeSharedMemory;
+// dest = cmd::SetViewport::Set(dest, left, right, width, height, min, max);
+// dest = cmd::Clear::Set(dest, buffers, r, g, b, a, depth, stencil);
+// dest = cmd::Draw::Set(dest, primitive_type, first, count);
+//
+// NOTE: The types in this file must be POD types. That means they can not have
+// constructors, destructors, virtual functions or inheritance and they can only
+// use other POD types or intrinsics as members.
#ifndef O3D_COMMAND_BUFFER_COMMON_CROSS_CMD_BUFFER_FORMAT_H_
#define O3D_COMMAND_BUFFER_COMMON_CROSS_CMD_BUFFER_FORMAT_H_
@@ -43,11 +67,44 @@
namespace o3d {
namespace command_buffer {
+// Computes the number of command buffer entries needed for a certain size. In
+// other words it rounds up to a multiple of entries.
+inline uint32 ComputeNumEntries(size_t size_in_bytes) {
+ return static_cast<uint32>(
+ (size_in_bytes + sizeof(uint32) - 1) / sizeof(uint32)); // NOLINT
+}
+
+// Rounds up to a multiple of entries in bytes.
+inline size_t RoundSizeToMultipleOfEntries(size_t size_in_bytes) {
+ return ComputeNumEntries(size_in_bytes) * sizeof(uint32);
+}
+
// Struct that defines the command header in the command buffer.
struct CommandHeader {
Uint32 size:8;
Uint32 command:24;
+
+ void Init(uint32 _command, uint32 _size) {
+ command = _command;
+ size = _size;
+ }
+
+ // Sets the header based on the passed in command. Can not be used for
+ // variable sized commands like immediate commands or Noop.
+ template <typename T>
+ void SetCmd() {
+ COMPILE_ASSERT(T::kArgFlags == cmd::kFixed, Cmd_kArgFlags_not_kFixed);
+ Init(T::kCmdId, ComputeNumEntries(sizeof(T))); // NOLINT
+ }
+
+ // Sets the header by a size in bytes.
+ template <typename T>
+ void SetCmdBySize(uint32 size_in_bytes) {
+ COMPILE_ASSERT(T::kArgFlags == cmd::kAtLeastN, Cmd_kArgFlags_not_kAtLeastN);
+ Init(T::kCmdId, ComputeNumEntries(sizeof(T) + size_in_bytes)); // NOLINT
+ }
};
+
COMPILE_ASSERT(sizeof(CommandHeader) == 4, Sizeof_CommandHeader_is_not_4);
// Union that defines possible command buffer entries.
@@ -61,16 +118,17 @@
COMPILE_ASSERT(sizeof(CommandBufferEntry) == 4,
Sizeof_CommandBufferEntry_is_not_4);
-// Bitfields for the SET_VERTEX_INPUT command.
+// Bitfields for the SetVertexInput command.
namespace set_vertex_input_cmd {
// argument 4
-typedef BitField<0, 4> SemanticIndex;
+typedef BitField<0, 4> SemanticIndex; // TODO(gman): shouldn't this be bigger
+ // than 4 bits for future expansion?
typedef BitField<4, 4> Semantic;
typedef BitField<8, 8> Type;
typedef BitField<16, 16> Stride;
} // namespace set_vertex_input_cmd
-// Bitfields for the CREATE_TEXTURE_2D command.
+// Bitfields for the CreateTexture2d command.
namespace create_texture_2d_cmd {
// argument 1
typedef BitField<0, 16> Width;
@@ -82,7 +140,7 @@
typedef BitField<16, 16> Flags;
} // namespace create_texture_2d_cmd
-// Bitfields for the CREATE_TEXTURE_3D command.
+// Bitfields for the CreateTexture3d command.
namespace create_texture_3d_cmd {
// argument 1
typedef BitField<0, 16> Width;
@@ -97,7 +155,7 @@
typedef BitField<16, 16> Flags;
} // namespace create_texture_3d_cmd
-// Bitfields for the CREATE_TEXTURE_CUBE command.
+// Bitfields for the CreateTextureCube command.
namespace create_texture_cube_cmd {
// argument 1
typedef BitField<0, 16> Side;
@@ -109,7 +167,7 @@
typedef BitField<16, 16> Flags;
} // namespace create_texture_cube_cmd
-// Bitfields for the CREATE_RENDER_SURFACE command.
+// Bitfields for the CreateRenderSurface command.
namespace create_render_surface_cmd {
// argument 1
typedef BitField<0, 16> Width;
@@ -119,7 +177,14 @@
typedef BitField<16, 16> Side;
} // namespace create_render_surface_cmd
-// Bitfields for the SET_TEXTURE_DATA command.
+// Bitfields for the CreateDepthSurface command.
+namespace create_depth_surface_cmd {
+// argument 1
+typedef BitField<0, 16> Width;
+typedef BitField<16, 16> Height;
+} // namespace create_depth_surface_cmd
+
+// Bitfields for the SetTextureData command.
namespace set_texture_data_cmd {
// argument 1
typedef BitField<0, 16> X;
@@ -136,7 +201,7 @@
typedef BitField<7, 25> Unused;
} // namespace set_texture_data_cmd
-// Bitfields for the SET_TEXTURE_DATA_IMMEDIATE command.
+// Bitfields for the SetTextureDataImmediate command.
namespace set_texture_data_immediate_cmd {
// argument 1
typedef BitField<0, 16> X;
@@ -153,7 +218,7 @@
typedef BitField<7, 25> Unused;
} // namespace set_texture_data_immediate_cmd
-// Bitfields for the GET_TEXTURE_DATA command.
+// Bitfields for the GetTextureData command.
namespace get_texture_data_cmd {
// argument 1
typedef BitField<0, 16> X;
@@ -170,7 +235,7 @@
typedef BitField<7, 25> Unused;
} // namespace get_texture_data_cmd
-// Bitfields for the SET_SAMPLER_STATES command.
+// Bitfields for the SetSamplerStates command.
namespace set_sampler_states {
// argument 2
typedef BitField<0, 3> AddressingU;
@@ -278,75 +343,75 @@
//
// NOTE: THE ORDER OF THESE MUST NOT CHANGE (their id is derived by order)
#define O3D_COMMAND_BUFFER_CMDS \
- O3D_COMMAND_BUFFER_CMD_OP(NOOP) /* 0 */ \
- O3D_COMMAND_BUFFER_CMD_OP(SET_TOKEN) \
- O3D_COMMAND_BUFFER_CMD_OP(BEGIN_FRAME) \
- O3D_COMMAND_BUFFER_CMD_OP(END_FRAME) \
- O3D_COMMAND_BUFFER_CMD_OP(CLEAR) \
- O3D_COMMAND_BUFFER_CMD_OP(CREATE_VERTEX_BUFFER) \
- O3D_COMMAND_BUFFER_CMD_OP(DESTROY_VERTEX_BUFFER) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_VERTEX_BUFFER_DATA) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_VERTEX_BUFFER_DATA_IMMEDIATE) \
- O3D_COMMAND_BUFFER_CMD_OP(GET_VERTEX_BUFFER_DATA) \
- O3D_COMMAND_BUFFER_CMD_OP(CREATE_INDEX_BUFFER) /* 10 */ \
- O3D_COMMAND_BUFFER_CMD_OP(DESTROY_INDEX_BUFFER) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_INDEX_BUFFER_DATA) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_INDEX_BUFFER_DATA_IMMEDIATE) \
- O3D_COMMAND_BUFFER_CMD_OP(GET_INDEX_BUFFER_DATA) \
- O3D_COMMAND_BUFFER_CMD_OP(CREATE_VERTEX_STRUCT) \
- O3D_COMMAND_BUFFER_CMD_OP(DESTROY_VERTEX_STRUCT) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_VERTEX_INPUT) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_VERTEX_STRUCT) \
- O3D_COMMAND_BUFFER_CMD_OP(DRAW) \
- O3D_COMMAND_BUFFER_CMD_OP(DRAW_INDEXED) /* 20 */ \
- O3D_COMMAND_BUFFER_CMD_OP(CREATE_EFFECT) \
- O3D_COMMAND_BUFFER_CMD_OP(CREATE_EFFECT_IMMEDIATE) \
- O3D_COMMAND_BUFFER_CMD_OP(DESTROY_EFFECT) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_EFFECT) \
- O3D_COMMAND_BUFFER_CMD_OP(GET_PARAM_COUNT) \
- O3D_COMMAND_BUFFER_CMD_OP(CREATE_PARAM) \
- O3D_COMMAND_BUFFER_CMD_OP(CREATE_PARAM_BY_NAME) \
- O3D_COMMAND_BUFFER_CMD_OP(CREATE_PARAM_BY_NAME_IMMEDIATE) \
- O3D_COMMAND_BUFFER_CMD_OP(DESTROY_PARAM) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_PARAM_DATA) /* 30 */ \
- O3D_COMMAND_BUFFER_CMD_OP(SET_PARAM_DATA_IMMEDIATE) \
- O3D_COMMAND_BUFFER_CMD_OP(GET_PARAM_DESC) \
- O3D_COMMAND_BUFFER_CMD_OP(GET_STREAM_COUNT) \
- O3D_COMMAND_BUFFER_CMD_OP(GET_STREAM_DESC) \
- O3D_COMMAND_BUFFER_CMD_OP(DESTROY_TEXTURE) \
- O3D_COMMAND_BUFFER_CMD_OP(CREATE_TEXTURE_2D) \
- O3D_COMMAND_BUFFER_CMD_OP(CREATE_TEXTURE_3D) \
- O3D_COMMAND_BUFFER_CMD_OP(CREATE_TEXTURE_CUBE) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_TEXTURE_DATA) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_TEXTURE_DATA_IMMEDIATE) /* 40 */ \
- O3D_COMMAND_BUFFER_CMD_OP(GET_TEXTURE_DATA) \
- O3D_COMMAND_BUFFER_CMD_OP(CREATE_SAMPLER) \
- O3D_COMMAND_BUFFER_CMD_OP(DESTROY_SAMPLER) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_SAMPLER_STATES) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_SAMPLER_BORDER_COLOR) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_SAMPLER_TEXTURE) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_VIEWPORT) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_SCISSOR) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_POINT_LINE_RASTER) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_POLYGON_RASTER) /* 50 */ \
- O3D_COMMAND_BUFFER_CMD_OP(SET_POLYGON_OFFSET) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_ALPHA_TEST) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_DEPTH_TEST) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_STENCIL_TEST) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_BLENDING) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_BLENDING_COLOR) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_COLOR_WRITE) \
- O3D_COMMAND_BUFFER_CMD_OP(CREATE_RENDER_SURFACE) \
- O3D_COMMAND_BUFFER_CMD_OP(DESTROY_RENDER_SURFACE) \
- O3D_COMMAND_BUFFER_CMD_OP(CREATE_DEPTH_SURFACE) /* 60 */ \
- O3D_COMMAND_BUFFER_CMD_OP(DESTROY_DEPTH_SURFACE) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_RENDER_SURFACE) \
- O3D_COMMAND_BUFFER_CMD_OP(SET_BACK_SURFACES) \
+ O3D_COMMAND_BUFFER_CMD_OP(Noop) /* 0 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetToken) /* 1 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(BeginFrame) /* 2 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(EndFrame) /* 3 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(Clear) /* 4 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(CreateVertexBuffer) /* 5 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(DestroyVertexBuffer) /* 6 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetVertexBufferData) /* 7 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetVertexBufferDataImmediate) /* 8 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(GetVertexBufferData) /* 9 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(CreateIndexBuffer) /* 10 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(DestroyIndexBuffer) /* 11 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetIndexBufferData) /* 12 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetIndexBufferDataImmediate) /* 13 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(GetIndexBufferData) /* 14 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(CreateVertexStruct) /* 15 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(DestroyVertexStruct) /* 16 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetVertexInput) /* 17 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetVertexStruct) /* 18 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(Draw) /* 19 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(DrawIndexed) /* 20 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(CreateEffect) /* 21 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(CreateEffectImmediate) /* 22 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(DestroyEffect) /* 23 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetEffect) /* 24 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(GetParamCount) /* 25 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(CreateParam) /* 26 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(CreateParamByName) /* 27 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(CreateParamByNameImmediate) /* 28 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(DestroyParam) /* 29 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetParamData) /* 30 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetParamDataImmediate) /* 31 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(GetParamDesc) /* 32 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(GetStreamCount) /* 33 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(GetStreamDesc) /* 34 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(DestroyTexture) /* 35 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(CreateTexture2d) /* 36 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(CreateTexture3d) /* 37 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(CreateTextureCube) /* 38 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetTextureData) /* 39 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetTextureDataImmediate) /* 40 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(GetTextureData) /* 41 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(CreateSampler) /* 42 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(DestroySampler) /* 43 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetSamplerStates) /* 44 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetSamplerBorderColor) /* 45 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetSamplerTexture) /* 46 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetViewport) /* 47 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetScissor) /* 48 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetPointLineRaster) /* 49 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetPolygonRaster) /* 50 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetPolygonOffset) /* 51 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetAlphaTest) /* 52 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetDepthTest) /* 53 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetStencilTest) /* 54 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetBlending) /* 55 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetBlendingColor) /* 56 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetColorWrite) /* 57 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(CreateRenderSurface) /* 58 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(DestroyRenderSurface) /* 59 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(CreateDepthSurface) /* 60 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(DestroyDepthSurface) /* 61 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetRenderSurface) /* 62 */ \
+ O3D_COMMAND_BUFFER_CMD_OP(SetBackSurfaces) /* 63 */ \
// GAPI commands.
enum CommandId {
- #define O3D_COMMAND_BUFFER_CMD_OP(name) name,
+ #define O3D_COMMAND_BUFFER_CMD_OP(name) k ## name,
O3D_COMMAND_BUFFER_CMDS
@@ -359,40 +424,191 @@
// structures.
O3D_PUSH_STRUCTURE_PACKING_1;
+// Gets the address of memory just after a structure in a typesafe way. This is
+// used for IMMEDIATE commands to get the address of the place to put the data.
+// Immediate command put their data direclty in the command buffer.
+// Parameters:
+// cmd: Address of command.
+template <typename T>
+void* ImmediateDataAddress(T* cmd) {
+ COMPILE_ASSERT(T::kArgFlags == cmd::kAtLeastN, Cmd_kArgFlags_not_kAtLeastN);
+ return reinterpret_cast<char*>(cmd) + sizeof(*cmd);
+}
+
+// Gets the address of the place to put the next command in a typesafe way.
+// This can only be used for fixed sized commands.
+template <typename T>
+// Parameters:
+// cmd: Address of command.
+void* NextCmdAddress(void* cmd) {
+ COMPILE_ASSERT(T::kArgFlags == cmd::kFixed, Cmd_kArgFlags_not_kFixed);
+ return reinterpret_cast<char*>(cmd) + sizeof(T);
+}
+
+// Gets the address of the place to put the next command in a typesafe way.
+// This can only be used for variable sized command like IMMEDIATE commands.
+// Parameters:
+// cmd: Address of command.
+// size_of_data_in_bytes: Size of the data for the command.
+template <typename T>
+void* NextImmediateCmdAddress(void* cmd, uint32 size_of_data_in_bytes) {
+ COMPILE_ASSERT(T::kArgFlags == cmd::kAtLeastN, Cmd_kArgFlags_not_kAtLeastN);
+ return reinterpret_cast<char*>(cmd) + sizeof(T) + // NOLINT
+ RoundSizeToMultipleOfEntries(size_of_data_in_bytes);
+}
+
enum ArgFlags {
kFixed = 0x0,
kAtLeastN = 0x1,
};
struct SharedMemory {
+ void Init(uint32 _id, uint32 _offset) {
+ id = _id;
+ offset = _offset;
+ }
+
uint32 id;
uint32 offset;
};
-struct NOOP {
- static const CommandId kCmdId = command_buffer::NOOP;
+COMPILE_ASSERT(offsetof(SharedMemory, id) == 0,
+ Offsetof_SharedMemory_id_not_0);
+COMPILE_ASSERT(offsetof(SharedMemory, offset) == 4,
+ Offsetof_SharedMemory_offset_not_4);
+
+struct Noop {
+ typedef Noop ValueType;
+ static const CommandId kCmdId = command_buffer::kNoop;
static const ArgFlags kArgFlags = 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;
};
-struct SET_TOKEN {
- static const CommandId kCmdId = command_buffer::SET_TOKEN;
+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 = command_buffer::kSetToken;
static const ArgFlags kArgFlags = 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;
};
-struct BEGIN_FRAME {
- static const CommandId kCmdId = command_buffer::BEGIN_FRAME;
+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);
+
+struct BeginFrame {
+ typedef BeginFrame ValueType;
+ static const CommandId kCmdId = command_buffer::kBeginFrame;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init() {
+ SetHeader();
+ }
+ static void* Set(void* cmd) {
+ static_cast<ValueType*>(cmd)->Init();
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
};
-struct END_FRAME {
- static const CommandId kCmdId = command_buffer::END_FRAME;
+COMPILE_ASSERT(sizeof(BeginFrame) == 4, Sizeof_BeginFrame_is_not_4);
+COMPILE_ASSERT(offsetof(BeginFrame, header) == 0,
+ OffsetOf_BeginFrame_header_not_0);
+
+struct EndFrame {
+ typedef EndFrame ValueType;
+ static const CommandId kCmdId = command_buffer::kEndFrame;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init() {
+ SetHeader();
+ }
+ static void* Set(void* cmd) {
+ static_cast<ValueType*>(cmd)->Init();
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
};
-struct CLEAR {
- static const CommandId kCmdId = command_buffer::CLEAR;
+COMPILE_ASSERT(sizeof(EndFrame) == 4, Sizeof_EndFrame_is_not_4);
+COMPILE_ASSERT(offsetof(EndFrame, header) == 0,
+ OffsetOf_EndFrame_header_not_0);
+
+struct Clear {
+ typedef Clear ValueType;
+ static const CommandId kCmdId = command_buffer::kClear;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _buffers, float _red, float _green, float _blue,
+ float _alpha, float _depth, uint32 _stencil) {
+ SetHeader();
+ buffers = _buffers;
+ red = _red;
+ green = _green;
+ blue = _blue;
+ alpha = _alpha;
+ depth = _depth;
+ stencil = _stencil;
+ }
+
+ static void* Set(void* cmd, uint32 buffers,
+ float red, float green, float blue, float alpha,
+ float depth,
+ uint32 stencil) {
+ static_cast<ValueType*>(cmd)->Init(
+ buffers, red, green, blue, alpha, depth, stencil);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 buffers;
float red;
float green;
@@ -402,9 +618,67 @@
uint32 stencil;
};
-struct SET_VIEWPORT {
- static const CommandId kCmdId = command_buffer::SET_VIEWPORT;
+COMPILE_ASSERT(sizeof(Clear) == 32, Sizeof_Clear_is_not_32);
+COMPILE_ASSERT(offsetof(Clear, header) == 0,
+ OffsetOf_Clear_header_not_0);
+COMPILE_ASSERT(offsetof(Clear, buffers) == 4,
+ OffsetOf_Clear_buffers_not_4);
+COMPILE_ASSERT(offsetof(Clear, red) == 8,
+ OffsetOf_Clear_red_not_8);
+COMPILE_ASSERT(offsetof(Clear, green) == 12,
+ OffsetOf_Clear_green_not_12);
+COMPILE_ASSERT(offsetof(Clear, blue) == 16,
+ OffsetOf_Clear_blue_not_16);
+COMPILE_ASSERT(offsetof(Clear, alpha) == 20,
+ OffsetOf_Clear_alpha_not_20);
+COMPILE_ASSERT(offsetof(Clear, depth) == 24,
+ OffsetOf_Clear_depth_not_24);
+COMPILE_ASSERT(offsetof(Clear, stencil) == 28,
+ OffsetOf_Clear_stencil_not_28);
+
+struct SetViewport {
+ typedef SetViewport ValueType;
+ static const CommandId kCmdId = command_buffer::kSetViewport;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(
+ uint32 _left,
+ uint32 _top,
+ uint32 _width,
+ uint32 _height,
+ float _z_min,
+ float _z_max) {
+ SetHeader();
+ left = _left;
+ top = _top;
+ width = _width;
+ height = _height;
+ z_min = _z_min;
+ z_max = _z_max;
+ }
+
+ static void* Set(void* cmd,
+ uint32 left,
+ uint32 top,
+ uint32 width,
+ uint32 height,
+ float z_min,
+ float z_max) {
+ static_cast<ValueType*>(cmd)->Init(
+ left,
+ top,
+ width,
+ height,
+ z_min,
+ z_max);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 left;
uint32 top;
uint32 width;
@@ -413,119 +687,659 @@
float z_max;
};
-struct CREATE_VERTEX_BUFFER {
- static const CommandId kCmdId = command_buffer::CREATE_VERTEX_BUFFER;
+COMPILE_ASSERT(sizeof(SetViewport) == 28, Sizeof_SetViewport_is_not_28);
+COMPILE_ASSERT(offsetof(SetViewport, header) == 0,
+ OffsetOf_SetViewport_header_not_0);
+COMPILE_ASSERT(offsetof(SetViewport, left) == 4,
+ OffsetOf_SetViewport_left_not_4);
+COMPILE_ASSERT(offsetof(SetViewport, top) == 8,
+ OffsetOf_SetViewport_top_not_8);
+COMPILE_ASSERT(offsetof(SetViewport, width) == 12,
+ OffsetOf_SetViewport_width_not_12);
+COMPILE_ASSERT(offsetof(SetViewport, height) == 16,
+ OffsetOf_SetViewport_height_not_16);
+COMPILE_ASSERT(offsetof(SetViewport, z_min) == 20,
+ OffsetOf_SetViewport_z_min_not_20);
+COMPILE_ASSERT(offsetof(SetViewport, z_max) == 24,
+ OffsetOf_SetViewport_z_max_not_24);
+
+struct CreateVertexBuffer {
+ typedef CreateVertexBuffer ValueType;
+ static const CommandId kCmdId = command_buffer::kCreateVertexBuffer;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _size, uint32 _flags) {
+ SetHeader();
+ id = _id;
+ size = _size;
+ flags = _flags;
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 size, uint32 flags) {
+ static_cast<ValueType*>(cmd)->Init(id, size, flags);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 size;
uint32 flags;
};
-struct DESTROY_VERTEX_BUFFER {
- static const CommandId kCmdId = command_buffer::DESTROY_VERTEX_BUFFER;
+COMPILE_ASSERT(sizeof(CreateVertexBuffer) == 16,
+ Sizeof_CreateVertexBuffer_is_not_16);
+COMPILE_ASSERT(offsetof(CreateVertexBuffer, header) == 0,
+ OffsetOf_CreateVertexBuffer_header_not_0);
+COMPILE_ASSERT(offsetof(CreateVertexBuffer, id) == 4,
+ OffsetOf_CreateVertexBuffer_id_not_4);
+COMPILE_ASSERT(offsetof(CreateVertexBuffer, size) == 8,
+ OffsetOf_CreateVertexBuffer_size_not_8);
+COMPILE_ASSERT(offsetof(CreateVertexBuffer, flags) == 12,
+ OffsetOf_CreateVertexBuffer_flags_not_12);
+
+struct DestroyVertexBuffer {
+ typedef DestroyVertexBuffer ValueType;
+ static const CommandId kCmdId = command_buffer::kDestroyVertexBuffer;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id) {
+ SetHeader();
+ id = _id;
+ }
+
+ static void* Set(void* cmd, uint32 id) {
+ static_cast<ValueType*>(cmd)->Init(id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
};
-struct SET_VERTEX_BUFFER_DATA_IMMEDIATE {
- static const CommandId kCmdId = command_buffer::SET_VERTEX_BUFFER_DATA_IMMEDIATE;
+COMPILE_ASSERT(sizeof(DestroyVertexBuffer) == 8,
+ Sizeof_DestroyVertexBuffer_is_not_8);
+COMPILE_ASSERT(offsetof(DestroyVertexBuffer, header) == 0,
+ OffsetOf_DestroyVertexBuffer_header_not_0);
+COMPILE_ASSERT(offsetof(DestroyVertexBuffer, id) == 4,
+ OffsetOf_DestroyVertexBuffer_id_not_4);
+
+struct SetVertexBufferDataImmediate {
+ typedef SetVertexBufferDataImmediate ValueType;
+ static const CommandId kCmdId = command_buffer::kSetVertexBufferDataImmediate;
static const ArgFlags kArgFlags = kAtLeastN;
+
+ void SetHeader(uint32 size) {
+ header.SetCmdBySize<ValueType>(size);
+ }
+
+ void Init(uint32 _id, uint32 _offset, const void* data, uint32 size) {
+ SetHeader(size);
+ id = _id;
+ offset = _offset;
+ memcpy(ImmediateDataAddress(this), data, size);
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 offset,
+ const void* data, uint32 size) {
+ static_cast<ValueType*>(cmd)->Init(id, offset, data, size);
+ return NextImmediateCmdAddress<ValueType>(cmd, size);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 offset;
};
-struct SET_VERTEX_BUFFER_DATA {
- static const CommandId kCmdId = command_buffer::SET_VERTEX_BUFFER_DATA;
+COMPILE_ASSERT(sizeof(SetVertexBufferDataImmediate) == 12,
+ Sizeof_SetVertexBufferDataImmediate_is_not_12);
+COMPILE_ASSERT(offsetof(SetVertexBufferDataImmediate, header) == 0,
+ OffsetOf_SetVertexBufferDataImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(SetVertexBufferDataImmediate, id) == 4,
+ OffsetOf_SetVertexBufferDataImmediate_id_not_4);
+COMPILE_ASSERT(offsetof(SetVertexBufferDataImmediate, offset) == 8,
+ OffsetOf_SetVertexBufferDataImmediate_offset_not_8);
+
+struct SetVertexBufferData {
+ typedef SetVertexBufferData ValueType;
+ static const CommandId kCmdId = command_buffer::kSetVertexBufferData;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _offset, uint32 _size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ SetHeader();
+ id = _id;
+ offset = _offset;
+ size = _size;
+ shared_memory.Init(shared_memory_id, shared_memory_offset);
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 offset, uint32 size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ static_cast<ValueType*>(cmd)->Init(id, offset, size,
+ shared_memory_id, shared_memory_offset);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 offset;
uint32 size;
SharedMemory shared_memory;
};
-struct GET_VERTEX_BUFFER_DATA {
- static const CommandId kCmdId = command_buffer::GET_VERTEX_BUFFER_DATA;
+COMPILE_ASSERT(sizeof(SetVertexBufferData) == 24,
+ Sizeof_SetVertexBufferData_is_not_24);
+COMPILE_ASSERT(offsetof(SetVertexBufferData, header) == 0,
+ OffsetOf_SetVertexBufferData_header_not_0);
+COMPILE_ASSERT(offsetof(SetVertexBufferData, id) == 4,
+ OffsetOf_SetVertexBufferData_id_not_4);
+COMPILE_ASSERT(offsetof(SetVertexBufferData, offset) == 8,
+ OffsetOf_SetVertexBufferData_offset_not_8);
+COMPILE_ASSERT(offsetof(SetVertexBufferData, size) == 12,
+ OffsetOf_SetVertexBufferData_size_not_12);
+COMPILE_ASSERT(offsetof(SetVertexBufferData, shared_memory) == 16,
+ OffsetOf_SetVertexBufferData_shared_memory_not_16);
+
+struct GetVertexBufferData {
+ typedef GetVertexBufferData ValueType;
+ static const CommandId kCmdId = command_buffer::kGetVertexBufferData;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _offset, uint32 _size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ SetHeader();
+ id = _id;
+ offset = _offset;
+ size = _size;
+ shared_memory.Init(shared_memory_id, shared_memory_offset);
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 offset, uint32 size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ static_cast<ValueType*>(cmd)->Init(id, offset, size,
+ shared_memory_id, shared_memory_offset);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 offset;
uint32 size;
SharedMemory shared_memory;
};
-struct CREATE_INDEX_BUFFER {
- static const CommandId kCmdId = command_buffer::CREATE_INDEX_BUFFER;
+COMPILE_ASSERT(sizeof(GetVertexBufferData) == 24,
+ Sizeof_GetVertexBufferData_is_not_24);
+COMPILE_ASSERT(offsetof(GetVertexBufferData, header) == 0,
+ OffsetOf_GetVertexBufferData_header_not_0);
+COMPILE_ASSERT(offsetof(GetVertexBufferData, id) == 4,
+ OffsetOf_GetVertexBufferData_id_not_4);
+COMPILE_ASSERT(offsetof(GetVertexBufferData, offset) == 8,
+ OffsetOf_GetVertexBufferData_offset_not_8);
+COMPILE_ASSERT(offsetof(GetVertexBufferData, size) == 12,
+ OffsetOf_GetVertexBufferData_size_not_12);
+COMPILE_ASSERT(offsetof(GetVertexBufferData, shared_memory) == 16,
+ OffsetOf_GetVertexBufferData_shared_memory_not_16);
+
+struct CreateIndexBuffer {
+ typedef CreateIndexBuffer ValueType;
+ static const CommandId kCmdId = command_buffer::kCreateIndexBuffer;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _size, uint32 _flags) {
+ SetHeader();
+ id = _id;
+ size = _size;
+ flags = _flags;
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 size, uint32 flags) {
+ static_cast<ValueType*>(cmd)->Init(id, size, flags);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 size;
uint32 flags;
};
-struct DESTROY_INDEX_BUFFER {
- static const CommandId kCmdId = command_buffer::DESTROY_INDEX_BUFFER;
+COMPILE_ASSERT(sizeof(CreateIndexBuffer) == 16,
+ Sizeof_CreateIndexBuffer_is_not_16);
+COMPILE_ASSERT(offsetof(CreateIndexBuffer, header) == 0,
+ OffsetOf_CreateIndexBuffer_header_not_0);
+COMPILE_ASSERT(offsetof(CreateIndexBuffer, id) == 4,
+ OffsetOf_CreateIndexBuffer_id_not_4);
+COMPILE_ASSERT(offsetof(CreateIndexBuffer, size) == 8,
+ OffsetOf_CreateIndexBuffer_size_not_8);
+COMPILE_ASSERT(offsetof(CreateIndexBuffer, flags) == 12,
+ OffsetOf_CreateIndexBuffer_flags_not_12);
+
+struct DestroyIndexBuffer {
+ typedef DestroyIndexBuffer ValueType;
+ static const CommandId kCmdId = command_buffer::kDestroyIndexBuffer;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id) {
+ SetHeader();
+ id = _id;
+ }
+
+ static void* Set(void* cmd, uint32 id) {
+ static_cast<ValueType*>(cmd)->Init(id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
};
-struct SET_INDEX_BUFFER_DATA_IMMEDIATE {
- static const CommandId kCmdId = command_buffer::SET_INDEX_BUFFER_DATA_IMMEDIATE;
+COMPILE_ASSERT(sizeof(DestroyIndexBuffer) == 8,
+ Sizeof_DestroyIndexBuffer_is_not_8);
+COMPILE_ASSERT(offsetof(DestroyIndexBuffer, header) == 0,
+ OffsetOf_DestroyIndexBuffer_header_not_0);
+COMPILE_ASSERT(offsetof(DestroyIndexBuffer, id) == 4,
+ OffsetOf_DestroyIndexBuffer_id_not_4);
+
+struct SetIndexBufferDataImmediate {
+ typedef SetIndexBufferDataImmediate ValueType;
+ static const CommandId kCmdId = command_buffer::kSetIndexBufferDataImmediate;
static const ArgFlags kArgFlags = kAtLeastN;
+
+ void SetHeader(uint32 size) {
+ header.SetCmdBySize<ValueType>(size);
+ }
+
+ void Init(uint32 _id, uint32 _offset, const void* data, uint32 size) {
+ SetHeader(size);
+ id = _id;
+ offset = _offset;
+ memcpy(ImmediateDataAddress(this), data, size);
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 offset, const void* data,
+ uint32 size) {
+ static_cast<ValueType*>(cmd)->Init(id, offset, data, size);
+ return NextImmediateCmdAddress<ValueType>(cmd, size);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 offset;
};
-struct SET_INDEX_BUFFER_DATA {
- static const CommandId kCmdId = command_buffer::SET_INDEX_BUFFER_DATA;
+COMPILE_ASSERT(sizeof(SetIndexBufferDataImmediate) == 12,
+ Sizeof_SetIndexBufferDataImmediate_is_not_12);
+COMPILE_ASSERT(offsetof(SetIndexBufferDataImmediate, header) == 0,
+ OffsetOf_SetIndexBufferDataImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(SetIndexBufferDataImmediate, id) == 4,
+ OffsetOf_SetIndexBufferDataImmediate_id_not_4);
+COMPILE_ASSERT(offsetof(SetIndexBufferDataImmediate, offset) == 8,
+ OffsetOf_SetIndexBufferDataImmediate_offset_not_8);
+
+struct SetIndexBufferData {
+ typedef SetIndexBufferData ValueType;
+ static const CommandId kCmdId = command_buffer::kSetIndexBufferData;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _offset, uint32 _size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ SetHeader();
+ id = _id;
+ offset = _offset;
+ size = _size;
+ shared_memory.Init(shared_memory_id, shared_memory_offset);
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 offset, uint32 size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ static_cast<ValueType*>(cmd)->Init(id, offset, size,
+ shared_memory_id, shared_memory_offset);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 offset;
uint32 size;
SharedMemory shared_memory;
};
-struct GET_INDEX_BUFFER_DATA {
- static const CommandId kCmdId = command_buffer::GET_INDEX_BUFFER_DATA;
+COMPILE_ASSERT(sizeof(SetIndexBufferData) == 24,
+ Sizeof_SetIndexBufferData_is_not_24);
+COMPILE_ASSERT(offsetof(SetIndexBufferData, header) == 0,
+ OffsetOf_SetIndexBufferData_header_not_0);
+COMPILE_ASSERT(offsetof(SetIndexBufferData, id) == 4,
+ OffsetOf_SetIndexBufferData_id_not_4);
+COMPILE_ASSERT(offsetof(SetIndexBufferData, offset) == 8,
+ OffsetOf_SetIndexBufferData_offset_not_8);
+COMPILE_ASSERT(offsetof(SetIndexBufferData, size) == 12,
+ OffsetOf_SetIndexBufferData_size_not_12);
+COMPILE_ASSERT(offsetof(SetIndexBufferData, shared_memory) == 16,
+ OffsetOf_SetIndexBufferData_shared_memory_not_16);
+
+struct GetIndexBufferData {
+ typedef GetIndexBufferData ValueType;
+ static const CommandId kCmdId = command_buffer::kGetIndexBufferData;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _offset, uint32 _size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ SetHeader();
+ id = _id;
+ offset = _offset;
+ size = _size;
+ shared_memory.Init(shared_memory_id, shared_memory_offset);
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 offset, uint32 size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ static_cast<ValueType*>(cmd)->Init(id, offset, size,
+ shared_memory_id, shared_memory_offset);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 offset;
uint32 size;
SharedMemory shared_memory;
};
-struct CREATE_VERTEX_STRUCT {
- static const CommandId kCmdId = command_buffer::CREATE_VERTEX_STRUCT;
+COMPILE_ASSERT(sizeof(GetIndexBufferData) == 24,
+ Sizeof_GetIndexBufferData_is_not_24);
+COMPILE_ASSERT(offsetof(GetIndexBufferData, header) == 0,
+ OffsetOf_GetIndexBufferData_header_not_0);
+COMPILE_ASSERT(offsetof(GetIndexBufferData, id) == 4,
+ OffsetOf_GetIndexBufferData_id_not_4);
+COMPILE_ASSERT(offsetof(GetIndexBufferData, offset) == 8,
+ OffsetOf_GetIndexBufferData_offset_not_8);
+COMPILE_ASSERT(offsetof(GetIndexBufferData, size) == 12,
+ OffsetOf_GetIndexBufferData_size_not_12);
+COMPILE_ASSERT(offsetof(GetIndexBufferData, shared_memory) == 16,
+ OffsetOf_GetIndexBufferData_shared_memory_not_16);
+
+struct CreateVertexStruct {
+ typedef CreateVertexStruct ValueType;
+ static const CommandId kCmdId = command_buffer::kCreateVertexStruct;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _input_count) {
+ SetHeader();
+ id = _id;
+ input_count = _input_count;
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 input_count) {
+ static_cast<ValueType*>(cmd)->Init(id, input_count);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 input_count;
};
-struct DESTROY_VERTEX_STRUCT {
- static const CommandId kCmdId = command_buffer::DESTROY_VERTEX_STRUCT;
+COMPILE_ASSERT(sizeof(CreateVertexStruct) == 12,
+ Sizeof_CreateVertexStruct_is_not_12);
+COMPILE_ASSERT(offsetof(CreateVertexStruct, header) == 0,
+ OffsetOf_CreateVertexStruct_header_not_0);
+COMPILE_ASSERT(offsetof(CreateVertexStruct, id) == 4,
+ OffsetOf_CreateVertexStruct_id_not_4);
+COMPILE_ASSERT(offsetof(CreateVertexStruct, input_count) == 8,
+ OffsetOf_CreateVertexStruct_input_count_not_8);
+
+struct DestroyVertexStruct {
+ typedef DestroyVertexStruct ValueType;
+ static const CommandId kCmdId = command_buffer::kDestroyVertexStruct;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id) {
+ SetHeader();
+ id = _id;
+ }
+
+ static void* Set(void* cmd, uint32 id) {
+ static_cast<ValueType*>(cmd)->Init(id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
};
-struct SET_VERTEX_INPUT {
- static const CommandId kCmdId = command_buffer::SET_VERTEX_INPUT;
- static const ArgFlags kArgFlags = kAtLeastN;
+COMPILE_ASSERT(sizeof(DestroyVertexStruct) == 8,
+ Sizeof_DestroyVertexStruct_is_not_8);
+COMPILE_ASSERT(offsetof(DestroyVertexStruct, header) == 0,
+ OffsetOf_DestroyVertexStruct_header_not_0);
+COMPILE_ASSERT(offsetof(DestroyVertexStruct, id) == 4,
+ OffsetOf_DestroyVertexStruct_id_not_4);
+
+struct SetVertexInput {
+ typedef SetVertexInput ValueType;
+ static const CommandId kCmdId = command_buffer::kSetVertexInput;
+ static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _vertex_struct_id,
+ uint32 _input_index,
+ uint32 _vertex_buffer_id,
+ uint32 _offset,
+ uint8 _semantic,
+ uint32 _semantic_index,
+ uint8 _type,
+ uint32 _stride) {
+ SetHeader();
+ vertex_struct_id = _vertex_struct_id;
+ input_index = _input_index;
+ vertex_buffer_id = _vertex_buffer_id;
+ offset = _offset;
+ fixme4 =
+ set_vertex_input_cmd::Semantic::MakeValue(_semantic) |
+ set_vertex_input_cmd::SemanticIndex::MakeValue(_semantic_index) |
+ set_vertex_input_cmd::Type::MakeValue(_type) |
+ set_vertex_input_cmd::Stride::MakeValue(_stride);
+ }
+
+ static void* Set(
+ void* cmd,
+ uint32 vertex_struct_id,
+ uint32 input_index,
+ uint32 vertex_buffer_id,
+ uint32 offset,
+ uint8 semantic,
+ uint32 semantic_index,
+ uint8 type,
+ uint32 stride) {
+ static_cast<ValueType*>(cmd)->Init(
+ vertex_struct_id,
+ input_index,
+ vertex_buffer_id,
+ offset,
+ semantic,
+ semantic_index,
+ type,
+ stride);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
+ uint32 vertex_struct_id;
+ uint32 input_index;
+ uint32 vertex_buffer_id;
+ uint32 offset;
+ uint32 fixme4;
};
-struct SET_VERTEX_STRUCT {
- static const CommandId kCmdId = command_buffer::SET_VERTEX_STRUCT;
+COMPILE_ASSERT(sizeof(SetVertexInput) == 24,
+ Sizeof_SetVertexInput_is_not_24);
+COMPILE_ASSERT(offsetof(SetVertexInput, header) == 0,
+ OffsetOf_SetVertexInput_header_not_0);
+COMPILE_ASSERT(offsetof(SetVertexInput, vertex_struct_id) == 4,
+ OffsetOf_SetVertexInput_vertex_struct_id_not_4);
+COMPILE_ASSERT(offsetof(SetVertexInput, input_index) == 8,
+ OffsetOf_SetVertexInput_input_index_not_8);
+COMPILE_ASSERT(offsetof(SetVertexInput, vertex_buffer_id) == 12,
+ OffsetOf_SetVertexInput_vertex_buffer_id_not_12);
+COMPILE_ASSERT(offsetof(SetVertexInput, offset) == 16,
+ OffsetOf_SetVertexInput_offset_not_16);
+COMPILE_ASSERT(offsetof(SetVertexInput, fixme4) == 20,
+ OffsetOf_SetVertexInput_fixme4_not_20);
+
+struct SetVertexStruct {
+ typedef SetVertexStruct ValueType;
+ static const CommandId kCmdId = command_buffer::kSetVertexStruct;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id) {
+ SetHeader();
+ id = _id;
+ }
+
+ static void* Set(void* cmd, uint32 id) {
+ static_cast<ValueType*>(cmd)->Init(id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
};
-struct DRAW {
- static const CommandId kCmdId = command_buffer::DRAW;
+COMPILE_ASSERT(sizeof(SetVertexStruct) == 8,
+ Sizeof_SetVertexStruct_is_not_8);
+COMPILE_ASSERT(offsetof(SetVertexStruct, header) == 0,
+ OffsetOf_SetVertexStruct_header_not_0);
+COMPILE_ASSERT(offsetof(SetVertexStruct, id) == 4,
+ OffsetOf_SetVertexStruct_id_not_4);
+
+struct Draw {
+ typedef Draw ValueType;
+ static const CommandId kCmdId = command_buffer::kDraw;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _primitive_type, uint32 _first, uint32 _count) {
+ SetHeader();
+ primitive_type = _primitive_type;
+ first = _first;
+ count = _count;
+ }
+
+ static void* Set(void* cmd, uint32 primitive_type, uint32 first,
+ uint32 count) {
+ static_cast<ValueType*>(cmd)->Init(primitive_type, first, count);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 primitive_type;
uint32 first;
uint32 count;
};
-struct DRAW_INDEXED {
- static const CommandId kCmdId = command_buffer::DRAW_INDEXED;
+COMPILE_ASSERT(sizeof(Draw) == 16, Sizeof_DRAW_is_not_16);
+COMPILE_ASSERT(offsetof(Draw, header) == 0,
+ OffsetOf_Draw_header_not_0);
+COMPILE_ASSERT(offsetof(Draw, primitive_type) == 4,
+ OffsetOf_Draw_primitive_type_not_4);
+COMPILE_ASSERT(offsetof(Draw, first) == 8,
+ OffsetOf_Draw_first_not_8);
+COMPILE_ASSERT(offsetof(Draw, count) == 12,
+ OffsetOf_Draw_count_not_12);
+
+struct DrawIndexed {
+ typedef DrawIndexed ValueType;
+ static const CommandId kCmdId = command_buffer::kDrawIndexed;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(
+ uint32 _primitive_type,
+ uint32 _index_buffer_id,
+ uint32 _first,
+ uint32 _count,
+ uint32 _min_index,
+ uint32 _max_index) {
+ SetHeader();
+ primitive_type = _primitive_type;
+ index_buffer_id = _index_buffer_id;
+ first = _first;
+ count = _count;
+ min_index = _min_index;
+ max_index = _max_index;
+ }
+
+ static void* Set(void* cmd,
+ uint32 primitive_type,
+ uint32 index_buffer_id,
+ uint32 first,
+ uint32 count,
+ uint32 min_index,
+ uint32 max_index) {
+ static_cast<ValueType*>(cmd)->Init(
+ primitive_type,
+ index_buffer_id,
+ first,
+ count,
+ min_index,
+ max_index);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 primitive_type;
uint32 index_buffer_id;
uint32 first;
@@ -534,175 +1348,1218 @@
uint32 max_index;
};
-struct CREATE_EFFECT {
- static const CommandId kCmdId = command_buffer::CREATE_EFFECT;
+COMPILE_ASSERT(sizeof(DrawIndexed) == 28, Sizeof_DrawIndexed_is_not_28);
+COMPILE_ASSERT(offsetof(DrawIndexed, header) == 0,
+ OffsetOf_DrawIndexed_header_not_0);
+COMPILE_ASSERT(offsetof(DrawIndexed, primitive_type) == 4,
+ OffsetOf_DrawIndexed_primitive_type_not_4);
+COMPILE_ASSERT(offsetof(DrawIndexed, index_buffer_id) == 8,
+ OffsetOf_DrawIndexed_index_buffer_id_not_8);
+COMPILE_ASSERT(offsetof(DrawIndexed, first) == 12,
+ OffsetOf_DrawIndexed_first_not_12);
+COMPILE_ASSERT(offsetof(DrawIndexed, count) == 16,
+ OffsetOf_DrawIndexed_count_not_16);
+COMPILE_ASSERT(offsetof(DrawIndexed, min_index) == 20,
+ OffsetOf_DrawIndexed_min_index_not_20);
+COMPILE_ASSERT(offsetof(DrawIndexed, max_index) == 24,
+ OffsetOf_DrawIndexed_max_index_not_24);
+
+struct CreateEffect {
+ typedef CreateEffect ValueType;
+ static const CommandId kCmdId = command_buffer::kCreateEffect;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ SetHeader();
+ id = _id;
+ size = _size;
+ shared_memory.Init(shared_memory_id, shared_memory_offset);
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ static_cast<ValueType*>(cmd)->Init(id, size,
+ shared_memory_id, shared_memory_offset);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 size;
SharedMemory shared_memory;
};
-struct CREATE_EFFECT_IMMEDIATE {
- static const CommandId kCmdId = command_buffer::CREATE_EFFECT_IMMEDIATE;
+COMPILE_ASSERT(sizeof(CreateEffect) == 20, Sizeof_CreateEffect_is_not_20);
+COMPILE_ASSERT(offsetof(CreateEffect, header) == 0,
+ OffsetOf_CreateEffect_header_not_0);
+COMPILE_ASSERT(offsetof(CreateEffect, id) == 4,
+ OffsetOf_CreateEffect_id_not_4);
+COMPILE_ASSERT(offsetof(CreateEffect, size) == 8,
+ OffsetOf_CreateEffect_size_not_8);
+COMPILE_ASSERT(offsetof(CreateEffect, shared_memory) == 12,
+ OffsetOf_CreateEffect_shared_memory_not_12);
+
+struct CreateEffectImmediate {
+ typedef CreateEffectImmediate ValueType;
+ static const CommandId kCmdId = command_buffer::kCreateEffectImmediate;
static const ArgFlags kArgFlags = kAtLeastN;
+
+ void SetHeader(uint32 size) {
+ header.SetCmdBySize<ValueType>(size);
+ }
+
+ void Init(uint32 _id, uint32 _size, const void* data) {
+ SetHeader(_size);
+ id = _id;
+ size = _size;
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 size, const void* data) {
+ static_cast<ValueType*>(cmd)->Init(id, size, data);
+ return NextImmediateCmdAddress<ValueType>(cmd, size);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 size;
};
-struct DESTROY_EFFECT {
- static const CommandId kCmdId = command_buffer::DESTROY_EFFECT;
+COMPILE_ASSERT(sizeof(CreateEffectImmediate) == 12,
+ Sizeof_CreateEffectImmediate_is_not_12);
+COMPILE_ASSERT(offsetof(CreateEffectImmediate, header) == 0,
+ OffsetOf_CreateEffectImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(CreateEffectImmediate, id) == 4,
+ OffsetOf_CreateEffectImmediate_id_not_4);
+COMPILE_ASSERT(offsetof(CreateEffectImmediate, size) == 8,
+ OffsetOf_CreateEffectImmediate_size_not_8);
+
+struct DestroyEffect {
+ typedef DestroyEffect ValueType;
+ static const CommandId kCmdId = command_buffer::kDestroyEffect;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id) {
+ SetHeader();
+ id = _id;
+ }
+
+ static void* Set(void* cmd, uint32 id) {
+ static_cast<ValueType*>(cmd)->Init(id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
};
-struct SET_EFFECT {
- static const CommandId kCmdId = command_buffer::SET_EFFECT;
+COMPILE_ASSERT(sizeof(DestroyEffect) == 8, Sizeof_DestroyEffect_is_not_8);
+COMPILE_ASSERT(offsetof(DestroyEffect, header) == 0,
+ OffsetOf_DestroyEffect_header_not_0);
+COMPILE_ASSERT(offsetof(DestroyEffect, id) == 4,
+ OffsetOf_DestroyEffect_id_not_4);
+
+struct SetEffect {
+ typedef SetEffect ValueType;
+ static const CommandId kCmdId = command_buffer::kSetEffect;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id) {
+ SetHeader();
+ id = _id;
+ }
+
+ static void* Set(void* cmd, uint32 id) {
+ static_cast<ValueType*>(cmd)->Init(id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
};
-struct GET_PARAM_COUNT {
- static const CommandId kCmdId = command_buffer::GET_PARAM_COUNT;
+COMPILE_ASSERT(sizeof(SetEffect) == 8, Sizeof_SetEffect_is_not_8);
+COMPILE_ASSERT(offsetof(SetEffect, header) == 0,
+ OffsetOf_SetEffect_header_not_0);
+COMPILE_ASSERT(offsetof(SetEffect, id) == 4,
+ OffsetOf_SetEffect_id_not_4);
+
+struct GetParamCount {
+ typedef GetParamCount ValueType;
+ static const CommandId kCmdId = command_buffer::kGetParamCount;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ SetHeader();
+ id = _id;
+ size = _size;
+ shared_memory.Init(shared_memory_id, shared_memory_offset);
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ static_cast<ValueType*>(cmd)->Init(id, size,
+ shared_memory_id, shared_memory_offset);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 size;
SharedMemory shared_memory;
};
-struct CREATE_PARAM {
- static const CommandId kCmdId = command_buffer::CREATE_PARAM;
+COMPILE_ASSERT(sizeof(GetParamCount) == 20, Sizeof_GetParamCount_is_not_20);
+COMPILE_ASSERT(offsetof(GetParamCount, header) == 0,
+ OffsetOf_GetParamCount_header_not_0);
+COMPILE_ASSERT(offsetof(GetParamCount, id) == 4,
+ OffsetOf_GetParamCount_id_not_4);
+COMPILE_ASSERT(offsetof(GetParamCount, size) == 8,
+ OffsetOf_GetParamCount_size_not_8);
+COMPILE_ASSERT(offsetof(GetParamCount, shared_memory) == 12,
+ OffsetOf_GetParamCount_shared_memory_not_12);
+
+struct CreateParam {
+ typedef CreateParam ValueType;
+ static const CommandId kCmdId = command_buffer::kCreateParam;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _param_id, uint32 _effect_id, uint32 _index) {
+ SetHeader();
+ param_id = _param_id;
+ effect_id = _effect_id;
+ index = _index;
+ }
+
+ static void* Set(void* cmd,
+ uint32 param_id, uint32 effect_id, uint32 index) {
+ static_cast<ValueType*>(cmd)->Init(param_id, effect_id, index);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 param_id;
uint32 effect_id;
uint32 index;
};
-struct CREATE_PARAM_BY_NAME {
- static const CommandId kCmdId = command_buffer::CREATE_PARAM_BY_NAME;
+COMPILE_ASSERT(sizeof(CreateParam) == 16, Sizeof_CreateParam_is_not_16);
+COMPILE_ASSERT(offsetof(CreateParam, header) == 0,
+ OffsetOf_CreateParam_header_not_0);
+COMPILE_ASSERT(offsetof(CreateParam, param_id) == 4,
+ OffsetOf_CreateParam_param_id_not_4);
+COMPILE_ASSERT(offsetof(CreateParam, effect_id) == 8,
+ OffsetOf_CreateParam_effect_id_not_8);
+COMPILE_ASSERT(offsetof(CreateParam, index) == 12,
+ OffsetOf_CreateParam_index_not_12);
+
+struct CreateParamByName {
+ typedef CreateParamByName ValueType;
+ static const CommandId kCmdId = command_buffer::kCreateParamByName;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _param_id, uint32 _effect_id, uint32 _size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ SetHeader();
+ param_id = _param_id;
+ effect_id = _effect_id;
+ size = _size;
+ shared_memory.Init(shared_memory_id, shared_memory_offset);
+ }
+
+ static void* Set(void* cmd, uint32 param_id, uint32 effect_id, uint32 size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ static_cast<ValueType*>(cmd)->Init(param_id, effect_id, size,
+ shared_memory_id, shared_memory_offset);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 param_id;
uint32 effect_id;
uint32 size;
SharedMemory shared_memory;
};
-struct CREATE_PARAM_BY_NAME_IMMEDIATE {
- static const CommandId kCmdId = command_buffer::CREATE_PARAM_BY_NAME_IMMEDIATE;
+COMPILE_ASSERT(sizeof(CreateParamByName) == 24,
+ Sizeof_CreateParamByName_is_not_24);
+COMPILE_ASSERT(offsetof(CreateParamByName, header) == 0,
+ OffsetOf_CreateParamByName_header_not_0);
+COMPILE_ASSERT(offsetof(CreateParamByName, param_id) == 4,
+ OffsetOf_CreateParamByName_param_id_not_4);
+COMPILE_ASSERT(offsetof(CreateParamByName, effect_id) == 8,
+ OffsetOf_CreateParamByName_effect_id_not_8);
+COMPILE_ASSERT(offsetof(CreateParamByName, size) == 12,
+ OffsetOf_CreateParamByName_size_not_12);
+COMPILE_ASSERT(offsetof(CreateParamByName, shared_memory) == 16,
+ OffsetOf_CreateParamByName_shared_memory_not_16);
+
+struct CreateParamByNameImmediate {
+ typedef CreateParamByNameImmediate ValueType;
+ static const CommandId kCmdId = command_buffer::kCreateParamByNameImmediate;
static const ArgFlags kArgFlags = kAtLeastN;
+
+ void SetHeader(uint32 size) {
+ header.SetCmdBySize<ValueType>(size);
+ }
+
+ void Init(uint32 _param_id, uint32 _effect_id, uint32 _size,
+ const void* data) {
+ SetHeader(_size);
+ param_id = _param_id;
+ effect_id = _effect_id;
+ size = _size;
+ memcpy(ImmediateDataAddress(this), data, _size);
+ }
+
+ static void* Set(void* cmd, uint32 param_id, uint32 effect_id, uint32 size,
+ const void* data) {
+ static_cast<ValueType*>(cmd)->Init(param_id, effect_id, size, data);
+ return NextImmediateCmdAddress<ValueType>(cmd, size);
+ }
+
+ CommandHeader header;
uint32 param_id;
uint32 effect_id;
uint32 size;
};
-struct DESTROY_PARAM {
- static const CommandId kCmdId = command_buffer::DESTROY_PARAM;
+COMPILE_ASSERT(sizeof(CreateParamByNameImmediate) == 16,
+ Sizeof_CreateParamByNameImmediate_is_not_16);
+COMPILE_ASSERT(offsetof(CreateParamByNameImmediate, header) == 0,
+ OffsetOf_CreateParamByNameImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(CreateParamByNameImmediate, param_id) == 4,
+ OffsetOf_CreateParamByNameImmediate_param_id_not_4);
+COMPILE_ASSERT(offsetof(CreateParamByNameImmediate, effect_id) == 8,
+ OffsetOf_CreateParamByNameImmediate_effect_id_not_8);
+COMPILE_ASSERT(offsetof(CreateParamByNameImmediate, size) == 12,
+ OffsetOf_CreateParamByNameImmediate_size_not_12);
+
+struct DestroyParam {
+ typedef DestroyParam ValueType;
+ static const CommandId kCmdId = command_buffer::kDestroyParam;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id) {
+ SetHeader();
+ id = _id;
+ }
+
+ static void* Set(void* cmd, uint32 id) {
+ static_cast<ValueType*>(cmd)->Init(id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
};
-struct SET_PARAM_DATA {
- static const CommandId kCmdId = command_buffer::SET_PARAM_DATA;
+COMPILE_ASSERT(sizeof(DestroyParam) == 8, Sizeof_DestroyParam_is_not_8);
+COMPILE_ASSERT(offsetof(DestroyParam, header) == 0,
+ OffsetOf_DestroyParam_header_not_0);
+COMPILE_ASSERT(offsetof(DestroyParam, id) == 4,
+ OffsetOf_DestroyParam_id_not_4);
+
+struct SetParamData {
+ typedef SetParamData ValueType;
+ static const CommandId kCmdId = command_buffer::kSetParamData;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ SetHeader();
+ id = _id;
+ size = _size;
+ shared_memory.Init(shared_memory_id, shared_memory_offset);
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ static_cast<ValueType*>(cmd)->Init(id, size,
+ shared_memory_id, shared_memory_offset);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 size;
SharedMemory shared_memory;
};
-struct SET_PARAM_DATA_IMMEDIATE {
- static const CommandId kCmdId = command_buffer::SET_PARAM_DATA_IMMEDIATE;
+COMPILE_ASSERT(sizeof(SetParamData) == 20, Sizeof_SetParamData_is_not_20);
+COMPILE_ASSERT(offsetof(SetParamData, header) == 0,
+ OffsetOf_SetParamData_header_not_0);
+COMPILE_ASSERT(offsetof(SetParamData, id) == 4,
+ OffsetOf_SetParamData_id_not_4);
+COMPILE_ASSERT(offsetof(SetParamData, size) == 8,
+ OffsetOf_SetParamData_size_not_8);
+COMPILE_ASSERT(offsetof(SetParamData, shared_memory) == 12,
+ OffsetOf_SetParamData_shared_memory_not_12);
+
+struct SetParamDataImmediate {
+ typedef SetParamDataImmediate ValueType;
+ static const CommandId kCmdId = command_buffer::kSetParamDataImmediate;
static const ArgFlags kArgFlags = kAtLeastN;
+
+ void SetHeader(uint32 size) {
+ header.SetCmdBySize<ValueType>(size);
+ }
+
+ void Init(uint32 _id, uint32 _size, const void* data) {
+ SetHeader(_size);
+ id = _id;
+ size = _size;
+ memcpy(ImmediateDataAddress(this), data, _size);
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 size, const void* data) {
+ static_cast<ValueType*>(cmd)->Init(id, size, data);
+ return NextImmediateCmdAddress<ValueType>(cmd, size);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 size;
};
-struct GET_PARAM_DESC {
- static const CommandId kCmdId = command_buffer::GET_PARAM_DESC;
+COMPILE_ASSERT(sizeof(SetParamDataImmediate) == 12,
+ Sizeof_SetParamDataImmediate_is_not_12);
+COMPILE_ASSERT(offsetof(SetParamDataImmediate, header) == 0,
+ OffsetOf_SetParamDataImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(SetParamDataImmediate, id) == 4,
+ OffsetOf_SetParamDataImmediate_id_not_4);
+COMPILE_ASSERT(offsetof(SetParamDataImmediate, size) == 8,
+ OffsetOf_SetParamDataImmediate_size_not_8);
+
+struct GetParamDesc {
+ typedef GetParamDesc ValueType;
+ static const CommandId kCmdId = command_buffer::kGetParamDesc;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ SetHeader();
+ id = _id;
+ size = _size;
+ shared_memory.Init(shared_memory_id, shared_memory_offset);
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ static_cast<ValueType*>(cmd)->Init(id, size,
+ shared_memory_id, shared_memory_offset);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 size;
SharedMemory shared_memory;
};
-struct GET_STREAM_COUNT {
- static const CommandId kCmdId = command_buffer::GET_STREAM_COUNT;
+COMPILE_ASSERT(sizeof(GetParamDesc) == 20, Sizeof_GetParamDesc_is_not_20);
+COMPILE_ASSERT(offsetof(GetParamDesc, header) == 0,
+ OffsetOf_GetParamDesc_header_not_0);
+COMPILE_ASSERT(offsetof(GetParamDesc, id) == 4,
+ OffsetOf_GetParamDesc_id_not_4);
+COMPILE_ASSERT(offsetof(GetParamDesc, size) == 8,
+ OffsetOf_GetParamDesc_size_not_8);
+COMPILE_ASSERT(offsetof(GetParamDesc, shared_memory) == 12,
+ OffsetOf_GetParamDesc_shared_memory_not_12);
+
+struct GetStreamCount {
+ typedef GetStreamCount ValueType;
+ static const CommandId kCmdId = command_buffer::kGetStreamCount;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ SetHeader();
+ id = _id;
+ size = _size;
+ shared_memory.Init(shared_memory_id, shared_memory_offset);
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ static_cast<ValueType*>(cmd)->Init(id, size,
+ shared_memory_id, shared_memory_offset);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 size;
SharedMemory shared_memory;
};
-struct GET_STREAM_DESC {
- static const CommandId kCmdId = command_buffer::GET_STREAM_DESC;
+COMPILE_ASSERT(sizeof(GetStreamCount) == 20,
+ Sizeof_GetStreamCount_is_not_20);
+COMPILE_ASSERT(offsetof(GetStreamCount, header) == 0,
+ OffsetOf_GetStreamCount_header_not_0);
+COMPILE_ASSERT(offsetof(GetStreamCount, id) == 4,
+ OffsetOf_GetStreamCount_id_not_4);
+COMPILE_ASSERT(offsetof(GetStreamCount, size) == 8,
+ OffsetOf_GetStreamCount_size_not_8);
+COMPILE_ASSERT(offsetof(GetStreamCount, shared_memory) == 12,
+ OffsetOf_GetStreamCount_shared_memory_not_12);
+
+struct GetStreamDesc {
+ typedef GetStreamDesc ValueType;
+ static const CommandId kCmdId = command_buffer::kGetStreamDesc;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _index, uint32 _size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ SetHeader();
+ id = _id;
+ index = _index;
+ size = _size;
+ shared_memory.Init(shared_memory_id, shared_memory_offset);
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 index, uint32 size,
+ uint32 shared_memory_id, uint32 shared_memory_offset) {
+ static_cast<ValueType*>(cmd)->Init(id, index, size,
+ shared_memory_id, shared_memory_offset);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 index;
uint32 size;
SharedMemory shared_memory;
};
-struct DESTROY_TEXTURE {
- static const CommandId kCmdId = command_buffer::DESTROY_TEXTURE;
+COMPILE_ASSERT(sizeof(GetStreamDesc) == 24, Sizeof_GetStreamDesc_is_not_24);
+COMPILE_ASSERT(offsetof(GetStreamDesc, header) == 0,
+ OffsetOf_GetStreamDesc_header_not_0);
+COMPILE_ASSERT(offsetof(GetStreamDesc, id) ==4 ,
+ OffsetOf_GetStreamDesc_id_not_4);
+COMPILE_ASSERT(offsetof(GetStreamDesc, index) == 8,
+ OffsetOf_GetStreamDesc_index_not_8);
+COMPILE_ASSERT(offsetof(GetStreamDesc, size) == 12,
+ OffsetOf_GetStreamDesc_size_not_12);
+COMPILE_ASSERT(offsetof(GetStreamDesc, shared_memory) == 16,
+ OffsetOf_GetStreamDesc_shared_memory_not_16);
+
+struct DestroyTexture {
+ typedef DestroyTexture ValueType;
+ static const CommandId kCmdId = command_buffer::kDestroyTexture;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id) {
+ SetHeader();
+ id = _id;
+ }
+
+ static void* Set(void* cmd, uint32 id) {
+ static_cast<ValueType*>(cmd)->Init(id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
};
-struct CREATE_TEXTURE_2D {
- static const CommandId kCmdId = command_buffer::CREATE_TEXTURE_2D;
- static const ArgFlags kArgFlags = kAtLeastN;
+COMPILE_ASSERT(sizeof(DestroyTexture) == 8, Sizeof_DestroyTexture_is_not_8);
+COMPILE_ASSERT(offsetof(DestroyTexture, header) == 0,
+ OffsetOf_DestroyTexture_header_not_0);
+COMPILE_ASSERT(offsetof(DestroyTexture, id) == 4,
+ OffsetOf_DestroyTexture_id_not_4);
+
+struct CreateTexture2d {
+ typedef CreateTexture2d ValueType;
+ static const CommandId kCmdId = command_buffer::kCreateTexture2d;
+ static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _texture_id,
+ uint32 _width, uint32 _height, uint32 _levels, uint32 _format,
+ uint32 _enable_render_surfaces) {
+ SetHeader();
+ texture_id = _texture_id;
+ fixme1 =
+ create_texture_2d_cmd::Width::MakeValue(_width) |
+ create_texture_2d_cmd::Height::MakeValue(_height);
+ fixme2 =
+ create_texture_2d_cmd::Levels::MakeValue(_levels) |
+ create_texture_2d_cmd::Format::MakeValue(_format) |
+ create_texture_2d_cmd::Flags::MakeValue(_enable_render_surfaces);
+ }
+
+ static void* Set(void* cmd, uint32 texture_id,
+ uint32 width, uint32 height, uint32 levels, uint32 format,
+ uint32 enable_render_surfaces) {
+ static_cast<ValueType*>(cmd)->Init(texture_id,
+ width, height, levels, format,
+ enable_render_surfaces);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
+ uint32 texture_id;
+ uint32 fixme1;
+ uint32 fixme2;
};
-struct CREATE_TEXTURE_3D {
- static const CommandId kCmdId = command_buffer::CREATE_TEXTURE_3D;
- static const ArgFlags kArgFlags = kAtLeastN;
+COMPILE_ASSERT(sizeof(CreateTexture2d) == 16,
+ Sizeof_CreateTexture2d_is_not_16);
+COMPILE_ASSERT(offsetof(CreateTexture2d, header) == 0,
+ OffsetOf_CreateTexture2d_header_not_0);
+COMPILE_ASSERT(offsetof(CreateTexture2d, texture_id) == 4,
+ OffsetOf_CreateTexture2d_texture_id_not_4);
+COMPILE_ASSERT(offsetof(CreateTexture2d, fixme1) == 8,
+ OffsetOf_CreateTexture2d_fixme1_not_8);
+COMPILE_ASSERT(offsetof(CreateTexture2d, fixme2) == 12,
+ OffsetOf_CreateTexture2d_fixme2_not_12);
+
+struct CreateTexture3d {
+ typedef CreateTexture3d ValueType;
+ static const CommandId kCmdId = command_buffer::kCreateTexture3d;
+ static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _texture_id,
+ uint32 _width, uint32 _height, uint32 _depth,
+ uint32 _levels, uint32 _format,
+ uint32 _enable_render_surfaces) {
+ SetHeader();
+ texture_id = _texture_id;
+ fixme1 =
+ create_texture_3d_cmd::Width::MakeValue(_width) |
+ create_texture_3d_cmd::Height::MakeValue(_height);
+ fixme2 =
+ create_texture_3d_cmd::Depth::MakeValue(_depth);
+ fixme3 =
+ create_texture_3d_cmd::Levels::MakeValue(_levels) |
+ create_texture_3d_cmd::Format::MakeValue(_format) |
+ create_texture_3d_cmd::Flags::MakeValue(_enable_render_surfaces);
+ }
+
+ static void* Set(void* cmd, uint32 texture_id,
+ uint32 width, uint32 height, uint32 depth,
+ uint32 levels, uint32 format,
+ uint32 enable_render_surfaces) {
+ static_cast<ValueType*>(cmd)->Init(texture_id,
+ width, height, depth,
+ levels, format,
+ enable_render_surfaces);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
+ uint32 texture_id;
+ uint32 fixme1;
+ uint32 fixme2;
+ uint32 fixme3;
};
-struct CREATE_TEXTURE_CUBE {
- static const CommandId kCmdId = command_buffer::CREATE_TEXTURE_CUBE;
- static const ArgFlags kArgFlags = kAtLeastN;
+COMPILE_ASSERT(sizeof(CreateTexture3d) == 20,
+ Sizeof_CreateTexture3d_is_not_20);
+COMPILE_ASSERT(offsetof(CreateTexture3d, header) == 0,
+ OffsetOf_CreateTexture3d_header_not_0);
+COMPILE_ASSERT(offsetof(CreateTexture3d, texture_id) == 4,
+ OffsetOf_CreateTexture3d_texture_id_not_4);
+COMPILE_ASSERT(offsetof(CreateTexture3d, fixme1) == 8,
+ OffsetOf_CreateTexture3d_fixme1_not_8);
+COMPILE_ASSERT(offsetof(CreateTexture3d, fixme2) == 12,
+ OffsetOf_CreateTexture3d_fixme2_not_12);
+COMPILE_ASSERT(offsetof(CreateTexture3d, fixme3) == 16,
+ OffsetOf_CreateTexture3d_fixme3_not_16);
+
+struct CreateTextureCube {
+ typedef CreateTextureCube ValueType;
+ static const CommandId kCmdId = command_buffer::kCreateTextureCube;
+ static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _texture_id,
+ uint32 _edge_length, uint32 _levels, uint32 _format,
+ uint32 _enable_render_surfaces) {
+ SetHeader();
+ texture_id = _texture_id;
+ edge_length = _edge_length;
+ fixme2 =
+ create_texture_2d_cmd::Levels::MakeValue(_levels) |
+ create_texture_2d_cmd::Format::MakeValue(_format) |
+ create_texture_2d_cmd::Flags::MakeValue(_enable_render_surfaces);
+ }
+
+ static void* Set(void* cmd, uint32 texture_id,
+ uint32 edge_length, uint32 levels, uint32 format,
+ uint32 enable_render_surfaces) {
+ static_cast<ValueType*>(cmd)->Init(texture_id,
+ edge_length, levels, format,
+ enable_render_surfaces);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
+ uint32 texture_id;
+ uint32 edge_length;
+ uint32 fixme2;
};
-struct SET_TEXTURE_DATA {
- static const CommandId kCmdId = command_buffer::SET_TEXTURE_DATA;
- static const ArgFlags kArgFlags = kAtLeastN;
+COMPILE_ASSERT(sizeof(CreateTextureCube) == 16,
+ Sizeof_CreateTextureCube_is_not_16);
+COMPILE_ASSERT(offsetof(CreateTextureCube, header) == 0,
+ OffsetOf_CreateTextureCube_header_not_0);
+COMPILE_ASSERT(offsetof(CreateTextureCube, texture_id) == 4,
+ OffsetOf_CreateTextureCube_texture_id_not_4);
+COMPILE_ASSERT(offsetof(CreateTextureCube, edge_length) == 8,
+ OffsetOf_CreateTextureCube_edge_length_not_8);
+COMPILE_ASSERT(offsetof(CreateTextureCube, fixme2) == 12,
+ OffsetOf_CreateTextureCube_fixme2_not_12);
+
+struct SetTextureData {
+ typedef SetTextureData ValueType;
+ static const CommandId kCmdId = command_buffer::kSetTextureData;
+ static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(
+ uint32 _texture_id,
+ uint32 _x,
+ uint32 _y,
+ uint32 _z,
+ uint32 _width,
+ uint32 _height,
+ uint32 _depth,
+ uint32 _level,
+ uint32 _face,
+ uint32 _row_pitch,
+ uint32 _slice_pitch,
+ uint32 _size,
+ uint32 shared_memory_id,
+ uint32 shared_memory_offset) {
+ SetHeader();
+ texture_id = _texture_id;
+ fixme1 =
+ set_texture_data_cmd::X::MakeValue(_x) |
+ set_texture_data_cmd::Y::MakeValue(_y);
+ fixme2 =
+ set_texture_data_cmd::Width::MakeValue(_width) |
+ set_texture_data_cmd::Height::MakeValue(_height);
+ fixme3 =
+ set_texture_data_cmd::Z::MakeValue(_z) |
+ set_texture_data_cmd::Depth::MakeValue(_depth);
+ fixme4 =
+ set_texture_data_cmd::Level::MakeValue(_level) |
+ set_texture_data_cmd::Face::MakeValue(_face);
+ row_pitch = _row_pitch;
+ slice_pitch = _slice_pitch;
+ size = _size;
+ shared_memory.Init(shared_memory_id, shared_memory_offset);
+ }
+
+ static void* Set(
+ void* cmd,
+ uint32 texture_id,
+ uint32 x,
+ uint32 y,
+ uint32 z,
+ uint32 width,
+ uint32 height,
+ uint32 depth,
+ uint32 level,
+ uint32 face,
+ uint32 row_pitch,
+ uint32 slice_pitch,
+ uint32 size,
+ uint32 shared_memory_id,
+ uint32 shared_memory_offset) {
+ static_cast<ValueType*>(cmd)->Init(
+ texture_id,
+ x,
+ y,
+ z,
+ width,
+ height,
+ depth,
+ level,
+ face,
+ row_pitch,
+ slice_pitch,
+ size,
+ shared_memory_id,
+ shared_memory_offset);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
+ uint32 texture_id;
+ uint32 fixme1;
+ uint32 fixme2;
+ uint32 fixme3;
+ uint32 fixme4;
+ uint32 row_pitch;
+ uint32 slice_pitch;
+ uint32 size;
+ SharedMemory shared_memory;
};
-struct SET_TEXTURE_DATA_IMMEDIATE {
- static const CommandId kCmdId = command_buffer::SET_TEXTURE_DATA_IMMEDIATE;
+COMPILE_ASSERT(sizeof(SetTextureData) == 44,
+ Sizeof_SetTextureData_is_not_44);
+COMPILE_ASSERT(offsetof(SetTextureData, header) == 0,
+ OffsetOf_SetTextureData_header_not_0);
+COMPILE_ASSERT(offsetof(SetTextureData, texture_id) == 4,
+ OffsetOf_SetTextureData_texture_id_not_4);
+COMPILE_ASSERT(offsetof(SetTextureData, fixme1) == 8,
+ OffsetOf_SetTextureData_fixme1_not_8);
+COMPILE_ASSERT(offsetof(SetTextureData, fixme2) == 12,
+ OffsetOf_SetTextureData_fixme2_not_12);
+COMPILE_ASSERT(offsetof(SetTextureData, fixme3) == 16,
+ OffsetOf_SetTextureData_fixme3_not_16);
+COMPILE_ASSERT(offsetof(SetTextureData, fixme4) == 20,
+ OffsetOf_SetTextureData_fixme4_not_20);
+COMPILE_ASSERT(offsetof(SetTextureData, row_pitch) == 24,
+ OffsetOf_SetTextureData_row_pitch_not_24);
+COMPILE_ASSERT(offsetof(SetTextureData, slice_pitch) == 28,
+ OffsetOf_SetTextureData_slice_pitch_not_28);
+COMPILE_ASSERT(offsetof(SetTextureData, size) == 32,
+ OffsetOf_SetTextureData_size_not_32);
+COMPILE_ASSERT(offsetof(SetTextureData, shared_memory) == 36,
+ OffsetOf_SetTextureData_shared_memory_not_36);
+
+struct SetTextureDataImmediate {
+ typedef SetTextureDataImmediate ValueType;
+ static const CommandId kCmdId = command_buffer::kSetTextureDataImmediate;
static const ArgFlags kArgFlags = kAtLeastN;
+
+ void SetHeader(uint32 size) {
+ header.SetCmdBySize<ValueType>(size);
+ }
+
+ void Init(
+ uint32 _texture_id,
+ uint32 _x,
+ uint32 _y,
+ uint32 _z,
+ uint32 _width,
+ uint32 _height,
+ uint32 _depth,
+ uint32 _level,
+ uint32 _face,
+ uint32 _row_pitch,
+ uint32 _slice_pitch,
+ uint32 _size,
+ const void* data) {
+ SetHeader(_size);
+ texture_id = _texture_id;
+ fixme1 =
+ set_texture_data_cmd::X::MakeValue(_x) |
+ set_texture_data_cmd::Y::MakeValue(_y);
+ fixme2 =
+ set_texture_data_cmd::Width::MakeValue(_width) |
+ set_texture_data_cmd::Height::MakeValue(_height);
+ fixme3 =
+ set_texture_data_cmd::Z::MakeValue(_z) |
+ set_texture_data_cmd::Depth::MakeValue(_depth);
+ fixme4 =
+ set_texture_data_cmd::Level::MakeValue(_level) |
+ set_texture_data_cmd::Face::MakeValue(_face);
+ row_pitch = _row_pitch;
+ slice_pitch = _slice_pitch;
+ size = _size;
+ memcpy(ImmediateDataAddress(this), data, _size);
+ }
+
+ static void* Set(
+ void* cmd,
+ uint32 texture_id,
+ uint32 x,
+ uint32 y,
+ uint32 z,
+ uint32 width,
+ uint32 height,
+ uint32 depth,
+ uint32 level,
+ uint32 face,
+ uint32 row_pitch,
+ uint32 slice_pitch,
+ uint32 size,
+ const void* data) {
+ static_cast<ValueType*>(cmd)->Init(
+ texture_id,
+ x,
+ y,
+ z,
+ width,
+ height,
+ depth,
+ level,
+ face,
+ row_pitch,
+ slice_pitch,
+ size,
+ data);
+ return NextImmediateCmdAddress<ValueType>(cmd, size);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
+ uint32 texture_id;
+ uint32 fixme1;
+ uint32 fixme2;
+ uint32 fixme3;
+ uint32 fixme4;
+ uint32 row_pitch;
+ uint32 slice_pitch;
+ uint32 size;
};
-struct GET_TEXTURE_DATA {
- static const CommandId kCmdId = command_buffer::GET_TEXTURE_DATA;
- static const ArgFlags kArgFlags = kAtLeastN;
+COMPILE_ASSERT(sizeof(SetTextureDataImmediate) == 36,
+ Sizeof_SetTextureDataImmediate_is_not_36);
+COMPILE_ASSERT(offsetof(SetTextureDataImmediate, header) == 0,
+ OffsetOf_SetTextureDataImmediate_header_not_0);
+COMPILE_ASSERT(offsetof(SetTextureDataImmediate, texture_id) == 4,
+ OffsetOf_SetTextureDataImmediate_texture_id_not_4);
+COMPILE_ASSERT(offsetof(SetTextureDataImmediate, fixme1) == 8,
+ OffsetOf_SetTextureDataImmediate_fixme1_not_8);
+COMPILE_ASSERT(offsetof(SetTextureDataImmediate, fixme2) == 12,
+ OffsetOf_SetTextureDataImmediate_fixme2_not_12);
+COMPILE_ASSERT(offsetof(SetTextureDataImmediate, fixme3) == 16,
+ OffsetOf_SetTextureDataImmediate_fixme3_not_16);
+COMPILE_ASSERT(offsetof(SetTextureDataImmediate, fixme4) == 20,
+ OffsetOf_SetTextureDataImmediate_fixme4_not_20);
+COMPILE_ASSERT(offsetof(SetTextureDataImmediate, row_pitch) == 24,
+ OffsetOf_SetTextureDataImmediate_row_pitch_not_24);
+COMPILE_ASSERT(offsetof(SetTextureDataImmediate, slice_pitch) == 28,
+ OffsetOf_SetTextureDataImmediate_slice_pitch_not_28);
+COMPILE_ASSERT(offsetof(SetTextureDataImmediate, size) == 32,
+ OffsetOf_SetTextureDataImmediate_size_not_32);
+
+struct GetTextureData {
+ typedef GetTextureData ValueType;
+ static const CommandId kCmdId = command_buffer::kGetTextureData;
+ static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(
+ uint32 _texture_id,
+ uint32 _x,
+ uint32 _y,
+ uint32 _z,
+ uint32 _width,
+ uint32 _height,
+ uint32 _depth,
+ uint32 _level,
+ uint32 _face,
+ uint32 _row_pitch,
+ uint32 _slice_pitch,
+ uint32 _size,
+ uint32 shared_memory_id,
+ uint32 shared_memory_offset) {
+ SetHeader();
+ texture_id = _texture_id;
+ fixme1 =
+ set_texture_data_cmd::X::MakeValue(_x) |
+ set_texture_data_cmd::Y::MakeValue(_y);
+ fixme2 =
+ set_texture_data_cmd::Width::MakeValue(_width) |
+ set_texture_data_cmd::Height::MakeValue(_height);
+ fixme3 =
+ set_texture_data_cmd::Z::MakeValue(_z) |
+ set_texture_data_cmd::Depth::MakeValue(_depth);
+ fixme4 =
+ set_texture_data_cmd::Level::MakeValue(_level) |
+ set_texture_data_cmd::Face::MakeValue(_face);
+ row_pitch = _row_pitch;
+ slice_pitch = _slice_pitch;
+ size = _size;
+ shared_memory.Init(shared_memory_id, shared_memory_offset);
+ }
+
+ static void* Set(
+ void* cmd,
+ uint32 texture_id,
+ uint32 x,
+ uint32 y,
+ uint32 z,
+ uint32 width,
+ uint32 height,
+ uint32 depth,
+ uint32 level,
+ uint32 face,
+ uint32 row_pitch,
+ uint32 slice_pitch,
+ uint32 size,
+ uint32 shared_memory_id,
+ uint32 shared_memory_offset) {
+ static_cast<ValueType*>(cmd)->Init(
+ texture_id,
+ x,
+ y,
+ z,
+ width,
+ height,
+ depth,
+ level,
+ face,
+ row_pitch,
+ slice_pitch,
+ size,
+ shared_memory_id,
+ shared_memory_offset);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
+ uint32 texture_id;
+ uint32 fixme1;
+ uint32 fixme2;
+ uint32 fixme3;
+ uint32 fixme4;
+ uint32 row_pitch;
+ uint32 slice_pitch;
+ uint32 size;
+ SharedMemory shared_memory;
};
-struct CREATE_SAMPLER {
- static const CommandId kCmdId = command_buffer::CREATE_SAMPLER;
+COMPILE_ASSERT(sizeof(GetTextureData) == 44,
+ Sizeof_GetTextureData_is_not_44);
+COMPILE_ASSERT(offsetof(GetTextureData, header) == 0,
+ OffsetOf_GetTextureData_header_not_0);
+COMPILE_ASSERT(offsetof(GetTextureData, texture_id) == 4,
+ OffsetOf_GetTextureData_texture_id_not_4);
+COMPILE_ASSERT(offsetof(GetTextureData, fixme1) == 8,
+ OffsetOf_GetTextureData_fixme1_not_8);
+COMPILE_ASSERT(offsetof(GetTextureData, fixme2) == 12,
+ OffsetOf_GetTextureData_fixme2_not_12);
+COMPILE_ASSERT(offsetof(GetTextureData, fixme3) == 16,
+ OffsetOf_GetTextureData_fixme3_not_16);
+COMPILE_ASSERT(offsetof(GetTextureData, fixme4) == 20,
+ OffsetOf_GetTextureData_fixme4_not_20);
+COMPILE_ASSERT(offsetof(GetTextureData, row_pitch) == 24,
+ OffsetOf_GetTextureData_row_pitch_not_24);
+COMPILE_ASSERT(offsetof(GetTextureData, slice_pitch) == 28,
+ OffsetOf_GetTextureData_slice_pitch_not_28);
+COMPILE_ASSERT(offsetof(GetTextureData, size) == 32,
+ OffsetOf_GetTextureData_size_not_32);
+COMPILE_ASSERT(offsetof(GetTextureData, shared_memory) == 36,
+ OffsetOf_GetTextureData_shared_memory_not_36);
+
+struct CreateSampler {
+ typedef CreateSampler ValueType;
+ static const CommandId kCmdId = command_buffer::kCreateSampler;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id) {
+ SetHeader();
+ id = _id;
+ }
+
+ static void* Set(void* cmd, uint32 id) {
+ static_cast<ValueType*>(cmd)->Init(id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
};
-struct DESTROY_SAMPLER {
- static const CommandId kCmdId = command_buffer::DESTROY_SAMPLER;
+COMPILE_ASSERT(sizeof(CreateSampler) == 8, Sizeof_CreateSampler_is_not_8);
+COMPILE_ASSERT(offsetof(CreateSampler, header) == 0,
+ OffsetOf_CreateSampler_header_not_0);
+COMPILE_ASSERT(offsetof(CreateSampler, id) == 4,
+ OffsetOf_CreateSampler_id_not_4);
+
+struct DestroySampler {
+ typedef DestroySampler ValueType;
+ static const CommandId kCmdId = command_buffer::kDestroySampler;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id) {
+ SetHeader();
+ id = _id;
+ }
+
+ static void* Set(void* cmd, uint32 id) {
+ static_cast<ValueType*>(cmd)->Init(id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
};
-struct SET_SAMPLER_STATES {
- static const CommandId kCmdId = command_buffer::SET_SAMPLER_STATES;
- static const ArgFlags kArgFlags = kAtLeastN;
+COMPILE_ASSERT(sizeof(DestroySampler) == 8, Sizeof_DestroySampler_is_not_8);
+COMPILE_ASSERT(offsetof(DestroySampler, header) == 0,
+ OffsetOf_DestroySampler_header_not_0);
+COMPILE_ASSERT(offsetof(DestroySampler, id) == 4,
+ OffsetOf_DestroySampler_id_not_4);
+
+struct SetSamplerStates {
+ typedef SetSamplerStates ValueType;
+ static const CommandId kCmdId = command_buffer::kSetSamplerStates;
+ static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(
+ uint32 _id,
+ uint32 _address_u_value,
+ uint32 _address_v_value,
+ uint32 _address_w_value,
+ uint32 _mag_filter_value,
+ uint32 _min_filter_value,
+ uint32 _mip_filter_value,
+ uint32 _max_anisotropy) {
+ SetHeader();
+ id = _id;
+ fixme1 =
+ set_sampler_states::AddressingU::MakeValue(_address_u_value) |
+ set_sampler_states::AddressingV::MakeValue(_address_v_value) |
+ set_sampler_states::AddressingW::MakeValue(_address_w_value) |
+ set_sampler_states::MagFilter::MakeValue(_mag_filter_value) |
+ set_sampler_states::MinFilter::MakeValue(_min_filter_value) |
+ set_sampler_states::MipFilter::MakeValue(_mip_filter_value) |
+ set_sampler_states::MaxAnisotropy::MakeValue(_max_anisotropy);
+ }
+
+ static void* Set(void* cmd,
+ uint32 id,
+ uint32 address_u_value,
+ uint32 address_v_value,
+ uint32 address_w_value,
+ uint32 mag_filter_value,
+ uint32 min_filter_value,
+ uint32 mip_filter_value,
+ uint32 max_anisotropy) {
+ static_cast<ValueType*>(cmd)->Init(
+ id,
+ address_u_value,
+ address_v_value,
+ address_w_value,
+ mag_filter_value,
+ min_filter_value,
+ mip_filter_value,
+ max_anisotropy);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
+ uint32 id;
+ uint32 fixme1;
};
-struct SET_SAMPLER_BORDER_COLOR {
- static const CommandId kCmdId = command_buffer::SET_SAMPLER_BORDER_COLOR;
+COMPILE_ASSERT(sizeof(SetSamplerStates) == 12,
+ Sizeof_SetSamplerStates_is_not_12);
+COMPILE_ASSERT(offsetof(SetSamplerStates, header) == 0,
+ OffsetOf_SetSamplerStates_header_not_0);
+COMPILE_ASSERT(offsetof(SetSamplerStates, id) == 4,
+ OffsetOf_SetSamplerStates_id_not_4);
+COMPILE_ASSERT(offsetof(SetSamplerStates, fixme1) == 8,
+ OffsetOf_SetSamplerStates_fixme1_not_8);
+
+struct SetSamplerBorderColor {
+ typedef SetSamplerBorderColor ValueType;
+ static const CommandId kCmdId = command_buffer::kSetSamplerBorderColor;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id,
+ float _red, float _green, float _blue, float _alpha) {
+ SetHeader();
+ id = _id;
+ red = _red;
+ green = _green;
+ blue = _blue;
+ alpha = _alpha;
+ }
+
+ static void* Set(void* cmd, uint32 id,
+ float red, float green, float blue, float alpha) {
+ static_cast<ValueType*>(cmd)->Init(id, red, green, blue, alpha);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
float red;
float blue;
@@ -710,127 +2567,725 @@
float alpha;
};
-struct SET_SAMPLER_TEXTURE {
- static const CommandId kCmdId = command_buffer::SET_SAMPLER_TEXTURE;
+COMPILE_ASSERT(sizeof(SetSamplerBorderColor) == 24,
+ Sizeof_SetSamplerBorderColor_is_not_24);
+COMPILE_ASSERT(offsetof(SetSamplerBorderColor, header) == 0,
+ OffsetOf_SetSamplerBorderColor_header_not_0);
+COMPILE_ASSERT(offsetof(SetSamplerBorderColor, id) == 4,
+ OffsetOf_SetSamplerBorderColor_id_not_4);
+COMPILE_ASSERT(offsetof(SetSamplerBorderColor, red) == 8,
+ OffsetOf_SetSamplerBorderColor_red_not_8);
+COMPILE_ASSERT(offsetof(SetSamplerBorderColor, blue) == 12,
+ OffsetOf_SetSamplerBorderColor_blue_not_12);
+COMPILE_ASSERT(offsetof(SetSamplerBorderColor, green) == 16,
+ OffsetOf_SetSamplerBorderColor_green_not_16);
+COMPILE_ASSERT(offsetof(SetSamplerBorderColor, alpha) == 20,
+ OffsetOf_SetSamplerBorderColor_alpha_not_20);
+
+struct SetSamplerTexture {
+ typedef SetSamplerTexture ValueType;
+ static const CommandId kCmdId = command_buffer::kSetSamplerTexture;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _texture_id) {
+ SetHeader();
+ id = _id;
+ texture_id = _texture_id;
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 texture_id) {
+ static_cast<ValueType*>(cmd)->Init(id, texture_id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
uint32 texture_id;
};
-struct SET_SCISSOR {
- static const CommandId kCmdId = command_buffer::SET_SCISSOR;
+COMPILE_ASSERT(sizeof(SetSamplerTexture) == 12,
+ Sizeof_SetSamplerTexture_is_not_12);
+COMPILE_ASSERT(offsetof(SetSamplerTexture, header) == 0,
+ OffsetOf_SetSamplerTexture_header_not_0);
+COMPILE_ASSERT(offsetof(SetSamplerTexture, id) == 4,
+ OffsetOf_SetSamplerTexture_id_not_4);
+COMPILE_ASSERT(offsetof(SetSamplerTexture, texture_id) == 8,
+ OffsetOf_SetSamplerTexture_texture_id_not_8);
+
+struct SetScissor {
+ typedef SetScissor ValueType;
+ static const CommandId kCmdId = command_buffer::kSetScissor;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _x,
+ uint32 _y,
+ uint32 _width,
+ uint32 _height,
+ bool _enable) {
+ SetHeader();
+ fixme0 =
+ set_scissor::X::MakeValue(_x) |
+ set_scissor::Y::MakeValue(_y) |
+ set_scissor::Enable::MakeValue(_enable ? 1 : 0);
+ fixme1 =
+ set_scissor::Width::MakeValue(_width) |
+ set_scissor::Height::MakeValue(_height);
+ }
+
+ static void* Set(
+ void* cmd,
+ uint32 x,
+ uint32 y,
+ uint32 width,
+ uint32 height,
+ bool enable) {
+ static_cast<ValueType*>(cmd)->Init(
+ x,
+ y,
+ width,
+ height,
+ enable);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
uint32 fixme0;
uint32 fixme1;
};
-struct SET_POLYGON_OFFSET {
- static const CommandId kCmdId = command_buffer::SET_POLYGON_OFFSET;
+COMPILE_ASSERT(sizeof(SetScissor) == 12, Sizeof_SetScissor_is_not_12);
+COMPILE_ASSERT(offsetof(SetScissor, header) == 0,
+ OffsetOf_SetScissor_header_not_0);
+COMPILE_ASSERT(offsetof(SetScissor, fixme0) == 4,
+ OffsetOf_SetScissor_fixme0_not_4);
+COMPILE_ASSERT(offsetof(SetScissor, fixme1) == 8,
+ OffsetOf_SetScissor_fixme1_not_8);
+
+struct SetPolygonOffset {
+ typedef SetPolygonOffset ValueType;
+ static const CommandId kCmdId = command_buffer::kSetPolygonOffset;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(float _slope_factor, float _units) {
+ SetHeader();
+ slope_factor = _slope_factor;
+ units = _units;
+ }
+
+ static void* Set(void* cmd, float slope_factor, float units) {
+ static_cast<ValueType*>(cmd)->Init(slope_factor, units);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
float slope_factor;
float units;
};
-struct SET_POINT_LINE_RASTER {
- static const CommandId kCmdId = command_buffer::SET_POINT_LINE_RASTER;
+COMPILE_ASSERT(sizeof(SetPolygonOffset) == 12,
+ Sizeof_SetPolygonOffset_is_not_12);
+COMPILE_ASSERT(offsetof(SetPolygonOffset, header) == 0,
+ OffsetOf_SetPolygonOffset_header_not_0);
+COMPILE_ASSERT(offsetof(SetPolygonOffset, slope_factor) == 4,
+ OffsetOf_SetPolygonOffset_slope_factor_not_4);
+COMPILE_ASSERT(offsetof(SetPolygonOffset, units) == 8,
+ OffsetOf_SetPolygonOffset_units_not_8);
+
+struct SetPointLineRaster {
+ typedef SetPointLineRaster ValueType;
+ static const CommandId kCmdId = command_buffer::kSetPointLineRaster;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(bool _line_smooth_enable, bool _point_sprite_enable,
+ float _point_size) {
+ SetHeader();
+ fixme0 =
+ set_point_line_raster::LineSmoothEnable::MakeValue(
+ _line_smooth_enable ? 1 : 0) |
+ set_point_line_raster::PointSpriteEnable::MakeValue(
+ _point_sprite_enable ? 1 : 0);
+ point_size = _point_size;
+ }
+
+ static void* Set(void* cmd, bool line_smooth_enable, bool point_sprite_enable,
+ float point_size) {
+ static_cast<ValueType*>(cmd)->Init(line_smooth_enable, point_sprite_enable,
+ point_size);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
uint32 fixme0;
float point_size;
};
-struct SET_POLYGON_RASTER {
- static const CommandId kCmdId = command_buffer::SET_POLYGON_RASTER;
+COMPILE_ASSERT(sizeof(SetPointLineRaster) == 12,
+ Sizeof_SetPointLineRaster_is_not_12);
+COMPILE_ASSERT(offsetof(SetPointLineRaster, header) == 0,
+ OffsetOf_SetPointLineRaster_header_not_0);
+COMPILE_ASSERT(offsetof(SetPointLineRaster, fixme0) == 4,
+ OffsetOf_SetPointLineRaster_fixme0_not_4);
+COMPILE_ASSERT(offsetof(SetPointLineRaster, point_size) == 8,
+ OffsetOf_SetPointLineRaster_point_size_not_8);
+
+struct SetPolygonRaster {
+ typedef SetPolygonRaster ValueType;
+ static const CommandId kCmdId = command_buffer::kSetPolygonRaster;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _fill_mode, uint32 _cull_mode) {
+ SetHeader();
+ fixme0 =
+ set_polygon_raster::FillMode::MakeValue(_fill_mode) |
+ set_polygon_raster::CullMode::MakeValue(_cull_mode);
+ }
+
+ static void* Set(void* cmd, uint32 fill_mode, uint32 cull_mode) {
+ static_cast<ValueType*>(cmd)->Init(fill_mode, cull_mode);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
uint32 fixme0;
};
-struct SET_ALPHA_TEST {
- static const CommandId kCmdId = command_buffer::SET_ALPHA_TEST;
+COMPILE_ASSERT(sizeof(SetPolygonRaster) == 8,
+ Sizeof_SetPolygonRaster_is_not_8);
+COMPILE_ASSERT(offsetof(SetPolygonRaster, header) == 0,
+ OffsetOf_SetPolygonRaster_header_not_0);
+COMPILE_ASSERT(offsetof(SetPolygonRaster, fixme0) == 4,
+ OffsetOf_SetPolygonRaster_fixme0_not_4);
+
+struct SetAlphaTest {
+ typedef SetAlphaTest ValueType;
+ static const CommandId kCmdId = command_buffer::kSetAlphaTest;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _func, bool _enable, float _value) {
+ SetHeader();
+ fixme0 =
+ set_alpha_test::Func::MakeValue(_func) |
+ set_alpha_test::Enable::MakeValue(_enable ? 1 : 0);
+ value = _value;
+ }
+
+ static void* Set(void* cmd, uint32 func, bool enable, float value) {
+ static_cast<ValueType*>(cmd)->Init(func, enable, value);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
uint32 fixme0;
float value;
};
-struct SET_DEPTH_TEST {
- static const CommandId kCmdId = command_buffer::SET_DEPTH_TEST;
+COMPILE_ASSERT(sizeof(SetAlphaTest) == 12, Sizeof_SetAlphaTest_is_not_12);
+COMPILE_ASSERT(offsetof(SetAlphaTest, header) == 0,
+ OffsetOf_SetAlphaTest_header_not_0);
+COMPILE_ASSERT(offsetof(SetAlphaTest, fixme0) == 4,
+ OffsetOf_SetAlphaTest_fixme0_not_4);
+COMPILE_ASSERT(offsetof(SetAlphaTest, value) == 8,
+ OffsetOf_SetAlphaTest_value_not_8);
+
+struct SetDepthTest {
+ typedef SetDepthTest ValueType;
+ static const CommandId kCmdId = command_buffer::kSetDepthTest;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _func, bool _write_enable, bool _enable) {
+ SetHeader();
+ fixme0 =
+ set_depth_test::Func::MakeValue(_func) |
+ set_depth_test::WriteEnable::MakeValue(_write_enable ? 1 : 0) |
+ set_depth_test::Enable::MakeValue(_enable ? 1 : 0);
+ }
+
+ static void* Set(void* cmd, uint32 func, bool write_enable, bool enable) {
+ static_cast<ValueType*>(cmd)->Init(func, write_enable, enable);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
uint32 fixme0;
};
-struct SET_STENCIL_TEST {
- static const CommandId kCmdId = command_buffer::SET_STENCIL_TEST;
- static const ArgFlags kArgFlags = kAtLeastN;
+COMPILE_ASSERT(sizeof(SetDepthTest) == 8, Sizeof_SetDepthTest_is_not_8);
+COMPILE_ASSERT(offsetof(SetDepthTest, header) == 0,
+ OffsetOf_SetDepthTest_header_not_0);
+COMPILE_ASSERT(offsetof(SetDepthTest, fixme0) == 4,
+ OffsetOf_SetDepthTest_fixme0_not_4);
+
+struct SetStencilTest {
+ typedef SetStencilTest ValueType;
+ static const CommandId kCmdId = command_buffer::kSetStencilTest;
+ static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint8 _write_mask,
+ uint8 _compare_mask,
+ uint8 _reference_value,
+ bool _separate_ccw,
+ bool _enable,
+ uint8 _cw_func,
+ uint8 _cw_pass_op,
+ uint8 _cw_fail_op,
+ uint8 _cw_z_fail_op,
+ uint8 _ccw_func,
+ uint8 _ccw_pass_op,
+ uint8 _ccw_fail_op,
+ uint8 _ccw_z_fail_op) {
+ SetHeader();
+ fixme0 =
+ set_stencil_test::WriteMask::MakeValue(_write_mask) |
+ set_stencil_test::CompareMask::MakeValue(_compare_mask) |
+ set_stencil_test::ReferenceValue::MakeValue(_reference_value) |
+ set_stencil_test::SeparateCCW::MakeValue(_separate_ccw ? 1 : 0) |
+ set_stencil_test::Enable::MakeValue(_enable ? 1 : 0);
+ fixme1 =
+ set_stencil_test::CWFunc::MakeValue(_cw_func) |
+ set_stencil_test::CWPassOp::MakeValue(_cw_pass_op) |
+ set_stencil_test::CWFailOp::MakeValue(_cw_fail_op) |
+ set_stencil_test::CWZFailOp::MakeValue(_cw_z_fail_op) |
+ set_stencil_test::CCWFunc::MakeValue(_ccw_func) |
+ set_stencil_test::CCWPassOp::MakeValue(_ccw_pass_op) |
+ set_stencil_test::CCWFailOp::MakeValue(_ccw_fail_op) |
+ set_stencil_test::CCWZFailOp::MakeValue(_ccw_z_fail_op);
+ }
+
+ static void* Set(
+ void* cmd,
+ uint8 write_mask,
+ uint8 compare_mask,
+ uint8 reference_value,
+ bool separate_ccw,
+ bool enable,
+ uint8 cw_func,
+ uint8 cw_pass_op,
+ uint8 cw_fail_op,
+ uint8 cw_z_fail_op,
+ uint8 ccw_func,
+ uint8 ccw_pass_op,
+ uint8 ccw_fail_op,
+ uint8 ccw_z_fail_op) {
+ static_cast<ValueType*>(cmd)->Init(
+ write_mask,
+ compare_mask,
+ reference_value,
+ separate_ccw,
+ enable,
+ cw_func,
+ cw_pass_op,
+ cw_fail_op,
+ cw_z_fail_op,
+ ccw_func,
+ ccw_pass_op,
+ ccw_fail_op,
+ ccw_z_fail_op);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
+ uint32 fixme0;
+ uint32 fixme1;
};
-struct SET_COLOR_WRITE {
- static const CommandId kCmdId = command_buffer::SET_COLOR_WRITE;
+COMPILE_ASSERT(sizeof(SetStencilTest) == 12,
+ Sizeof_SetStencilTest_is_not_12);
+COMPILE_ASSERT(offsetof(SetStencilTest, header) == 0,
+ OffsetOf_SetStencilTest_header_not_0);
+COMPILE_ASSERT(offsetof(SetStencilTest, fixme0) == 4,
+ OffsetOf_SetStencilTest_fixme0_not_4);
+COMPILE_ASSERT(offsetof(SetStencilTest, fixme1) == 8,
+ OffsetOf_SetStencilTest_fixme1_not_8);
+
+struct SetColorWrite {
+ typedef SetColorWrite ValueType;
+ static const CommandId kCmdId = command_buffer::kSetColorWrite;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint8 _mask, bool _dither_enable) {
+ SetHeader();
+ flags =
+ set_color_write::RedMask::MakeValue((_mask | 0x01) != 0 ? 1 : 0) |
+ set_color_write::GreenMask::MakeValue((_mask | 0x02) != 0 ? 1 : 0) |
+ set_color_write::BlueMask::MakeValue((_mask | 0x02) != 0 ? 1 : 0) |
+ set_color_write::AlphaMask::MakeValue((_mask | 0x02) != 0 ? 1 : 0) |
+ set_color_write::DitherEnable::MakeValue(_dither_enable ? 1 : 0);
+ }
+
+ static void* Set(void* cmd, uint8 mask, bool dither_enable) {
+ static_cast<ValueType*>(cmd)->Init(mask, dither_enable);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 flags;
};
-struct SET_BLENDING {
- static const CommandId kCmdId = command_buffer::SET_BLENDING;
- static const ArgFlags kArgFlags = kAtLeastN;
+COMPILE_ASSERT(sizeof(SetColorWrite) == 8, Sizeof_SetColorWrite_is_not_8);
+COMPILE_ASSERT(offsetof(SetColorWrite, header) == 0,
+ OffsetOf_SetColorWrite_header_not_0);
+COMPILE_ASSERT(offsetof(SetColorWrite, flags) == 4,
+ OffsetOf_SetColorWrite_flags_not_4);
+
+struct SetBlending {
+ typedef SetBlending ValueType;
+ static const CommandId kCmdId = command_buffer::kSetBlending;
+ static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(
+ uint8 _color_src_func,
+ uint8 _color_dst_func,
+ uint8 _color_eq,
+ uint8 _alpha_src_func,
+ uint8 _alpha_dst_func,
+ uint8 _alpha_eq,
+ bool _separate_alpha,
+ bool _enable) {
+ SetHeader();
+ fixme0 =
+ set_blending::ColorSrcFunc::MakeValue(_color_src_func) |
+ set_blending::ColorDstFunc::MakeValue(_color_dst_func) |
+ set_blending::ColorEq::MakeValue(_color_eq) |
+ set_blending::AlphaSrcFunc::MakeValue(_alpha_src_func) |
+ set_blending::AlphaDstFunc::MakeValue(_alpha_dst_func) |
+ set_blending::AlphaEq::MakeValue(_alpha_eq) |
+ set_blending::SeparateAlpha::MakeValue(_separate_alpha ? 1 : 0) |
+ set_blending::Enable::MakeValue(_enable ? 1 : 0);
+ }
+
+ static void* Set(
+ void* cmd,
+ uint8 color_src_func,
+ uint8 color_dst_func,
+ uint8 color_eq,
+ uint8 alpha_src_func,
+ uint8 alpha_dst_func,
+ uint8 alpha_eq,
+ bool separate_alpha,
+ bool enable) {
+ static_cast<ValueType*>(cmd)->Init(
+ color_src_func,
+ color_dst_func,
+ color_eq,
+ alpha_src_func,
+ alpha_dst_func,
+ alpha_eq,
+ separate_alpha,
+ enable);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
+ uint32 fixme0;
};
-struct SET_BLENDING_COLOR {
- static const CommandId kCmdId = command_buffer::SET_BLENDING_COLOR;
+COMPILE_ASSERT(sizeof(SetBlending) == 8, Sizeof_SetBlending_is_not_8);
+COMPILE_ASSERT(offsetof(SetBlending, header) == 0,
+ OffsetOf_SetBlending_header_not_0);
+COMPILE_ASSERT(offsetof(SetBlending, fixme0) == 4,
+ OffsetOf_SetBlending_fixme0_not_4);
+
+struct SetBlendingColor {
+ typedef SetBlendingColor ValueType;
+ static const CommandId kCmdId = command_buffer::kSetBlendingColor;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(float _red, float _green, float _blue, float _alpha) {
+ SetHeader();
+ red = _red;
+ green = _green;
+ blue = _blue;
+ alpha = _alpha;
+ }
+
+ static void* Set(void* cmd,
+ float red, float green, float blue, float alpha) {
+ static_cast<ValueType*>(cmd)->Init(red, green, blue, alpha);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
float red;
float blue;
float green;
float alpha;
};
-struct CREATE_RENDER_SURFACE {
- static const CommandId kCmdId = command_buffer::CREATE_RENDER_SURFACE;
+COMPILE_ASSERT(sizeof(SetBlendingColor) == 20,
+ Sizeof_SetBlendingColor_is_not_20);
+COMPILE_ASSERT(offsetof(SetBlendingColor, header) == 0,
+ OffsetOf_SetBlendingColor_header_not_0);
+COMPILE_ASSERT(offsetof(SetBlendingColor, red) == 4,
+ OffsetOf_SetBlendingColor_red_not_4);
+COMPILE_ASSERT(offsetof(SetBlendingColor, blue) == 8,
+ OffsetOf_SetBlendingColor_blue_not_8);
+COMPILE_ASSERT(offsetof(SetBlendingColor, green) == 12,
+ OffsetOf_SetBlendingColor_green_not_12);
+COMPILE_ASSERT(offsetof(SetBlendingColor, alpha) == 16,
+ OffsetOf_SetBlendingColor_alpha_not_16);
+
+struct CreateRenderSurface {
+ typedef CreateRenderSurface ValueType;
+ static const CommandId kCmdId = command_buffer::kCreateRenderSurface;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _texture_id, uint32 _width, uint32 _height,
+ uint32 _level, uint32 _side) {
+ SetHeader();
+ id = _id;
+ // TODO(gman): Why does this need a width and height. It's inherited from
+ // the texture isn't it?
+ fixme1 =
+ create_render_surface_cmd::Width::MakeValue(_width) |
+ create_render_surface_cmd::Height::MakeValue(_height);
+ fixme2 =
+ create_render_surface_cmd::Levels::MakeValue(_level) |
+ create_render_surface_cmd::Side::MakeValue(_side);
+ texture_id = _texture_id;
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 texture_id,
+ uint32 width, uint32 height,
+ uint32 level, uint32 side) {
+ static_cast<ValueType*>(cmd)->Init(id, texture_id, width, height,
+ level, side);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
uint32 id;
uint32 fixme1;
uint32 fixme2;
uint32 texture_id;
};
-struct DESTROY_RENDER_SURFACE {
- static const CommandId kCmdId = command_buffer::DESTROY_RENDER_SURFACE;
+COMPILE_ASSERT(sizeof(CreateRenderSurface) == 20,
+ Sizeof_CreateRenderSurface_is_not_20);
+COMPILE_ASSERT(offsetof(CreateRenderSurface, header) == 0,
+ OffsetOf_CreateRenderSurface_header_not_0);
+COMPILE_ASSERT(offsetof(CreateRenderSurface, id) == 4,
+ OffsetOf_CreateRenderSurface_id_not_4);
+COMPILE_ASSERT(offsetof(CreateRenderSurface, fixme1) == 8,
+ OffsetOf_CreateRenderSurface_fixme1_not_8);
+COMPILE_ASSERT(offsetof(CreateRenderSurface, fixme2) == 12,
+ OffsetOf_CreateRenderSurface_fixme2_not_12);
+COMPILE_ASSERT(offsetof(CreateRenderSurface, texture_id) == 16,
+ OffsetOf_CreateRenderSurface_texture_id_not_16);
+
+struct DestroyRenderSurface {
+ typedef DestroyRenderSurface ValueType;
+ static const CommandId kCmdId = command_buffer::kDestroyRenderSurface;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id) {
+ SetHeader();
+ id = _id;
+ }
+
+ static void* Set(void* cmd, uint32 id) {
+ static_cast<ValueType*>(cmd)->Init(id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
};
-struct CREATE_DEPTH_SURFACE {
- static const CommandId kCmdId = command_buffer::CREATE_DEPTH_SURFACE;
+COMPILE_ASSERT(sizeof(DestroyRenderSurface) == 8,
+ Sizeof_DestroyRenderSurface_is_not_8);
+COMPILE_ASSERT(offsetof(DestroyRenderSurface, header) == 0,
+ OffsetOf_DestroyRenderSurface_header_not_0);
+COMPILE_ASSERT(offsetof(DestroyRenderSurface, id) == 4,
+ OffsetOf_DestroyRenderSurface_id_not_4);
+
+struct CreateDepthSurface {
+ typedef CreateDepthSurface ValueType;
+ static const CommandId kCmdId = command_buffer::kCreateDepthSurface;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id, uint32 _width, uint32 _height) {
+ SetHeader();
+ id = _id;
+ fixme1 =
+ create_depth_surface_cmd::Width::MakeValue(_width) |
+ create_depth_surface_cmd::Height::MakeValue(_height);
+ }
+
+ static void* Set(void* cmd, uint32 id, uint32 width, uint32 height) {
+ static_cast<ValueType*>(cmd)->Init(id, width, height);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
// TODO(gman): fix this to not use obfusticated fields.
+ CommandHeader header;
uint32 id;
uint32 fixme1;
};
-struct DESTROY_DEPTH_SURFACE {
- static const CommandId kCmdId = command_buffer::DESTROY_DEPTH_SURFACE;
+COMPILE_ASSERT(sizeof(CreateDepthSurface) == 12,
+ Sizeof_CreateDepthSurface_is_not_12);
+COMPILE_ASSERT(offsetof(CreateDepthSurface, header) == 0,
+ OffsetOf_CreateDepthSurface_header_not_0);
+COMPILE_ASSERT(offsetof(CreateDepthSurface, id) == 4,
+ OffsetOf_CreateDepthSurface_id_not_4);
+COMPILE_ASSERT(offsetof(CreateDepthSurface, fixme1) == 8,
+ OffsetOf_CreateDepthSurface_fixme1_not_8);
+
+struct DestroyDepthSurface {
+ typedef DestroyDepthSurface ValueType;
+ static const CommandId kCmdId = command_buffer::kDestroyDepthSurface;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _id) {
+ SetHeader();
+ id = _id;
+ }
+
+ static void* Set(void* cmd, uint32 id) {
+ static_cast<ValueType*>(cmd)->Init(id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 id;
};
-struct SET_RENDER_SURFACE {
- static const CommandId kCmdId = command_buffer::SET_RENDER_SURFACE;
+COMPILE_ASSERT(sizeof(DestroyDepthSurface) == 8,
+ Sizeof_DestroyDepthSurface_is_not_8);
+COMPILE_ASSERT(offsetof(DestroyDepthSurface, header) == 0,
+ OffsetOf_DestroyDepthSurface_header_not_0);
+COMPILE_ASSERT(offsetof(DestroyDepthSurface, id) == 4,
+ OffsetOf_DestroyDepthSurface_id_not_4);
+
+struct SetRenderSurface {
+ typedef SetRenderSurface ValueType;
+ static const CommandId kCmdId = command_buffer::kSetRenderSurface;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(uint32 _render_surface_id, uint32 _depth_surface_id) {
+ SetHeader();
+ render_surface_id = _render_surface_id;
+ depth_surface_id = _depth_surface_id;
+ }
+
+ static void* Set(void* cmd,
+ uint32 render_surface_id, uint32 depth_surface_id) {
+ static_cast<ValueType*>(cmd)->Init(render_surface_id, depth_surface_id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
uint32 render_surface_id;
uint32 depth_surface_id;
};
-struct SET_BACK_SURFACES {
- static const CommandId kCmdId = command_buffer::SET_BACK_SURFACES;
+COMPILE_ASSERT(sizeof(SetRenderSurface) == 12,
+ Sizeof_SetRenderSurface_is_not_12);
+COMPILE_ASSERT(offsetof(SetRenderSurface, header) == 0,
+ OffsetOf_SetRenderSurface_header_not_0);
+COMPILE_ASSERT(offsetof(SetRenderSurface, render_surface_id) == 4,
+ OffsetOf_SetRenderSurface_render_surface_id_not_4);
+COMPILE_ASSERT(offsetof(SetRenderSurface, depth_surface_id) == 8,
+ OffsetOf_SetRenderSurface_depth_surface_id_not_8);
+
+struct SetBackSurfaces {
+ typedef SetBackSurfaces ValueType;
+ static const CommandId kCmdId = command_buffer::kSetBackSurfaces;
static const ArgFlags kArgFlags = kFixed;
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init() {
+ SetHeader();
+ }
+
+ static void* Set(void* cmd) {
+ static_cast<ValueType*>(cmd)->Init();
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ CommandHeader header;
};
+COMPILE_ASSERT(sizeof(SetBackSurfaces) == 4,
+ Sizeof_SetBackSurfaces_is_not_4);
+COMPILE_ASSERT(offsetof(SetBackSurfaces, header) == 0,
+ OffsetOf_SetBackSurfaces_header_not_0);
+
O3D_POP_STRUCTURE_PACKING;
} // namespace cmd
« no previous file with comments | « command_buffer/common/cross/buffer_sync_api.h ('k') | command_buffer/common/cross/gapi_interface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698