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