OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2009, Google Inc. | 2 * Copyright 2009, Google Inc. |
3 * All rights reserved. | 3 * All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 namespace o3d { | 67 namespace o3d { |
68 | 68 |
69 // This macro is used to safely and convienently expand the list of commnad | 69 // This macro is used to safely and convienently expand the list of commnad |
70 // buffer commands in to various lists and never have them get out of sync. To | 70 // buffer commands in to various lists and never have them get out of sync. To |
71 // add a new command, add it this list, create the corresponding structure below | 71 // add a new command, add it this list, create the corresponding structure below |
72 // and then add a function in gapi_decoder.cc called Handle_COMMAND_NAME where | 72 // and then add a function in gapi_decoder.cc called Handle_COMMAND_NAME where |
73 // COMMAND_NAME is the name of your command structure. | 73 // COMMAND_NAME is the name of your command structure. |
74 // | 74 // |
75 // NOTE: THE ORDER OF THESE MUST NOT CHANGE (their id is derived by order) | 75 // NOTE: THE ORDER OF THESE MUST NOT CHANGE (their id is derived by order) |
76 #define O3D_COMMAND_BUFFER_CMDS(OP) \ | 76 #define O3D_COMMAND_BUFFER_CMDS(OP) \ |
77 OP(Noop) /* 1024 */ \ | 77 OP(BeginFrame) /* 1024 */ \ |
78 OP(SetToken) /* 1025 */ \ | 78 OP(EndFrame) /* 1025 */ \ |
79 OP(BeginFrame) /* 1026 */ \ | 79 OP(Clear) /* 1026 */ \ |
80 OP(EndFrame) /* 1027 */ \ | 80 OP(CreateVertexBuffer) /* 1027 */ \ |
81 OP(Clear) /* 1028 */ \ | 81 OP(DestroyVertexBuffer) /* 1028 */ \ |
82 OP(CreateVertexBuffer) /* 1029 */ \ | 82 OP(SetVertexBufferData) /* 1029 */ \ |
83 OP(DestroyVertexBuffer) /* 1030 */ \ | 83 OP(SetVertexBufferDataImmediate) /* 1030 */ \ |
84 OP(SetVertexBufferData) /* 1031 */ \ | 84 OP(GetVertexBufferData) /* 1031 */ \ |
85 OP(SetVertexBufferDataImmediate) /* 1032 */ \ | 85 OP(CreateIndexBuffer) /* 1032 */ \ |
86 OP(GetVertexBufferData) /* 1033 */ \ | 86 OP(DestroyIndexBuffer) /* 1033 */ \ |
87 OP(CreateIndexBuffer) /* 1034 */ \ | 87 OP(SetIndexBufferData) /* 1034 */ \ |
88 OP(DestroyIndexBuffer) /* 1035 */ \ | 88 OP(SetIndexBufferDataImmediate) /* 1035 */ \ |
89 OP(SetIndexBufferData) /* 1036 */ \ | 89 OP(GetIndexBufferData) /* 1036 */ \ |
90 OP(SetIndexBufferDataImmediate) /* 1037 */ \ | 90 OP(CreateVertexStruct) /* 1037 */ \ |
91 OP(GetIndexBufferData) /* 1038 */ \ | 91 OP(DestroyVertexStruct) /* 1038 */ \ |
92 OP(CreateVertexStruct) /* 1039 */ \ | 92 OP(SetVertexInput) /* 1039 */ \ |
93 OP(DestroyVertexStruct) /* 1040 */ \ | 93 OP(SetVertexStruct) /* 1040 */ \ |
94 OP(SetVertexInput) /* 1041 */ \ | 94 OP(Draw) /* 1041 */ \ |
95 OP(SetVertexStruct) /* 1042 */ \ | 95 OP(DrawIndexed) /* 1042 */ \ |
96 OP(Draw) /* 1043 */ \ | 96 OP(CreateEffect) /* 1043 */ \ |
97 OP(DrawIndexed) /* 1044 */ \ | 97 OP(CreateEffectImmediate) /* 1044 */ \ |
98 OP(CreateEffect) /* 1045 */ \ | 98 OP(DestroyEffect) /* 1045 */ \ |
99 OP(CreateEffectImmediate) /* 1046 */ \ | 99 OP(SetEffect) /* 1046 */ \ |
100 OP(DestroyEffect) /* 1047 */ \ | 100 OP(GetParamCount) /* 1047 */ \ |
101 OP(SetEffect) /* 1048 */ \ | 101 OP(CreateParam) /* 1048 */ \ |
102 OP(GetParamCount) /* 1049 */ \ | 102 OP(CreateParamByName) /* 1049 */ \ |
103 OP(CreateParam) /* 1050 */ \ | 103 OP(CreateParamByNameImmediate) /* 1050 */ \ |
104 OP(CreateParamByName) /* 1051 */ \ | 104 OP(DestroyParam) /* 1051 */ \ |
105 OP(CreateParamByNameImmediate) /* 1052 */ \ | 105 OP(SetParamData) /* 1052 */ \ |
106 OP(DestroyParam) /* 1053 */ \ | 106 OP(SetParamDataImmediate) /* 1053 */ \ |
107 OP(SetParamData) /* 1054 */ \ | 107 OP(GetParamDesc) /* 1054 */ \ |
108 OP(SetParamDataImmediate) /* 1055 */ \ | 108 OP(GetStreamCount) /* 1055 */ \ |
109 OP(GetParamDesc) /* 1056 */ \ | 109 OP(GetStreamDesc) /* 1056 */ \ |
110 OP(GetStreamCount) /* 1057 */ \ | 110 OP(DestroyTexture) /* 1057 */ \ |
111 OP(GetStreamDesc) /* 1058 */ \ | 111 OP(CreateTexture2d) /* 1058 */ \ |
112 OP(DestroyTexture) /* 1059 */ \ | 112 OP(CreateTexture3d) /* 1059 */ \ |
113 OP(CreateTexture2d) /* 1060 */ \ | 113 OP(CreateTextureCube) /* 1060 */ \ |
114 OP(CreateTexture3d) /* 1061 */ \ | 114 OP(SetTextureData) /* 1061 */ \ |
115 OP(CreateTextureCube) /* 1062 */ \ | 115 OP(SetTextureDataImmediate) /* 1062 */ \ |
116 OP(SetTextureData) /* 1063 */ \ | 116 OP(GetTextureData) /* 1063 */ \ |
117 OP(SetTextureDataImmediate) /* 1064 */ \ | 117 OP(CreateSampler) /* 1064 */ \ |
118 OP(GetTextureData) /* 1065 */ \ | 118 OP(DestroySampler) /* 1065 */ \ |
119 OP(CreateSampler) /* 1066 */ \ | 119 OP(SetSamplerStates) /* 1066 */ \ |
120 OP(DestroySampler) /* 1067 */ \ | 120 OP(SetSamplerBorderColor) /* 1067 */ \ |
121 OP(SetSamplerStates) /* 1068 */ \ | 121 OP(SetSamplerTexture) /* 1068 */ \ |
122 OP(SetSamplerBorderColor) /* 1069 */ \ | 122 OP(SetViewport) /* 1069 */ \ |
123 OP(SetSamplerTexture) /* 1070 */ \ | 123 OP(SetScissor) /* 1070 */ \ |
124 OP(SetViewport) /* 1071 */ \ | 124 OP(SetPointLineRaster) /* 1071 */ \ |
125 OP(SetScissor) /* 1072 */ \ | 125 OP(SetPolygonRaster) /* 1072 */ \ |
126 OP(SetPointLineRaster) /* 1073 */ \ | 126 OP(SetPolygonOffset) /* 1073 */ \ |
127 OP(SetPolygonRaster) /* 1074 */ \ | 127 OP(SetAlphaTest) /* 1074 */ \ |
128 OP(SetPolygonOffset) /* 1075 */ \ | 128 OP(SetDepthTest) /* 1075 */ \ |
129 OP(SetAlphaTest) /* 1076 */ \ | 129 OP(SetStencilTest) /* 1076 */ \ |
130 OP(SetDepthTest) /* 1077 */ \ | 130 OP(SetBlending) /* 1077 */ \ |
131 OP(SetStencilTest) /* 1078 */ \ | 131 OP(SetBlendingColor) /* 1078 */ \ |
132 OP(SetBlending) /* 1079 */ \ | 132 OP(SetColorWrite) /* 1079 */ \ |
133 OP(SetBlendingColor) /* 1080 */ \ | 133 OP(CreateRenderSurface) /* 1080 */ \ |
134 OP(SetColorWrite) /* 1081 */ \ | 134 OP(DestroyRenderSurface) /* 1081 */ \ |
135 OP(CreateRenderSurface) /* 1082 */ \ | 135 OP(CreateDepthSurface) /* 1082 */ \ |
136 OP(DestroyRenderSurface) /* 1083 */ \ | 136 OP(DestroyDepthSurface) /* 1083 */ \ |
137 OP(CreateDepthSurface) /* 1084 */ \ | 137 OP(SetRenderSurface) /* 1084 */ \ |
138 OP(DestroyDepthSurface) /* 1085 */ \ | 138 OP(SetBackSurfaces) /* 1085 */ \ |
139 OP(SetRenderSurface) /* 1086 */ \ | |
140 OP(SetBackSurfaces) /* 1087 */ \ | |
141 | 139 |
142 | 140 |
143 // GAPI commands. | 141 // GAPI commands. |
144 enum CommandId { | 142 enum CommandId { |
145 // kStartPoint = cmd::kLastCommonId, // All O3D commands start after this. | 143 kStartPoint = cmd::kLastCommonId, // All O3D commands start after this. |
146 #define O3D_COMMAND_BUFFER_CMD_OP(name) k ## name, | 144 #define O3D_COMMAND_BUFFER_CMD_OP(name) k ## name, |
147 | 145 |
148 O3D_COMMAND_BUFFER_CMDS(O3D_COMMAND_BUFFER_CMD_OP) | 146 O3D_COMMAND_BUFFER_CMDS(O3D_COMMAND_BUFFER_CMD_OP) |
149 | 147 |
150 #undef O3D_COMMAND_BUFFER_CMD_OP | 148 #undef O3D_COMMAND_BUFFER_CMD_OP |
151 | 149 |
152 kNumCommands, | 150 kNumCommands, |
153 }; | 151 }; |
154 | 152 |
155 // Bit definitions for buffers to clear. | 153 // Bit definitions for buffers to clear. |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 kBlendFuncInvBlendColor, | 238 kBlendFuncInvBlendColor, |
241 kNumBlendFunc | 239 kNumBlendFunc |
242 }; | 240 }; |
243 | 241 |
244 const char* GetCommandName(CommandId id); | 242 const char* GetCommandName(CommandId id); |
245 | 243 |
246 // Make sure the compiler does not add extra padding to any of the command | 244 // Make sure the compiler does not add extra padding to any of the command |
247 // structures. | 245 // structures. |
248 O3D_PUSH_STRUCTURE_PACKING_1; | 246 O3D_PUSH_STRUCTURE_PACKING_1; |
249 | 247 |
250 struct Noop { | |
251 typedef Noop ValueType; | |
252 static const CommandId kCmdId = kNoop; | |
253 static const cmd::ArgFlags kArgFlags = cmd::kAtLeastN; | |
254 | |
255 void SetHeader(uint32 skip_count) { | |
256 header.Init(kCmdId, skip_count + 1); | |
257 } | |
258 | |
259 void Init(uint32 skip_count) { | |
260 SetHeader(skip_count); | |
261 } | |
262 | |
263 static void* Set(void* cmd, uint32 skip_count) { | |
264 static_cast<ValueType*>(cmd)->Init(skip_count); | |
265 return NextImmediateCmdAddress<ValueType>( | |
266 cmd, skip_count * sizeof(CommandBufferEntry)); // NOLINT | |
267 } | |
268 | |
269 CommandHeader header; | |
270 }; | |
271 | |
272 COMPILE_ASSERT(sizeof(Noop) == 4, Sizeof_Noop_is_not_4); | |
273 COMPILE_ASSERT(offsetof(Noop, header) == 0, Offsetof_Noop_header_not_0); | |
274 | |
275 struct SetToken { | |
276 typedef SetToken ValueType; | |
277 static const CommandId kCmdId = kSetToken; | |
278 static const cmd::ArgFlags kArgFlags = cmd::kFixed; | |
279 | |
280 void SetHeader() { | |
281 header.SetCmd<ValueType>(); | |
282 } | |
283 | |
284 void Init(uint32 _token) { | |
285 SetHeader(); | |
286 token = _token; | |
287 } | |
288 static void* Set(void* cmd, uint32 token) { | |
289 static_cast<ValueType*>(cmd)->Init(token); | |
290 return NextCmdAddress<ValueType>(cmd); | |
291 } | |
292 | |
293 CommandHeader header; | |
294 uint32 token; | |
295 }; | |
296 | |
297 COMPILE_ASSERT(sizeof(SetToken) == 8, Sizeof_SetToken_is_not_8); | |
298 COMPILE_ASSERT(offsetof(SetToken, header) == 0, | |
299 Offsetof_SetToken_header_not_0); | |
300 COMPILE_ASSERT(offsetof(SetToken, token) == 4, | |
301 Offsetof_SetToken_token_not_4); | |
302 | |
303 struct BeginFrame { | 248 struct BeginFrame { |
304 typedef BeginFrame ValueType; | 249 typedef BeginFrame ValueType; |
305 static const CommandId kCmdId = kBeginFrame; | 250 static const CommandId kCmdId = kBeginFrame; |
306 static const cmd::ArgFlags kArgFlags = cmd::kFixed; | 251 static const cmd::ArgFlags kArgFlags = cmd::kFixed; |
307 | 252 |
308 void SetHeader() { | 253 void SetHeader() { |
309 header.SetCmd<ValueType>(); | 254 header.SetCmd<ValueType>(); |
310 } | 255 } |
311 | 256 |
312 void Init() { | 257 void Init() { |
(...skipping 2890 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3203 COMPILE_ASSERT(offsetof(SetBackSurfaces, header) == 0, | 3148 COMPILE_ASSERT(offsetof(SetBackSurfaces, header) == 0, |
3204 OffsetOf_SetBackSurfaces_header_not_0); | 3149 OffsetOf_SetBackSurfaces_header_not_0); |
3205 | 3150 |
3206 O3D_POP_STRUCTURE_PACKING; | 3151 O3D_POP_STRUCTURE_PACKING; |
3207 | 3152 |
3208 } // namespace o3d | 3153 } // namespace o3d |
3209 } // namespace command_buffer | 3154 } // namespace command_buffer |
3210 } // namespace o3d | 3155 } // namespace o3d |
3211 | 3156 |
3212 #endif // O3D_COMMAND_BUFFER_COMMON_CROSS_CMD_BUFFER_FORMAT_H_ | 3157 #endif // O3D_COMMAND_BUFFER_COMMON_CROSS_CMD_BUFFER_FORMAT_H_ |
OLD | NEW |