• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0 OR MIT */
2 /*
3  * Copyright (c) 2012-2022 Broadcom. All Rights Reserved. The term
4  * "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
5  *
6  * Permission is hereby granted, free of charge, to any person
7  * obtaining a copy of this software and associated documentation
8  * files (the "Software"), to deal in the Software without
9  * restriction, including without limitation the rights to use, copy,
10  * modify, merge, publish, distribute, sublicense, and/or sell copies
11  * of the Software, and to permit persons to whom the Software is
12  * furnished to do so, subject to the following conditions:
13  *
14  * The above copyright notice and this permission notice shall be
15  * included in all copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
21  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24  * SOFTWARE.
25  *
26  */
27 
28 /*
29  * svga3d_cmd.h --
30  *
31  *    SVGA 3d hardware cmd definitions
32  */
33 
34 #ifndef _SVGA3D_CMD_H_
35 #define _SVGA3D_CMD_H_
36 
37 #include "svga3d_limits.h"
38 #include "svga3d_types.h"
39 #include "svga_reg.h"
40 
41 typedef enum SVGAFifo3dCmdId {
42    SVGA_3D_CMD_LEGACY_BASE = 1000,
43    SVGA_3D_CMD_BASE = 1040,
44 
45    SVGA_3D_CMD_SURFACE_DEFINE = 1040,
46    SVGA_3D_CMD_SURFACE_DESTROY = 1041,
47    SVGA_3D_CMD_SURFACE_COPY = 1042,
48    SVGA_3D_CMD_SURFACE_STRETCHBLT = 1043,
49    SVGA_3D_CMD_SURFACE_DMA = 1044,
50    SVGA_3D_CMD_CONTEXT_DEFINE = 1045,
51    SVGA_3D_CMD_CONTEXT_DESTROY = 1046,
52    SVGA_3D_CMD_SETTRANSFORM = 1047,
53    SVGA_3D_CMD_SETZRANGE = 1048,
54    SVGA_3D_CMD_SETRENDERSTATE = 1049,
55    SVGA_3D_CMD_SETRENDERTARGET = 1050,
56    SVGA_3D_CMD_SETTEXTURESTATE = 1051,
57    SVGA_3D_CMD_SETMATERIAL = 1052,
58    SVGA_3D_CMD_SETLIGHTDATA = 1053,
59    SVGA_3D_CMD_SETLIGHTENABLED = 1054,
60    SVGA_3D_CMD_SETVIEWPORT = 1055,
61    SVGA_3D_CMD_SETCLIPPLANE = 1056,
62    SVGA_3D_CMD_CLEAR = 1057,
63    SVGA_3D_CMD_PRESENT = 1058,
64    SVGA_3D_CMD_SHADER_DEFINE = 1059,
65    SVGA_3D_CMD_SHADER_DESTROY = 1060,
66    SVGA_3D_CMD_SET_SHADER = 1061,
67    SVGA_3D_CMD_SET_SHADER_CONST = 1062,
68    SVGA_3D_CMD_DRAW_PRIMITIVES = 1063,
69    SVGA_3D_CMD_SETSCISSORRECT = 1064,
70    SVGA_3D_CMD_BEGIN_QUERY = 1065,
71    SVGA_3D_CMD_END_QUERY = 1066,
72    SVGA_3D_CMD_WAIT_FOR_QUERY = 1067,
73    SVGA_3D_CMD_PRESENT_READBACK = 1068,
74    SVGA_3D_CMD_BLIT_SURFACE_TO_SCREEN = 1069,
75    SVGA_3D_CMD_SURFACE_DEFINE_V2 = 1070,
76    SVGA_3D_CMD_GENERATE_MIPMAPS = 1071,
77    SVGA_3D_CMD_DEAD4 = 1072,
78    SVGA_3D_CMD_DEAD5 = 1073,
79    SVGA_3D_CMD_DEAD6 = 1074,
80    SVGA_3D_CMD_DEAD7 = 1075,
81    SVGA_3D_CMD_DEAD8 = 1076,
82    SVGA_3D_CMD_DEAD9 = 1077,
83    SVGA_3D_CMD_DEAD10 = 1078,
84    SVGA_3D_CMD_DEAD11 = 1079,
85    SVGA_3D_CMD_ACTIVATE_SURFACE = 1080,
86    SVGA_3D_CMD_DEACTIVATE_SURFACE = 1081,
87    SVGA_3D_CMD_SCREEN_DMA = 1082,
88    SVGA_3D_CMD_DEAD1 = 1083,
89    SVGA_3D_CMD_DEAD2 = 1084,
90 
91    SVGA_3D_CMD_DEAD12 = 1085,
92    SVGA_3D_CMD_DEAD13 = 1086,
93    SVGA_3D_CMD_DEAD14 = 1087,
94    SVGA_3D_CMD_DEAD15 = 1088,
95    SVGA_3D_CMD_DEAD16 = 1089,
96    SVGA_3D_CMD_DEAD17 = 1090,
97 
98    SVGA_3D_CMD_SET_OTABLE_BASE = 1091,
99    SVGA_3D_CMD_READBACK_OTABLE = 1092,
100 
101    SVGA_3D_CMD_DEFINE_GB_MOB = 1093,
102    SVGA_3D_CMD_DESTROY_GB_MOB = 1094,
103    SVGA_3D_CMD_DEAD3 = 1095,
104    SVGA_3D_CMD_UPDATE_GB_MOB_MAPPING = 1096,
105 
106    SVGA_3D_CMD_DEFINE_GB_SURFACE = 1097,
107    SVGA_3D_CMD_DESTROY_GB_SURFACE = 1098,
108    SVGA_3D_CMD_BIND_GB_SURFACE = 1099,
109    SVGA_3D_CMD_COND_BIND_GB_SURFACE = 1100,
110    SVGA_3D_CMD_UPDATE_GB_IMAGE = 1101,
111    SVGA_3D_CMD_UPDATE_GB_SURFACE = 1102,
112    SVGA_3D_CMD_READBACK_GB_IMAGE = 1103,
113    SVGA_3D_CMD_READBACK_GB_SURFACE = 1104,
114    SVGA_3D_CMD_INVALIDATE_GB_IMAGE = 1105,
115    SVGA_3D_CMD_INVALIDATE_GB_SURFACE = 1106,
116 
117    SVGA_3D_CMD_DEFINE_GB_CONTEXT = 1107,
118    SVGA_3D_CMD_DESTROY_GB_CONTEXT = 1108,
119    SVGA_3D_CMD_BIND_GB_CONTEXT = 1109,
120    SVGA_3D_CMD_READBACK_GB_CONTEXT = 1110,
121    SVGA_3D_CMD_INVALIDATE_GB_CONTEXT = 1111,
122 
123    SVGA_3D_CMD_DEFINE_GB_SHADER = 1112,
124    SVGA_3D_CMD_DESTROY_GB_SHADER = 1113,
125    SVGA_3D_CMD_BIND_GB_SHADER = 1114,
126 
127    SVGA_3D_CMD_SET_OTABLE_BASE64 = 1115,
128 
129    SVGA_3D_CMD_BEGIN_GB_QUERY = 1116,
130    SVGA_3D_CMD_END_GB_QUERY = 1117,
131    SVGA_3D_CMD_WAIT_FOR_GB_QUERY = 1118,
132 
133    SVGA_3D_CMD_NOP = 1119,
134 
135    SVGA_3D_CMD_ENABLE_GART = 1120,
136    SVGA_3D_CMD_DISABLE_GART = 1121,
137    SVGA_3D_CMD_MAP_MOB_INTO_GART = 1122,
138    SVGA_3D_CMD_UNMAP_GART_RANGE = 1123,
139 
140    SVGA_3D_CMD_DEFINE_GB_SCREENTARGET = 1124,
141    SVGA_3D_CMD_DESTROY_GB_SCREENTARGET = 1125,
142    SVGA_3D_CMD_BIND_GB_SCREENTARGET = 1126,
143    SVGA_3D_CMD_UPDATE_GB_SCREENTARGET = 1127,
144 
145    SVGA_3D_CMD_READBACK_GB_IMAGE_PARTIAL = 1128,
146    SVGA_3D_CMD_INVALIDATE_GB_IMAGE_PARTIAL = 1129,
147 
148    SVGA_3D_CMD_SET_GB_SHADERCONSTS_INLINE = 1130,
149 
150    SVGA_3D_CMD_GB_SCREEN_DMA = 1131,
151    SVGA_3D_CMD_BIND_GB_SURFACE_WITH_PITCH = 1132,
152    SVGA_3D_CMD_GB_MOB_FENCE = 1133,
153    SVGA_3D_CMD_DEFINE_GB_SURFACE_V2 = 1134,
154    SVGA_3D_CMD_DEFINE_GB_MOB64 = 1135,
155    SVGA_3D_CMD_REDEFINE_GB_MOB64 = 1136,
156    SVGA_3D_CMD_NOP_ERROR = 1137,
157 
158    SVGA_3D_CMD_SET_VERTEX_STREAMS = 1138,
159    SVGA_3D_CMD_SET_VERTEX_DECLS = 1139,
160    SVGA_3D_CMD_SET_VERTEX_DIVISORS = 1140,
161    SVGA_3D_CMD_DRAW = 1141,
162    SVGA_3D_CMD_DRAW_INDEXED = 1142,
163 
164    SVGA_3D_CMD_DX_MIN = 1143,
165    SVGA_3D_CMD_DX_DEFINE_CONTEXT = 1143,
166    SVGA_3D_CMD_DX_DESTROY_CONTEXT = 1144,
167    SVGA_3D_CMD_DX_BIND_CONTEXT = 1145,
168    SVGA_3D_CMD_DX_READBACK_CONTEXT = 1146,
169    SVGA_3D_CMD_DX_INVALIDATE_CONTEXT = 1147,
170    SVGA_3D_CMD_DX_SET_SINGLE_CONSTANT_BUFFER = 1148,
171    SVGA_3D_CMD_DX_SET_SHADER_RESOURCES = 1149,
172    SVGA_3D_CMD_DX_SET_SHADER = 1150,
173    SVGA_3D_CMD_DX_SET_SAMPLERS = 1151,
174    SVGA_3D_CMD_DX_DRAW = 1152,
175    SVGA_3D_CMD_DX_DRAW_INDEXED = 1153,
176    SVGA_3D_CMD_DX_DRAW_INSTANCED = 1154,
177    SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED = 1155,
178    SVGA_3D_CMD_DX_DRAW_AUTO = 1156,
179    SVGA_3D_CMD_DX_SET_INPUT_LAYOUT = 1157,
180    SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS = 1158,
181    SVGA_3D_CMD_DX_SET_INDEX_BUFFER = 1159,
182    SVGA_3D_CMD_DX_SET_TOPOLOGY = 1160,
183    SVGA_3D_CMD_DX_SET_RENDERTARGETS = 1161,
184    SVGA_3D_CMD_DX_SET_BLEND_STATE = 1162,
185    SVGA_3D_CMD_DX_SET_DEPTHSTENCIL_STATE = 1163,
186    SVGA_3D_CMD_DX_SET_RASTERIZER_STATE = 1164,
187    SVGA_3D_CMD_DX_DEFINE_QUERY = 1165,
188    SVGA_3D_CMD_DX_DESTROY_QUERY = 1166,
189    SVGA_3D_CMD_DX_BIND_QUERY = 1167,
190    SVGA_3D_CMD_DX_SET_QUERY_OFFSET = 1168,
191    SVGA_3D_CMD_DX_BEGIN_QUERY = 1169,
192    SVGA_3D_CMD_DX_END_QUERY = 1170,
193    SVGA_3D_CMD_DX_READBACK_QUERY = 1171,
194    SVGA_3D_CMD_DX_SET_PREDICATION = 1172,
195    SVGA_3D_CMD_DX_SET_SOTARGETS = 1173,
196    SVGA_3D_CMD_DX_SET_VIEWPORTS = 1174,
197    SVGA_3D_CMD_DX_SET_SCISSORRECTS = 1175,
198    SVGA_3D_CMD_DX_CLEAR_RENDERTARGET_VIEW = 1176,
199    SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW = 1177,
200    SVGA_3D_CMD_DX_PRED_COPY_REGION = 1178,
201    SVGA_3D_CMD_DX_PRED_COPY = 1179,
202    SVGA_3D_CMD_DX_PRESENTBLT = 1180,
203    SVGA_3D_CMD_DX_GENMIPS = 1181,
204    SVGA_3D_CMD_DX_UPDATE_SUBRESOURCE = 1182,
205    SVGA_3D_CMD_DX_READBACK_SUBRESOURCE = 1183,
206    SVGA_3D_CMD_DX_INVALIDATE_SUBRESOURCE = 1184,
207    SVGA_3D_CMD_DX_DEFINE_SHADERRESOURCE_VIEW = 1185,
208    SVGA_3D_CMD_DX_DESTROY_SHADERRESOURCE_VIEW = 1186,
209    SVGA_3D_CMD_DX_DEFINE_RENDERTARGET_VIEW = 1187,
210    SVGA_3D_CMD_DX_DESTROY_RENDERTARGET_VIEW = 1188,
211    SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW = 1189,
212    SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW = 1190,
213    SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT = 1191,
214    SVGA_3D_CMD_DX_DESTROY_ELEMENTLAYOUT = 1192,
215    SVGA_3D_CMD_DX_DEFINE_BLEND_STATE = 1193,
216    SVGA_3D_CMD_DX_DESTROY_BLEND_STATE = 1194,
217    SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_STATE = 1195,
218    SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_STATE = 1196,
219    SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE = 1197,
220    SVGA_3D_CMD_DX_DESTROY_RASTERIZER_STATE = 1198,
221    SVGA_3D_CMD_DX_DEFINE_SAMPLER_STATE = 1199,
222    SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE = 1200,
223    SVGA_3D_CMD_DX_DEFINE_SHADER = 1201,
224    SVGA_3D_CMD_DX_DESTROY_SHADER = 1202,
225    SVGA_3D_CMD_DX_BIND_SHADER = 1203,
226    SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT = 1204,
227    SVGA_3D_CMD_DX_DESTROY_STREAMOUTPUT = 1205,
228    SVGA_3D_CMD_DX_SET_STREAMOUTPUT = 1206,
229    SVGA_3D_CMD_DX_SET_COTABLE = 1207,
230    SVGA_3D_CMD_DX_READBACK_COTABLE = 1208,
231    SVGA_3D_CMD_DX_BUFFER_COPY = 1209,
232    SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER = 1210,
233    SVGA_3D_CMD_DX_SURFACE_COPY_AND_READBACK = 1211,
234    SVGA_3D_CMD_DX_MOVE_QUERY = 1212,
235    SVGA_3D_CMD_DX_BIND_ALL_QUERY = 1213,
236    SVGA_3D_CMD_DX_READBACK_ALL_QUERY = 1214,
237    SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER = 1215,
238    SVGA_3D_CMD_DX_MOB_FENCE_64 = 1216,
239    SVGA_3D_CMD_DX_BIND_ALL_SHADER = 1217,
240    SVGA_3D_CMD_DX_HINT = 1218,
241    SVGA_3D_CMD_DX_BUFFER_UPDATE = 1219,
242    SVGA_3D_CMD_DX_SET_VS_CONSTANT_BUFFER_OFFSET = 1220,
243    SVGA_3D_CMD_DX_SET_PS_CONSTANT_BUFFER_OFFSET = 1221,
244    SVGA_3D_CMD_DX_SET_GS_CONSTANT_BUFFER_OFFSET = 1222,
245    SVGA_3D_CMD_DX_SET_HS_CONSTANT_BUFFER_OFFSET = 1223,
246    SVGA_3D_CMD_DX_SET_DS_CONSTANT_BUFFER_OFFSET = 1224,
247    SVGA_3D_CMD_DX_SET_CS_CONSTANT_BUFFER_OFFSET = 1225,
248 
249    SVGA_3D_CMD_DX_COND_BIND_ALL_SHADER = 1226,
250    SVGA_3D_CMD_DX_MAX = 1227,
251 
252    SVGA_3D_CMD_SCREEN_COPY = 1227,
253 
254    SVGA_3D_CMD_RESERVED1 = 1228,
255    SVGA_3D_CMD_RESERVED2 = 1229,
256    SVGA_3D_CMD_RESERVED3 = 1230,
257    SVGA_3D_CMD_RESERVED4 = 1231,
258    SVGA_3D_CMD_RESERVED5 = 1232,
259    SVGA_3D_CMD_RESERVED6 = 1233,
260    SVGA_3D_CMD_RESERVED7 = 1234,
261    SVGA_3D_CMD_RESERVED8 = 1235,
262 
263    SVGA_3D_CMD_GROW_OTABLE = 1236,
264    SVGA_3D_CMD_DX_GROW_COTABLE = 1237,
265    SVGA_3D_CMD_INTRA_SURFACE_COPY = 1238,
266 
267    SVGA_3D_CMD_DEFINE_GB_SURFACE_V3 = 1239,
268 
269    SVGA_3D_CMD_DX_RESOLVE_COPY = 1240,
270    SVGA_3D_CMD_DX_PRED_RESOLVE_COPY = 1241,
271    SVGA_3D_CMD_DX_PRED_CONVERT_REGION = 1242,
272    SVGA_3D_CMD_DX_PRED_CONVERT = 1243,
273    SVGA_3D_CMD_WHOLE_SURFACE_COPY = 1244,
274 
275    SVGA_3D_CMD_DX_DEFINE_UA_VIEW = 1245,
276    SVGA_3D_CMD_DX_DESTROY_UA_VIEW = 1246,
277    SVGA_3D_CMD_DX_CLEAR_UA_VIEW_UINT = 1247,
278    SVGA_3D_CMD_DX_CLEAR_UA_VIEW_FLOAT = 1248,
279    SVGA_3D_CMD_DX_COPY_STRUCTURE_COUNT = 1249,
280    SVGA_3D_CMD_DX_SET_UA_VIEWS = 1250,
281 
282    SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED_INDIRECT = 1251,
283    SVGA_3D_CMD_DX_DRAW_INSTANCED_INDIRECT = 1252,
284    SVGA_3D_CMD_DX_DISPATCH = 1253,
285    SVGA_3D_CMD_DX_DISPATCH_INDIRECT = 1254,
286 
287    SVGA_3D_CMD_WRITE_ZERO_SURFACE = 1255,
288    SVGA_3D_CMD_UPDATE_ZERO_SURFACE = 1256,
289    SVGA_3D_CMD_DX_TRANSFER_TO_BUFFER = 1257,
290    SVGA_3D_CMD_DX_SET_STRUCTURE_COUNT = 1258,
291 
292    SVGA_3D_CMD_LOGICOPS_BITBLT = 1259,
293    SVGA_3D_CMD_LOGICOPS_TRANSBLT = 1260,
294    SVGA_3D_CMD_LOGICOPS_STRETCHBLT = 1261,
295    SVGA_3D_CMD_LOGICOPS_COLORFILL = 1262,
296    SVGA_3D_CMD_LOGICOPS_ALPHABLEND = 1263,
297    SVGA_3D_CMD_LOGICOPS_CLEARTYPEBLEND = 1264,
298 
299    SVGA_3D_CMD_DX_COPY_COTABLE_INTO_MOB = 1265,
300 
301    SVGA_3D_CMD_UPDATE_GB_SCREENTARGET_V2 = 1266,
302 
303    SVGA_3D_CMD_DEFINE_GB_SURFACE_V4 = 1267,
304    SVGA_3D_CMD_DX_SET_CS_UA_VIEWS = 1268,
305    SVGA_3D_CMD_DX_SET_MIN_LOD = 1269,
306 
307    SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW_V2 = 1272,
308    SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT_WITH_MOB = 1273,
309    SVGA_3D_CMD_DX_SET_SHADER_IFACE = 1274,
310    SVGA_3D_CMD_DX_BIND_STREAMOUTPUT = 1275,
311    SVGA_3D_CMD_SURFACE_STRETCHBLT_NON_MS_TO_MS = 1276,
312    SVGA_3D_CMD_DX_BIND_SHADER_IFACE = 1277,
313 
314    SVGA_3D_CMD_UPDATE_GB_SCREENTARGET_MOVE = 1278,
315 
316    SVGA_3D_CMD_DX_PRED_STAGING_COPY = 1281,
317    SVGA_3D_CMD_DX_STAGING_COPY = 1282,
318    SVGA_3D_CMD_DX_PRED_STAGING_COPY_REGION = 1283,
319    SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS_V2 = 1284,
320    SVGA_3D_CMD_DX_SET_INDEX_BUFFER_V2 = 1285,
321    SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS_OFFSET_AND_SIZE = 1286,
322    SVGA_3D_CMD_DX_SET_INDEX_BUFFER_OFFSET_AND_SIZE = 1287,
323    SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE_V2 = 1288,
324    SVGA_3D_CMD_DX_PRED_STAGING_CONVERT_REGION = 1289,
325    SVGA_3D_CMD_DX_PRED_STAGING_CONVERT = 1290,
326    SVGA_3D_CMD_DX_STAGING_BUFFER_COPY = 1291,
327 
328    SVGA_3D_CMD_MAX = 1304,
329    SVGA_3D_CMD_FUTURE_MAX = 3000
330 } SVGAFifo3dCmdId;
331 
332 #define SVGA_NUM_3D_CMD (SVGA_3D_CMD_MAX - SVGA_3D_CMD_BASE)
333 
334 #pragma pack(push, 1)
335 typedef struct {
336    uint32 id;
337    uint32 size;
338 } SVGA3dCmdHeader;
339 #pragma pack(pop)
340 
341 #pragma pack(push, 1)
342 typedef struct {
343    uint32 numMipLevels;
344 } SVGA3dSurfaceFace;
345 #pragma pack(pop)
346 
347 #pragma pack(push, 1)
348 typedef struct {
349    uint32 sid;
350    SVGA3dSurface1Flags surfaceFlags;
351    SVGA3dSurfaceFormat format;
352 
353    SVGA3dSurfaceFace face[SVGA3D_MAX_SURFACE_FACES];
354 
355 } SVGA3dCmdDefineSurface;
356 #pragma pack(pop)
357 
358 #pragma pack(push, 1)
359 typedef struct {
360    uint32 sid;
361    SVGA3dSurface1Flags surfaceFlags;
362    SVGA3dSurfaceFormat format;
363 
364    SVGA3dSurfaceFace face[SVGA3D_MAX_SURFACE_FACES];
365    uint32 multisampleCount;
366    SVGA3dTextureFilter autogenFilter;
367 
368 } SVGA3dCmdDefineSurface_v2;
369 #pragma pack(pop)
370 
371 #pragma pack(push, 1)
372 typedef struct {
373    uint32 sid;
374 } SVGA3dCmdDestroySurface;
375 #pragma pack(pop)
376 
377 #pragma pack(push, 1)
378 typedef struct {
379    uint32 cid;
380 } SVGA3dCmdDefineContext;
381 #pragma pack(pop)
382 
383 #pragma pack(push, 1)
384 typedef struct {
385    uint32 cid;
386 } SVGA3dCmdDestroyContext;
387 #pragma pack(pop)
388 
389 #pragma pack(push, 1)
390 typedef struct {
391    uint32 cid;
392    SVGA3dClearFlag clearFlag;
393    uint32 color;
394    float depth;
395    uint32 stencil;
396 
397 } SVGA3dCmdClear;
398 #pragma pack(pop)
399 
400 #pragma pack(push, 1)
401 typedef struct {
402    SVGA3dLightType type;
403    SVGA3dBool inWorldSpace;
404    float diffuse[4];
405    float specular[4];
406    float ambient[4];
407    float position[4];
408    float direction[4];
409    float range;
410    float falloff;
411    float attenuation0;
412    float attenuation1;
413    float attenuation2;
414    float theta;
415    float phi;
416 } SVGA3dLightData;
417 #pragma pack(pop)
418 
419 #pragma pack(push, 1)
420 typedef struct {
421    uint32 sid;
422 
423 } SVGA3dCmdPresent;
424 #pragma pack(pop)
425 
426 #pragma pack(push, 1)
427 typedef struct {
428    SVGA3dRenderStateName state;
429    union {
430       uint32 uintValue;
431       float floatValue;
432    };
433 } SVGA3dRenderState;
434 #pragma pack(pop)
435 
436 #pragma pack(push, 1)
437 typedef struct {
438    uint32 cid;
439 
440 } SVGA3dCmdSetRenderState;
441 #pragma pack(pop)
442 
443 #pragma pack(push, 1)
444 typedef struct {
445    uint32 cid;
446    SVGA3dRenderTargetType type;
447    SVGA3dSurfaceImageId target;
448 } SVGA3dCmdSetRenderTarget;
449 #pragma pack(pop)
450 
451 #pragma pack(push, 1)
452 typedef struct {
453    SVGA3dSurfaceImageId src;
454    SVGA3dSurfaceImageId dest;
455 
456 } SVGA3dCmdSurfaceCopy;
457 #pragma pack(pop)
458 
459 #pragma pack(push, 1)
460 typedef struct {
461    SVGA3dSurfaceImageId surface;
462    SVGA3dCopyBox box;
463 } SVGA3dCmdIntraSurfaceCopy;
464 #pragma pack(pop)
465 
466 #pragma pack(push, 1)
467 typedef struct {
468    uint32 srcSid;
469    uint32 destSid;
470 } SVGA3dCmdWholeSurfaceCopy;
471 #pragma pack(pop)
472 
473 #pragma pack(push, 1)
474 typedef struct {
475    SVGA3dSurfaceImageId src;
476    SVGA3dSurfaceImageId dest;
477    SVGA3dBox boxSrc;
478    SVGA3dBox boxDest;
479 } SVGA3dCmdSurfaceStretchBltNonMSToMS;
480 #pragma pack(pop)
481 
482 #pragma pack(push, 1)
483 typedef struct {
484    SVGA3dSurfaceImageId src;
485    SVGA3dSurfaceImageId dest;
486    SVGA3dBox boxSrc;
487    SVGA3dBox boxDest;
488    SVGA3dStretchBltMode mode;
489 } SVGA3dCmdSurfaceStretchBlt;
490 #pragma pack(pop)
491 
492 #pragma pack(push, 1)
493 typedef struct {
494 
495    uint32 discard : 1;
496 
497    uint32 unsynchronized : 1;
498 
499    uint32 reserved : 30;
500 } SVGA3dSurfaceDMAFlags;
501 #pragma pack(pop)
502 
503 #pragma pack(push, 1)
504 typedef struct {
505    SVGAGuestImage guest;
506    SVGA3dSurfaceImageId host;
507    SVGA3dTransferType transfer;
508 
509 } SVGA3dCmdSurfaceDMA;
510 #pragma pack(pop)
511 
512 #pragma pack(push, 1)
513 typedef struct {
514    uint32 suffixSize;
515 
516    uint32 maximumOffset;
517 
518    SVGA3dSurfaceDMAFlags flags;
519 } SVGA3dCmdSurfaceDMASuffix;
520 #pragma pack(pop)
521 
522 #pragma pack(push, 1)
523 typedef struct {
524 
525    uint32 first;
526    uint32 last;
527 } SVGA3dArrayRangeHint;
528 #pragma pack(pop)
529 
530 #pragma pack(push, 1)
531 typedef struct {
532 
533    uint32 surfaceId;
534    uint32 offset;
535    uint32 stride;
536 } SVGA3dArray;
537 #pragma pack(pop)
538 
539 #pragma pack(push, 1)
540 typedef struct {
541 
542    SVGA3dDeclType type;
543    SVGA3dDeclMethod method;
544    SVGA3dDeclUsage usage;
545    uint32 usageIndex;
546 } SVGA3dVertexArrayIdentity;
547 #pragma pack(pop)
548 
549 #pragma pack(push, 1)
550 typedef struct SVGA3dVertexDecl {
551    SVGA3dVertexArrayIdentity identity;
552    SVGA3dArray array;
553    SVGA3dArrayRangeHint rangeHint;
554 } SVGA3dVertexDecl;
555 #pragma pack(pop)
556 
557 #pragma pack(push, 1)
558 typedef struct SVGA3dPrimitiveRange {
559 
560    SVGA3dPrimitiveType primType;
561    uint32 primitiveCount;
562 
563    SVGA3dArray indexArray;
564    uint32 indexWidth;
565 
566    int32 indexBias;
567 } SVGA3dPrimitiveRange;
568 #pragma pack(pop)
569 
570 #pragma pack(push, 1)
571 typedef struct {
572    uint32 cid;
573    uint32 numVertexDecls;
574    uint32 numRanges;
575 
576 } SVGA3dCmdDrawPrimitives;
577 #pragma pack(pop)
578 
579 #pragma pack(push, 1)
580 typedef struct {
581    uint32 cid;
582 
583    uint32 primitiveCount;
584    uint32 startVertexLocation;
585 
586    uint8 primitiveType;
587    uint8 padding[3];
588 } SVGA3dCmdDraw;
589 #pragma pack(pop)
590 
591 #pragma pack(push, 1)
592 typedef struct {
593    uint32 cid;
594 
595    uint8 primitiveType;
596 
597    uint32 indexBufferSid;
598    uint32 indexBufferOffset;
599 
600    uint8 indexBufferStride;
601 
602    int32 baseVertexLocation;
603 
604    uint32 primitiveCount;
605    uint32 pad0;
606    uint16 pad1;
607 } SVGA3dCmdDrawIndexed;
608 #pragma pack(pop)
609 
610 #pragma pack(push, 1)
611 typedef struct {
612 
613    uint16 streamOffset;
614    uint8 stream;
615    uint8 type;
616    uint8 method;
617    uint8 usage;
618    uint8 usageIndex;
619    uint8 padding;
620 
621 } SVGA3dVertexElement;
622 #pragma pack(pop)
623 
624 #define SVGA3D_VERTEX_ELEMENT_RESPECT_STREAM (1 << 7)
625 
626 #pragma pack(push, 1)
627 typedef struct {
628    uint32 cid;
629 
630    uint32 numElements;
631 
632 } SVGA3dCmdSetVertexDecls;
633 #pragma pack(pop)
634 
635 #pragma pack(push, 1)
636 typedef struct {
637    uint32 sid;
638    uint32 stride;
639    uint32 offset;
640 } SVGA3dVertexStream;
641 #pragma pack(pop)
642 
643 #pragma pack(push, 1)
644 typedef struct {
645    uint32 cid;
646 
647    uint32 numStreams;
648 
649 } SVGA3dCmdSetVertexStreams;
650 #pragma pack(pop)
651 
652 #pragma pack(push, 1)
653 typedef struct {
654    uint32 cid;
655    uint32 numDivisors;
656 } SVGA3dCmdSetVertexDivisors;
657 #pragma pack(pop)
658 
659 #pragma pack(push, 1)
660 typedef struct {
661    uint32 stage;
662    SVGA3dTextureStateName name;
663    union {
664       uint32 value;
665       float floatValue;
666    };
667 } SVGA3dTextureState;
668 #pragma pack(pop)
669 
670 #pragma pack(push, 1)
671 typedef struct {
672    uint32 cid;
673 
674 } SVGA3dCmdSetTextureState;
675 #pragma pack(pop)
676 
677 #pragma pack(push, 1)
678 typedef struct {
679    uint32 cid;
680    SVGA3dTransformType type;
681    float matrix[16];
682 } SVGA3dCmdSetTransform;
683 #pragma pack(pop)
684 
685 #pragma pack(push, 1)
686 typedef struct {
687    float min;
688    float max;
689 } SVGA3dZRange;
690 #pragma pack(pop)
691 
692 #pragma pack(push, 1)
693 typedef struct {
694    uint32 cid;
695    SVGA3dZRange zRange;
696 } SVGA3dCmdSetZRange;
697 #pragma pack(pop)
698 
699 #pragma pack(push, 1)
700 typedef struct {
701    float diffuse[4];
702    float ambient[4];
703    float specular[4];
704    float emissive[4];
705    float shininess;
706 } SVGA3dMaterial;
707 #pragma pack(pop)
708 
709 #pragma pack(push, 1)
710 typedef struct {
711    uint32 cid;
712    SVGA3dFace face;
713    SVGA3dMaterial material;
714 } SVGA3dCmdSetMaterial;
715 #pragma pack(pop)
716 
717 #pragma pack(push, 1)
718 typedef struct {
719    uint32 cid;
720    uint32 index;
721    SVGA3dLightData data;
722 } SVGA3dCmdSetLightData;
723 #pragma pack(pop)
724 
725 #pragma pack(push, 1)
726 typedef struct {
727    uint32 cid;
728    uint32 index;
729    uint32 enabled;
730 } SVGA3dCmdSetLightEnabled;
731 #pragma pack(pop)
732 
733 #pragma pack(push, 1)
734 typedef struct {
735    uint32 cid;
736    SVGA3dRect rect;
737 } SVGA3dCmdSetViewport;
738 #pragma pack(pop)
739 
740 #pragma pack(push, 1)
741 typedef struct {
742    uint32 cid;
743    SVGA3dRect rect;
744 } SVGA3dCmdSetScissorRect;
745 #pragma pack(pop)
746 
747 #pragma pack(push, 1)
748 typedef struct {
749    uint32 cid;
750    uint32 index;
751    float plane[4];
752 } SVGA3dCmdSetClipPlane;
753 #pragma pack(pop)
754 
755 #pragma pack(push, 1)
756 typedef struct {
757    uint32 cid;
758    uint32 shid;
759    SVGA3dShaderType type;
760 
761 } SVGA3dCmdDefineShader;
762 #pragma pack(pop)
763 
764 #pragma pack(push, 1)
765 typedef struct {
766    uint32 cid;
767    uint32 shid;
768    SVGA3dShaderType type;
769 } SVGA3dCmdDestroyShader;
770 #pragma pack(pop)
771 
772 #pragma pack(push, 1)
773 typedef struct {
774    uint32 cid;
775    uint32 reg;
776    SVGA3dShaderType type;
777    SVGA3dShaderConstType ctype;
778    uint32 values[4];
779 
780 } SVGA3dCmdSetShaderConst;
781 #pragma pack(pop)
782 
783 #pragma pack(push, 1)
784 typedef struct {
785    uint32 cid;
786    SVGA3dShaderType type;
787    uint32 shid;
788 } SVGA3dCmdSetShader;
789 #pragma pack(pop)
790 
791 #pragma pack(push, 1)
792 typedef struct {
793    uint32 cid;
794    SVGA3dQueryType type;
795 } SVGA3dCmdBeginQuery;
796 #pragma pack(pop)
797 
798 #pragma pack(push, 1)
799 typedef struct {
800    uint32 cid;
801    SVGA3dQueryType type;
802    SVGAGuestPtr guestResult;
803 } SVGA3dCmdEndQuery;
804 #pragma pack(pop)
805 
806 #pragma pack(push, 1)
807 typedef struct {
808    uint32 cid;
809    SVGA3dQueryType type;
810    SVGAGuestPtr guestResult;
811 } SVGA3dCmdWaitForQuery;
812 #pragma pack(pop)
813 
814 #pragma pack(push, 1)
815 typedef struct {
816    uint32 totalSize;
817    SVGA3dQueryState state;
818    union {
819       uint32 result32;
820       uint32 queryCookie;
821    };
822 } SVGA3dQueryResult;
823 #pragma pack(pop)
824 
825 #pragma pack(push, 1)
826 typedef struct {
827    SVGA3dSurfaceImageId srcImage;
828    SVGASignedRect srcRect;
829    uint32 destScreenId;
830    SVGASignedRect destRect;
831 
832 } SVGA3dCmdBlitSurfaceToScreen;
833 #pragma pack(pop)
834 
835 #pragma pack(push, 1)
836 typedef struct {
837    uint32 sid;
838    SVGA3dTextureFilter filter;
839 } SVGA3dCmdGenerateMipmaps;
840 #pragma pack(pop)
841 
842 #pragma pack(push, 1)
843 typedef struct {
844    uint32 sid;
845 } SVGA3dCmdActivateSurface;
846 #pragma pack(pop)
847 
848 #pragma pack(push, 1)
849 typedef struct {
850    uint32 sid;
851 } SVGA3dCmdDeactivateSurface;
852 #pragma pack(pop)
853 
854 #pragma pack(push, 1)
855 typedef struct SVGA3dCmdScreenDMA {
856    uint32 screenId;
857    SVGAGuestImage refBuffer;
858    SVGAGuestImage destBuffer;
859    SVGAGuestImage changeMap;
860 } SVGA3dCmdScreenDMA;
861 #pragma pack(pop)
862 
863 #define SVGA3D_LOTRANSBLT_HONORALPHA    (0x01)
864 #define SVGA3D_LOSTRETCHBLT_MIRRORX     (0x01)
865 #define SVGA3D_LOSTRETCHBLT_MIRRORY     (0x02)
866 #define SVGA3D_LOALPHABLEND_SRCHASALPHA (0x01)
867 
868 #pragma pack(push, 1)
869 typedef struct SVGA3dCmdLogicOpsBitBlt {
870 
871    SVGA3dSurfaceImageId src;
872    SVGA3dSurfaceImageId dst;
873    SVGA3dLogicOp logicOp;
874    SVGA3dLogicOpRop3 logicOpRop3;
875 
876 } SVGA3dCmdLogicOpsBitBlt;
877 #pragma pack(pop)
878 
879 #pragma pack(push, 1)
880 typedef struct SVGA3dCmdLogicOpsTransBlt {
881 
882    SVGA3dSurfaceImageId src;
883    SVGA3dSurfaceImageId dst;
884    uint32 color;
885    uint32 flags;
886    SVGA3dBox srcBox;
887    SVGA3dSignedBox dstBox;
888    SVGA3dBox clipBox;
889 } SVGA3dCmdLogicOpsTransBlt;
890 #pragma pack(pop)
891 
892 #pragma pack(push, 1)
893 typedef struct SVGA3dCmdLogicOpsStretchBlt {
894 
895    SVGA3dSurfaceImageId src;
896    SVGA3dSurfaceImageId dst;
897    uint16 mode;
898    uint16 flags;
899    SVGA3dBox srcBox;
900    SVGA3dSignedBox dstBox;
901    SVGA3dBox clipBox;
902 } SVGA3dCmdLogicOpsStretchBlt;
903 #pragma pack(pop)
904 
905 #pragma pack(push, 1)
906 typedef struct SVGA3dCmdLogicOpsColorFill {
907 
908    SVGA3dSurfaceImageId dst;
909    uint32 color;
910    SVGA3dLogicOp logicOp;
911    SVGA3dLogicOpRop3 logicOpRop3;
912 
913 } SVGA3dCmdLogicOpsColorFill;
914 #pragma pack(pop)
915 
916 #pragma pack(push, 1)
917 typedef struct SVGA3dCmdLogicOpsAlphaBlend {
918 
919    SVGA3dSurfaceImageId src;
920    SVGA3dSurfaceImageId dst;
921    uint32 alphaVal;
922    uint32 flags;
923    SVGA3dBox srcBox;
924    SVGA3dSignedBox dstBox;
925    SVGA3dBox clipBox;
926 } SVGA3dCmdLogicOpsAlphaBlend;
927 #pragma pack(pop)
928 
929 #define SVGA3D_CLEARTYPE_INVALID_GAMMA_INDEX 0xFFFFFFFF
930 
931 #define SVGA3D_CLEARTYPE_GAMMA_WIDTH  512
932 #define SVGA3D_CLEARTYPE_GAMMA_HEIGHT 16
933 
934 #pragma pack(push, 1)
935 typedef struct SVGA3dCmdLogicOpsClearTypeBlend {
936 
937    SVGA3dSurfaceImageId tmp;
938    SVGA3dSurfaceImageId dst;
939    SVGA3dSurfaceImageId gammaSurf;
940    SVGA3dSurfaceImageId alphaSurf;
941    uint32 gamma;
942    uint32 color;
943    uint32 color2;
944    int32 alphaOffsetX;
945    int32 alphaOffsetY;
946 
947 } SVGA3dCmdLogicOpsClearTypeBlend;
948 #pragma pack(pop)
949 
950 #pragma pack(push, 1)
951 typedef struct {
952    SVGAMobFormat ptDepth;
953    uint32 sizeInBytes;
954    PPN64 base;
955 } SVGAOTableMobEntry;
956 #pragma pack(pop)
957 
958 #pragma pack(push, 1)
959 typedef struct {
960    SVGA3dSurfaceFormat format;
961    SVGA3dSurface1Flags surface1Flags;
962    uint32 numMipLevels;
963    uint32 multisampleCount;
964    SVGA3dTextureFilter autogenFilter;
965    SVGA3dSize size;
966    SVGAMobId mobid;
967    uint32 arraySize;
968    uint32 mobPitch;
969    SVGA3dSurface2Flags surface2Flags;
970    uint8 multisamplePattern;
971    uint8 qualityLevel;
972    uint16 bufferByteStride;
973    float minLOD;
974    uint32 pad0[2];
975 } SVGAOTableSurfaceEntry;
976 #pragma pack(pop)
977 
978 #pragma pack(push, 1)
979 typedef struct {
980    uint32 cid;
981    SVGAMobId mobid;
982 } SVGAOTableContextEntry;
983 #pragma pack(pop)
984 
985 #pragma pack(push, 1)
986 typedef struct {
987    SVGA3dShaderType type;
988    uint32 sizeInBytes;
989    uint32 offsetInBytes;
990    SVGAMobId mobid;
991 } SVGAOTableShaderEntry;
992 #pragma pack(pop)
993 
994 #define SVGA_STFLAG_PRIMARY  (1 << 0)
995 #define SVGA_STFLAG_RESERVED (1 << 1)
996 typedef uint32 SVGAScreenTargetFlags;
997 
998 #pragma pack(push, 1)
999 typedef struct {
1000    SVGA3dSurfaceImageId image;
1001    uint32 width;
1002    uint32 height;
1003    int32 xRoot;
1004    int32 yRoot;
1005    SVGAScreenTargetFlags flags;
1006    uint32 dpi;
1007    uint32 pad[7];
1008 } SVGAOTableScreenTargetEntry;
1009 #pragma pack(pop)
1010 
1011 #pragma pack(push, 1)
1012 typedef struct {
1013    float value[4];
1014 } SVGA3dShaderConstFloat;
1015 #pragma pack(pop)
1016 
1017 #pragma pack(push, 1)
1018 typedef struct {
1019    int32 value[4];
1020 } SVGA3dShaderConstInt;
1021 #pragma pack(pop)
1022 
1023 #pragma pack(push, 1)
1024 typedef struct {
1025    uint32 value;
1026 } SVGA3dShaderConstBool;
1027 #pragma pack(pop)
1028 
1029 #pragma pack(push, 1)
1030 typedef struct {
1031    uint16 streamOffset;
1032    uint8 stream;
1033    uint8 type;
1034    uint8 methodUsage;
1035    uint8 usageIndex;
1036 } SVGAGBVertexElement;
1037 #pragma pack(pop)
1038 
1039 #pragma pack(push, 1)
1040 typedef struct {
1041    uint32 sid;
1042    uint16 stride;
1043    uint32 offset;
1044 } SVGAGBVertexStream;
1045 #pragma pack(pop)
1046 #pragma pack(push, 1)
1047 typedef struct {
1048    SVGA3dRect viewport;
1049    SVGA3dRect scissorRect;
1050    SVGA3dZRange zRange;
1051 
1052    SVGA3dSurfaceImageId renderTargets[SVGA3D_RT_MAX];
1053    SVGAGBVertexElement decl1[4];
1054 
1055    uint32 renderStates[SVGA3D_RS_MAX];
1056    SVGAGBVertexElement decl2[18];
1057    uint32 pad0[2];
1058 
1059    struct {
1060       SVGA3dFace face;
1061       SVGA3dMaterial material;
1062    } material;
1063 
1064    float clipPlanes[SVGA3D_MAX_CLIP_PLANES][4];
1065    float matrices[SVGA3D_TRANSFORM_MAX][16];
1066 
1067    SVGA3dBool lightEnabled[SVGA3D_NUM_LIGHTS];
1068    SVGA3dLightData lightData[SVGA3D_NUM_LIGHTS];
1069 
1070    uint32 shaders[SVGA3D_NUM_SHADERTYPE_PREDX];
1071    SVGAGBVertexElement decl3[10];
1072    uint32 pad1[3];
1073 
1074    uint32 occQueryActive;
1075    uint32 occQueryValue;
1076 
1077    SVGA3dShaderConstInt pShaderIValues[SVGA3D_CONSTINTREG_MAX];
1078    SVGA3dShaderConstInt vShaderIValues[SVGA3D_CONSTINTREG_MAX];
1079    uint16 pShaderBValues;
1080    uint16 vShaderBValues;
1081 
1082    SVGAGBVertexStream streams[SVGA3D_MAX_VERTEX_ARRAYS];
1083    SVGA3dVertexDivisor divisors[SVGA3D_MAX_VERTEX_ARRAYS];
1084    uint32 numVertexDecls;
1085    uint32 numVertexStreams;
1086    uint32 numVertexDivisors;
1087    uint32 pad2[30];
1088 
1089    uint32 tsColorKey[SVGA3D_NUM_TEXTURE_UNITS];
1090    uint32 textureStages[SVGA3D_NUM_TEXTURE_UNITS][SVGA3D_TS_CONSTANT + 1];
1091    uint32 tsColorKeyEnable[SVGA3D_NUM_TEXTURE_UNITS];
1092 
1093    SVGA3dShaderConstFloat pShaderFValues[SVGA3D_CONSTREG_MAX];
1094    SVGA3dShaderConstFloat vShaderFValues[SVGA3D_CONSTREG_MAX];
1095 } SVGAGBContextData;
1096 #pragma pack(pop)
1097 
1098 #pragma pack(push, 1)
1099 typedef struct {
1100    SVGAOTableType type;
1101    PPN32 baseAddress;
1102    uint32 sizeInBytes;
1103    uint32 validSizeInBytes;
1104    SVGAMobFormat ptDepth;
1105 } SVGA3dCmdSetOTableBase;
1106 #pragma pack(pop)
1107 
1108 #pragma pack(push, 1)
1109 typedef struct {
1110    SVGAOTableType type;
1111    PPN64 baseAddress;
1112    uint32 sizeInBytes;
1113    uint32 validSizeInBytes;
1114    SVGAMobFormat ptDepth;
1115 } SVGA3dCmdSetOTableBase64;
1116 #pragma pack(pop)
1117 
1118 #pragma pack(push, 1)
1119 typedef struct {
1120    SVGAOTableType type;
1121    PPN64 baseAddress;
1122    uint32 sizeInBytes;
1123    uint32 validSizeInBytes;
1124    SVGAMobFormat ptDepth;
1125 } SVGA3dCmdGrowOTable;
1126 #pragma pack(pop)
1127 
1128 #pragma pack(push, 1)
1129 typedef struct {
1130    SVGAOTableType type;
1131 } SVGA3dCmdReadbackOTable;
1132 #pragma pack(pop)
1133 
1134 #pragma pack(push, 1)
1135 typedef struct SVGA3dCmdDefineGBMob {
1136    SVGAMobId mobid;
1137    SVGAMobFormat ptDepth;
1138    PPN32 base;
1139    uint32 sizeInBytes;
1140 } SVGA3dCmdDefineGBMob;
1141 #pragma pack(pop)
1142 
1143 #pragma pack(push, 1)
1144 typedef struct SVGA3dCmdDestroyGBMob {
1145    SVGAMobId mobid;
1146 } SVGA3dCmdDestroyGBMob;
1147 #pragma pack(pop)
1148 
1149 #pragma pack(push, 1)
1150 typedef struct SVGA3dCmdDefineGBMob64 {
1151    SVGAMobId mobid;
1152    SVGAMobFormat ptDepth;
1153    PPN64 base;
1154    uint32 sizeInBytes;
1155 } SVGA3dCmdDefineGBMob64;
1156 #pragma pack(pop)
1157 
1158 #pragma pack(push, 1)
1159 typedef struct SVGA3dCmdRedefineGBMob64 {
1160    SVGAMobId mobid;
1161    SVGAMobFormat ptDepth;
1162    PPN64 base;
1163    uint32 sizeInBytes;
1164 } SVGA3dCmdRedefineGBMob64;
1165 #pragma pack(pop)
1166 
1167 #pragma pack(push, 1)
1168 typedef struct SVGA3dCmdUpdateGBMobMapping {
1169    SVGAMobId mobid;
1170 } SVGA3dCmdUpdateGBMobMapping;
1171 #pragma pack(pop)
1172 
1173 #pragma pack(push, 1)
1174 typedef struct SVGA3dCmdDefineGBSurface {
1175    uint32 sid;
1176    SVGA3dSurface1Flags surfaceFlags;
1177    SVGA3dSurfaceFormat format;
1178    uint32 numMipLevels;
1179    uint32 multisampleCount;
1180    SVGA3dTextureFilter autogenFilter;
1181    SVGA3dSize size;
1182 } SVGA3dCmdDefineGBSurface;
1183 #pragma pack(pop)
1184 
1185 #pragma pack(push, 1)
1186 typedef struct SVGA3dCmdDefineGBSurface_v2 {
1187    uint32 sid;
1188    SVGA3dSurface1Flags surfaceFlags;
1189    SVGA3dSurfaceFormat format;
1190    uint32 numMipLevels;
1191    uint32 multisampleCount;
1192    SVGA3dTextureFilter autogenFilter;
1193    SVGA3dSize size;
1194    uint32 arraySize;
1195    uint32 pad;
1196 } SVGA3dCmdDefineGBSurface_v2;
1197 #pragma pack(pop)
1198 
1199 #pragma pack(push, 1)
1200 typedef struct SVGA3dCmdDefineGBSurface_v3 {
1201    uint32 sid;
1202    SVGA3dSurfaceAllFlags surfaceFlags;
1203    SVGA3dSurfaceFormat format;
1204    uint32 numMipLevels;
1205    uint32 multisampleCount;
1206    SVGA3dMSPattern multisamplePattern;
1207    SVGA3dMSQualityLevel qualityLevel;
1208    SVGA3dTextureFilter autogenFilter;
1209    SVGA3dSize size;
1210    uint32 arraySize;
1211 } SVGA3dCmdDefineGBSurface_v3;
1212 #pragma pack(pop)
1213 
1214 #pragma pack(push, 1)
1215 typedef struct SVGA3dCmdDefineGBSurface_v4 {
1216    uint32 sid;
1217    SVGA3dSurfaceAllFlags surfaceFlags;
1218    SVGA3dSurfaceFormat format;
1219    uint32 numMipLevels;
1220    uint32 multisampleCount;
1221    SVGA3dMSPattern multisamplePattern;
1222    SVGA3dMSQualityLevel qualityLevel;
1223    SVGA3dTextureFilter autogenFilter;
1224    SVGA3dSize size;
1225    uint32 arraySize;
1226    uint32 bufferByteStride;
1227 } SVGA3dCmdDefineGBSurface_v4;
1228 #pragma pack(pop)
1229 
1230 #pragma pack(push, 1)
1231 typedef struct SVGA3dCmdDestroyGBSurface {
1232    uint32 sid;
1233 } SVGA3dCmdDestroyGBSurface;
1234 #pragma pack(pop)
1235 
1236 #pragma pack(push, 1)
1237 typedef struct SVGA3dCmdBindGBSurface {
1238    uint32 sid;
1239    SVGAMobId mobid;
1240 } SVGA3dCmdBindGBSurface;
1241 #pragma pack(pop)
1242 
1243 #pragma pack(push, 1)
1244 typedef struct SVGA3dCmdBindGBSurfaceWithPitch {
1245    uint32 sid;
1246    SVGAMobId mobid;
1247    uint32 baseLevelPitch;
1248 } SVGA3dCmdBindGBSurfaceWithPitch;
1249 #pragma pack(pop)
1250 
1251 #define SVGA3D_COND_BIND_GB_SURFACE_FLAG_READBACK (1 << 0)
1252 #define SVGA3D_COND_BIND_GB_SURFACE_FLAG_UPDATE   (1 << 1)
1253 
1254 #pragma pack(push, 1)
1255 typedef struct SVGA3dCmdCondBindGBSurface {
1256    uint32 sid;
1257    SVGAMobId testMobid;
1258    SVGAMobId mobid;
1259    uint32 flags;
1260 } SVGA3dCmdCondBindGBSurface;
1261 #pragma pack(pop)
1262 
1263 #pragma pack(push, 1)
1264 typedef struct SVGA3dCmdUpdateGBImage {
1265    SVGA3dSurfaceImageId image;
1266    SVGA3dBox box;
1267 } SVGA3dCmdUpdateGBImage;
1268 #pragma pack(pop)
1269 
1270 #pragma pack(push, 1)
1271 typedef struct SVGA3dCmdUpdateGBSurface {
1272    uint32 sid;
1273 } SVGA3dCmdUpdateGBSurface;
1274 #pragma pack(pop)
1275 
1276 #pragma pack(push, 1)
1277 typedef struct SVGA3dCmdReadbackGBImage {
1278    SVGA3dSurfaceImageId image;
1279 } SVGA3dCmdReadbackGBImage;
1280 #pragma pack(pop)
1281 
1282 #pragma pack(push, 1)
1283 typedef struct SVGA3dCmdReadbackGBSurface {
1284    uint32 sid;
1285 } SVGA3dCmdReadbackGBSurface;
1286 #pragma pack(pop)
1287 
1288 #pragma pack(push, 1)
1289 typedef struct SVGA3dCmdReadbackGBImagePartial {
1290    SVGA3dSurfaceImageId image;
1291    SVGA3dBox box;
1292    uint32 invertBox;
1293 } SVGA3dCmdReadbackGBImagePartial;
1294 #pragma pack(pop)
1295 
1296 #pragma pack(push, 1)
1297 typedef struct SVGA3dCmdInvalidateGBImage {
1298    SVGA3dSurfaceImageId image;
1299 } SVGA3dCmdInvalidateGBImage;
1300 #pragma pack(pop)
1301 
1302 #pragma pack(push, 1)
1303 typedef struct SVGA3dCmdInvalidateGBSurface {
1304    uint32 sid;
1305 } SVGA3dCmdInvalidateGBSurface;
1306 #pragma pack(pop)
1307 
1308 #pragma pack(push, 1)
1309 typedef struct SVGA3dCmdInvalidateGBImagePartial {
1310    SVGA3dSurfaceImageId image;
1311    SVGA3dBox box;
1312    uint32 invertBox;
1313 } SVGA3dCmdInvalidateGBImagePartial;
1314 #pragma pack(pop)
1315 
1316 #pragma pack(push, 1)
1317 typedef struct SVGA3dCmdDefineGBContext {
1318    uint32 cid;
1319 } SVGA3dCmdDefineGBContext;
1320 #pragma pack(pop)
1321 
1322 #pragma pack(push, 1)
1323 typedef struct SVGA3dCmdDestroyGBContext {
1324    uint32 cid;
1325 } SVGA3dCmdDestroyGBContext;
1326 #pragma pack(pop)
1327 
1328 #pragma pack(push, 1)
1329 typedef struct SVGA3dCmdBindGBContext {
1330    uint32 cid;
1331    SVGAMobId mobid;
1332    uint32 validContents;
1333 } SVGA3dCmdBindGBContext;
1334 #pragma pack(pop)
1335 
1336 #pragma pack(push, 1)
1337 typedef struct SVGA3dCmdReadbackGBContext {
1338    uint32 cid;
1339 } SVGA3dCmdReadbackGBContext;
1340 #pragma pack(pop)
1341 
1342 #pragma pack(push, 1)
1343 typedef struct SVGA3dCmdInvalidateGBContext {
1344    uint32 cid;
1345 } SVGA3dCmdInvalidateGBContext;
1346 #pragma pack(pop)
1347 
1348 #pragma pack(push, 1)
1349 typedef struct SVGA3dCmdDefineGBShader {
1350    uint32 shid;
1351    SVGA3dShaderType type;
1352    uint32 sizeInBytes;
1353 } SVGA3dCmdDefineGBShader;
1354 #pragma pack(pop)
1355 
1356 #pragma pack(push, 1)
1357 typedef struct SVGA3dCmdBindGBShader {
1358    uint32 shid;
1359    SVGAMobId mobid;
1360    uint32 offsetInBytes;
1361 } SVGA3dCmdBindGBShader;
1362 #pragma pack(pop)
1363 
1364 #pragma pack(push, 1)
1365 typedef struct SVGA3dCmdDestroyGBShader {
1366    uint32 shid;
1367 } SVGA3dCmdDestroyGBShader;
1368 #pragma pack(pop)
1369 
1370 #pragma pack(push, 1)
1371 typedef struct {
1372    uint32 cid;
1373    uint32 regStart;
1374    SVGA3dShaderType shaderType;
1375    SVGA3dShaderConstType constType;
1376 
1377 } SVGA3dCmdSetGBShaderConstInline;
1378 #pragma pack(pop)
1379 
1380 #pragma pack(push, 1)
1381 typedef struct {
1382    uint32 cid;
1383    SVGA3dQueryType type;
1384 } SVGA3dCmdBeginGBQuery;
1385 #pragma pack(pop)
1386 
1387 #pragma pack(push, 1)
1388 typedef struct {
1389    uint32 cid;
1390    SVGA3dQueryType type;
1391    SVGAMobId mobid;
1392    uint32 offset;
1393 } SVGA3dCmdEndGBQuery;
1394 #pragma pack(pop)
1395 
1396 #pragma pack(push, 1)
1397 typedef struct {
1398    uint32 cid;
1399    SVGA3dQueryType type;
1400    SVGAMobId mobid;
1401    uint32 offset;
1402 } SVGA3dCmdWaitForGBQuery;
1403 #pragma pack(pop)
1404 
1405 #pragma pack(push, 1)
1406 typedef struct {
1407    SVGAMobId mobid;
1408    uint32 mustBeZero;
1409    uint32 initialized;
1410 } SVGA3dCmdEnableGart;
1411 #pragma pack(pop)
1412 
1413 #pragma pack(push, 1)
1414 typedef struct {
1415    SVGAMobId mobid;
1416    uint32 gartOffset;
1417 } SVGA3dCmdMapMobIntoGart;
1418 #pragma pack(pop)
1419 
1420 #pragma pack(push, 1)
1421 typedef struct {
1422    uint32 gartOffset;
1423    uint32 numPages;
1424 } SVGA3dCmdUnmapGartRange;
1425 #pragma pack(pop)
1426 
1427 #pragma pack(push, 1)
1428 typedef struct {
1429    uint32 stid;
1430    uint32 width;
1431    uint32 height;
1432    int32 xRoot;
1433    int32 yRoot;
1434    SVGAScreenTargetFlags flags;
1435 
1436    uint32 dpi;
1437 } SVGA3dCmdDefineGBScreenTarget;
1438 #pragma pack(pop)
1439 
1440 #pragma pack(push, 1)
1441 typedef struct {
1442    uint32 stid;
1443 } SVGA3dCmdDestroyGBScreenTarget;
1444 #pragma pack(pop)
1445 
1446 #pragma pack(push, 1)
1447 typedef struct {
1448    uint32 stid;
1449    SVGA3dSurfaceImageId image;
1450 } SVGA3dCmdBindGBScreenTarget;
1451 #pragma pack(pop)
1452 
1453 #pragma pack(push, 1)
1454 typedef struct {
1455    uint32 stid;
1456    SVGA3dRect rect;
1457 } SVGA3dCmdUpdateGBScreenTarget;
1458 #pragma pack(pop)
1459 
1460 #pragma pack(push, 1)
1461 typedef struct {
1462    uint32 stid;
1463    SVGA3dRect rect;
1464    SVGA3dFrameUpdateType type;
1465 } SVGA3dCmdUpdateGBScreenTarget_v2;
1466 #pragma pack(pop)
1467 
1468 #pragma pack(push, 1)
1469 typedef struct {
1470    uint32 stid;
1471    SVGA3dRect rect;
1472    SVGA3dFrameUpdateType type;
1473    SVGAUnsignedPoint srcPoint;
1474 } SVGA3dCmdUpdateGBScreenTargetMove;
1475 #pragma pack(pop)
1476 
1477 #pragma pack(push, 1)
1478 typedef struct SVGA3dCmdGBScreenDMA {
1479    uint32 screenId;
1480    uint32 dead;
1481    SVGAMobId destMobID;
1482    uint32 destPitch;
1483    SVGAMobId changeMapMobID;
1484 } SVGA3dCmdGBScreenDMA;
1485 #pragma pack(pop)
1486 
1487 #pragma pack(push, 1)
1488 typedef struct {
1489    uint32 value;
1490    uint32 mobId;
1491    uint32 mobOffset;
1492 } SVGA3dCmdGBMobFence;
1493 #pragma pack(pop)
1494 
1495 #pragma pack(push, 1)
1496 typedef struct {
1497    uint32 stid;
1498    SVGA3dSurfaceImageId dest;
1499 
1500    uint32 statusMobId;
1501    uint32 statusMobOffset;
1502 
1503    uint32 mustBeInvalidId;
1504    uint32 mustBeZero;
1505 } SVGA3dCmdScreenCopy;
1506 #pragma pack(pop)
1507 
1508 #define SVGA_SCREEN_COPY_STATUS_FAILURE 0x00
1509 #define SVGA_SCREEN_COPY_STATUS_SUCCESS 0x01
1510 #define SVGA_SCREEN_COPY_STATUS_INVALID 0xFFFFFFFF
1511 
1512 #pragma pack(push, 1)
1513 typedef struct {
1514    uint32 sid;
1515 } SVGA3dCmdWriteZeroSurface;
1516 #pragma pack(pop)
1517 
1518 #pragma pack(push, 1)
1519 typedef struct {
1520    uint32 sid;
1521 } SVGA3dCmdUpdateZeroSurface;
1522 #pragma pack(pop)
1523 
1524 #endif
1525