1514 lines · c
1/* SPDX-License-Identifier: GPL-2.0 OR MIT */2/*3 * Copyright 2012-2021 VMware, Inc.4 *5 * Permission is hereby granted, free of charge, to any person6 * obtaining a copy of this software and associated documentation7 * files (the "Software"), to deal in the Software without8 * restriction, including without limitation the rights to use, copy,9 * modify, merge, publish, distribute, sublicense, and/or sell copies10 * of the Software, and to permit persons to whom the Software is11 * furnished to do so, subject to the following conditions:12 *13 * The above copyright notice and this permission notice shall be14 * included in all copies or substantial portions of the Software.15 *16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND19 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS20 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN21 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE23 * SOFTWARE.24 *25 */26 27/*28 * svga3d_cmd.h --29 *30 * SVGA 3d hardware cmd definitions31 */32 33 34 35#ifndef _SVGA3D_CMD_H_36#define _SVGA3D_CMD_H_37 38#include "svga3d_types.h"39#include "svga3d_limits.h"40#include "svga_reg.h"41 42typedef enum SVGAFifo3dCmdId {43 SVGA_3D_CMD_LEGACY_BASE = 1000,44 SVGA_3D_CMD_BASE = 1040,45 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,91 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,98 99 SVGA_3D_CMD_SET_OTABLE_BASE = 1091,100 SVGA_3D_CMD_READBACK_OTABLE = 1092,101 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,106 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,117 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,123 124 SVGA_3D_CMD_DEFINE_GB_SHADER = 1112,125 SVGA_3D_CMD_DESTROY_GB_SHADER = 1113,126 SVGA_3D_CMD_BIND_GB_SHADER = 1114,127 128 SVGA_3D_CMD_SET_OTABLE_BASE64 = 1115,129 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,133 134 SVGA_3D_CMD_NOP = 1119,135 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,140 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,145 146 SVGA_3D_CMD_READBACK_GB_IMAGE_PARTIAL = 1128,147 SVGA_3D_CMD_INVALIDATE_GB_IMAGE_PARTIAL = 1129,148 149 SVGA_3D_CMD_SET_GB_SHADERCONSTS_INLINE = 1130,150 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,158 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,164 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,249 250 SVGA_3D_CMD_DX_COND_BIND_ALL_SHADER = 1226,251 SVGA_3D_CMD_DX_MAX = 1227,252 253 SVGA_3D_CMD_SCREEN_COPY = 1227,254 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,263 264 SVGA_3D_CMD_GROW_OTABLE = 1236,265 SVGA_3D_CMD_DX_GROW_COTABLE = 1237,266 SVGA_3D_CMD_INTRA_SURFACE_COPY = 1238,267 268 SVGA_3D_CMD_DEFINE_GB_SURFACE_V3 = 1239,269 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,275 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,282 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,287 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,292 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,299 300 SVGA_3D_CMD_DX_COPY_COTABLE_INTO_MOB = 1265,301 302 SVGA_3D_CMD_UPDATE_GB_SCREENTARGET_V2 = 1266,303 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,307 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,314 315 SVGA_3D_CMD_UPDATE_GB_SCREENTARGET_MOVE = 1278,316 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,328 329 SVGA_3D_CMD_MAX = 1303,330 SVGA_3D_CMD_FUTURE_MAX = 3000331} SVGAFifo3dCmdId;332 333#define SVGA_NUM_3D_CMD (SVGA_3D_CMD_MAX - SVGA_3D_CMD_BASE)334 335#pragma pack(push, 1)336typedef struct {337 uint32 id;338 uint32 size;339} SVGA3dCmdHeader;340#pragma pack(pop)341 342#pragma pack(push, 1)343typedef struct {344 uint32 numMipLevels;345} SVGA3dSurfaceFace;346#pragma pack(pop)347 348#pragma pack(push, 1)349typedef struct {350 uint32 sid;351 SVGA3dSurface1Flags surfaceFlags;352 SVGA3dSurfaceFormat format;353 354 SVGA3dSurfaceFace face[SVGA3D_MAX_SURFACE_FACES];355 356} SVGA3dCmdDefineSurface;357#pragma pack(pop)358 359#pragma pack(push, 1)360typedef struct {361 uint32 sid;362 SVGA3dSurface1Flags surfaceFlags;363 SVGA3dSurfaceFormat format;364 365 SVGA3dSurfaceFace face[SVGA3D_MAX_SURFACE_FACES];366 uint32 multisampleCount;367 SVGA3dTextureFilter autogenFilter;368 369} SVGA3dCmdDefineSurface_v2;370#pragma pack(pop)371 372#pragma pack(push, 1)373typedef struct {374 uint32 sid;375} SVGA3dCmdDestroySurface;376#pragma pack(pop)377 378#pragma pack(push, 1)379typedef struct {380 uint32 cid;381} SVGA3dCmdDefineContext;382#pragma pack(pop)383 384#pragma pack(push, 1)385typedef struct {386 uint32 cid;387} SVGA3dCmdDestroyContext;388#pragma pack(pop)389 390#pragma pack(push, 1)391typedef struct {392 uint32 cid;393 SVGA3dClearFlag clearFlag;394 uint32 color;395 float depth;396 uint32 stencil;397 398} SVGA3dCmdClear;399#pragma pack(pop)400 401#pragma pack(push, 1)402typedef struct {403 SVGA3dLightType type;404 SVGA3dBool inWorldSpace;405 float diffuse[4];406 float specular[4];407 float ambient[4];408 float position[4];409 float direction[4];410 float range;411 float falloff;412 float attenuation0;413 float attenuation1;414 float attenuation2;415 float theta;416 float phi;417} SVGA3dLightData;418#pragma pack(pop)419 420#pragma pack(push, 1)421typedef struct {422 uint32 sid;423 424} SVGA3dCmdPresent;425#pragma pack(pop)426 427#pragma pack(push, 1)428typedef struct {429 SVGA3dRenderStateName state;430 union {431 uint32 uintValue;432 float floatValue;433 };434} SVGA3dRenderState;435#pragma pack(pop)436 437#pragma pack(push, 1)438typedef struct {439 uint32 cid;440 441} SVGA3dCmdSetRenderState;442#pragma pack(pop)443 444#pragma pack(push, 1)445typedef struct {446 uint32 cid;447 SVGA3dRenderTargetType type;448 SVGA3dSurfaceImageId target;449} SVGA3dCmdSetRenderTarget;450#pragma pack(pop)451 452#pragma pack(push, 1)453typedef struct {454 SVGA3dSurfaceImageId src;455 SVGA3dSurfaceImageId dest;456 457} SVGA3dCmdSurfaceCopy;458#pragma pack(pop)459 460#pragma pack(push, 1)461typedef struct {462 SVGA3dSurfaceImageId surface;463 SVGA3dCopyBox box;464} SVGA3dCmdIntraSurfaceCopy;465#pragma pack(pop)466 467#pragma pack(push, 1)468typedef struct {469 uint32 srcSid;470 uint32 destSid;471} SVGA3dCmdWholeSurfaceCopy;472#pragma pack(pop)473 474#pragma pack(push, 1)475typedef struct {476 SVGA3dSurfaceImageId src;477 SVGA3dSurfaceImageId dest;478 SVGA3dBox boxSrc;479 SVGA3dBox boxDest;480} SVGA3dCmdSurfaceStretchBltNonMSToMS;481#pragma pack(pop)482 483#pragma pack(push, 1)484typedef struct {485 SVGA3dSurfaceImageId src;486 SVGA3dSurfaceImageId dest;487 SVGA3dBox boxSrc;488 SVGA3dBox boxDest;489 SVGA3dStretchBltMode mode;490} SVGA3dCmdSurfaceStretchBlt;491#pragma pack(pop)492 493#pragma pack(push, 1)494typedef struct {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)504typedef struct {505 SVGAGuestImage guest;506 SVGA3dSurfaceImageId host;507 SVGA3dTransferType transfer;508 509} SVGA3dCmdSurfaceDMA;510#pragma pack(pop)511 512#pragma pack(push, 1)513typedef struct {514 uint32 suffixSize;515 516 uint32 maximumOffset;517 518 SVGA3dSurfaceDMAFlags flags;519} SVGA3dCmdSurfaceDMASuffix;520#pragma pack(pop)521 522#pragma pack(push, 1)523typedef struct {524 uint32 first;525 uint32 last;526} SVGA3dArrayRangeHint;527#pragma pack(pop)528 529#pragma pack(push, 1)530typedef struct {531 uint32 surfaceId;532 uint32 offset;533 uint32 stride;534} SVGA3dArray;535#pragma pack(pop)536 537#pragma pack(push, 1)538typedef struct {539 SVGA3dDeclType type;540 SVGA3dDeclMethod method;541 SVGA3dDeclUsage usage;542 uint32 usageIndex;543} SVGA3dVertexArrayIdentity;544#pragma pack(pop)545 546#pragma pack(push, 1)547typedef struct SVGA3dVertexDecl {548 SVGA3dVertexArrayIdentity identity;549 SVGA3dArray array;550 SVGA3dArrayRangeHint rangeHint;551} SVGA3dVertexDecl;552#pragma pack(pop)553 554#pragma pack(push, 1)555typedef struct SVGA3dPrimitiveRange {556 SVGA3dPrimitiveType primType;557 uint32 primitiveCount;558 559 SVGA3dArray indexArray;560 uint32 indexWidth;561 562 int32 indexBias;563} SVGA3dPrimitiveRange;564#pragma pack(pop)565 566#pragma pack(push, 1)567typedef struct {568 uint32 cid;569 uint32 numVertexDecls;570 uint32 numRanges;571 572} SVGA3dCmdDrawPrimitives;573#pragma pack(pop)574 575#pragma pack(push, 1)576typedef struct {577 uint32 cid;578 579 uint32 primitiveCount;580 uint32 startVertexLocation;581 582 uint8 primitiveType;583 uint8 padding[3];584} SVGA3dCmdDraw;585#pragma pack(pop)586 587#pragma pack(push, 1)588typedef struct {589 uint32 cid;590 591 uint8 primitiveType;592 593 uint32 indexBufferSid;594 uint32 indexBufferOffset;595 596 uint8 indexBufferStride;597 598 int32 baseVertexLocation;599 600 uint32 primitiveCount;601 uint32 pad0;602 uint16 pad1;603} SVGA3dCmdDrawIndexed;604#pragma pack(pop)605 606#pragma pack(push, 1)607typedef struct {608 uint16 streamOffset;609 uint8 stream;610 uint8 type;611 uint8 method;612 uint8 usage;613 uint8 usageIndex;614 uint8 padding;615 616} SVGA3dVertexElement;617#pragma pack(pop)618 619#define SVGA3D_VERTEX_ELEMENT_RESPECT_STREAM (1 << 7)620 621#pragma pack(push, 1)622typedef struct {623 uint32 cid;624 625 uint32 numElements;626 627} SVGA3dCmdSetVertexDecls;628#pragma pack(pop)629 630#pragma pack(push, 1)631typedef struct {632 uint32 sid;633 uint32 stride;634 uint32 offset;635} SVGA3dVertexStream;636#pragma pack(pop)637 638#pragma pack(push, 1)639typedef struct {640 uint32 cid;641 642 uint32 numStreams;643 644} SVGA3dCmdSetVertexStreams;645#pragma pack(pop)646 647#pragma pack(push, 1)648typedef struct {649 uint32 cid;650 uint32 numDivisors;651} SVGA3dCmdSetVertexDivisors;652#pragma pack(pop)653 654#pragma pack(push, 1)655typedef struct {656 uint32 stage;657 SVGA3dTextureStateName name;658 union {659 uint32 value;660 float floatValue;661 };662} SVGA3dTextureState;663#pragma pack(pop)664 665#pragma pack(push, 1)666typedef struct {667 uint32 cid;668 669} SVGA3dCmdSetTextureState;670#pragma pack(pop)671 672#pragma pack(push, 1)673typedef struct {674 uint32 cid;675 SVGA3dTransformType type;676 float matrix[16];677} SVGA3dCmdSetTransform;678#pragma pack(pop)679 680#pragma pack(push, 1)681typedef struct {682 float min;683 float max;684} SVGA3dZRange;685#pragma pack(pop)686 687#pragma pack(push, 1)688typedef struct {689 uint32 cid;690 SVGA3dZRange zRange;691} SVGA3dCmdSetZRange;692#pragma pack(pop)693 694#pragma pack(push, 1)695typedef struct {696 float diffuse[4];697 float ambient[4];698 float specular[4];699 float emissive[4];700 float shininess;701} SVGA3dMaterial;702#pragma pack(pop)703 704#pragma pack(push, 1)705typedef struct {706 uint32 cid;707 SVGA3dFace face;708 SVGA3dMaterial material;709} SVGA3dCmdSetMaterial;710#pragma pack(pop)711 712#pragma pack(push, 1)713typedef struct {714 uint32 cid;715 uint32 index;716 SVGA3dLightData data;717} SVGA3dCmdSetLightData;718#pragma pack(pop)719 720#pragma pack(push, 1)721typedef struct {722 uint32 cid;723 uint32 index;724 uint32 enabled;725} SVGA3dCmdSetLightEnabled;726#pragma pack(pop)727 728#pragma pack(push, 1)729typedef struct {730 uint32 cid;731 SVGA3dRect rect;732} SVGA3dCmdSetViewport;733#pragma pack(pop)734 735#pragma pack(push, 1)736typedef struct {737 uint32 cid;738 SVGA3dRect rect;739} SVGA3dCmdSetScissorRect;740#pragma pack(pop)741 742#pragma pack(push, 1)743typedef struct {744 uint32 cid;745 uint32 index;746 float plane[4];747} SVGA3dCmdSetClipPlane;748#pragma pack(pop)749 750#pragma pack(push, 1)751typedef struct {752 uint32 cid;753 uint32 shid;754 SVGA3dShaderType type;755 756} SVGA3dCmdDefineShader;757#pragma pack(pop)758 759#pragma pack(push, 1)760typedef struct {761 uint32 cid;762 uint32 shid;763 SVGA3dShaderType type;764} SVGA3dCmdDestroyShader;765#pragma pack(pop)766 767#pragma pack(push, 1)768typedef struct {769 uint32 cid;770 uint32 reg;771 SVGA3dShaderType type;772 SVGA3dShaderConstType ctype;773 uint32 values[4];774 775} SVGA3dCmdSetShaderConst;776#pragma pack(pop)777 778#pragma pack(push, 1)779typedef struct {780 uint32 cid;781 SVGA3dShaderType type;782 uint32 shid;783} SVGA3dCmdSetShader;784#pragma pack(pop)785 786#pragma pack(push, 1)787typedef struct {788 uint32 cid;789 SVGA3dQueryType type;790} SVGA3dCmdBeginQuery;791#pragma pack(pop)792 793#pragma pack(push, 1)794typedef struct {795 uint32 cid;796 SVGA3dQueryType type;797 SVGAGuestPtr guestResult;798} SVGA3dCmdEndQuery;799#pragma pack(pop)800 801#pragma pack(push, 1)802typedef struct {803 uint32 cid;804 SVGA3dQueryType type;805 SVGAGuestPtr guestResult;806} SVGA3dCmdWaitForQuery;807#pragma pack(pop)808 809#pragma pack(push, 1)810typedef struct {811 uint32 totalSize;812 SVGA3dQueryState state;813 union {814 uint32 result32;815 uint32 queryCookie;816 };817} SVGA3dQueryResult;818#pragma pack(pop)819 820#pragma pack(push, 1)821typedef struct {822 SVGA3dSurfaceImageId srcImage;823 SVGASignedRect srcRect;824 uint32 destScreenId;825 SVGASignedRect destRect;826 827} SVGA3dCmdBlitSurfaceToScreen;828#pragma pack(pop)829 830#pragma pack(push, 1)831typedef struct {832 uint32 sid;833 SVGA3dTextureFilter filter;834} SVGA3dCmdGenerateMipmaps;835#pragma pack(pop)836 837#pragma pack(push, 1)838typedef struct {839 uint32 sid;840} SVGA3dCmdActivateSurface;841#pragma pack(pop)842 843#pragma pack(push, 1)844typedef struct {845 uint32 sid;846} SVGA3dCmdDeactivateSurface;847#pragma pack(pop)848 849#pragma pack(push, 1)850typedef struct SVGA3dCmdScreenDMA {851 uint32 screenId;852 SVGAGuestImage refBuffer;853 SVGAGuestImage destBuffer;854 SVGAGuestImage changeMap;855} SVGA3dCmdScreenDMA;856#pragma pack(pop)857 858#define SVGA3D_LOTRANSBLT_HONORALPHA (0x01)859#define SVGA3D_LOSTRETCHBLT_MIRRORX (0x01)860#define SVGA3D_LOSTRETCHBLT_MIRRORY (0x02)861#define SVGA3D_LOALPHABLEND_SRCHASALPHA (0x01)862 863#pragma pack(push, 1)864typedef struct SVGA3dCmdLogicOpsBitBlt {865 SVGA3dSurfaceImageId src;866 SVGA3dSurfaceImageId dst;867 SVGA3dLogicOp logicOp;868 SVGA3dLogicOpRop3 logicOpRop3;869 870} SVGA3dCmdLogicOpsBitBlt;871#pragma pack(pop)872 873#pragma pack(push, 1)874typedef struct SVGA3dCmdLogicOpsTransBlt {875 SVGA3dSurfaceImageId src;876 SVGA3dSurfaceImageId dst;877 uint32 color;878 uint32 flags;879 SVGA3dBox srcBox;880 SVGA3dSignedBox dstBox;881 SVGA3dBox clipBox;882} SVGA3dCmdLogicOpsTransBlt;883#pragma pack(pop)884 885#pragma pack(push, 1)886typedef struct SVGA3dCmdLogicOpsStretchBlt {887 SVGA3dSurfaceImageId src;888 SVGA3dSurfaceImageId dst;889 uint16 mode;890 uint16 flags;891 SVGA3dBox srcBox;892 SVGA3dSignedBox dstBox;893 SVGA3dBox clipBox;894} SVGA3dCmdLogicOpsStretchBlt;895#pragma pack(pop)896 897#pragma pack(push, 1)898typedef struct SVGA3dCmdLogicOpsColorFill {899 SVGA3dSurfaceImageId dst;900 uint32 color;901 SVGA3dLogicOp logicOp;902 SVGA3dLogicOpRop3 logicOpRop3;903 904} SVGA3dCmdLogicOpsColorFill;905#pragma pack(pop)906 907#pragma pack(push, 1)908typedef struct SVGA3dCmdLogicOpsAlphaBlend {909 SVGA3dSurfaceImageId src;910 SVGA3dSurfaceImageId dst;911 uint32 alphaVal;912 uint32 flags;913 SVGA3dBox srcBox;914 SVGA3dSignedBox dstBox;915 SVGA3dBox clipBox;916} SVGA3dCmdLogicOpsAlphaBlend;917#pragma pack(pop)918 919#define SVGA3D_CLEARTYPE_INVALID_GAMMA_INDEX 0xFFFFFFFF920 921#define SVGA3D_CLEARTYPE_GAMMA_WIDTH 512922#define SVGA3D_CLEARTYPE_GAMMA_HEIGHT 16923 924#pragma pack(push, 1)925typedef struct SVGA3dCmdLogicOpsClearTypeBlend {926 SVGA3dSurfaceImageId tmp;927 SVGA3dSurfaceImageId dst;928 SVGA3dSurfaceImageId gammaSurf;929 SVGA3dSurfaceImageId alphaSurf;930 uint32 gamma;931 uint32 color;932 uint32 color2;933 int32 alphaOffsetX;934 int32 alphaOffsetY;935 936} SVGA3dCmdLogicOpsClearTypeBlend;937#pragma pack(pop)938 939#pragma pack(push, 1)940typedef struct {941 SVGAMobFormat ptDepth;942 uint32 sizeInBytes;943 PPN64 base;944} SVGAOTableMobEntry;945#pragma pack(pop)946 947#pragma pack(push, 1)948typedef struct {949 SVGA3dSurfaceFormat format;950 SVGA3dSurface1Flags surface1Flags;951 uint32 numMipLevels;952 uint32 multisampleCount;953 SVGA3dTextureFilter autogenFilter;954 SVGA3dSize size;955 SVGAMobId mobid;956 uint32 arraySize;957 uint32 mobPitch;958 SVGA3dSurface2Flags surface2Flags;959 uint8 multisamplePattern;960 uint8 qualityLevel;961 uint16 bufferByteStride;962 float minLOD;963 uint32 pad0[2];964} SVGAOTableSurfaceEntry;965#pragma pack(pop)966 967#pragma pack(push, 1)968typedef struct {969 uint32 cid;970 SVGAMobId mobid;971} SVGAOTableContextEntry;972#pragma pack(pop)973 974#pragma pack(push, 1)975typedef struct {976 SVGA3dShaderType type;977 uint32 sizeInBytes;978 uint32 offsetInBytes;979 SVGAMobId mobid;980} SVGAOTableShaderEntry;981#pragma pack(pop)982 983#define SVGA_STFLAG_PRIMARY (1 << 0)984#define SVGA_STFLAG_RESERVED (1 << 1)985typedef uint32 SVGAScreenTargetFlags;986 987#pragma pack(push, 1)988typedef struct {989 SVGA3dSurfaceImageId image;990 uint32 width;991 uint32 height;992 int32 xRoot;993 int32 yRoot;994 SVGAScreenTargetFlags flags;995 uint32 dpi;996 uint32 pad[7];997} SVGAOTableScreenTargetEntry;998#pragma pack(pop)999 1000#pragma pack(push, 1)1001typedef struct {1002 float value[4];1003} SVGA3dShaderConstFloat;1004#pragma pack(pop)1005 1006#pragma pack(push, 1)1007typedef struct {1008 int32 value[4];1009} SVGA3dShaderConstInt;1010#pragma pack(pop)1011 1012#pragma pack(push, 1)1013typedef struct {1014 uint32 value;1015} SVGA3dShaderConstBool;1016#pragma pack(pop)1017 1018#pragma pack(push, 1)1019typedef 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)1029typedef struct {1030 uint32 sid;1031 uint16 stride;1032 uint32 offset;1033} SVGAGBVertexStream;1034#pragma pack(pop)1035#pragma pack(push, 1)1036typedef 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)1088typedef 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)1098typedef 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)1108typedef 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)1118typedef struct {1119 SVGAOTableType type;1120} SVGA3dCmdReadbackOTable;1121#pragma pack(pop)1122 1123#pragma pack(push, 1)1124typedef 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)1133typedef struct SVGA3dCmdDestroyGBMob {1134 SVGAMobId mobid;1135} SVGA3dCmdDestroyGBMob;1136#pragma pack(pop)1137 1138#pragma pack(push, 1)1139typedef 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)1148typedef 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)1157typedef struct SVGA3dCmdUpdateGBMobMapping {1158 SVGAMobId mobid;1159} SVGA3dCmdUpdateGBMobMapping;1160#pragma pack(pop)1161 1162#pragma pack(push, 1)1163typedef 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)1175typedef 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)1189typedef 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)1204typedef 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)1220typedef struct SVGA3dCmdDestroyGBSurface {1221 uint32 sid;1222} SVGA3dCmdDestroyGBSurface;1223#pragma pack(pop)1224 1225#pragma pack(push, 1)1226typedef struct SVGA3dCmdBindGBSurface {1227 uint32 sid;1228 SVGAMobId mobid;1229} SVGA3dCmdBindGBSurface;1230#pragma pack(pop)1231 1232#pragma pack(push, 1)1233typedef 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)1244typedef 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)1253typedef struct SVGA3dCmdUpdateGBImage {1254 SVGA3dSurfaceImageId image;1255 SVGA3dBox box;1256} SVGA3dCmdUpdateGBImage;1257#pragma pack(pop)1258 1259#pragma pack(push, 1)1260typedef struct SVGA3dCmdUpdateGBSurface {1261 uint32 sid;1262} SVGA3dCmdUpdateGBSurface;1263#pragma pack(pop)1264 1265#pragma pack(push, 1)1266typedef struct SVGA3dCmdReadbackGBImage {1267 SVGA3dSurfaceImageId image;1268} SVGA3dCmdReadbackGBImage;1269#pragma pack(pop)1270 1271#pragma pack(push, 1)1272typedef struct SVGA3dCmdReadbackGBSurface {1273 uint32 sid;1274} SVGA3dCmdReadbackGBSurface;1275#pragma pack(pop)1276 1277#pragma pack(push, 1)1278typedef struct SVGA3dCmdReadbackGBImagePartial {1279 SVGA3dSurfaceImageId image;1280 SVGA3dBox box;1281 uint32 invertBox;1282} SVGA3dCmdReadbackGBImagePartial;1283#pragma pack(pop)1284 1285#pragma pack(push, 1)1286typedef struct SVGA3dCmdInvalidateGBImage {1287 SVGA3dSurfaceImageId image;1288} SVGA3dCmdInvalidateGBImage;1289#pragma pack(pop)1290 1291#pragma pack(push, 1)1292typedef struct SVGA3dCmdInvalidateGBSurface {1293 uint32 sid;1294} SVGA3dCmdInvalidateGBSurface;1295#pragma pack(pop)1296 1297#pragma pack(push, 1)1298typedef struct SVGA3dCmdInvalidateGBImagePartial {1299 SVGA3dSurfaceImageId image;1300 SVGA3dBox box;1301 uint32 invertBox;1302} SVGA3dCmdInvalidateGBImagePartial;1303#pragma pack(pop)1304 1305#pragma pack(push, 1)1306typedef struct SVGA3dCmdDefineGBContext {1307 uint32 cid;1308} SVGA3dCmdDefineGBContext;1309#pragma pack(pop)1310 1311#pragma pack(push, 1)1312typedef struct SVGA3dCmdDestroyGBContext {1313 uint32 cid;1314} SVGA3dCmdDestroyGBContext;1315#pragma pack(pop)1316 1317#pragma pack(push, 1)1318typedef struct SVGA3dCmdBindGBContext {1319 uint32 cid;1320 SVGAMobId mobid;1321 uint32 validContents;1322} SVGA3dCmdBindGBContext;1323#pragma pack(pop)1324 1325#pragma pack(push, 1)1326typedef struct SVGA3dCmdReadbackGBContext {1327 uint32 cid;1328} SVGA3dCmdReadbackGBContext;1329#pragma pack(pop)1330 1331#pragma pack(push, 1)1332typedef struct SVGA3dCmdInvalidateGBContext {1333 uint32 cid;1334} SVGA3dCmdInvalidateGBContext;1335#pragma pack(pop)1336 1337#pragma pack(push, 1)1338typedef struct SVGA3dCmdDefineGBShader {1339 uint32 shid;1340 SVGA3dShaderType type;1341 uint32 sizeInBytes;1342} SVGA3dCmdDefineGBShader;1343#pragma pack(pop)1344 1345#pragma pack(push, 1)1346typedef struct SVGA3dCmdBindGBShader {1347 uint32 shid;1348 SVGAMobId mobid;1349 uint32 offsetInBytes;1350} SVGA3dCmdBindGBShader;1351#pragma pack(pop)1352 1353#pragma pack(push, 1)1354typedef struct SVGA3dCmdDestroyGBShader {1355 uint32 shid;1356} SVGA3dCmdDestroyGBShader;1357#pragma pack(pop)1358 1359#pragma pack(push, 1)1360typedef 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)1370typedef struct {1371 uint32 cid;1372 SVGA3dQueryType type;1373} SVGA3dCmdBeginGBQuery;1374#pragma pack(pop)1375 1376#pragma pack(push, 1)1377typedef 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)1386typedef 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)1395typedef struct {1396 SVGAMobId mobid;1397 uint32 mustBeZero;1398 uint32 initialized;1399} SVGA3dCmdEnableGart;1400#pragma pack(pop)1401 1402#pragma pack(push, 1)1403typedef struct {1404 SVGAMobId mobid;1405 uint32 gartOffset;1406} SVGA3dCmdMapMobIntoGart;1407#pragma pack(pop)1408 1409#pragma pack(push, 1)1410typedef struct {1411 uint32 gartOffset;1412 uint32 numPages;1413} SVGA3dCmdUnmapGartRange;1414#pragma pack(pop)1415 1416#pragma pack(push, 1)1417typedef 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)1430typedef struct {1431 uint32 stid;1432} SVGA3dCmdDestroyGBScreenTarget;1433#pragma pack(pop)1434 1435#pragma pack(push, 1)1436typedef struct {1437 uint32 stid;1438 SVGA3dSurfaceImageId image;1439} SVGA3dCmdBindGBScreenTarget;1440#pragma pack(pop)1441 1442#pragma pack(push, 1)1443typedef struct {1444 uint32 stid;1445 SVGA3dRect rect;1446} SVGA3dCmdUpdateGBScreenTarget;1447#pragma pack(pop)1448 1449#pragma pack(push, 1)1450typedef struct {1451 uint32 stid;1452 SVGA3dRect rect;1453 SVGA3dFrameUpdateType type;1454} SVGA3dCmdUpdateGBScreenTarget_v2;1455#pragma pack(pop)1456 1457#pragma pack(push, 1)1458typedef 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)1467typedef 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)1477typedef struct {1478 uint32 value;1479 uint32 mobId;1480 uint32 mobOffset;1481} SVGA3dCmdGBMobFence;1482#pragma pack(pop)1483 1484#pragma pack(push, 1)1485typedef 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 0x001498#define SVGA_SCREEN_COPY_STATUS_SUCCESS 0x011499#define SVGA_SCREEN_COPY_STATUS_INVALID 0xFFFFFFFF1500 1501#pragma pack(push, 1)1502typedef struct {1503 uint32 sid;1504} SVGA3dCmdWriteZeroSurface;1505#pragma pack(pop)1506 1507#pragma pack(push, 1)1508typedef struct {1509 uint32 sid;1510} SVGA3dCmdUpdateZeroSurface;1511#pragma pack(pop)1512 1513#endif1514