Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 OR MIT */
0002 /*
0003  * Copyright 2012-2021 VMware, Inc.
0004  *
0005  * Permission is hereby granted, free of charge, to any person
0006  * obtaining a copy of this software and associated documentation
0007  * files (the "Software"), to deal in the Software without
0008  * restriction, including without limitation the rights to use, copy,
0009  * modify, merge, publish, distribute, sublicense, and/or sell copies
0010  * of the Software, and to permit persons to whom the Software is
0011  * furnished to do so, subject to the following conditions:
0012  *
0013  * The above copyright notice and this permission notice shall be
0014  * included in all copies or substantial portions of the Software.
0015  *
0016  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
0017  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
0018  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
0019  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
0020  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
0021  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
0022  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
0023  * SOFTWARE.
0024  *
0025  */
0026 
0027 /*
0028  * svga3d_cmd.h --
0029  *
0030  *    SVGA 3d hardware cmd definitions
0031  */
0032 
0033 
0034 
0035 #ifndef _SVGA3D_CMD_H_
0036 #define _SVGA3D_CMD_H_
0037 
0038 #include "svga3d_types.h"
0039 #include "svga3d_limits.h"
0040 #include "svga_reg.h"
0041 
0042 typedef enum SVGAFifo3dCmdId {
0043     SVGA_3D_CMD_LEGACY_BASE = 1000,
0044     SVGA_3D_CMD_BASE = 1040,
0045 
0046     SVGA_3D_CMD_SURFACE_DEFINE = 1040,
0047     SVGA_3D_CMD_SURFACE_DESTROY = 1041,
0048     SVGA_3D_CMD_SURFACE_COPY = 1042,
0049     SVGA_3D_CMD_SURFACE_STRETCHBLT = 1043,
0050     SVGA_3D_CMD_SURFACE_DMA = 1044,
0051     SVGA_3D_CMD_CONTEXT_DEFINE = 1045,
0052     SVGA_3D_CMD_CONTEXT_DESTROY = 1046,
0053     SVGA_3D_CMD_SETTRANSFORM = 1047,
0054     SVGA_3D_CMD_SETZRANGE = 1048,
0055     SVGA_3D_CMD_SETRENDERSTATE = 1049,
0056     SVGA_3D_CMD_SETRENDERTARGET = 1050,
0057     SVGA_3D_CMD_SETTEXTURESTATE = 1051,
0058     SVGA_3D_CMD_SETMATERIAL = 1052,
0059     SVGA_3D_CMD_SETLIGHTDATA = 1053,
0060     SVGA_3D_CMD_SETLIGHTENABLED = 1054,
0061     SVGA_3D_CMD_SETVIEWPORT = 1055,
0062     SVGA_3D_CMD_SETCLIPPLANE = 1056,
0063     SVGA_3D_CMD_CLEAR = 1057,
0064     SVGA_3D_CMD_PRESENT = 1058,
0065     SVGA_3D_CMD_SHADER_DEFINE = 1059,
0066     SVGA_3D_CMD_SHADER_DESTROY = 1060,
0067     SVGA_3D_CMD_SET_SHADER = 1061,
0068     SVGA_3D_CMD_SET_SHADER_CONST = 1062,
0069     SVGA_3D_CMD_DRAW_PRIMITIVES = 1063,
0070     SVGA_3D_CMD_SETSCISSORRECT = 1064,
0071     SVGA_3D_CMD_BEGIN_QUERY = 1065,
0072     SVGA_3D_CMD_END_QUERY = 1066,
0073     SVGA_3D_CMD_WAIT_FOR_QUERY = 1067,
0074     SVGA_3D_CMD_PRESENT_READBACK = 1068,
0075     SVGA_3D_CMD_BLIT_SURFACE_TO_SCREEN = 1069,
0076     SVGA_3D_CMD_SURFACE_DEFINE_V2 = 1070,
0077     SVGA_3D_CMD_GENERATE_MIPMAPS = 1071,
0078     SVGA_3D_CMD_DEAD4 = 1072,
0079     SVGA_3D_CMD_DEAD5 = 1073,
0080     SVGA_3D_CMD_DEAD6 = 1074,
0081     SVGA_3D_CMD_DEAD7 = 1075,
0082     SVGA_3D_CMD_DEAD8 = 1076,
0083     SVGA_3D_CMD_DEAD9 = 1077,
0084     SVGA_3D_CMD_DEAD10 = 1078,
0085     SVGA_3D_CMD_DEAD11 = 1079,
0086     SVGA_3D_CMD_ACTIVATE_SURFACE = 1080,
0087     SVGA_3D_CMD_DEACTIVATE_SURFACE = 1081,
0088     SVGA_3D_CMD_SCREEN_DMA = 1082,
0089     SVGA_3D_CMD_DEAD1 = 1083,
0090     SVGA_3D_CMD_DEAD2 = 1084,
0091 
0092     SVGA_3D_CMD_DEAD12 = 1085,
0093     SVGA_3D_CMD_DEAD13 = 1086,
0094     SVGA_3D_CMD_DEAD14 = 1087,
0095     SVGA_3D_CMD_DEAD15 = 1088,
0096     SVGA_3D_CMD_DEAD16 = 1089,
0097     SVGA_3D_CMD_DEAD17 = 1090,
0098 
0099     SVGA_3D_CMD_SET_OTABLE_BASE = 1091,
0100     SVGA_3D_CMD_READBACK_OTABLE = 1092,
0101 
0102     SVGA_3D_CMD_DEFINE_GB_MOB = 1093,
0103     SVGA_3D_CMD_DESTROY_GB_MOB = 1094,
0104     SVGA_3D_CMD_DEAD3 = 1095,
0105     SVGA_3D_CMD_UPDATE_GB_MOB_MAPPING = 1096,
0106 
0107     SVGA_3D_CMD_DEFINE_GB_SURFACE = 1097,
0108     SVGA_3D_CMD_DESTROY_GB_SURFACE = 1098,
0109     SVGA_3D_CMD_BIND_GB_SURFACE = 1099,
0110     SVGA_3D_CMD_COND_BIND_GB_SURFACE = 1100,
0111     SVGA_3D_CMD_UPDATE_GB_IMAGE = 1101,
0112     SVGA_3D_CMD_UPDATE_GB_SURFACE = 1102,
0113     SVGA_3D_CMD_READBACK_GB_IMAGE = 1103,
0114     SVGA_3D_CMD_READBACK_GB_SURFACE = 1104,
0115     SVGA_3D_CMD_INVALIDATE_GB_IMAGE = 1105,
0116     SVGA_3D_CMD_INVALIDATE_GB_SURFACE = 1106,
0117 
0118     SVGA_3D_CMD_DEFINE_GB_CONTEXT = 1107,
0119     SVGA_3D_CMD_DESTROY_GB_CONTEXT = 1108,
0120     SVGA_3D_CMD_BIND_GB_CONTEXT = 1109,
0121     SVGA_3D_CMD_READBACK_GB_CONTEXT = 1110,
0122     SVGA_3D_CMD_INVALIDATE_GB_CONTEXT = 1111,
0123 
0124     SVGA_3D_CMD_DEFINE_GB_SHADER = 1112,
0125     SVGA_3D_CMD_DESTROY_GB_SHADER = 1113,
0126     SVGA_3D_CMD_BIND_GB_SHADER = 1114,
0127 
0128     SVGA_3D_CMD_SET_OTABLE_BASE64 = 1115,
0129 
0130     SVGA_3D_CMD_BEGIN_GB_QUERY = 1116,
0131     SVGA_3D_CMD_END_GB_QUERY = 1117,
0132     SVGA_3D_CMD_WAIT_FOR_GB_QUERY = 1118,
0133 
0134     SVGA_3D_CMD_NOP = 1119,
0135 
0136     SVGA_3D_CMD_ENABLE_GART = 1120,
0137     SVGA_3D_CMD_DISABLE_GART = 1121,
0138     SVGA_3D_CMD_MAP_MOB_INTO_GART = 1122,
0139     SVGA_3D_CMD_UNMAP_GART_RANGE = 1123,
0140 
0141     SVGA_3D_CMD_DEFINE_GB_SCREENTARGET = 1124,
0142     SVGA_3D_CMD_DESTROY_GB_SCREENTARGET = 1125,
0143     SVGA_3D_CMD_BIND_GB_SCREENTARGET = 1126,
0144     SVGA_3D_CMD_UPDATE_GB_SCREENTARGET = 1127,
0145 
0146     SVGA_3D_CMD_READBACK_GB_IMAGE_PARTIAL = 1128,
0147     SVGA_3D_CMD_INVALIDATE_GB_IMAGE_PARTIAL = 1129,
0148 
0149     SVGA_3D_CMD_SET_GB_SHADERCONSTS_INLINE = 1130,
0150 
0151     SVGA_3D_CMD_GB_SCREEN_DMA = 1131,
0152     SVGA_3D_CMD_BIND_GB_SURFACE_WITH_PITCH = 1132,
0153     SVGA_3D_CMD_GB_MOB_FENCE = 1133,
0154     SVGA_3D_CMD_DEFINE_GB_SURFACE_V2 = 1134,
0155     SVGA_3D_CMD_DEFINE_GB_MOB64 = 1135,
0156     SVGA_3D_CMD_REDEFINE_GB_MOB64 = 1136,
0157     SVGA_3D_CMD_NOP_ERROR = 1137,
0158 
0159     SVGA_3D_CMD_SET_VERTEX_STREAMS = 1138,
0160     SVGA_3D_CMD_SET_VERTEX_DECLS = 1139,
0161     SVGA_3D_CMD_SET_VERTEX_DIVISORS = 1140,
0162     SVGA_3D_CMD_DRAW = 1141,
0163     SVGA_3D_CMD_DRAW_INDEXED = 1142,
0164 
0165     SVGA_3D_CMD_DX_MIN = 1143,
0166     SVGA_3D_CMD_DX_DEFINE_CONTEXT = 1143,
0167     SVGA_3D_CMD_DX_DESTROY_CONTEXT = 1144,
0168     SVGA_3D_CMD_DX_BIND_CONTEXT = 1145,
0169     SVGA_3D_CMD_DX_READBACK_CONTEXT = 1146,
0170     SVGA_3D_CMD_DX_INVALIDATE_CONTEXT = 1147,
0171     SVGA_3D_CMD_DX_SET_SINGLE_CONSTANT_BUFFER = 1148,
0172     SVGA_3D_CMD_DX_SET_SHADER_RESOURCES = 1149,
0173     SVGA_3D_CMD_DX_SET_SHADER = 1150,
0174     SVGA_3D_CMD_DX_SET_SAMPLERS = 1151,
0175     SVGA_3D_CMD_DX_DRAW = 1152,
0176     SVGA_3D_CMD_DX_DRAW_INDEXED = 1153,
0177     SVGA_3D_CMD_DX_DRAW_INSTANCED = 1154,
0178     SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED = 1155,
0179     SVGA_3D_CMD_DX_DRAW_AUTO = 1156,
0180     SVGA_3D_CMD_DX_SET_INPUT_LAYOUT = 1157,
0181     SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS = 1158,
0182     SVGA_3D_CMD_DX_SET_INDEX_BUFFER = 1159,
0183     SVGA_3D_CMD_DX_SET_TOPOLOGY = 1160,
0184     SVGA_3D_CMD_DX_SET_RENDERTARGETS = 1161,
0185     SVGA_3D_CMD_DX_SET_BLEND_STATE = 1162,
0186     SVGA_3D_CMD_DX_SET_DEPTHSTENCIL_STATE = 1163,
0187     SVGA_3D_CMD_DX_SET_RASTERIZER_STATE = 1164,
0188     SVGA_3D_CMD_DX_DEFINE_QUERY = 1165,
0189     SVGA_3D_CMD_DX_DESTROY_QUERY = 1166,
0190     SVGA_3D_CMD_DX_BIND_QUERY = 1167,
0191     SVGA_3D_CMD_DX_SET_QUERY_OFFSET = 1168,
0192     SVGA_3D_CMD_DX_BEGIN_QUERY = 1169,
0193     SVGA_3D_CMD_DX_END_QUERY = 1170,
0194     SVGA_3D_CMD_DX_READBACK_QUERY = 1171,
0195     SVGA_3D_CMD_DX_SET_PREDICATION = 1172,
0196     SVGA_3D_CMD_DX_SET_SOTARGETS = 1173,
0197     SVGA_3D_CMD_DX_SET_VIEWPORTS = 1174,
0198     SVGA_3D_CMD_DX_SET_SCISSORRECTS = 1175,
0199     SVGA_3D_CMD_DX_CLEAR_RENDERTARGET_VIEW = 1176,
0200     SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW = 1177,
0201     SVGA_3D_CMD_DX_PRED_COPY_REGION = 1178,
0202     SVGA_3D_CMD_DX_PRED_COPY = 1179,
0203     SVGA_3D_CMD_DX_PRESENTBLT = 1180,
0204     SVGA_3D_CMD_DX_GENMIPS = 1181,
0205     SVGA_3D_CMD_DX_UPDATE_SUBRESOURCE = 1182,
0206     SVGA_3D_CMD_DX_READBACK_SUBRESOURCE = 1183,
0207     SVGA_3D_CMD_DX_INVALIDATE_SUBRESOURCE = 1184,
0208     SVGA_3D_CMD_DX_DEFINE_SHADERRESOURCE_VIEW = 1185,
0209     SVGA_3D_CMD_DX_DESTROY_SHADERRESOURCE_VIEW = 1186,
0210     SVGA_3D_CMD_DX_DEFINE_RENDERTARGET_VIEW = 1187,
0211     SVGA_3D_CMD_DX_DESTROY_RENDERTARGET_VIEW = 1188,
0212     SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW = 1189,
0213     SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW = 1190,
0214     SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT = 1191,
0215     SVGA_3D_CMD_DX_DESTROY_ELEMENTLAYOUT = 1192,
0216     SVGA_3D_CMD_DX_DEFINE_BLEND_STATE = 1193,
0217     SVGA_3D_CMD_DX_DESTROY_BLEND_STATE = 1194,
0218     SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_STATE = 1195,
0219     SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_STATE = 1196,
0220     SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE = 1197,
0221     SVGA_3D_CMD_DX_DESTROY_RASTERIZER_STATE = 1198,
0222     SVGA_3D_CMD_DX_DEFINE_SAMPLER_STATE = 1199,
0223     SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE = 1200,
0224     SVGA_3D_CMD_DX_DEFINE_SHADER = 1201,
0225     SVGA_3D_CMD_DX_DESTROY_SHADER = 1202,
0226     SVGA_3D_CMD_DX_BIND_SHADER = 1203,
0227     SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT = 1204,
0228     SVGA_3D_CMD_DX_DESTROY_STREAMOUTPUT = 1205,
0229     SVGA_3D_CMD_DX_SET_STREAMOUTPUT = 1206,
0230     SVGA_3D_CMD_DX_SET_COTABLE = 1207,
0231     SVGA_3D_CMD_DX_READBACK_COTABLE = 1208,
0232     SVGA_3D_CMD_DX_BUFFER_COPY = 1209,
0233     SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER = 1210,
0234     SVGA_3D_CMD_DX_SURFACE_COPY_AND_READBACK = 1211,
0235     SVGA_3D_CMD_DX_MOVE_QUERY = 1212,
0236     SVGA_3D_CMD_DX_BIND_ALL_QUERY = 1213,
0237     SVGA_3D_CMD_DX_READBACK_ALL_QUERY = 1214,
0238     SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER = 1215,
0239     SVGA_3D_CMD_DX_MOB_FENCE_64 = 1216,
0240     SVGA_3D_CMD_DX_BIND_ALL_SHADER = 1217,
0241     SVGA_3D_CMD_DX_HINT = 1218,
0242     SVGA_3D_CMD_DX_BUFFER_UPDATE = 1219,
0243     SVGA_3D_CMD_DX_SET_VS_CONSTANT_BUFFER_OFFSET = 1220,
0244     SVGA_3D_CMD_DX_SET_PS_CONSTANT_BUFFER_OFFSET = 1221,
0245     SVGA_3D_CMD_DX_SET_GS_CONSTANT_BUFFER_OFFSET = 1222,
0246     SVGA_3D_CMD_DX_SET_HS_CONSTANT_BUFFER_OFFSET = 1223,
0247     SVGA_3D_CMD_DX_SET_DS_CONSTANT_BUFFER_OFFSET = 1224,
0248     SVGA_3D_CMD_DX_SET_CS_CONSTANT_BUFFER_OFFSET = 1225,
0249 
0250     SVGA_3D_CMD_DX_COND_BIND_ALL_SHADER = 1226,
0251     SVGA_3D_CMD_DX_MAX = 1227,
0252 
0253     SVGA_3D_CMD_SCREEN_COPY = 1227,
0254 
0255     SVGA_3D_CMD_RESERVED1 = 1228,
0256     SVGA_3D_CMD_RESERVED2 = 1229,
0257     SVGA_3D_CMD_RESERVED3 = 1230,
0258     SVGA_3D_CMD_RESERVED4 = 1231,
0259     SVGA_3D_CMD_RESERVED5 = 1232,
0260     SVGA_3D_CMD_RESERVED6 = 1233,
0261     SVGA_3D_CMD_RESERVED7 = 1234,
0262     SVGA_3D_CMD_RESERVED8 = 1235,
0263 
0264     SVGA_3D_CMD_GROW_OTABLE = 1236,
0265     SVGA_3D_CMD_DX_GROW_COTABLE = 1237,
0266     SVGA_3D_CMD_INTRA_SURFACE_COPY = 1238,
0267 
0268     SVGA_3D_CMD_DEFINE_GB_SURFACE_V3 = 1239,
0269 
0270     SVGA_3D_CMD_DX_RESOLVE_COPY = 1240,
0271     SVGA_3D_CMD_DX_PRED_RESOLVE_COPY = 1241,
0272     SVGA_3D_CMD_DX_PRED_CONVERT_REGION = 1242,
0273     SVGA_3D_CMD_DX_PRED_CONVERT = 1243,
0274     SVGA_3D_CMD_WHOLE_SURFACE_COPY = 1244,
0275 
0276     SVGA_3D_CMD_DX_DEFINE_UA_VIEW = 1245,
0277     SVGA_3D_CMD_DX_DESTROY_UA_VIEW = 1246,
0278     SVGA_3D_CMD_DX_CLEAR_UA_VIEW_UINT = 1247,
0279     SVGA_3D_CMD_DX_CLEAR_UA_VIEW_FLOAT = 1248,
0280     SVGA_3D_CMD_DX_COPY_STRUCTURE_COUNT = 1249,
0281     SVGA_3D_CMD_DX_SET_UA_VIEWS = 1250,
0282 
0283     SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED_INDIRECT = 1251,
0284     SVGA_3D_CMD_DX_DRAW_INSTANCED_INDIRECT = 1252,
0285     SVGA_3D_CMD_DX_DISPATCH = 1253,
0286     SVGA_3D_CMD_DX_DISPATCH_INDIRECT = 1254,
0287 
0288     SVGA_3D_CMD_WRITE_ZERO_SURFACE = 1255,
0289     SVGA_3D_CMD_UPDATE_ZERO_SURFACE = 1256,
0290     SVGA_3D_CMD_DX_TRANSFER_TO_BUFFER = 1257,
0291     SVGA_3D_CMD_DX_SET_STRUCTURE_COUNT = 1258,
0292 
0293     SVGA_3D_CMD_LOGICOPS_BITBLT = 1259,
0294     SVGA_3D_CMD_LOGICOPS_TRANSBLT = 1260,
0295     SVGA_3D_CMD_LOGICOPS_STRETCHBLT = 1261,
0296     SVGA_3D_CMD_LOGICOPS_COLORFILL = 1262,
0297     SVGA_3D_CMD_LOGICOPS_ALPHABLEND = 1263,
0298     SVGA_3D_CMD_LOGICOPS_CLEARTYPEBLEND = 1264,
0299 
0300     SVGA_3D_CMD_DX_COPY_COTABLE_INTO_MOB = 1265,
0301 
0302     SVGA_3D_CMD_UPDATE_GB_SCREENTARGET_V2 = 1266,
0303 
0304     SVGA_3D_CMD_DEFINE_GB_SURFACE_V4 = 1267,
0305     SVGA_3D_CMD_DX_SET_CS_UA_VIEWS = 1268,
0306     SVGA_3D_CMD_DX_SET_MIN_LOD = 1269,
0307 
0308     SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW_V2 = 1272,
0309     SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT_WITH_MOB = 1273,
0310     SVGA_3D_CMD_DX_SET_SHADER_IFACE = 1274,
0311     SVGA_3D_CMD_DX_BIND_STREAMOUTPUT = 1275,
0312     SVGA_3D_CMD_SURFACE_STRETCHBLT_NON_MS_TO_MS = 1276,
0313     SVGA_3D_CMD_DX_BIND_SHADER_IFACE = 1277,
0314 
0315     SVGA_3D_CMD_UPDATE_GB_SCREENTARGET_MOVE = 1278,
0316 
0317     SVGA_3D_CMD_DX_PRED_STAGING_COPY = 1281,
0318     SVGA_3D_CMD_DX_STAGING_COPY = 1282,
0319     SVGA_3D_CMD_DX_PRED_STAGING_COPY_REGION = 1283,
0320     SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS_V2 = 1284,
0321     SVGA_3D_CMD_DX_SET_INDEX_BUFFER_V2 = 1285,
0322     SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS_OFFSET_AND_SIZE = 1286,
0323     SVGA_3D_CMD_DX_SET_INDEX_BUFFER_OFFSET_AND_SIZE = 1287,
0324     SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE_V2 = 1288,
0325     SVGA_3D_CMD_DX_PRED_STAGING_CONVERT_REGION = 1289,
0326     SVGA_3D_CMD_DX_PRED_STAGING_CONVERT = 1290,
0327     SVGA_3D_CMD_DX_STAGING_BUFFER_COPY = 1291,
0328 
0329     SVGA_3D_CMD_MAX = 1303,
0330     SVGA_3D_CMD_FUTURE_MAX = 3000
0331 } SVGAFifo3dCmdId;
0332 
0333 #define SVGA_NUM_3D_CMD (SVGA_3D_CMD_MAX - SVGA_3D_CMD_BASE)
0334 
0335 #pragma pack(push, 1)
0336 typedef struct {
0337     uint32 id;
0338     uint32 size;
0339 } SVGA3dCmdHeader;
0340 #pragma pack(pop)
0341 
0342 #pragma pack(push, 1)
0343 typedef struct {
0344     uint32 numMipLevels;
0345 } SVGA3dSurfaceFace;
0346 #pragma pack(pop)
0347 
0348 #pragma pack(push, 1)
0349 typedef struct {
0350     uint32 sid;
0351     SVGA3dSurface1Flags surfaceFlags;
0352     SVGA3dSurfaceFormat format;
0353 
0354     SVGA3dSurfaceFace face[SVGA3D_MAX_SURFACE_FACES];
0355 
0356 } SVGA3dCmdDefineSurface;
0357 #pragma pack(pop)
0358 
0359 #pragma pack(push, 1)
0360 typedef struct {
0361     uint32 sid;
0362     SVGA3dSurface1Flags surfaceFlags;
0363     SVGA3dSurfaceFormat format;
0364 
0365     SVGA3dSurfaceFace face[SVGA3D_MAX_SURFACE_FACES];
0366     uint32 multisampleCount;
0367     SVGA3dTextureFilter autogenFilter;
0368 
0369 } SVGA3dCmdDefineSurface_v2;
0370 #pragma pack(pop)
0371 
0372 #pragma pack(push, 1)
0373 typedef struct {
0374     uint32 sid;
0375 } SVGA3dCmdDestroySurface;
0376 #pragma pack(pop)
0377 
0378 #pragma pack(push, 1)
0379 typedef struct {
0380     uint32 cid;
0381 } SVGA3dCmdDefineContext;
0382 #pragma pack(pop)
0383 
0384 #pragma pack(push, 1)
0385 typedef struct {
0386     uint32 cid;
0387 } SVGA3dCmdDestroyContext;
0388 #pragma pack(pop)
0389 
0390 #pragma pack(push, 1)
0391 typedef struct {
0392     uint32 cid;
0393     SVGA3dClearFlag clearFlag;
0394     uint32 color;
0395     float depth;
0396     uint32 stencil;
0397 
0398 } SVGA3dCmdClear;
0399 #pragma pack(pop)
0400 
0401 #pragma pack(push, 1)
0402 typedef struct {
0403     SVGA3dLightType type;
0404     SVGA3dBool inWorldSpace;
0405     float diffuse[4];
0406     float specular[4];
0407     float ambient[4];
0408     float position[4];
0409     float direction[4];
0410     float range;
0411     float falloff;
0412     float attenuation0;
0413     float attenuation1;
0414     float attenuation2;
0415     float theta;
0416     float phi;
0417 } SVGA3dLightData;
0418 #pragma pack(pop)
0419 
0420 #pragma pack(push, 1)
0421 typedef struct {
0422     uint32 sid;
0423 
0424 } SVGA3dCmdPresent;
0425 #pragma pack(pop)
0426 
0427 #pragma pack(push, 1)
0428 typedef struct {
0429     SVGA3dRenderStateName state;
0430     union {
0431         uint32 uintValue;
0432         float floatValue;
0433     };
0434 } SVGA3dRenderState;
0435 #pragma pack(pop)
0436 
0437 #pragma pack(push, 1)
0438 typedef struct {
0439     uint32 cid;
0440 
0441 } SVGA3dCmdSetRenderState;
0442 #pragma pack(pop)
0443 
0444 #pragma pack(push, 1)
0445 typedef struct {
0446     uint32 cid;
0447     SVGA3dRenderTargetType type;
0448     SVGA3dSurfaceImageId target;
0449 } SVGA3dCmdSetRenderTarget;
0450 #pragma pack(pop)
0451 
0452 #pragma pack(push, 1)
0453 typedef struct {
0454     SVGA3dSurfaceImageId src;
0455     SVGA3dSurfaceImageId dest;
0456 
0457 } SVGA3dCmdSurfaceCopy;
0458 #pragma pack(pop)
0459 
0460 #pragma pack(push, 1)
0461 typedef struct {
0462     SVGA3dSurfaceImageId surface;
0463     SVGA3dCopyBox box;
0464 } SVGA3dCmdIntraSurfaceCopy;
0465 #pragma pack(pop)
0466 
0467 #pragma pack(push, 1)
0468 typedef struct {
0469     uint32 srcSid;
0470     uint32 destSid;
0471 } SVGA3dCmdWholeSurfaceCopy;
0472 #pragma pack(pop)
0473 
0474 #pragma pack(push, 1)
0475 typedef struct {
0476     SVGA3dSurfaceImageId src;
0477     SVGA3dSurfaceImageId dest;
0478     SVGA3dBox boxSrc;
0479     SVGA3dBox boxDest;
0480 } SVGA3dCmdSurfaceStretchBltNonMSToMS;
0481 #pragma pack(pop)
0482 
0483 #pragma pack(push, 1)
0484 typedef struct {
0485     SVGA3dSurfaceImageId src;
0486     SVGA3dSurfaceImageId dest;
0487     SVGA3dBox boxSrc;
0488     SVGA3dBox boxDest;
0489     SVGA3dStretchBltMode mode;
0490 } SVGA3dCmdSurfaceStretchBlt;
0491 #pragma pack(pop)
0492 
0493 #pragma pack(push, 1)
0494 typedef struct {
0495     uint32 discard : 1;
0496 
0497     uint32 unsynchronized : 1;
0498 
0499     uint32 reserved : 30;
0500 } SVGA3dSurfaceDMAFlags;
0501 #pragma pack(pop)
0502 
0503 #pragma pack(push, 1)
0504 typedef struct {
0505     SVGAGuestImage guest;
0506     SVGA3dSurfaceImageId host;
0507     SVGA3dTransferType transfer;
0508 
0509 } SVGA3dCmdSurfaceDMA;
0510 #pragma pack(pop)
0511 
0512 #pragma pack(push, 1)
0513 typedef struct {
0514     uint32 suffixSize;
0515 
0516     uint32 maximumOffset;
0517 
0518     SVGA3dSurfaceDMAFlags flags;
0519 } SVGA3dCmdSurfaceDMASuffix;
0520 #pragma pack(pop)
0521 
0522 #pragma pack(push, 1)
0523 typedef struct {
0524     uint32 first;
0525     uint32 last;
0526 } SVGA3dArrayRangeHint;
0527 #pragma pack(pop)
0528 
0529 #pragma pack(push, 1)
0530 typedef struct {
0531     uint32 surfaceId;
0532     uint32 offset;
0533     uint32 stride;
0534 } SVGA3dArray;
0535 #pragma pack(pop)
0536 
0537 #pragma pack(push, 1)
0538 typedef struct {
0539     SVGA3dDeclType type;
0540     SVGA3dDeclMethod method;
0541     SVGA3dDeclUsage usage;
0542     uint32 usageIndex;
0543 } SVGA3dVertexArrayIdentity;
0544 #pragma pack(pop)
0545 
0546 #pragma pack(push, 1)
0547 typedef struct SVGA3dVertexDecl {
0548     SVGA3dVertexArrayIdentity identity;
0549     SVGA3dArray array;
0550     SVGA3dArrayRangeHint rangeHint;
0551 } SVGA3dVertexDecl;
0552 #pragma pack(pop)
0553 
0554 #pragma pack(push, 1)
0555 typedef struct SVGA3dPrimitiveRange {
0556     SVGA3dPrimitiveType primType;
0557     uint32 primitiveCount;
0558 
0559     SVGA3dArray indexArray;
0560     uint32 indexWidth;
0561 
0562     int32 indexBias;
0563 } SVGA3dPrimitiveRange;
0564 #pragma pack(pop)
0565 
0566 #pragma pack(push, 1)
0567 typedef struct {
0568     uint32 cid;
0569     uint32 numVertexDecls;
0570     uint32 numRanges;
0571 
0572 } SVGA3dCmdDrawPrimitives;
0573 #pragma pack(pop)
0574 
0575 #pragma pack(push, 1)
0576 typedef struct {
0577     uint32 cid;
0578 
0579     uint32 primitiveCount;
0580     uint32 startVertexLocation;
0581 
0582     uint8 primitiveType;
0583     uint8 padding[3];
0584 } SVGA3dCmdDraw;
0585 #pragma pack(pop)
0586 
0587 #pragma pack(push, 1)
0588 typedef struct {
0589     uint32 cid;
0590 
0591     uint8 primitiveType;
0592 
0593     uint32 indexBufferSid;
0594     uint32 indexBufferOffset;
0595 
0596     uint8 indexBufferStride;
0597 
0598     int32 baseVertexLocation;
0599 
0600     uint32 primitiveCount;
0601     uint32 pad0;
0602     uint16 pad1;
0603 } SVGA3dCmdDrawIndexed;
0604 #pragma pack(pop)
0605 
0606 #pragma pack(push, 1)
0607 typedef struct {
0608     uint16 streamOffset;
0609     uint8 stream;
0610     uint8 type;
0611     uint8 method;
0612     uint8 usage;
0613     uint8 usageIndex;
0614     uint8 padding;
0615 
0616 } SVGA3dVertexElement;
0617 #pragma pack(pop)
0618 
0619 #define SVGA3D_VERTEX_ELEMENT_RESPECT_STREAM (1 << 7)
0620 
0621 #pragma pack(push, 1)
0622 typedef struct {
0623     uint32 cid;
0624 
0625     uint32 numElements;
0626 
0627 } SVGA3dCmdSetVertexDecls;
0628 #pragma pack(pop)
0629 
0630 #pragma pack(push, 1)
0631 typedef struct {
0632     uint32 sid;
0633     uint32 stride;
0634     uint32 offset;
0635 } SVGA3dVertexStream;
0636 #pragma pack(pop)
0637 
0638 #pragma pack(push, 1)
0639 typedef struct {
0640     uint32 cid;
0641 
0642     uint32 numStreams;
0643 
0644 } SVGA3dCmdSetVertexStreams;
0645 #pragma pack(pop)
0646 
0647 #pragma pack(push, 1)
0648 typedef struct {
0649     uint32 cid;
0650     uint32 numDivisors;
0651 } SVGA3dCmdSetVertexDivisors;
0652 #pragma pack(pop)
0653 
0654 #pragma pack(push, 1)
0655 typedef struct {
0656     uint32 stage;
0657     SVGA3dTextureStateName name;
0658     union {
0659         uint32 value;
0660         float floatValue;
0661     };
0662 } SVGA3dTextureState;
0663 #pragma pack(pop)
0664 
0665 #pragma pack(push, 1)
0666 typedef struct {
0667     uint32 cid;
0668 
0669 } SVGA3dCmdSetTextureState;
0670 #pragma pack(pop)
0671 
0672 #pragma pack(push, 1)
0673 typedef struct {
0674     uint32 cid;
0675     SVGA3dTransformType type;
0676     float matrix[16];
0677 } SVGA3dCmdSetTransform;
0678 #pragma pack(pop)
0679 
0680 #pragma pack(push, 1)
0681 typedef struct {
0682     float min;
0683     float max;
0684 } SVGA3dZRange;
0685 #pragma pack(pop)
0686 
0687 #pragma pack(push, 1)
0688 typedef struct {
0689     uint32 cid;
0690     SVGA3dZRange zRange;
0691 } SVGA3dCmdSetZRange;
0692 #pragma pack(pop)
0693 
0694 #pragma pack(push, 1)
0695 typedef struct {
0696     float diffuse[4];
0697     float ambient[4];
0698     float specular[4];
0699     float emissive[4];
0700     float shininess;
0701 } SVGA3dMaterial;
0702 #pragma pack(pop)
0703 
0704 #pragma pack(push, 1)
0705 typedef struct {
0706     uint32 cid;
0707     SVGA3dFace face;
0708     SVGA3dMaterial material;
0709 } SVGA3dCmdSetMaterial;
0710 #pragma pack(pop)
0711 
0712 #pragma pack(push, 1)
0713 typedef struct {
0714     uint32 cid;
0715     uint32 index;
0716     SVGA3dLightData data;
0717 } SVGA3dCmdSetLightData;
0718 #pragma pack(pop)
0719 
0720 #pragma pack(push, 1)
0721 typedef struct {
0722     uint32 cid;
0723     uint32 index;
0724     uint32 enabled;
0725 } SVGA3dCmdSetLightEnabled;
0726 #pragma pack(pop)
0727 
0728 #pragma pack(push, 1)
0729 typedef struct {
0730     uint32 cid;
0731     SVGA3dRect rect;
0732 } SVGA3dCmdSetViewport;
0733 #pragma pack(pop)
0734 
0735 #pragma pack(push, 1)
0736 typedef struct {
0737     uint32 cid;
0738     SVGA3dRect rect;
0739 } SVGA3dCmdSetScissorRect;
0740 #pragma pack(pop)
0741 
0742 #pragma pack(push, 1)
0743 typedef struct {
0744     uint32 cid;
0745     uint32 index;
0746     float plane[4];
0747 } SVGA3dCmdSetClipPlane;
0748 #pragma pack(pop)
0749 
0750 #pragma pack(push, 1)
0751 typedef struct {
0752     uint32 cid;
0753     uint32 shid;
0754     SVGA3dShaderType type;
0755 
0756 } SVGA3dCmdDefineShader;
0757 #pragma pack(pop)
0758 
0759 #pragma pack(push, 1)
0760 typedef struct {
0761     uint32 cid;
0762     uint32 shid;
0763     SVGA3dShaderType type;
0764 } SVGA3dCmdDestroyShader;
0765 #pragma pack(pop)
0766 
0767 #pragma pack(push, 1)
0768 typedef struct {
0769     uint32 cid;
0770     uint32 reg;
0771     SVGA3dShaderType type;
0772     SVGA3dShaderConstType ctype;
0773     uint32 values[4];
0774 
0775 } SVGA3dCmdSetShaderConst;
0776 #pragma pack(pop)
0777 
0778 #pragma pack(push, 1)
0779 typedef struct {
0780     uint32 cid;
0781     SVGA3dShaderType type;
0782     uint32 shid;
0783 } SVGA3dCmdSetShader;
0784 #pragma pack(pop)
0785 
0786 #pragma pack(push, 1)
0787 typedef struct {
0788     uint32 cid;
0789     SVGA3dQueryType type;
0790 } SVGA3dCmdBeginQuery;
0791 #pragma pack(pop)
0792 
0793 #pragma pack(push, 1)
0794 typedef struct {
0795     uint32 cid;
0796     SVGA3dQueryType type;
0797     SVGAGuestPtr guestResult;
0798 } SVGA3dCmdEndQuery;
0799 #pragma pack(pop)
0800 
0801 #pragma pack(push, 1)
0802 typedef struct {
0803     uint32 cid;
0804     SVGA3dQueryType type;
0805     SVGAGuestPtr guestResult;
0806 } SVGA3dCmdWaitForQuery;
0807 #pragma pack(pop)
0808 
0809 #pragma pack(push, 1)
0810 typedef struct {
0811     uint32 totalSize;
0812     SVGA3dQueryState state;
0813     union {
0814         uint32 result32;
0815         uint32 queryCookie;
0816     };
0817 } SVGA3dQueryResult;
0818 #pragma pack(pop)
0819 
0820 #pragma pack(push, 1)
0821 typedef struct {
0822     SVGA3dSurfaceImageId srcImage;
0823     SVGASignedRect srcRect;
0824     uint32 destScreenId;
0825     SVGASignedRect destRect;
0826 
0827 } SVGA3dCmdBlitSurfaceToScreen;
0828 #pragma pack(pop)
0829 
0830 #pragma pack(push, 1)
0831 typedef struct {
0832     uint32 sid;
0833     SVGA3dTextureFilter filter;
0834 } SVGA3dCmdGenerateMipmaps;
0835 #pragma pack(pop)
0836 
0837 #pragma pack(push, 1)
0838 typedef struct {
0839     uint32 sid;
0840 } SVGA3dCmdActivateSurface;
0841 #pragma pack(pop)
0842 
0843 #pragma pack(push, 1)
0844 typedef struct {
0845     uint32 sid;
0846 } SVGA3dCmdDeactivateSurface;
0847 #pragma pack(pop)
0848 
0849 #pragma pack(push, 1)
0850 typedef struct SVGA3dCmdScreenDMA {
0851     uint32 screenId;
0852     SVGAGuestImage refBuffer;
0853     SVGAGuestImage destBuffer;
0854     SVGAGuestImage changeMap;
0855 } SVGA3dCmdScreenDMA;
0856 #pragma pack(pop)
0857 
0858 #define SVGA3D_LOTRANSBLT_HONORALPHA (0x01)
0859 #define SVGA3D_LOSTRETCHBLT_MIRRORX (0x01)
0860 #define SVGA3D_LOSTRETCHBLT_MIRRORY (0x02)
0861 #define SVGA3D_LOALPHABLEND_SRCHASALPHA (0x01)
0862 
0863 #pragma pack(push, 1)
0864 typedef struct SVGA3dCmdLogicOpsBitBlt {
0865     SVGA3dSurfaceImageId src;
0866     SVGA3dSurfaceImageId dst;
0867     SVGA3dLogicOp logicOp;
0868     SVGA3dLogicOpRop3 logicOpRop3;
0869 
0870 } SVGA3dCmdLogicOpsBitBlt;
0871 #pragma pack(pop)
0872 
0873 #pragma pack(push, 1)
0874 typedef struct SVGA3dCmdLogicOpsTransBlt {
0875     SVGA3dSurfaceImageId src;
0876     SVGA3dSurfaceImageId dst;
0877     uint32 color;
0878     uint32 flags;
0879     SVGA3dBox srcBox;
0880     SVGA3dSignedBox dstBox;
0881     SVGA3dBox clipBox;
0882 } SVGA3dCmdLogicOpsTransBlt;
0883 #pragma pack(pop)
0884 
0885 #pragma pack(push, 1)
0886 typedef struct SVGA3dCmdLogicOpsStretchBlt {
0887     SVGA3dSurfaceImageId src;
0888     SVGA3dSurfaceImageId dst;
0889     uint16 mode;
0890     uint16 flags;
0891     SVGA3dBox srcBox;
0892     SVGA3dSignedBox dstBox;
0893     SVGA3dBox clipBox;
0894 } SVGA3dCmdLogicOpsStretchBlt;
0895 #pragma pack(pop)
0896 
0897 #pragma pack(push, 1)
0898 typedef struct SVGA3dCmdLogicOpsColorFill {
0899     SVGA3dSurfaceImageId dst;
0900     uint32 color;
0901     SVGA3dLogicOp logicOp;
0902     SVGA3dLogicOpRop3 logicOpRop3;
0903 
0904 } SVGA3dCmdLogicOpsColorFill;
0905 #pragma pack(pop)
0906 
0907 #pragma pack(push, 1)
0908 typedef struct SVGA3dCmdLogicOpsAlphaBlend {
0909     SVGA3dSurfaceImageId src;
0910     SVGA3dSurfaceImageId dst;
0911     uint32 alphaVal;
0912     uint32 flags;
0913     SVGA3dBox srcBox;
0914     SVGA3dSignedBox dstBox;
0915     SVGA3dBox clipBox;
0916 } SVGA3dCmdLogicOpsAlphaBlend;
0917 #pragma pack(pop)
0918 
0919 #define SVGA3D_CLEARTYPE_INVALID_GAMMA_INDEX 0xFFFFFFFF
0920 
0921 #define SVGA3D_CLEARTYPE_GAMMA_WIDTH 512
0922 #define SVGA3D_CLEARTYPE_GAMMA_HEIGHT 16
0923 
0924 #pragma pack(push, 1)
0925 typedef struct SVGA3dCmdLogicOpsClearTypeBlend {
0926     SVGA3dSurfaceImageId tmp;
0927     SVGA3dSurfaceImageId dst;
0928     SVGA3dSurfaceImageId gammaSurf;
0929     SVGA3dSurfaceImageId alphaSurf;
0930     uint32 gamma;
0931     uint32 color;
0932     uint32 color2;
0933     int32 alphaOffsetX;
0934     int32 alphaOffsetY;
0935 
0936 } SVGA3dCmdLogicOpsClearTypeBlend;
0937 #pragma pack(pop)
0938 
0939 #pragma pack(push, 1)
0940 typedef struct {
0941     SVGAMobFormat ptDepth;
0942     uint32 sizeInBytes;
0943     PPN64 base;
0944 } SVGAOTableMobEntry;
0945 #pragma pack(pop)
0946 
0947 #pragma pack(push, 1)
0948 typedef struct {
0949     SVGA3dSurfaceFormat format;
0950     SVGA3dSurface1Flags surface1Flags;
0951     uint32 numMipLevels;
0952     uint32 multisampleCount;
0953     SVGA3dTextureFilter autogenFilter;
0954     SVGA3dSize size;
0955     SVGAMobId mobid;
0956     uint32 arraySize;
0957     uint32 mobPitch;
0958     SVGA3dSurface2Flags surface2Flags;
0959     uint8 multisamplePattern;
0960     uint8 qualityLevel;
0961     uint16 bufferByteStride;
0962     float minLOD;
0963     uint32 pad0[2];
0964 } SVGAOTableSurfaceEntry;
0965 #pragma pack(pop)
0966 
0967 #pragma pack(push, 1)
0968 typedef struct {
0969     uint32 cid;
0970     SVGAMobId mobid;
0971 } SVGAOTableContextEntry;
0972 #pragma pack(pop)
0973 
0974 #pragma pack(push, 1)
0975 typedef struct {
0976     SVGA3dShaderType type;
0977     uint32 sizeInBytes;
0978     uint32 offsetInBytes;
0979     SVGAMobId mobid;
0980 } SVGAOTableShaderEntry;
0981 #pragma pack(pop)
0982 
0983 #define SVGA_STFLAG_PRIMARY (1 << 0)
0984 #define SVGA_STFLAG_RESERVED (1 << 1)
0985 typedef uint32 SVGAScreenTargetFlags;
0986 
0987 #pragma pack(push, 1)
0988 typedef struct {
0989     SVGA3dSurfaceImageId image;
0990     uint32 width;
0991     uint32 height;
0992     int32 xRoot;
0993     int32 yRoot;
0994     SVGAScreenTargetFlags flags;
0995     uint32 dpi;
0996     uint32 pad[7];
0997 } SVGAOTableScreenTargetEntry;
0998 #pragma pack(pop)
0999 
1000 #pragma pack(push, 1)
1001 typedef struct {
1002     float value[4];
1003 } SVGA3dShaderConstFloat;
1004 #pragma pack(pop)
1005 
1006 #pragma pack(push, 1)
1007 typedef struct {
1008     int32 value[4];
1009 } SVGA3dShaderConstInt;
1010 #pragma pack(pop)
1011 
1012 #pragma pack(push, 1)
1013 typedef struct {
1014     uint32 value;
1015 } SVGA3dShaderConstBool;
1016 #pragma pack(pop)
1017 
1018 #pragma pack(push, 1)
1019 typedef struct {
1020     uint16 streamOffset;
1021     uint8 stream;
1022     uint8 type;
1023     uint8 methodUsage;
1024     uint8 usageIndex;
1025 } SVGAGBVertexElement;
1026 #pragma pack(pop)
1027 
1028 #pragma pack(push, 1)
1029 typedef struct {
1030     uint32 sid;
1031     uint16 stride;
1032     uint32 offset;
1033 } SVGAGBVertexStream;
1034 #pragma pack(pop)
1035 #pragma pack(push, 1)
1036 typedef struct {
1037     SVGA3dRect viewport;
1038     SVGA3dRect scissorRect;
1039     SVGA3dZRange zRange;
1040 
1041     SVGA3dSurfaceImageId renderTargets[SVGA3D_RT_MAX];
1042     SVGAGBVertexElement decl1[4];
1043 
1044     uint32 renderStates[SVGA3D_RS_MAX];
1045     SVGAGBVertexElement decl2[18];
1046     uint32 pad0[2];
1047 
1048     struct {
1049         SVGA3dFace face;
1050         SVGA3dMaterial material;
1051     } material;
1052 
1053     float clipPlanes[SVGA3D_MAX_CLIP_PLANES][4];
1054     float matrices[SVGA3D_TRANSFORM_MAX][16];
1055 
1056     SVGA3dBool lightEnabled[SVGA3D_NUM_LIGHTS];
1057     SVGA3dLightData lightData[SVGA3D_NUM_LIGHTS];
1058 
1059     uint32 shaders[SVGA3D_NUM_SHADERTYPE_PREDX];
1060     SVGAGBVertexElement decl3[10];
1061     uint32 pad1[3];
1062 
1063     uint32 occQueryActive;
1064     uint32 occQueryValue;
1065 
1066     SVGA3dShaderConstInt pShaderIValues[SVGA3D_CONSTINTREG_MAX];
1067     SVGA3dShaderConstInt vShaderIValues[SVGA3D_CONSTINTREG_MAX];
1068     uint16 pShaderBValues;
1069     uint16 vShaderBValues;
1070 
1071     SVGAGBVertexStream streams[SVGA3D_MAX_VERTEX_ARRAYS];
1072     SVGA3dVertexDivisor divisors[SVGA3D_MAX_VERTEX_ARRAYS];
1073     uint32 numVertexDecls;
1074     uint32 numVertexStreams;
1075     uint32 numVertexDivisors;
1076     uint32 pad2[30];
1077 
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];
1081 
1082     SVGA3dShaderConstFloat pShaderFValues[SVGA3D_CONSTREG_MAX];
1083     SVGA3dShaderConstFloat vShaderFValues[SVGA3D_CONSTREG_MAX];
1084 } SVGAGBContextData;
1085 #pragma pack(pop)
1086 
1087 #pragma pack(push, 1)
1088 typedef struct {
1089     SVGAOTableType type;
1090     PPN32 baseAddress;
1091     uint32 sizeInBytes;
1092     uint32 validSizeInBytes;
1093     SVGAMobFormat ptDepth;
1094 } SVGA3dCmdSetOTableBase;
1095 #pragma pack(pop)
1096 
1097 #pragma pack(push, 1)
1098 typedef struct {
1099     SVGAOTableType type;
1100     PPN64 baseAddress;
1101     uint32 sizeInBytes;
1102     uint32 validSizeInBytes;
1103     SVGAMobFormat ptDepth;
1104 } SVGA3dCmdSetOTableBase64;
1105 #pragma pack(pop)
1106 
1107 #pragma pack(push, 1)
1108 typedef struct {
1109     SVGAOTableType type;
1110     PPN64 baseAddress;
1111     uint32 sizeInBytes;
1112     uint32 validSizeInBytes;
1113     SVGAMobFormat ptDepth;
1114 } SVGA3dCmdGrowOTable;
1115 #pragma pack(pop)
1116 
1117 #pragma pack(push, 1)
1118 typedef struct {
1119     SVGAOTableType type;
1120 } SVGA3dCmdReadbackOTable;
1121 #pragma pack(pop)
1122 
1123 #pragma pack(push, 1)
1124 typedef struct SVGA3dCmdDefineGBMob {
1125     SVGAMobId mobid;
1126     SVGAMobFormat ptDepth;
1127     PPN32 base;
1128     uint32 sizeInBytes;
1129 } SVGA3dCmdDefineGBMob;
1130 #pragma pack(pop)
1131 
1132 #pragma pack(push, 1)
1133 typedef struct SVGA3dCmdDestroyGBMob {
1134     SVGAMobId mobid;
1135 } SVGA3dCmdDestroyGBMob;
1136 #pragma pack(pop)
1137 
1138 #pragma pack(push, 1)
1139 typedef struct SVGA3dCmdDefineGBMob64 {
1140     SVGAMobId mobid;
1141     SVGAMobFormat ptDepth;
1142     PPN64 base;
1143     uint32 sizeInBytes;
1144 } SVGA3dCmdDefineGBMob64;
1145 #pragma pack(pop)
1146 
1147 #pragma pack(push, 1)
1148 typedef struct SVGA3dCmdRedefineGBMob64 {
1149     SVGAMobId mobid;
1150     SVGAMobFormat ptDepth;
1151     PPN64 base;
1152     uint32 sizeInBytes;
1153 } SVGA3dCmdRedefineGBMob64;
1154 #pragma pack(pop)
1155 
1156 #pragma pack(push, 1)
1157 typedef struct SVGA3dCmdUpdateGBMobMapping {
1158     SVGAMobId mobid;
1159 } SVGA3dCmdUpdateGBMobMapping;
1160 #pragma pack(pop)
1161 
1162 #pragma pack(push, 1)
1163 typedef struct SVGA3dCmdDefineGBSurface {
1164     uint32 sid;
1165     SVGA3dSurface1Flags surfaceFlags;
1166     SVGA3dSurfaceFormat format;
1167     uint32 numMipLevels;
1168     uint32 multisampleCount;
1169     SVGA3dTextureFilter autogenFilter;
1170     SVGA3dSize size;
1171 } SVGA3dCmdDefineGBSurface;
1172 #pragma pack(pop)
1173 
1174 #pragma pack(push, 1)
1175 typedef struct SVGA3dCmdDefineGBSurface_v2 {
1176     uint32 sid;
1177     SVGA3dSurface1Flags surfaceFlags;
1178     SVGA3dSurfaceFormat format;
1179     uint32 numMipLevels;
1180     uint32 multisampleCount;
1181     SVGA3dTextureFilter autogenFilter;
1182     SVGA3dSize size;
1183     uint32 arraySize;
1184     uint32 pad;
1185 } SVGA3dCmdDefineGBSurface_v2;
1186 #pragma pack(pop)
1187 
1188 #pragma pack(push, 1)
1189 typedef struct SVGA3dCmdDefineGBSurface_v3 {
1190     uint32 sid;
1191     SVGA3dSurfaceAllFlags surfaceFlags;
1192     SVGA3dSurfaceFormat format;
1193     uint32 numMipLevels;
1194     uint32 multisampleCount;
1195     SVGA3dMSPattern multisamplePattern;
1196     SVGA3dMSQualityLevel qualityLevel;
1197     SVGA3dTextureFilter autogenFilter;
1198     SVGA3dSize size;
1199     uint32 arraySize;
1200 } SVGA3dCmdDefineGBSurface_v3;
1201 #pragma pack(pop)
1202 
1203 #pragma pack(push, 1)
1204 typedef struct SVGA3dCmdDefineGBSurface_v4 {
1205     uint32 sid;
1206     SVGA3dSurfaceAllFlags surfaceFlags;
1207     SVGA3dSurfaceFormat format;
1208     uint32 numMipLevels;
1209     uint32 multisampleCount;
1210     SVGA3dMSPattern multisamplePattern;
1211     SVGA3dMSQualityLevel qualityLevel;
1212     SVGA3dTextureFilter autogenFilter;
1213     SVGA3dSize size;
1214     uint32 arraySize;
1215     uint32 bufferByteStride;
1216 } SVGA3dCmdDefineGBSurface_v4;
1217 #pragma pack(pop)
1218 
1219 #pragma pack(push, 1)
1220 typedef struct SVGA3dCmdDestroyGBSurface {
1221     uint32 sid;
1222 } SVGA3dCmdDestroyGBSurface;
1223 #pragma pack(pop)
1224 
1225 #pragma pack(push, 1)
1226 typedef struct SVGA3dCmdBindGBSurface {
1227     uint32 sid;
1228     SVGAMobId mobid;
1229 } SVGA3dCmdBindGBSurface;
1230 #pragma pack(pop)
1231 
1232 #pragma pack(push, 1)
1233 typedef struct SVGA3dCmdBindGBSurfaceWithPitch {
1234     uint32 sid;
1235     SVGAMobId mobid;
1236     uint32 baseLevelPitch;
1237 } SVGA3dCmdBindGBSurfaceWithPitch;
1238 #pragma pack(pop)
1239 
1240 #define SVGA3D_COND_BIND_GB_SURFACE_FLAG_READBACK (1 << 0)
1241 #define SVGA3D_COND_BIND_GB_SURFACE_FLAG_UPDATE (1 << 1)
1242 
1243 #pragma pack(push, 1)
1244 typedef struct SVGA3dCmdCondBindGBSurface {
1245     uint32 sid;
1246     SVGAMobId testMobid;
1247     SVGAMobId mobid;
1248     uint32 flags;
1249 } SVGA3dCmdCondBindGBSurface;
1250 #pragma pack(pop)
1251 
1252 #pragma pack(push, 1)
1253 typedef struct SVGA3dCmdUpdateGBImage {
1254     SVGA3dSurfaceImageId image;
1255     SVGA3dBox box;
1256 } SVGA3dCmdUpdateGBImage;
1257 #pragma pack(pop)
1258 
1259 #pragma pack(push, 1)
1260 typedef struct SVGA3dCmdUpdateGBSurface {
1261     uint32 sid;
1262 } SVGA3dCmdUpdateGBSurface;
1263 #pragma pack(pop)
1264 
1265 #pragma pack(push, 1)
1266 typedef struct SVGA3dCmdReadbackGBImage {
1267     SVGA3dSurfaceImageId image;
1268 } SVGA3dCmdReadbackGBImage;
1269 #pragma pack(pop)
1270 
1271 #pragma pack(push, 1)
1272 typedef struct SVGA3dCmdReadbackGBSurface {
1273     uint32 sid;
1274 } SVGA3dCmdReadbackGBSurface;
1275 #pragma pack(pop)
1276 
1277 #pragma pack(push, 1)
1278 typedef struct SVGA3dCmdReadbackGBImagePartial {
1279     SVGA3dSurfaceImageId image;
1280     SVGA3dBox box;
1281     uint32 invertBox;
1282 } SVGA3dCmdReadbackGBImagePartial;
1283 #pragma pack(pop)
1284 
1285 #pragma pack(push, 1)
1286 typedef struct SVGA3dCmdInvalidateGBImage {
1287     SVGA3dSurfaceImageId image;
1288 } SVGA3dCmdInvalidateGBImage;
1289 #pragma pack(pop)
1290 
1291 #pragma pack(push, 1)
1292 typedef struct SVGA3dCmdInvalidateGBSurface {
1293     uint32 sid;
1294 } SVGA3dCmdInvalidateGBSurface;
1295 #pragma pack(pop)
1296 
1297 #pragma pack(push, 1)
1298 typedef struct SVGA3dCmdInvalidateGBImagePartial {
1299     SVGA3dSurfaceImageId image;
1300     SVGA3dBox box;
1301     uint32 invertBox;
1302 } SVGA3dCmdInvalidateGBImagePartial;
1303 #pragma pack(pop)
1304 
1305 #pragma pack(push, 1)
1306 typedef struct SVGA3dCmdDefineGBContext {
1307     uint32 cid;
1308 } SVGA3dCmdDefineGBContext;
1309 #pragma pack(pop)
1310 
1311 #pragma pack(push, 1)
1312 typedef struct SVGA3dCmdDestroyGBContext {
1313     uint32 cid;
1314 } SVGA3dCmdDestroyGBContext;
1315 #pragma pack(pop)
1316 
1317 #pragma pack(push, 1)
1318 typedef struct SVGA3dCmdBindGBContext {
1319     uint32 cid;
1320     SVGAMobId mobid;
1321     uint32 validContents;
1322 } SVGA3dCmdBindGBContext;
1323 #pragma pack(pop)
1324 
1325 #pragma pack(push, 1)
1326 typedef struct SVGA3dCmdReadbackGBContext {
1327     uint32 cid;
1328 } SVGA3dCmdReadbackGBContext;
1329 #pragma pack(pop)
1330 
1331 #pragma pack(push, 1)
1332 typedef struct SVGA3dCmdInvalidateGBContext {
1333     uint32 cid;
1334 } SVGA3dCmdInvalidateGBContext;
1335 #pragma pack(pop)
1336 
1337 #pragma pack(push, 1)
1338 typedef struct SVGA3dCmdDefineGBShader {
1339     uint32 shid;
1340     SVGA3dShaderType type;
1341     uint32 sizeInBytes;
1342 } SVGA3dCmdDefineGBShader;
1343 #pragma pack(pop)
1344 
1345 #pragma pack(push, 1)
1346 typedef struct SVGA3dCmdBindGBShader {
1347     uint32 shid;
1348     SVGAMobId mobid;
1349     uint32 offsetInBytes;
1350 } SVGA3dCmdBindGBShader;
1351 #pragma pack(pop)
1352 
1353 #pragma pack(push, 1)
1354 typedef struct SVGA3dCmdDestroyGBShader {
1355     uint32 shid;
1356 } SVGA3dCmdDestroyGBShader;
1357 #pragma pack(pop)
1358 
1359 #pragma pack(push, 1)
1360 typedef struct {
1361     uint32 cid;
1362     uint32 regStart;
1363     SVGA3dShaderType shaderType;
1364     SVGA3dShaderConstType constType;
1365 
1366 } SVGA3dCmdSetGBShaderConstInline;
1367 #pragma pack(pop)
1368 
1369 #pragma pack(push, 1)
1370 typedef struct {
1371     uint32 cid;
1372     SVGA3dQueryType type;
1373 } SVGA3dCmdBeginGBQuery;
1374 #pragma pack(pop)
1375 
1376 #pragma pack(push, 1)
1377 typedef struct {
1378     uint32 cid;
1379     SVGA3dQueryType type;
1380     SVGAMobId mobid;
1381     uint32 offset;
1382 } SVGA3dCmdEndGBQuery;
1383 #pragma pack(pop)
1384 
1385 #pragma pack(push, 1)
1386 typedef struct {
1387     uint32 cid;
1388     SVGA3dQueryType type;
1389     SVGAMobId mobid;
1390     uint32 offset;
1391 } SVGA3dCmdWaitForGBQuery;
1392 #pragma pack(pop)
1393 
1394 #pragma pack(push, 1)
1395 typedef struct {
1396     SVGAMobId mobid;
1397     uint32 mustBeZero;
1398     uint32 initialized;
1399 } SVGA3dCmdEnableGart;
1400 #pragma pack(pop)
1401 
1402 #pragma pack(push, 1)
1403 typedef struct {
1404     SVGAMobId mobid;
1405     uint32 gartOffset;
1406 } SVGA3dCmdMapMobIntoGart;
1407 #pragma pack(pop)
1408 
1409 #pragma pack(push, 1)
1410 typedef struct {
1411     uint32 gartOffset;
1412     uint32 numPages;
1413 } SVGA3dCmdUnmapGartRange;
1414 #pragma pack(pop)
1415 
1416 #pragma pack(push, 1)
1417 typedef struct {
1418     uint32 stid;
1419     uint32 width;
1420     uint32 height;
1421     int32 xRoot;
1422     int32 yRoot;
1423     SVGAScreenTargetFlags flags;
1424 
1425     uint32 dpi;
1426 } SVGA3dCmdDefineGBScreenTarget;
1427 #pragma pack(pop)
1428 
1429 #pragma pack(push, 1)
1430 typedef struct {
1431     uint32 stid;
1432 } SVGA3dCmdDestroyGBScreenTarget;
1433 #pragma pack(pop)
1434 
1435 #pragma pack(push, 1)
1436 typedef struct {
1437     uint32 stid;
1438     SVGA3dSurfaceImageId image;
1439 } SVGA3dCmdBindGBScreenTarget;
1440 #pragma pack(pop)
1441 
1442 #pragma pack(push, 1)
1443 typedef struct {
1444     uint32 stid;
1445     SVGA3dRect rect;
1446 } SVGA3dCmdUpdateGBScreenTarget;
1447 #pragma pack(pop)
1448 
1449 #pragma pack(push, 1)
1450 typedef struct {
1451     uint32 stid;
1452     SVGA3dRect rect;
1453     SVGA3dFrameUpdateType type;
1454 } SVGA3dCmdUpdateGBScreenTarget_v2;
1455 #pragma pack(pop)
1456 
1457 #pragma pack(push, 1)
1458 typedef struct {
1459     uint32 stid;
1460     SVGA3dRect rect;
1461     SVGA3dFrameUpdateType type;
1462     SVGAUnsignedPoint srcPoint;
1463 } SVGA3dCmdUpdateGBScreenTargetMove;
1464 #pragma pack(pop)
1465 
1466 #pragma pack(push, 1)
1467 typedef struct SVGA3dCmdGBScreenDMA {
1468     uint32 screenId;
1469     uint32 dead;
1470     SVGAMobId destMobID;
1471     uint32 destPitch;
1472     SVGAMobId changeMapMobID;
1473 } SVGA3dCmdGBScreenDMA;
1474 #pragma pack(pop)
1475 
1476 #pragma pack(push, 1)
1477 typedef struct {
1478     uint32 value;
1479     uint32 mobId;
1480     uint32 mobOffset;
1481 } SVGA3dCmdGBMobFence;
1482 #pragma pack(pop)
1483 
1484 #pragma pack(push, 1)
1485 typedef struct {
1486     uint32 stid;
1487     SVGA3dSurfaceImageId dest;
1488 
1489     uint32 statusMobId;
1490     uint32 statusMobOffset;
1491 
1492     uint32 mustBeInvalidId;
1493     uint32 mustBeZero;
1494 } SVGA3dCmdScreenCopy;
1495 #pragma pack(pop)
1496 
1497 #define SVGA_SCREEN_COPY_STATUS_FAILURE 0x00
1498 #define SVGA_SCREEN_COPY_STATUS_SUCCESS 0x01
1499 #define SVGA_SCREEN_COPY_STATUS_INVALID 0xFFFFFFFF
1500 
1501 #pragma pack(push, 1)
1502 typedef struct {
1503     uint32 sid;
1504 } SVGA3dCmdWriteZeroSurface;
1505 #pragma pack(pop)
1506 
1507 #pragma pack(push, 1)
1508 typedef struct {
1509     uint32 sid;
1510 } SVGA3dCmdUpdateZeroSurface;
1511 #pragma pack(pop)
1512 
1513 #endif