1 /* SPDX-License-Identifier: GPL-2.0 OR MIT */
3 * Copyright 2012-2021 VMware, Inc.
5 * Permission is hereby granted, free of charge, to any person
6 * obtaining a copy of this software and associated documentation
7 * files (the "Software"), to deal in the Software without
8 * restriction, including without limitation the rights to use, copy,
9 * modify, merge, publish, distribute, sublicense, and/or sell copies
10 * of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
13 * The above copyright notice and this permission notice shall be
14 * included in all copies or substantial portions of the Software.
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
20 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
21 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30 * SVGA 3d hardware cmd definitions
35 #ifndef _SVGA3D_CMD_H_
36 #define _SVGA3D_CMD_H_
38 #include "svga3d_types.h"
39 #include "svga3d_limits.h"
42 typedef enum SVGAFifo3dCmdId {
43 SVGA_3D_CMD_LEGACY_BASE = 1000,
44 SVGA_3D_CMD_BASE = 1040,
46 SVGA_3D_CMD_SURFACE_DEFINE = 1040,
47 SVGA_3D_CMD_SURFACE_DESTROY = 1041,
48 SVGA_3D_CMD_SURFACE_COPY = 1042,
49 SVGA_3D_CMD_SURFACE_STRETCHBLT = 1043,
50 SVGA_3D_CMD_SURFACE_DMA = 1044,
51 SVGA_3D_CMD_CONTEXT_DEFINE = 1045,
52 SVGA_3D_CMD_CONTEXT_DESTROY = 1046,
53 SVGA_3D_CMD_SETTRANSFORM = 1047,
54 SVGA_3D_CMD_SETZRANGE = 1048,
55 SVGA_3D_CMD_SETRENDERSTATE = 1049,
56 SVGA_3D_CMD_SETRENDERTARGET = 1050,
57 SVGA_3D_CMD_SETTEXTURESTATE = 1051,
58 SVGA_3D_CMD_SETMATERIAL = 1052,
59 SVGA_3D_CMD_SETLIGHTDATA = 1053,
60 SVGA_3D_CMD_SETLIGHTENABLED = 1054,
61 SVGA_3D_CMD_SETVIEWPORT = 1055,
62 SVGA_3D_CMD_SETCLIPPLANE = 1056,
63 SVGA_3D_CMD_CLEAR = 1057,
64 SVGA_3D_CMD_PRESENT = 1058,
65 SVGA_3D_CMD_SHADER_DEFINE = 1059,
66 SVGA_3D_CMD_SHADER_DESTROY = 1060,
67 SVGA_3D_CMD_SET_SHADER = 1061,
68 SVGA_3D_CMD_SET_SHADER_CONST = 1062,
69 SVGA_3D_CMD_DRAW_PRIMITIVES = 1063,
70 SVGA_3D_CMD_SETSCISSORRECT = 1064,
71 SVGA_3D_CMD_BEGIN_QUERY = 1065,
72 SVGA_3D_CMD_END_QUERY = 1066,
73 SVGA_3D_CMD_WAIT_FOR_QUERY = 1067,
74 SVGA_3D_CMD_PRESENT_READBACK = 1068,
75 SVGA_3D_CMD_BLIT_SURFACE_TO_SCREEN = 1069,
76 SVGA_3D_CMD_SURFACE_DEFINE_V2 = 1070,
77 SVGA_3D_CMD_GENERATE_MIPMAPS = 1071,
78 SVGA_3D_CMD_DEAD4 = 1072,
79 SVGA_3D_CMD_DEAD5 = 1073,
80 SVGA_3D_CMD_DEAD6 = 1074,
81 SVGA_3D_CMD_DEAD7 = 1075,
82 SVGA_3D_CMD_DEAD8 = 1076,
83 SVGA_3D_CMD_DEAD9 = 1077,
84 SVGA_3D_CMD_DEAD10 = 1078,
85 SVGA_3D_CMD_DEAD11 = 1079,
86 SVGA_3D_CMD_ACTIVATE_SURFACE = 1080,
87 SVGA_3D_CMD_DEACTIVATE_SURFACE = 1081,
88 SVGA_3D_CMD_SCREEN_DMA = 1082,
89 SVGA_3D_CMD_DEAD1 = 1083,
90 SVGA_3D_CMD_DEAD2 = 1084,
92 SVGA_3D_CMD_DEAD12 = 1085,
93 SVGA_3D_CMD_DEAD13 = 1086,
94 SVGA_3D_CMD_DEAD14 = 1087,
95 SVGA_3D_CMD_DEAD15 = 1088,
96 SVGA_3D_CMD_DEAD16 = 1089,
97 SVGA_3D_CMD_DEAD17 = 1090,
99 SVGA_3D_CMD_SET_OTABLE_BASE = 1091,
100 SVGA_3D_CMD_READBACK_OTABLE = 1092,
102 SVGA_3D_CMD_DEFINE_GB_MOB = 1093,
103 SVGA_3D_CMD_DESTROY_GB_MOB = 1094,
104 SVGA_3D_CMD_DEAD3 = 1095,
105 SVGA_3D_CMD_UPDATE_GB_MOB_MAPPING = 1096,
107 SVGA_3D_CMD_DEFINE_GB_SURFACE = 1097,
108 SVGA_3D_CMD_DESTROY_GB_SURFACE = 1098,
109 SVGA_3D_CMD_BIND_GB_SURFACE = 1099,
110 SVGA_3D_CMD_COND_BIND_GB_SURFACE = 1100,
111 SVGA_3D_CMD_UPDATE_GB_IMAGE = 1101,
112 SVGA_3D_CMD_UPDATE_GB_SURFACE = 1102,
113 SVGA_3D_CMD_READBACK_GB_IMAGE = 1103,
114 SVGA_3D_CMD_READBACK_GB_SURFACE = 1104,
115 SVGA_3D_CMD_INVALIDATE_GB_IMAGE = 1105,
116 SVGA_3D_CMD_INVALIDATE_GB_SURFACE = 1106,
118 SVGA_3D_CMD_DEFINE_GB_CONTEXT = 1107,
119 SVGA_3D_CMD_DESTROY_GB_CONTEXT = 1108,
120 SVGA_3D_CMD_BIND_GB_CONTEXT = 1109,
121 SVGA_3D_CMD_READBACK_GB_CONTEXT = 1110,
122 SVGA_3D_CMD_INVALIDATE_GB_CONTEXT = 1111,
124 SVGA_3D_CMD_DEFINE_GB_SHADER = 1112,
125 SVGA_3D_CMD_DESTROY_GB_SHADER = 1113,
126 SVGA_3D_CMD_BIND_GB_SHADER = 1114,
128 SVGA_3D_CMD_SET_OTABLE_BASE64 = 1115,
130 SVGA_3D_CMD_BEGIN_GB_QUERY = 1116,
131 SVGA_3D_CMD_END_GB_QUERY = 1117,
132 SVGA_3D_CMD_WAIT_FOR_GB_QUERY = 1118,
134 SVGA_3D_CMD_NOP = 1119,
136 SVGA_3D_CMD_ENABLE_GART = 1120,
137 SVGA_3D_CMD_DISABLE_GART = 1121,
138 SVGA_3D_CMD_MAP_MOB_INTO_GART = 1122,
139 SVGA_3D_CMD_UNMAP_GART_RANGE = 1123,
141 SVGA_3D_CMD_DEFINE_GB_SCREENTARGET = 1124,
142 SVGA_3D_CMD_DESTROY_GB_SCREENTARGET = 1125,
143 SVGA_3D_CMD_BIND_GB_SCREENTARGET = 1126,
144 SVGA_3D_CMD_UPDATE_GB_SCREENTARGET = 1127,
146 SVGA_3D_CMD_READBACK_GB_IMAGE_PARTIAL = 1128,
147 SVGA_3D_CMD_INVALIDATE_GB_IMAGE_PARTIAL = 1129,
149 SVGA_3D_CMD_SET_GB_SHADERCONSTS_INLINE = 1130,
151 SVGA_3D_CMD_GB_SCREEN_DMA = 1131,
152 SVGA_3D_CMD_BIND_GB_SURFACE_WITH_PITCH = 1132,
153 SVGA_3D_CMD_GB_MOB_FENCE = 1133,
154 SVGA_3D_CMD_DEFINE_GB_SURFACE_V2 = 1134,
155 SVGA_3D_CMD_DEFINE_GB_MOB64 = 1135,
156 SVGA_3D_CMD_REDEFINE_GB_MOB64 = 1136,
157 SVGA_3D_CMD_NOP_ERROR = 1137,
159 SVGA_3D_CMD_SET_VERTEX_STREAMS = 1138,
160 SVGA_3D_CMD_SET_VERTEX_DECLS = 1139,
161 SVGA_3D_CMD_SET_VERTEX_DIVISORS = 1140,
162 SVGA_3D_CMD_DRAW = 1141,
163 SVGA_3D_CMD_DRAW_INDEXED = 1142,
165 SVGA_3D_CMD_DX_MIN = 1143,
166 SVGA_3D_CMD_DX_DEFINE_CONTEXT = 1143,
167 SVGA_3D_CMD_DX_DESTROY_CONTEXT = 1144,
168 SVGA_3D_CMD_DX_BIND_CONTEXT = 1145,
169 SVGA_3D_CMD_DX_READBACK_CONTEXT = 1146,
170 SVGA_3D_CMD_DX_INVALIDATE_CONTEXT = 1147,
171 SVGA_3D_CMD_DX_SET_SINGLE_CONSTANT_BUFFER = 1148,
172 SVGA_3D_CMD_DX_SET_SHADER_RESOURCES = 1149,
173 SVGA_3D_CMD_DX_SET_SHADER = 1150,
174 SVGA_3D_CMD_DX_SET_SAMPLERS = 1151,
175 SVGA_3D_CMD_DX_DRAW = 1152,
176 SVGA_3D_CMD_DX_DRAW_INDEXED = 1153,
177 SVGA_3D_CMD_DX_DRAW_INSTANCED = 1154,
178 SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED = 1155,
179 SVGA_3D_CMD_DX_DRAW_AUTO = 1156,
180 SVGA_3D_CMD_DX_SET_INPUT_LAYOUT = 1157,
181 SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS = 1158,
182 SVGA_3D_CMD_DX_SET_INDEX_BUFFER = 1159,
183 SVGA_3D_CMD_DX_SET_TOPOLOGY = 1160,
184 SVGA_3D_CMD_DX_SET_RENDERTARGETS = 1161,
185 SVGA_3D_CMD_DX_SET_BLEND_STATE = 1162,
186 SVGA_3D_CMD_DX_SET_DEPTHSTENCIL_STATE = 1163,
187 SVGA_3D_CMD_DX_SET_RASTERIZER_STATE = 1164,
188 SVGA_3D_CMD_DX_DEFINE_QUERY = 1165,
189 SVGA_3D_CMD_DX_DESTROY_QUERY = 1166,
190 SVGA_3D_CMD_DX_BIND_QUERY = 1167,
191 SVGA_3D_CMD_DX_SET_QUERY_OFFSET = 1168,
192 SVGA_3D_CMD_DX_BEGIN_QUERY = 1169,
193 SVGA_3D_CMD_DX_END_QUERY = 1170,
194 SVGA_3D_CMD_DX_READBACK_QUERY = 1171,
195 SVGA_3D_CMD_DX_SET_PREDICATION = 1172,
196 SVGA_3D_CMD_DX_SET_SOTARGETS = 1173,
197 SVGA_3D_CMD_DX_SET_VIEWPORTS = 1174,
198 SVGA_3D_CMD_DX_SET_SCISSORRECTS = 1175,
199 SVGA_3D_CMD_DX_CLEAR_RENDERTARGET_VIEW = 1176,
200 SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW = 1177,
201 SVGA_3D_CMD_DX_PRED_COPY_REGION = 1178,
202 SVGA_3D_CMD_DX_PRED_COPY = 1179,
203 SVGA_3D_CMD_DX_PRESENTBLT = 1180,
204 SVGA_3D_CMD_DX_GENMIPS = 1181,
205 SVGA_3D_CMD_DX_UPDATE_SUBRESOURCE = 1182,
206 SVGA_3D_CMD_DX_READBACK_SUBRESOURCE = 1183,
207 SVGA_3D_CMD_DX_INVALIDATE_SUBRESOURCE = 1184,
208 SVGA_3D_CMD_DX_DEFINE_SHADERRESOURCE_VIEW = 1185,
209 SVGA_3D_CMD_DX_DESTROY_SHADERRESOURCE_VIEW = 1186,
210 SVGA_3D_CMD_DX_DEFINE_RENDERTARGET_VIEW = 1187,
211 SVGA_3D_CMD_DX_DESTROY_RENDERTARGET_VIEW = 1188,
212 SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW = 1189,
213 SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW = 1190,
214 SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT = 1191,
215 SVGA_3D_CMD_DX_DESTROY_ELEMENTLAYOUT = 1192,
216 SVGA_3D_CMD_DX_DEFINE_BLEND_STATE = 1193,
217 SVGA_3D_CMD_DX_DESTROY_BLEND_STATE = 1194,
218 SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_STATE = 1195,
219 SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_STATE = 1196,
220 SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE = 1197,
221 SVGA_3D_CMD_DX_DESTROY_RASTERIZER_STATE = 1198,
222 SVGA_3D_CMD_DX_DEFINE_SAMPLER_STATE = 1199,
223 SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE = 1200,
224 SVGA_3D_CMD_DX_DEFINE_SHADER = 1201,
225 SVGA_3D_CMD_DX_DESTROY_SHADER = 1202,
226 SVGA_3D_CMD_DX_BIND_SHADER = 1203,
227 SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT = 1204,
228 SVGA_3D_CMD_DX_DESTROY_STREAMOUTPUT = 1205,
229 SVGA_3D_CMD_DX_SET_STREAMOUTPUT = 1206,
230 SVGA_3D_CMD_DX_SET_COTABLE = 1207,
231 SVGA_3D_CMD_DX_READBACK_COTABLE = 1208,
232 SVGA_3D_CMD_DX_BUFFER_COPY = 1209,
233 SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER = 1210,
234 SVGA_3D_CMD_DX_SURFACE_COPY_AND_READBACK = 1211,
235 SVGA_3D_CMD_DX_MOVE_QUERY = 1212,
236 SVGA_3D_CMD_DX_BIND_ALL_QUERY = 1213,
237 SVGA_3D_CMD_DX_READBACK_ALL_QUERY = 1214,
238 SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER = 1215,
239 SVGA_3D_CMD_DX_MOB_FENCE_64 = 1216,
240 SVGA_3D_CMD_DX_BIND_ALL_SHADER = 1217,
241 SVGA_3D_CMD_DX_HINT = 1218,
242 SVGA_3D_CMD_DX_BUFFER_UPDATE = 1219,
243 SVGA_3D_CMD_DX_SET_VS_CONSTANT_BUFFER_OFFSET = 1220,
244 SVGA_3D_CMD_DX_SET_PS_CONSTANT_BUFFER_OFFSET = 1221,
245 SVGA_3D_CMD_DX_SET_GS_CONSTANT_BUFFER_OFFSET = 1222,
246 SVGA_3D_CMD_DX_SET_HS_CONSTANT_BUFFER_OFFSET = 1223,
247 SVGA_3D_CMD_DX_SET_DS_CONSTANT_BUFFER_OFFSET = 1224,
248 SVGA_3D_CMD_DX_SET_CS_CONSTANT_BUFFER_OFFSET = 1225,
250 SVGA_3D_CMD_DX_COND_BIND_ALL_SHADER = 1226,
251 SVGA_3D_CMD_DX_MAX = 1227,
253 SVGA_3D_CMD_SCREEN_COPY = 1227,
255 SVGA_3D_CMD_RESERVED1 = 1228,
256 SVGA_3D_CMD_RESERVED2 = 1229,
257 SVGA_3D_CMD_RESERVED3 = 1230,
258 SVGA_3D_CMD_RESERVED4 = 1231,
259 SVGA_3D_CMD_RESERVED5 = 1232,
260 SVGA_3D_CMD_RESERVED6 = 1233,
261 SVGA_3D_CMD_RESERVED7 = 1234,
262 SVGA_3D_CMD_RESERVED8 = 1235,
264 SVGA_3D_CMD_GROW_OTABLE = 1236,
265 SVGA_3D_CMD_DX_GROW_COTABLE = 1237,
266 SVGA_3D_CMD_INTRA_SURFACE_COPY = 1238,
268 SVGA_3D_CMD_DEFINE_GB_SURFACE_V3 = 1239,
270 SVGA_3D_CMD_DX_RESOLVE_COPY = 1240,
271 SVGA_3D_CMD_DX_PRED_RESOLVE_COPY = 1241,
272 SVGA_3D_CMD_DX_PRED_CONVERT_REGION = 1242,
273 SVGA_3D_CMD_DX_PRED_CONVERT = 1243,
274 SVGA_3D_CMD_WHOLE_SURFACE_COPY = 1244,
276 SVGA_3D_CMD_DX_DEFINE_UA_VIEW = 1245,
277 SVGA_3D_CMD_DX_DESTROY_UA_VIEW = 1246,
278 SVGA_3D_CMD_DX_CLEAR_UA_VIEW_UINT = 1247,
279 SVGA_3D_CMD_DX_CLEAR_UA_VIEW_FLOAT = 1248,
280 SVGA_3D_CMD_DX_COPY_STRUCTURE_COUNT = 1249,
281 SVGA_3D_CMD_DX_SET_UA_VIEWS = 1250,
283 SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED_INDIRECT = 1251,
284 SVGA_3D_CMD_DX_DRAW_INSTANCED_INDIRECT = 1252,
285 SVGA_3D_CMD_DX_DISPATCH = 1253,
286 SVGA_3D_CMD_DX_DISPATCH_INDIRECT = 1254,
288 SVGA_3D_CMD_WRITE_ZERO_SURFACE = 1255,
289 SVGA_3D_CMD_UPDATE_ZERO_SURFACE = 1256,
290 SVGA_3D_CMD_DX_TRANSFER_TO_BUFFER = 1257,
291 SVGA_3D_CMD_DX_SET_STRUCTURE_COUNT = 1258,
293 SVGA_3D_CMD_LOGICOPS_BITBLT = 1259,
294 SVGA_3D_CMD_LOGICOPS_TRANSBLT = 1260,
295 SVGA_3D_CMD_LOGICOPS_STRETCHBLT = 1261,
296 SVGA_3D_CMD_LOGICOPS_COLORFILL = 1262,
297 SVGA_3D_CMD_LOGICOPS_ALPHABLEND = 1263,
298 SVGA_3D_CMD_LOGICOPS_CLEARTYPEBLEND = 1264,
300 SVGA_3D_CMD_DX_COPY_COTABLE_INTO_MOB = 1265,
302 SVGA_3D_CMD_UPDATE_GB_SCREENTARGET_V2 = 1266,
304 SVGA_3D_CMD_DEFINE_GB_SURFACE_V4 = 1267,
305 SVGA_3D_CMD_DX_SET_CS_UA_VIEWS = 1268,
306 SVGA_3D_CMD_DX_SET_MIN_LOD = 1269,
308 SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW_V2 = 1272,
309 SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT_WITH_MOB = 1273,
310 SVGA_3D_CMD_DX_SET_SHADER_IFACE = 1274,
311 SVGA_3D_CMD_DX_BIND_STREAMOUTPUT = 1275,
312 SVGA_3D_CMD_SURFACE_STRETCHBLT_NON_MS_TO_MS = 1276,
313 SVGA_3D_CMD_DX_BIND_SHADER_IFACE = 1277,
315 SVGA_3D_CMD_UPDATE_GB_SCREENTARGET_MOVE = 1278,
317 SVGA_3D_CMD_DX_PRED_STAGING_COPY = 1281,
318 SVGA_3D_CMD_DX_STAGING_COPY = 1282,
319 SVGA_3D_CMD_DX_PRED_STAGING_COPY_REGION = 1283,
320 SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS_V2 = 1284,
321 SVGA_3D_CMD_DX_SET_INDEX_BUFFER_V2 = 1285,
322 SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS_OFFSET_AND_SIZE = 1286,
323 SVGA_3D_CMD_DX_SET_INDEX_BUFFER_OFFSET_AND_SIZE = 1287,
324 SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE_V2 = 1288,
325 SVGA_3D_CMD_DX_PRED_STAGING_CONVERT_REGION = 1289,
326 SVGA_3D_CMD_DX_PRED_STAGING_CONVERT = 1290,
327 SVGA_3D_CMD_DX_STAGING_BUFFER_COPY = 1291,
329 SVGA_3D_CMD_MAX = 1303,
330 SVGA_3D_CMD_FUTURE_MAX = 3000
333 #define SVGA_NUM_3D_CMD (SVGA_3D_CMD_MAX - SVGA_3D_CMD_BASE)
335 #pragma pack(push, 1)
342 #pragma pack(push, 1)
348 #pragma pack(push, 1)
351 SVGA3dSurface1Flags surfaceFlags;
352 SVGA3dSurfaceFormat format;
354 SVGA3dSurfaceFace face[SVGA3D_MAX_SURFACE_FACES];
356 } SVGA3dCmdDefineSurface;
359 #pragma pack(push, 1)
362 SVGA3dSurface1Flags surfaceFlags;
363 SVGA3dSurfaceFormat format;
365 SVGA3dSurfaceFace face[SVGA3D_MAX_SURFACE_FACES];
366 uint32 multisampleCount;
367 SVGA3dTextureFilter autogenFilter;
369 } SVGA3dCmdDefineSurface_v2;
372 #pragma pack(push, 1)
375 } SVGA3dCmdDestroySurface;
378 #pragma pack(push, 1)
381 } SVGA3dCmdDefineContext;
384 #pragma pack(push, 1)
387 } SVGA3dCmdDestroyContext;
390 #pragma pack(push, 1)
393 SVGA3dClearFlag clearFlag;
401 #pragma pack(push, 1)
403 SVGA3dLightType type;
404 SVGA3dBool inWorldSpace;
420 #pragma pack(push, 1)
427 #pragma pack(push, 1)
429 SVGA3dRenderStateName state;
437 #pragma pack(push, 1)
441 } SVGA3dCmdSetRenderState;
444 #pragma pack(push, 1)
447 SVGA3dRenderTargetType type;
448 SVGA3dSurfaceImageId target;
449 } SVGA3dCmdSetRenderTarget;
452 #pragma pack(push, 1)
454 SVGA3dSurfaceImageId src;
455 SVGA3dSurfaceImageId dest;
457 } SVGA3dCmdSurfaceCopy;
460 #pragma pack(push, 1)
462 SVGA3dSurfaceImageId surface;
464 } SVGA3dCmdIntraSurfaceCopy;
467 #pragma pack(push, 1)
471 } SVGA3dCmdWholeSurfaceCopy;
474 #pragma pack(push, 1)
476 SVGA3dSurfaceImageId src;
477 SVGA3dSurfaceImageId dest;
480 } SVGA3dCmdSurfaceStretchBltNonMSToMS;
483 #pragma pack(push, 1)
485 SVGA3dSurfaceImageId src;
486 SVGA3dSurfaceImageId dest;
489 SVGA3dStretchBltMode mode;
490 } SVGA3dCmdSurfaceStretchBlt;
493 #pragma pack(push, 1)
497 uint32 unsynchronized : 1;
499 uint32 reserved : 30;
500 } SVGA3dSurfaceDMAFlags;
503 #pragma pack(push, 1)
505 SVGAGuestImage guest;
506 SVGA3dSurfaceImageId host;
507 SVGA3dTransferType transfer;
509 } SVGA3dCmdSurfaceDMA;
512 #pragma pack(push, 1)
516 uint32 maximumOffset;
518 SVGA3dSurfaceDMAFlags flags;
519 } SVGA3dCmdSurfaceDMASuffix;
522 #pragma pack(push, 1)
526 } SVGA3dArrayRangeHint;
529 #pragma pack(push, 1)
537 #pragma pack(push, 1)
540 SVGA3dDeclMethod method;
541 SVGA3dDeclUsage usage;
543 } SVGA3dVertexArrayIdentity;
546 #pragma pack(push, 1)
547 typedef struct SVGA3dVertexDecl {
548 SVGA3dVertexArrayIdentity identity;
550 SVGA3dArrayRangeHint rangeHint;
554 #pragma pack(push, 1)
555 typedef struct SVGA3dPrimitiveRange {
556 SVGA3dPrimitiveType primType;
557 uint32 primitiveCount;
559 SVGA3dArray indexArray;
563 } SVGA3dPrimitiveRange;
566 #pragma pack(push, 1)
569 uint32 numVertexDecls;
572 } SVGA3dCmdDrawPrimitives;
575 #pragma pack(push, 1)
579 uint32 primitiveCount;
580 uint32 startVertexLocation;
587 #pragma pack(push, 1)
593 uint32 indexBufferSid;
594 uint32 indexBufferOffset;
596 uint8 indexBufferStride;
598 int32 baseVertexLocation;
600 uint32 primitiveCount;
603 } SVGA3dCmdDrawIndexed;
606 #pragma pack(push, 1)
616 } SVGA3dVertexElement;
619 #define SVGA3D_VERTEX_ELEMENT_RESPECT_STREAM (1 << 7)
621 #pragma pack(push, 1)
627 } SVGA3dCmdSetVertexDecls;
630 #pragma pack(push, 1)
635 } SVGA3dVertexStream;
638 #pragma pack(push, 1)
644 } SVGA3dCmdSetVertexStreams;
647 #pragma pack(push, 1)
651 } SVGA3dCmdSetVertexDivisors;
654 #pragma pack(push, 1)
657 SVGA3dTextureStateName name;
662 } SVGA3dTextureState;
665 #pragma pack(push, 1)
669 } SVGA3dCmdSetTextureState;
672 #pragma pack(push, 1)
675 SVGA3dTransformType type;
677 } SVGA3dCmdSetTransform;
680 #pragma pack(push, 1)
687 #pragma pack(push, 1)
691 } SVGA3dCmdSetZRange;
694 #pragma pack(push, 1)
704 #pragma pack(push, 1)
708 SVGA3dMaterial material;
709 } SVGA3dCmdSetMaterial;
712 #pragma pack(push, 1)
716 SVGA3dLightData data;
717 } SVGA3dCmdSetLightData;
720 #pragma pack(push, 1)
725 } SVGA3dCmdSetLightEnabled;
728 #pragma pack(push, 1)
732 } SVGA3dCmdSetViewport;
735 #pragma pack(push, 1)
739 } SVGA3dCmdSetScissorRect;
742 #pragma pack(push, 1)
747 } SVGA3dCmdSetClipPlane;
750 #pragma pack(push, 1)
754 SVGA3dShaderType type;
756 } SVGA3dCmdDefineShader;
759 #pragma pack(push, 1)
763 SVGA3dShaderType type;
764 } SVGA3dCmdDestroyShader;
767 #pragma pack(push, 1)
771 SVGA3dShaderType type;
772 SVGA3dShaderConstType ctype;
775 } SVGA3dCmdSetShaderConst;
778 #pragma pack(push, 1)
781 SVGA3dShaderType type;
783 } SVGA3dCmdSetShader;
786 #pragma pack(push, 1)
789 SVGA3dQueryType type;
790 } SVGA3dCmdBeginQuery;
793 #pragma pack(push, 1)
796 SVGA3dQueryType type;
797 SVGAGuestPtr guestResult;
801 #pragma pack(push, 1)
804 SVGA3dQueryType type;
805 SVGAGuestPtr guestResult;
806 } SVGA3dCmdWaitForQuery;
809 #pragma pack(push, 1)
812 SVGA3dQueryState state;
820 #pragma pack(push, 1)
822 SVGA3dSurfaceImageId srcImage;
823 SVGASignedRect srcRect;
825 SVGASignedRect destRect;
827 } SVGA3dCmdBlitSurfaceToScreen;
830 #pragma pack(push, 1)
833 SVGA3dTextureFilter filter;
834 } SVGA3dCmdGenerateMipmaps;
837 #pragma pack(push, 1)
840 } SVGA3dCmdActivateSurface;
843 #pragma pack(push, 1)
846 } SVGA3dCmdDeactivateSurface;
849 #pragma pack(push, 1)
850 typedef struct SVGA3dCmdScreenDMA {
852 SVGAGuestImage refBuffer;
853 SVGAGuestImage destBuffer;
854 SVGAGuestImage changeMap;
855 } SVGA3dCmdScreenDMA;
858 #define SVGA3D_LOTRANSBLT_HONORALPHA (0x01)
859 #define SVGA3D_LOSTRETCHBLT_MIRRORX (0x01)
860 #define SVGA3D_LOSTRETCHBLT_MIRRORY (0x02)
861 #define SVGA3D_LOALPHABLEND_SRCHASALPHA (0x01)
863 #pragma pack(push, 1)
864 typedef struct SVGA3dCmdLogicOpsBitBlt {
865 SVGA3dSurfaceImageId src;
866 SVGA3dSurfaceImageId dst;
867 SVGA3dLogicOp logicOp;
868 SVGA3dLogicOpRop3 logicOpRop3;
870 } SVGA3dCmdLogicOpsBitBlt;
873 #pragma pack(push, 1)
874 typedef struct SVGA3dCmdLogicOpsTransBlt {
875 SVGA3dSurfaceImageId src;
876 SVGA3dSurfaceImageId dst;
880 SVGA3dSignedBox dstBox;
882 } SVGA3dCmdLogicOpsTransBlt;
885 #pragma pack(push, 1)
886 typedef struct SVGA3dCmdLogicOpsStretchBlt {
887 SVGA3dSurfaceImageId src;
888 SVGA3dSurfaceImageId dst;
892 SVGA3dSignedBox dstBox;
894 } SVGA3dCmdLogicOpsStretchBlt;
897 #pragma pack(push, 1)
898 typedef struct SVGA3dCmdLogicOpsColorFill {
899 SVGA3dSurfaceImageId dst;
901 SVGA3dLogicOp logicOp;
902 SVGA3dLogicOpRop3 logicOpRop3;
904 } SVGA3dCmdLogicOpsColorFill;
907 #pragma pack(push, 1)
908 typedef struct SVGA3dCmdLogicOpsAlphaBlend {
909 SVGA3dSurfaceImageId src;
910 SVGA3dSurfaceImageId dst;
914 SVGA3dSignedBox dstBox;
916 } SVGA3dCmdLogicOpsAlphaBlend;
919 #define SVGA3D_CLEARTYPE_INVALID_GAMMA_INDEX 0xFFFFFFFF
921 #define SVGA3D_CLEARTYPE_GAMMA_WIDTH 512
922 #define SVGA3D_CLEARTYPE_GAMMA_HEIGHT 16
924 #pragma pack(push, 1)
925 typedef struct SVGA3dCmdLogicOpsClearTypeBlend {
926 SVGA3dSurfaceImageId tmp;
927 SVGA3dSurfaceImageId dst;
928 SVGA3dSurfaceImageId gammaSurf;
929 SVGA3dSurfaceImageId alphaSurf;
936 } SVGA3dCmdLogicOpsClearTypeBlend;
939 #pragma pack(push, 1)
941 SVGAMobFormat ptDepth;
944 } SVGAOTableMobEntry;
947 #pragma pack(push, 1)
949 SVGA3dSurfaceFormat format;
950 SVGA3dSurface1Flags surface1Flags;
952 uint32 multisampleCount;
953 SVGA3dTextureFilter autogenFilter;
958 SVGA3dSurface2Flags surface2Flags;
959 uint8 multisamplePattern;
961 uint16 bufferByteStride;
964 } SVGAOTableSurfaceEntry;
967 #pragma pack(push, 1)
971 } SVGAOTableContextEntry;
974 #pragma pack(push, 1)
976 SVGA3dShaderType type;
978 uint32 offsetInBytes;
980 } SVGAOTableShaderEntry;
983 #define SVGA_STFLAG_PRIMARY (1 << 0)
984 #define SVGA_STFLAG_RESERVED (1 << 1)
985 typedef uint32 SVGAScreenTargetFlags;
987 #pragma pack(push, 1)
989 SVGA3dSurfaceImageId image;
994 SVGAScreenTargetFlags flags;
997 } SVGAOTableScreenTargetEntry;
1000 #pragma pack(push, 1)
1003 } SVGA3dShaderConstFloat;
1006 #pragma pack(push, 1)
1009 } SVGA3dShaderConstInt;
1012 #pragma pack(push, 1)
1015 } SVGA3dShaderConstBool;
1018 #pragma pack(push, 1)
1020 uint16 streamOffset;
1025 } SVGAGBVertexElement;
1028 #pragma pack(push, 1)
1033 } SVGAGBVertexStream;
1035 #pragma pack(push, 1)
1037 SVGA3dRect viewport;
1038 SVGA3dRect scissorRect;
1039 SVGA3dZRange zRange;
1041 SVGA3dSurfaceImageId renderTargets[SVGA3D_RT_MAX];
1042 SVGAGBVertexElement decl1[4];
1044 uint32 renderStates[SVGA3D_RS_MAX];
1045 SVGAGBVertexElement decl2[18];
1050 SVGA3dMaterial material;
1053 float clipPlanes[SVGA3D_MAX_CLIP_PLANES][4];
1054 float matrices[SVGA3D_TRANSFORM_MAX][16];
1056 SVGA3dBool lightEnabled[SVGA3D_NUM_LIGHTS];
1057 SVGA3dLightData lightData[SVGA3D_NUM_LIGHTS];
1059 uint32 shaders[SVGA3D_NUM_SHADERTYPE_PREDX];
1060 SVGAGBVertexElement decl3[10];
1063 uint32 occQueryActive;
1064 uint32 occQueryValue;
1066 SVGA3dShaderConstInt pShaderIValues[SVGA3D_CONSTINTREG_MAX];
1067 SVGA3dShaderConstInt vShaderIValues[SVGA3D_CONSTINTREG_MAX];
1068 uint16 pShaderBValues;
1069 uint16 vShaderBValues;
1071 SVGAGBVertexStream streams[SVGA3D_MAX_VERTEX_ARRAYS];
1072 SVGA3dVertexDivisor divisors[SVGA3D_MAX_VERTEX_ARRAYS];
1073 uint32 numVertexDecls;
1074 uint32 numVertexStreams;
1075 uint32 numVertexDivisors;
1078 uint32 tsColorKey[SVGA3D_NUM_TEXTURE_UNITS];
1079 uint32 textureStages[SVGA3D_NUM_TEXTURE_UNITS][SVGA3D_TS_CONSTANT + 1];
1080 uint32 tsColorKeyEnable[SVGA3D_NUM_TEXTURE_UNITS];
1082 SVGA3dShaderConstFloat pShaderFValues[SVGA3D_CONSTREG_MAX];
1083 SVGA3dShaderConstFloat vShaderFValues[SVGA3D_CONSTREG_MAX];
1084 } SVGAGBContextData;
1087 #pragma pack(push, 1)
1089 SVGAOTableType type;
1092 uint32 validSizeInBytes;
1093 SVGAMobFormat ptDepth;
1094 } SVGA3dCmdSetOTableBase;
1097 #pragma pack(push, 1)
1099 SVGAOTableType type;
1102 uint32 validSizeInBytes;
1103 SVGAMobFormat ptDepth;
1104 } SVGA3dCmdSetOTableBase64;
1107 #pragma pack(push, 1)
1109 SVGAOTableType type;
1112 uint32 validSizeInBytes;
1113 SVGAMobFormat ptDepth;
1114 } SVGA3dCmdGrowOTable;
1117 #pragma pack(push, 1)
1119 SVGAOTableType type;
1120 } SVGA3dCmdReadbackOTable;
1123 #pragma pack(push, 1)
1124 typedef struct SVGA3dCmdDefineGBMob {
1126 SVGAMobFormat ptDepth;
1129 } SVGA3dCmdDefineGBMob;
1132 #pragma pack(push, 1)
1133 typedef struct SVGA3dCmdDestroyGBMob {
1135 } SVGA3dCmdDestroyGBMob;
1138 #pragma pack(push, 1)
1139 typedef struct SVGA3dCmdDefineGBMob64 {
1141 SVGAMobFormat ptDepth;
1144 } SVGA3dCmdDefineGBMob64;
1147 #pragma pack(push, 1)
1148 typedef struct SVGA3dCmdRedefineGBMob64 {
1150 SVGAMobFormat ptDepth;
1153 } SVGA3dCmdRedefineGBMob64;
1156 #pragma pack(push, 1)
1157 typedef struct SVGA3dCmdUpdateGBMobMapping {
1159 } SVGA3dCmdUpdateGBMobMapping;
1162 #pragma pack(push, 1)
1163 typedef struct SVGA3dCmdDefineGBSurface {
1165 SVGA3dSurface1Flags surfaceFlags;
1166 SVGA3dSurfaceFormat format;
1167 uint32 numMipLevels;
1168 uint32 multisampleCount;
1169 SVGA3dTextureFilter autogenFilter;
1171 } SVGA3dCmdDefineGBSurface;
1174 #pragma pack(push, 1)
1175 typedef struct SVGA3dCmdDefineGBSurface_v2 {
1177 SVGA3dSurface1Flags surfaceFlags;
1178 SVGA3dSurfaceFormat format;
1179 uint32 numMipLevels;
1180 uint32 multisampleCount;
1181 SVGA3dTextureFilter autogenFilter;
1185 } SVGA3dCmdDefineGBSurface_v2;
1188 #pragma pack(push, 1)
1189 typedef struct SVGA3dCmdDefineGBSurface_v3 {
1191 SVGA3dSurfaceAllFlags surfaceFlags;
1192 SVGA3dSurfaceFormat format;
1193 uint32 numMipLevels;
1194 uint32 multisampleCount;
1195 SVGA3dMSPattern multisamplePattern;
1196 SVGA3dMSQualityLevel qualityLevel;
1197 SVGA3dTextureFilter autogenFilter;
1200 } SVGA3dCmdDefineGBSurface_v3;
1203 #pragma pack(push, 1)
1204 typedef struct SVGA3dCmdDefineGBSurface_v4 {
1206 SVGA3dSurfaceAllFlags surfaceFlags;
1207 SVGA3dSurfaceFormat format;
1208 uint32 numMipLevels;
1209 uint32 multisampleCount;
1210 SVGA3dMSPattern multisamplePattern;
1211 SVGA3dMSQualityLevel qualityLevel;
1212 SVGA3dTextureFilter autogenFilter;
1215 uint32 bufferByteStride;
1216 } SVGA3dCmdDefineGBSurface_v4;
1219 #pragma pack(push, 1)
1220 typedef struct SVGA3dCmdDestroyGBSurface {
1222 } SVGA3dCmdDestroyGBSurface;
1225 #pragma pack(push, 1)
1226 typedef struct SVGA3dCmdBindGBSurface {
1229 } SVGA3dCmdBindGBSurface;
1232 #pragma pack(push, 1)
1233 typedef struct SVGA3dCmdBindGBSurfaceWithPitch {
1236 uint32 baseLevelPitch;
1237 } SVGA3dCmdBindGBSurfaceWithPitch;
1240 #define SVGA3D_COND_BIND_GB_SURFACE_FLAG_READBACK (1 << 0)
1241 #define SVGA3D_COND_BIND_GB_SURFACE_FLAG_UPDATE (1 << 1)
1243 #pragma pack(push, 1)
1244 typedef struct SVGA3dCmdCondBindGBSurface {
1246 SVGAMobId testMobid;
1249 } SVGA3dCmdCondBindGBSurface;
1252 #pragma pack(push, 1)
1253 typedef struct SVGA3dCmdUpdateGBImage {
1254 SVGA3dSurfaceImageId image;
1256 } SVGA3dCmdUpdateGBImage;
1259 #pragma pack(push, 1)
1260 typedef struct SVGA3dCmdUpdateGBSurface {
1262 } SVGA3dCmdUpdateGBSurface;
1265 #pragma pack(push, 1)
1266 typedef struct SVGA3dCmdReadbackGBImage {
1267 SVGA3dSurfaceImageId image;
1268 } SVGA3dCmdReadbackGBImage;
1271 #pragma pack(push, 1)
1272 typedef struct SVGA3dCmdReadbackGBSurface {
1274 } SVGA3dCmdReadbackGBSurface;
1277 #pragma pack(push, 1)
1278 typedef struct SVGA3dCmdReadbackGBImagePartial {
1279 SVGA3dSurfaceImageId image;
1282 } SVGA3dCmdReadbackGBImagePartial;
1285 #pragma pack(push, 1)
1286 typedef struct SVGA3dCmdInvalidateGBImage {
1287 SVGA3dSurfaceImageId image;
1288 } SVGA3dCmdInvalidateGBImage;
1291 #pragma pack(push, 1)
1292 typedef struct SVGA3dCmdInvalidateGBSurface {
1294 } SVGA3dCmdInvalidateGBSurface;
1297 #pragma pack(push, 1)
1298 typedef struct SVGA3dCmdInvalidateGBImagePartial {
1299 SVGA3dSurfaceImageId image;
1302 } SVGA3dCmdInvalidateGBImagePartial;
1305 #pragma pack(push, 1)
1306 typedef struct SVGA3dCmdDefineGBContext {
1308 } SVGA3dCmdDefineGBContext;
1311 #pragma pack(push, 1)
1312 typedef struct SVGA3dCmdDestroyGBContext {
1314 } SVGA3dCmdDestroyGBContext;
1317 #pragma pack(push, 1)
1318 typedef struct SVGA3dCmdBindGBContext {
1321 uint32 validContents;
1322 } SVGA3dCmdBindGBContext;
1325 #pragma pack(push, 1)
1326 typedef struct SVGA3dCmdReadbackGBContext {
1328 } SVGA3dCmdReadbackGBContext;
1331 #pragma pack(push, 1)
1332 typedef struct SVGA3dCmdInvalidateGBContext {
1334 } SVGA3dCmdInvalidateGBContext;
1337 #pragma pack(push, 1)
1338 typedef struct SVGA3dCmdDefineGBShader {
1340 SVGA3dShaderType type;
1342 } SVGA3dCmdDefineGBShader;
1345 #pragma pack(push, 1)
1346 typedef struct SVGA3dCmdBindGBShader {
1349 uint32 offsetInBytes;
1350 } SVGA3dCmdBindGBShader;
1353 #pragma pack(push, 1)
1354 typedef struct SVGA3dCmdDestroyGBShader {
1356 } SVGA3dCmdDestroyGBShader;
1359 #pragma pack(push, 1)
1363 SVGA3dShaderType shaderType;
1364 SVGA3dShaderConstType constType;
1366 } SVGA3dCmdSetGBShaderConstInline;
1369 #pragma pack(push, 1)
1372 SVGA3dQueryType type;
1373 } SVGA3dCmdBeginGBQuery;
1376 #pragma pack(push, 1)
1379 SVGA3dQueryType type;
1382 } SVGA3dCmdEndGBQuery;
1385 #pragma pack(push, 1)
1388 SVGA3dQueryType type;
1391 } SVGA3dCmdWaitForGBQuery;
1394 #pragma pack(push, 1)
1399 } SVGA3dCmdEnableGart;
1402 #pragma pack(push, 1)
1406 } SVGA3dCmdMapMobIntoGart;
1409 #pragma pack(push, 1)
1413 } SVGA3dCmdUnmapGartRange;
1416 #pragma pack(push, 1)
1423 SVGAScreenTargetFlags flags;
1426 } SVGA3dCmdDefineGBScreenTarget;
1429 #pragma pack(push, 1)
1432 } SVGA3dCmdDestroyGBScreenTarget;
1435 #pragma pack(push, 1)
1438 SVGA3dSurfaceImageId image;
1439 } SVGA3dCmdBindGBScreenTarget;
1442 #pragma pack(push, 1)
1446 } SVGA3dCmdUpdateGBScreenTarget;
1449 #pragma pack(push, 1)
1453 SVGA3dFrameUpdateType type;
1454 } SVGA3dCmdUpdateGBScreenTarget_v2;
1457 #pragma pack(push, 1)
1461 SVGA3dFrameUpdateType type;
1462 SVGAUnsignedPoint srcPoint;
1463 } SVGA3dCmdUpdateGBScreenTargetMove;
1466 #pragma pack(push, 1)
1467 typedef struct SVGA3dCmdGBScreenDMA {
1470 SVGAMobId destMobID;
1472 SVGAMobId changeMapMobID;
1473 } SVGA3dCmdGBScreenDMA;
1476 #pragma pack(push, 1)
1481 } SVGA3dCmdGBMobFence;
1484 #pragma pack(push, 1)
1487 SVGA3dSurfaceImageId dest;
1490 uint32 statusMobOffset;
1492 uint32 mustBeInvalidId;
1494 } SVGA3dCmdScreenCopy;
1497 #define SVGA_SCREEN_COPY_STATUS_FAILURE 0x00
1498 #define SVGA_SCREEN_COPY_STATUS_SUCCESS 0x01
1499 #define SVGA_SCREEN_COPY_STATUS_INVALID 0xFFFFFFFF
1501 #pragma pack(push, 1)
1504 } SVGA3dCmdWriteZeroSurface;
1507 #pragma pack(push, 1)
1510 } SVGA3dCmdUpdateZeroSurface;