1 /********************************************************** 2 * Copyright 2007-2017 VMware, Inc. All rights reserved. 3 * 4 * Permission is hereby granted, free of charge, to any person 5 * obtaining a copy of this software and associated documentation 6 * files (the "Software"), to deal in the Software without 7 * restriction, including without limitation the rights to use, copy, 8 * modify, merge, publish, distribute, sublicense, and/or sell copies 9 * of the Software, and to permit persons to whom the Software is 10 * furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be 13 * included in all copies or substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 19 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 20 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 * SOFTWARE. 23 * 24 **********************************************************/ 25 26 /* 27 * svga3d_dx.h -- 28 * 29 * SVGA 3d hardware definitions for DX10 support. 30 */ 31 32 #ifndef _SVGA3D_DX_H_ 33 #define _SVGA3D_DX_H_ 34 35 #define INCLUDE_ALLOW_MODULE 36 #define INCLUDE_ALLOW_USERLEVEL 37 #define INCLUDE_ALLOW_VMCORE 38 #include "includeCheck.h" 39 40 #include "svga3d_limits.h" 41 42 /* Matches D3D10_DDI_INPUT_CLASSIFICATION and D3D10_INPUT_CLASSIFICATION */ 43 #define SVGA3D_INPUT_MIN 0 44 #define SVGA3D_INPUT_PER_VERTEX_DATA 0 45 #define SVGA3D_INPUT_PER_INSTANCE_DATA 1 46 #define SVGA3D_INPUT_MAX 2 47 typedef uint32 SVGA3dInputClassification; 48 49 /* Matches D3D10DDIRESOURCE_TYPE */ 50 #define SVGA3D_RESOURCE_TYPE_MIN 1 51 #define SVGA3D_RESOURCE_BUFFER 1 52 #define SVGA3D_RESOURCE_TEXTURE1D 2 53 #define SVGA3D_RESOURCE_TEXTURE2D 3 54 #define SVGA3D_RESOURCE_TEXTURE3D 4 55 #define SVGA3D_RESOURCE_TEXTURECUBE 5 56 #define SVGA3D_RESOURCE_TYPE_DX10_MAX 6 57 #define SVGA3D_RESOURCE_BUFFEREX 6 58 #define SVGA3D_RESOURCE_TYPE_MAX 7 59 typedef uint32 SVGA3dResourceType; 60 61 /* Matches D3D10_DDI_COLOR_WRITE_ENABLE and D3D10_COLOR_WRITE_ENABLE */ 62 #define SVGA3D_COLOR_WRITE_ENABLE_RED (1 << 0) 63 #define SVGA3D_COLOR_WRITE_ENABLE_GREEN (1 << 1) 64 #define SVGA3D_COLOR_WRITE_ENABLE_BLUE (1 << 2) 65 #define SVGA3D_COLOR_WRITE_ENABLE_ALPHA (1 << 3) 66 #define SVGA3D_COLOR_WRITE_ENABLE_ALL (SVGA3D_COLOR_WRITE_ENABLE_RED | \ 67 SVGA3D_COLOR_WRITE_ENABLE_GREEN | \ 68 SVGA3D_COLOR_WRITE_ENABLE_BLUE | \ 69 SVGA3D_COLOR_WRITE_ENABLE_ALPHA) 70 typedef uint8 SVGA3dColorWriteEnable; 71 72 /* Matches D3D10_DDI_DEPTH_WRITE_MASK and D3D10_DEPTH_WRITE_MASK */ 73 #define SVGA3D_DEPTH_WRITE_MASK_ZERO 0 74 #define SVGA3D_DEPTH_WRITE_MASK_ALL 1 75 typedef uint8 SVGA3dDepthWriteMask; 76 77 /* Matches D3D10_DDI_FILTER and D3D10_FILTER */ 78 #define SVGA3D_FILTER_MIP_LINEAR (1 << 0) 79 #define SVGA3D_FILTER_MAG_LINEAR (1 << 2) 80 #define SVGA3D_FILTER_MIN_LINEAR (1 << 4) 81 #define SVGA3D_FILTER_ANISOTROPIC (1 << 6) 82 #define SVGA3D_FILTER_COMPARE (1 << 7) 83 typedef uint32 SVGA3dFilter; 84 85 /* Matches D3D10_DDI_CULL_MODE */ 86 #define SVGA3D_CULL_INVALID 0 87 #define SVGA3D_CULL_MIN 1 88 #define SVGA3D_CULL_NONE 1 89 #define SVGA3D_CULL_FRONT 2 90 #define SVGA3D_CULL_BACK 3 91 #define SVGA3D_CULL_MAX 4 92 typedef uint8 SVGA3dCullMode; 93 94 /* Matches D3D10_DDI_COMPARISON_FUNC */ 95 #define SVGA3D_COMPARISON_INVALID 0 96 #define SVGA3D_COMPARISON_MIN 1 97 #define SVGA3D_COMPARISON_NEVER 1 98 #define SVGA3D_COMPARISON_LESS 2 99 #define SVGA3D_COMPARISON_EQUAL 3 100 #define SVGA3D_COMPARISON_LESS_EQUAL 4 101 #define SVGA3D_COMPARISON_GREATER 5 102 #define SVGA3D_COMPARISON_NOT_EQUAL 6 103 #define SVGA3D_COMPARISON_GREATER_EQUAL 7 104 #define SVGA3D_COMPARISON_ALWAYS 8 105 #define SVGA3D_COMPARISON_MAX 9 106 typedef uint8 SVGA3dComparisonFunc; 107 108 /* 109 * SVGA3D_MULTISAMPLE_DISABLE disables MSAA for all primitives. 110 * SVGA3D_MULTISAMPLE_DISABLE_LINE, which is supported in DX10.1, 111 * disables MSAA for lines only. 112 */ 113 #define SVGA3D_MULTISAMPLE_DISABLE 0 114 #define SVGA3D_MULTISAMPLE_ENABLE 1 115 #define SVGA3D_MULTISAMPLE_DX_MAX 1 116 #define SVGA3D_MULTISAMPLE_DISABLE_LINE 2 117 #define SVGA3D_MULTISAMPLE_MAX 2 118 typedef uint8 SVGA3dMultisampleEnable; 119 120 #define SVGA3D_DX_MAX_VERTEXBUFFERS 32 121 #define SVGA3D_DX_MAX_VERTEXINPUTREGISTERS 16 122 #define SVGA3D_DX_SM41_MAX_VERTEXINPUTREGISTERS 32 123 #define SVGA3D_DX_MAX_SOTARGETS 4 124 #define SVGA3D_DX_MAX_SRVIEWS 128 125 #define SVGA3D_DX_MAX_CONSTBUFFERS 16 126 #define SVGA3D_DX_MAX_SAMPLERS 16 127 128 #define SVGA3D_DX_MAX_CONSTBUF_BINDING_SIZE (4096 * 4 * (uint32)sizeof(uint32)) 129 130 typedef uint32 SVGA3dShaderResourceViewId; 131 typedef uint32 SVGA3dRenderTargetViewId; 132 typedef uint32 SVGA3dDepthStencilViewId; 133 134 typedef uint32 SVGA3dShaderId; 135 typedef uint32 SVGA3dElementLayoutId; 136 typedef uint32 SVGA3dSamplerId; 137 typedef uint32 SVGA3dBlendStateId; 138 typedef uint32 SVGA3dDepthStencilStateId; 139 typedef uint32 SVGA3dRasterizerStateId; 140 typedef uint32 SVGA3dQueryId; 141 typedef uint32 SVGA3dStreamOutputId; 142 143 typedef union { 144 struct { 145 float r; 146 float g; 147 float b; 148 float a; 149 }; 150 151 float value[4]; 152 } SVGA3dRGBAFloat; 153 154 typedef 155 #include "vmware_pack_begin.h" 156 struct { 157 uint32 cid; 158 SVGAMobId mobid; 159 } 160 #include "vmware_pack_end.h" 161 SVGAOTableDXContextEntry; 162 163 typedef 164 #include "vmware_pack_begin.h" 165 struct SVGA3dCmdDXDefineContext { 166 uint32 cid; 167 } 168 #include "vmware_pack_end.h" 169 SVGA3dCmdDXDefineContext; /* SVGA_3D_CMD_DX_DEFINE_CONTEXT */ 170 171 typedef 172 #include "vmware_pack_begin.h" 173 struct SVGA3dCmdDXDestroyContext { 174 uint32 cid; 175 } 176 #include "vmware_pack_end.h" 177 SVGA3dCmdDXDestroyContext; /* SVGA_3D_CMD_DX_DESTROY_CONTEXT */ 178 179 /* 180 * Bind a DX context. 181 * 182 * validContents should be set to 0 for new contexts, 183 * and 1 if this is an old context which is getting paged 184 * back on to the device. 185 * 186 * For new contexts, it is recommended that the driver 187 * issue commands to initialize all interesting state 188 * prior to rendering. 189 */ 190 typedef 191 #include "vmware_pack_begin.h" 192 struct SVGA3dCmdDXBindContext { 193 uint32 cid; 194 SVGAMobId mobid; 195 uint32 validContents; 196 } 197 #include "vmware_pack_end.h" 198 SVGA3dCmdDXBindContext; /* SVGA_3D_CMD_DX_BIND_CONTEXT */ 199 200 /* 201 * Readback a DX context. 202 * (Request that the device flush the contents back into guest memory.) 203 */ 204 typedef 205 #include "vmware_pack_begin.h" 206 struct SVGA3dCmdDXReadbackContext { 207 uint32 cid; 208 } 209 #include "vmware_pack_end.h" 210 SVGA3dCmdDXReadbackContext; /* SVGA_3D_CMD_DX_READBACK_CONTEXT */ 211 212 /* 213 * Invalidate a guest-backed context. 214 */ 215 typedef 216 #include "vmware_pack_begin.h" 217 struct SVGA3dCmdDXInvalidateContext { 218 uint32 cid; 219 } 220 #include "vmware_pack_end.h" 221 SVGA3dCmdDXInvalidateContext; /* SVGA_3D_CMD_DX_INVALIDATE_CONTEXT */ 222 223 typedef 224 #include "vmware_pack_begin.h" 225 struct SVGA3dCmdDXSetSingleConstantBuffer { 226 uint32 slot; 227 SVGA3dShaderType type; 228 SVGA3dSurfaceId sid; 229 uint32 offsetInBytes; 230 uint32 sizeInBytes; 231 } 232 #include "vmware_pack_end.h" 233 SVGA3dCmdDXSetSingleConstantBuffer; 234 /* SVGA_3D_CMD_DX_SET_SINGLE_CONSTANT_BUFFER */ 235 236 typedef 237 #include "vmware_pack_begin.h" 238 struct SVGA3dCmdDXSetShaderResources { 239 uint32 startView; 240 SVGA3dShaderType type; 241 242 /* 243 * Followed by a variable number of SVGA3dShaderResourceViewId's. 244 */ 245 } 246 #include "vmware_pack_end.h" 247 SVGA3dCmdDXSetShaderResources; /* SVGA_3D_CMD_DX_SET_SHADER_RESOURCES */ 248 249 typedef 250 #include "vmware_pack_begin.h" 251 struct SVGA3dCmdDXSetShader { 252 SVGA3dShaderId shaderId; 253 SVGA3dShaderType type; 254 } 255 #include "vmware_pack_end.h" 256 SVGA3dCmdDXSetShader; /* SVGA_3D_CMD_DX_SET_SHADER */ 257 258 typedef 259 #include "vmware_pack_begin.h" 260 struct SVGA3dCmdDXSetSamplers { 261 uint32 startSampler; 262 SVGA3dShaderType type; 263 264 /* 265 * Followed by a variable number of SVGA3dSamplerId's. 266 */ 267 } 268 #include "vmware_pack_end.h" 269 SVGA3dCmdDXSetSamplers; /* SVGA_3D_CMD_DX_SET_SAMPLERS */ 270 271 typedef 272 #include "vmware_pack_begin.h" 273 struct SVGA3dCmdDXDraw { 274 uint32 vertexCount; 275 uint32 startVertexLocation; 276 } 277 #include "vmware_pack_end.h" 278 SVGA3dCmdDXDraw; /* SVGA_3D_CMD_DX_DRAW */ 279 280 typedef 281 #include "vmware_pack_begin.h" 282 struct SVGA3dCmdDXDrawIndexed { 283 uint32 indexCount; 284 uint32 startIndexLocation; 285 int32 baseVertexLocation; 286 } 287 #include "vmware_pack_end.h" 288 SVGA3dCmdDXDrawIndexed; /* SVGA_3D_CMD_DX_DRAW_INDEXED */ 289 290 typedef 291 #include "vmware_pack_begin.h" 292 struct SVGA3dCmdDXDrawInstanced { 293 uint32 vertexCountPerInstance; 294 uint32 instanceCount; 295 uint32 startVertexLocation; 296 uint32 startInstanceLocation; 297 } 298 #include "vmware_pack_end.h" 299 SVGA3dCmdDXDrawInstanced; /* SVGA_3D_CMD_DX_DRAW_INSTANCED */ 300 301 typedef 302 #include "vmware_pack_begin.h" 303 struct SVGA3dCmdDXDrawIndexedInstanced { 304 uint32 indexCountPerInstance; 305 uint32 instanceCount; 306 uint32 startIndexLocation; 307 int32 baseVertexLocation; 308 uint32 startInstanceLocation; 309 } 310 #include "vmware_pack_end.h" 311 SVGA3dCmdDXDrawIndexedInstanced; /* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED */ 312 313 typedef 314 #include "vmware_pack_begin.h" 315 struct SVGA3dCmdDXDrawIndexedInstancedIndirect { 316 SVGA3dSurfaceId argsBufferSid; 317 uint32 byteOffsetForArgs; 318 } 319 #include "vmware_pack_end.h" 320 SVGA3dCmdDXDrawIndexedInstancedIndirect; 321 /* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED_INDIRECT */ 322 323 typedef 324 #include "vmware_pack_begin.h" 325 struct SVGA3dCmdDXDrawInstancedIndirect { 326 SVGA3dSurfaceId argsBufferSid; 327 uint32 byteOffsetForArgs; 328 } 329 #include "vmware_pack_end.h" 330 SVGA3dCmdDXDrawInstancedIndirect; 331 /* SVGA_3D_CMD_DX_DRAW_INSTANCED_INDIRECT */ 332 333 typedef 334 #include "vmware_pack_begin.h" 335 struct SVGA3dCmdDXDrawAuto { 336 uint32 pad0; 337 } 338 #include "vmware_pack_end.h" 339 SVGA3dCmdDXDrawAuto; /* SVGA_3D_CMD_DX_DRAW_AUTO */ 340 341 typedef 342 #include "vmware_pack_begin.h" 343 struct SVGA3dCmdDXDispatch { 344 uint32 threadGroupCountX; 345 uint32 threadGroupCountY; 346 uint32 threadGroupCountZ; 347 } 348 #include "vmware_pack_end.h" 349 SVGA3dCmdDXDispatch; 350 /* SVGA_3D_CMD_DX_DISPATCH */ 351 352 typedef 353 #include "vmware_pack_begin.h" 354 struct SVGA3dCmdDXDispatchIndirect { 355 SVGA3dSurfaceId argsBufferSid; 356 uint32 byteOffsetForArgs; 357 } 358 #include "vmware_pack_end.h" 359 SVGA3dCmdDXDispatchIndirect; 360 /* SVGA_3D_CMD_DX_DISPATCH_INDIRECT */ 361 362 typedef 363 #include "vmware_pack_begin.h" 364 struct SVGA3dCmdDXSetInputLayout { 365 SVGA3dElementLayoutId elementLayoutId; 366 } 367 #include "vmware_pack_end.h" 368 SVGA3dCmdDXSetInputLayout; /* SVGA_3D_CMD_DX_SET_INPUT_LAYOUT */ 369 370 typedef 371 #include "vmware_pack_begin.h" 372 struct SVGA3dVertexBuffer { 373 SVGA3dSurfaceId sid; 374 uint32 stride; 375 uint32 offset; 376 } 377 #include "vmware_pack_end.h" 378 SVGA3dVertexBuffer; 379 380 typedef 381 #include "vmware_pack_begin.h" 382 struct SVGA3dCmdDXSetVertexBuffers { 383 uint32 startBuffer; 384 /* Followed by a variable number of SVGA3dVertexBuffer's. */ 385 } 386 #include "vmware_pack_end.h" 387 SVGA3dCmdDXSetVertexBuffers; /* SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS */ 388 389 typedef 390 #include "vmware_pack_begin.h" 391 struct SVGA3dCmdDXSetIndexBuffer { 392 SVGA3dSurfaceId sid; 393 SVGA3dSurfaceFormat format; 394 uint32 offset; 395 } 396 #include "vmware_pack_end.h" 397 SVGA3dCmdDXSetIndexBuffer; /* SVGA_3D_CMD_DX_SET_INDEX_BUFFER */ 398 399 typedef 400 #include "vmware_pack_begin.h" 401 struct SVGA3dCmdDXSetTopology { 402 SVGA3dPrimitiveType topology; 403 } 404 #include "vmware_pack_end.h" 405 SVGA3dCmdDXSetTopology; /* SVGA_3D_CMD_DX_SET_TOPOLOGY */ 406 407 typedef 408 #include "vmware_pack_begin.h" 409 struct SVGA3dCmdDXSetRenderTargets { 410 SVGA3dDepthStencilViewId depthStencilViewId; 411 /* Followed by a variable number of SVGA3dRenderTargetViewId's. */ 412 } 413 #include "vmware_pack_end.h" 414 SVGA3dCmdDXSetRenderTargets; /* SVGA_3D_CMD_DX_SET_RENDERTARGETS */ 415 416 typedef 417 #include "vmware_pack_begin.h" 418 struct SVGA3dCmdDXSetBlendState { 419 SVGA3dBlendStateId blendId; 420 float blendFactor[4]; 421 uint32 sampleMask; 422 } 423 #include "vmware_pack_end.h" 424 SVGA3dCmdDXSetBlendState; /* SVGA_3D_CMD_DX_SET_BLEND_STATE */ 425 426 typedef 427 #include "vmware_pack_begin.h" 428 struct SVGA3dCmdDXSetDepthStencilState { 429 SVGA3dDepthStencilStateId depthStencilId; 430 uint32 stencilRef; 431 } 432 #include "vmware_pack_end.h" 433 SVGA3dCmdDXSetDepthStencilState; /* SVGA_3D_CMD_DX_SET_DEPTHSTENCIL_STATE */ 434 435 typedef 436 #include "vmware_pack_begin.h" 437 struct SVGA3dCmdDXSetRasterizerState { 438 SVGA3dRasterizerStateId rasterizerId; 439 } 440 #include "vmware_pack_end.h" 441 SVGA3dCmdDXSetRasterizerState; /* SVGA_3D_CMD_DX_SET_RASTERIZER_STATE */ 442 443 /* Matches D3D10DDI_QUERY_MISCFLAG and D3D10_QUERY_MISC_FLAG */ 444 #define SVGA3D_DXQUERY_FLAG_PREDICATEHINT (1 << 0) 445 typedef uint32 SVGA3dDXQueryFlags; 446 447 /* 448 * The SVGADXQueryDeviceState and SVGADXQueryDeviceBits are used by the device 449 * to track query state transitions, but are not intended to be used by the 450 * driver. 451 */ 452 #define SVGADX_QDSTATE_INVALID ((uint8)-1) /* Query has no state */ 453 #define SVGADX_QDSTATE_MIN 0 454 #define SVGADX_QDSTATE_IDLE 0 /* Query hasn't started yet */ 455 #define SVGADX_QDSTATE_ACTIVE 1 /* Query is actively gathering data */ 456 #define SVGADX_QDSTATE_PENDING 2 /* Query is waiting for results */ 457 #define SVGADX_QDSTATE_FINISHED 3 /* Query has completed */ 458 #define SVGADX_QDSTATE_MAX 4 459 typedef uint8 SVGADXQueryDeviceState; 460 461 typedef 462 #include "vmware_pack_begin.h" 463 struct { 464 SVGA3dQueryTypeUint8 type; 465 uint16 pad0; 466 SVGADXQueryDeviceState state; 467 SVGA3dDXQueryFlags flags; 468 SVGAMobId mobid; 469 uint32 offset; 470 } 471 #include "vmware_pack_end.h" 472 SVGACOTableDXQueryEntry; 473 474 typedef 475 #include "vmware_pack_begin.h" 476 struct SVGA3dCmdDXDefineQuery { 477 SVGA3dQueryId queryId; 478 SVGA3dQueryType type; 479 SVGA3dDXQueryFlags flags; 480 } 481 #include "vmware_pack_end.h" 482 SVGA3dCmdDXDefineQuery; /* SVGA_3D_CMD_DX_DEFINE_QUERY */ 483 484 typedef 485 #include "vmware_pack_begin.h" 486 struct SVGA3dCmdDXDestroyQuery { 487 SVGA3dQueryId queryId; 488 } 489 #include "vmware_pack_end.h" 490 SVGA3dCmdDXDestroyQuery; /* SVGA_3D_CMD_DX_DESTROY_QUERY */ 491 492 typedef 493 #include "vmware_pack_begin.h" 494 struct SVGA3dCmdDXBindQuery { 495 SVGA3dQueryId queryId; 496 SVGAMobId mobid; 497 } 498 #include "vmware_pack_end.h" 499 SVGA3dCmdDXBindQuery; /* SVGA_3D_CMD_DX_BIND_QUERY */ 500 501 typedef 502 #include "vmware_pack_begin.h" 503 struct SVGA3dCmdDXSetQueryOffset { 504 SVGA3dQueryId queryId; 505 uint32 mobOffset; 506 } 507 #include "vmware_pack_end.h" 508 SVGA3dCmdDXSetQueryOffset; /* SVGA_3D_CMD_DX_SET_QUERY_OFFSET */ 509 510 typedef 511 #include "vmware_pack_begin.h" 512 struct SVGA3dCmdDXBeginQuery { 513 SVGA3dQueryId queryId; 514 } 515 #include "vmware_pack_end.h" 516 SVGA3dCmdDXBeginQuery; /* SVGA_3D_CMD_DX_QUERY_BEGIN */ 517 518 typedef 519 #include "vmware_pack_begin.h" 520 struct SVGA3dCmdDXEndQuery { 521 SVGA3dQueryId queryId; 522 } 523 #include "vmware_pack_end.h" 524 SVGA3dCmdDXEndQuery; /* SVGA_3D_CMD_DX_QUERY_END */ 525 526 typedef 527 #include "vmware_pack_begin.h" 528 struct SVGA3dCmdDXReadbackQuery { 529 SVGA3dQueryId queryId; 530 } 531 #include "vmware_pack_end.h" 532 SVGA3dCmdDXReadbackQuery; /* SVGA_3D_CMD_DX_READBACK_QUERY */ 533 534 typedef 535 #include "vmware_pack_begin.h" 536 struct SVGA3dCmdDXMoveQuery { 537 SVGA3dQueryId queryId; 538 SVGAMobId mobid; 539 uint32 mobOffset; 540 } 541 #include "vmware_pack_end.h" 542 SVGA3dCmdDXMoveQuery; /* SVGA_3D_CMD_DX_MOVE_QUERY */ 543 544 typedef 545 #include "vmware_pack_begin.h" 546 struct SVGA3dCmdDXBindAllQuery { 547 uint32 cid; 548 SVGAMobId mobid; 549 } 550 #include "vmware_pack_end.h" 551 SVGA3dCmdDXBindAllQuery; /* SVGA_3D_CMD_DX_BIND_ALL_QUERY */ 552 553 typedef 554 #include "vmware_pack_begin.h" 555 struct SVGA3dCmdDXReadbackAllQuery { 556 uint32 cid; 557 } 558 #include "vmware_pack_end.h" 559 SVGA3dCmdDXReadbackAllQuery; /* SVGA_3D_CMD_DX_READBACK_ALL_QUERY */ 560 561 typedef 562 #include "vmware_pack_begin.h" 563 struct SVGA3dCmdDXSetPredication { 564 SVGA3dQueryId queryId; 565 uint32 predicateValue; 566 } 567 #include "vmware_pack_end.h" 568 SVGA3dCmdDXSetPredication; /* SVGA_3D_CMD_DX_SET_PREDICATION */ 569 570 typedef 571 #include "vmware_pack_begin.h" 572 struct MKS3dDXSOState { 573 uint32 offset; /* Starting offset */ 574 uint32 intOffset; /* Internal offset */ 575 uint32 vertexCount; /* vertices written */ 576 uint32 sizeInBytes; /* max bytes to write */ 577 } 578 #include "vmware_pack_end.h" 579 SVGA3dDXSOState; 580 581 /* Set the offset field to this value to append SO values to the buffer */ 582 #define SVGA3D_DX_SO_OFFSET_APPEND ((uint32) ~0u) 583 584 typedef 585 #include "vmware_pack_begin.h" 586 struct SVGA3dSoTarget { 587 SVGA3dSurfaceId sid; 588 uint32 offset; 589 uint32 sizeInBytes; 590 } 591 #include "vmware_pack_end.h" 592 SVGA3dSoTarget; 593 594 typedef 595 #include "vmware_pack_begin.h" 596 struct SVGA3dCmdDXSetSOTargets { 597 uint32 pad0; 598 /* Followed by a variable number of SVGA3dSOTarget's. */ 599 } 600 #include "vmware_pack_end.h" 601 SVGA3dCmdDXSetSOTargets; /* SVGA_3D_CMD_DX_SET_SOTARGETS */ 602 603 typedef 604 #include "vmware_pack_begin.h" 605 struct SVGA3dViewport 606 { 607 float x; 608 float y; 609 float width; 610 float height; 611 float minDepth; 612 float maxDepth; 613 } 614 #include "vmware_pack_end.h" 615 SVGA3dViewport; 616 617 typedef 618 #include "vmware_pack_begin.h" 619 struct SVGA3dCmdDXSetViewports { 620 uint32 pad0; 621 /* Followed by a variable number of SVGA3dViewport's. */ 622 } 623 #include "vmware_pack_end.h" 624 SVGA3dCmdDXSetViewports; /* SVGA_3D_CMD_DX_SET_VIEWPORTS */ 625 626 #define SVGA3D_DX_MAX_VIEWPORTS 16 627 628 typedef 629 #include "vmware_pack_begin.h" 630 struct SVGA3dCmdDXSetScissorRects { 631 uint32 pad0; 632 /* Followed by a variable number of SVGASignedRect's. */ 633 } 634 #include "vmware_pack_end.h" 635 SVGA3dCmdDXSetScissorRects; /* SVGA_3D_CMD_DX_SET_SCISSORRECTS */ 636 637 #define SVGA3D_DX_MAX_SCISSORRECTS 16 638 639 typedef 640 #include "vmware_pack_begin.h" 641 struct SVGA3dCmdDXClearRenderTargetView { 642 SVGA3dRenderTargetViewId renderTargetViewId; 643 SVGA3dRGBAFloat rgba; 644 } 645 #include "vmware_pack_end.h" 646 SVGA3dCmdDXClearRenderTargetView; /* SVGA_3D_CMD_DX_CLEAR_RENDERTARGET_VIEW */ 647 648 typedef 649 #include "vmware_pack_begin.h" 650 struct SVGA3dCmdDXClearDepthStencilView { 651 uint16 flags; 652 uint16 stencil; 653 SVGA3dDepthStencilViewId depthStencilViewId; 654 float depth; 655 } 656 #include "vmware_pack_end.h" 657 SVGA3dCmdDXClearDepthStencilView; /* SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW */ 658 659 typedef 660 #include "vmware_pack_begin.h" 661 struct SVGA3dCmdDXPredCopyRegion { 662 SVGA3dSurfaceId dstSid; 663 uint32 dstSubResource; 664 SVGA3dSurfaceId srcSid; 665 uint32 srcSubResource; 666 SVGA3dCopyBox box; 667 } 668 #include "vmware_pack_end.h" 669 SVGA3dCmdDXPredCopyRegion; 670 /* SVGA_3D_CMD_DX_PRED_COPY_REGION */ 671 672 typedef 673 #include "vmware_pack_begin.h" 674 struct SVGA3dCmdDXPredCopy { 675 SVGA3dSurfaceId dstSid; 676 SVGA3dSurfaceId srcSid; 677 } 678 #include "vmware_pack_end.h" 679 SVGA3dCmdDXPredCopy; /* SVGA_3D_CMD_DX_PRED_COPY */ 680 681 typedef 682 #include "vmware_pack_begin.h" 683 struct SVGA3dCmdDXPredConvertRegion { 684 SVGA3dSurfaceId dstSid; 685 uint32 dstSubResource; 686 SVGA3dSurfaceId srcSid; 687 uint32 srcSubResource; 688 SVGA3dCopyBox box; 689 } 690 #include "vmware_pack_end.h" 691 SVGA3dCmdDXPredConvertRegion; /* SVGA_3D_CMD_DX_PRED_CONVERT_REGION */ 692 693 typedef 694 #include "vmware_pack_begin.h" 695 struct SVGA3dCmdDXPredConvert { 696 SVGA3dSurfaceId dstSid; 697 SVGA3dSurfaceId srcSid; 698 } 699 #include "vmware_pack_end.h" 700 SVGA3dCmdDXPredConvert; /* SVGA_3D_CMD_DX_PRED_CONVERT */ 701 702 typedef 703 #include "vmware_pack_begin.h" 704 struct SVGA3dCmdDXBufferCopy { 705 SVGA3dSurfaceId dest; 706 SVGA3dSurfaceId src; 707 uint32 destX; 708 uint32 srcX; 709 uint32 width; 710 } 711 #include "vmware_pack_end.h" 712 SVGA3dCmdDXBufferCopy; 713 /* SVGA_3D_CMD_DX_BUFFER_COPY */ 714 715 /* 716 * Perform a surface copy between a multisample, and a non-multisampled 717 * surface. 718 */ 719 typedef 720 #include "vmware_pack_begin.h" 721 struct { 722 SVGA3dSurfaceId dstSid; 723 uint32 dstSubResource; 724 SVGA3dSurfaceId srcSid; 725 uint32 srcSubResource; 726 SVGA3dSurfaceFormat copyFormat; 727 } 728 #include "vmware_pack_end.h" 729 SVGA3dCmdDXResolveCopy; /* SVGA_3D_CMD_DX_RESOLVE_COPY */ 730 731 /* 732 * Perform a predicated surface copy between a multisample, and a 733 * non-multisampled surface. 734 */ 735 typedef 736 #include "vmware_pack_begin.h" 737 struct { 738 SVGA3dSurfaceId dstSid; 739 uint32 dstSubResource; 740 SVGA3dSurfaceId srcSid; 741 uint32 srcSubResource; 742 SVGA3dSurfaceFormat copyFormat; 743 } 744 #include "vmware_pack_end.h" 745 SVGA3dCmdDXPredResolveCopy; /* SVGA_3D_CMD_DX_PRED_RESOLVE_COPY */ 746 747 typedef uint32 SVGA3dDXStretchBltMode; 748 #define SVGADX_STRETCHBLT_LINEAR (1 << 0) 749 #define SVGADX_STRETCHBLT_FORCE_SRC_SRGB (1 << 1) 750 #define SVGADX_STRETCHBLT_MODE_MAX (1 << 2) 751 752 typedef 753 #include "vmware_pack_begin.h" 754 struct SVGA3dCmdDXStretchBlt { 755 SVGA3dSurfaceId srcSid; 756 uint32 srcSubResource; 757 SVGA3dSurfaceId dstSid; 758 uint32 destSubResource; 759 SVGA3dBox boxSrc; 760 SVGA3dBox boxDest; 761 SVGA3dDXStretchBltMode mode; 762 } 763 #include "vmware_pack_end.h" 764 SVGA3dCmdDXStretchBlt; /* SVGA_3D_CMD_DX_STRETCHBLT */ 765 766 typedef 767 #include "vmware_pack_begin.h" 768 struct SVGA3dCmdDXGenMips { 769 SVGA3dShaderResourceViewId shaderResourceViewId; 770 } 771 #include "vmware_pack_end.h" 772 SVGA3dCmdDXGenMips; /* SVGA_3D_CMD_DX_GENMIPS */ 773 774 /* 775 * Update a sub-resource in a guest-backed resource. 776 * (Inform the device that the guest-contents have been updated.) 777 */ 778 typedef 779 #include "vmware_pack_begin.h" 780 struct SVGA3dCmdDXUpdateSubResource { 781 SVGA3dSurfaceId sid; 782 uint32 subResource; 783 SVGA3dBox box; 784 } 785 #include "vmware_pack_end.h" 786 SVGA3dCmdDXUpdateSubResource; /* SVGA_3D_CMD_DX_UPDATE_SUBRESOURCE */ 787 788 /* 789 * Readback a subresource in a guest-backed resource. 790 * (Request the device to flush the dirty contents into the guest.) 791 */ 792 typedef 793 #include "vmware_pack_begin.h" 794 struct SVGA3dCmdDXReadbackSubResource { 795 SVGA3dSurfaceId sid; 796 uint32 subResource; 797 } 798 #include "vmware_pack_end.h" 799 SVGA3dCmdDXReadbackSubResource; /* SVGA_3D_CMD_DX_READBACK_SUBRESOURCE */ 800 801 /* 802 * Invalidate an image in a guest-backed surface. 803 * (Notify the device that the contents can be lost.) 804 */ 805 typedef 806 #include "vmware_pack_begin.h" 807 struct SVGA3dCmdDXInvalidateSubResource { 808 SVGA3dSurfaceId sid; 809 uint32 subResource; 810 } 811 #include "vmware_pack_end.h" 812 SVGA3dCmdDXInvalidateSubResource; /* SVGA_3D_CMD_DX_INVALIDATE_SUBRESOURCE */ 813 814 815 /* 816 * Raw byte wise transfer from a buffer surface into another surface 817 * of the requested box. Supported if 3d is enabled and SVGA_CAP_DX 818 * is set. This command does not take a context. 819 */ 820 typedef 821 #include "vmware_pack_begin.h" 822 struct SVGA3dCmdDXTransferFromBuffer { 823 SVGA3dSurfaceId srcSid; 824 uint32 srcOffset; 825 uint32 srcPitch; 826 uint32 srcSlicePitch; 827 SVGA3dSurfaceId destSid; 828 uint32 destSubResource; 829 SVGA3dBox destBox; 830 } 831 #include "vmware_pack_end.h" 832 SVGA3dCmdDXTransferFromBuffer; /* SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER */ 833 834 835 /* 836 * Raw byte wise transfer from a buffer surface into another surface 837 * of the requested box. Supported if SVGA3D_DEVCAP_DXCONTEXT is set. 838 * The context is implied from the command buffer header. 839 */ 840 typedef 841 #include "vmware_pack_begin.h" 842 struct SVGA3dCmdDXPredTransferFromBuffer { 843 SVGA3dSurfaceId srcSid; 844 uint32 srcOffset; 845 uint32 srcPitch; 846 uint32 srcSlicePitch; 847 SVGA3dSurfaceId destSid; 848 uint32 destSubResource; 849 SVGA3dBox destBox; 850 } 851 #include "vmware_pack_end.h" 852 SVGA3dCmdDXPredTransferFromBuffer; 853 /* SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER */ 854 855 856 typedef 857 #include "vmware_pack_begin.h" 858 struct SVGA3dCmdDXSurfaceCopyAndReadback { 859 SVGA3dSurfaceId srcSid; 860 SVGA3dSurfaceId destSid; 861 SVGA3dCopyBox box; 862 } 863 #include "vmware_pack_end.h" 864 SVGA3dCmdDXSurfaceCopyAndReadback; 865 /* SVGA_3D_CMD_DX_SURFACE_COPY_AND_READBACK */ 866 867 /* 868 * SVGA_DX_HINT_NONE: Does nothing. 869 * 870 * SVGA_DX_HINT_PREFETCH_OBJECT: 871 * SVGA_DX_HINT_PREEVICT_OBJECT: 872 * Consumes a SVGAObjectRef, and hints that the host should consider 873 * fetching/evicting the specified object. 874 * 875 * An id of SVGA3D_INVALID_ID can be used if the guest isn't sure 876 * what object was affected. (For instance, if the guest knows that 877 * it is about to evict a DXShader, but doesn't know precisely which one, 878 * the device can still use this to help limit it's search, or track 879 * how many page-outs have happened.) 880 * 881 * SVGA_DX_HINT_PREFETCH_COBJECT: 882 * SVGA_DX_HINT_PREEVICT_COBJECT: 883 * Same as the above, except they consume an SVGACObjectRef. 884 */ 885 typedef uint32 SVGADXHintId; 886 #define SVGA_DX_HINT_NONE 0 887 #define SVGA_DX_HINT_PREFETCH_OBJECT 1 888 #define SVGA_DX_HINT_PREEVICT_OBJECT 2 889 #define SVGA_DX_HINT_PREFETCH_COBJECT 3 890 #define SVGA_DX_HINT_PREEVICT_COBJECT 4 891 #define SVGA_DX_HINT_MAX 5 892 893 typedef 894 #include "vmware_pack_begin.h" 895 struct SVGAObjectRef { 896 SVGAOTableType type; 897 uint32 id; 898 } 899 #include "vmware_pack_end.h" 900 SVGAObjectRef; 901 902 typedef 903 #include "vmware_pack_begin.h" 904 struct SVGACObjectRef { 905 SVGACOTableType type; 906 uint32 cid; 907 uint32 id; 908 } 909 #include "vmware_pack_end.h" 910 SVGACObjectRef; 911 912 typedef 913 #include "vmware_pack_begin.h" 914 struct SVGA3dCmdDXHint { 915 SVGADXHintId hintId; 916 917 /* 918 * Followed by variable sized data depending on the hintId. 919 */ 920 } 921 #include "vmware_pack_end.h" 922 SVGA3dCmdDXHint; 923 /* SVGA_3D_CMD_DX_HINT */ 924 925 typedef 926 #include "vmware_pack_begin.h" 927 struct SVGA3dCmdDXBufferUpdate { 928 SVGA3dSurfaceId sid; 929 uint32 x; 930 uint32 width; 931 } 932 #include "vmware_pack_end.h" 933 SVGA3dCmdDXBufferUpdate; 934 /* SVGA_3D_CMD_DX_BUFFER_UPDATE */ 935 936 typedef 937 #include "vmware_pack_begin.h" 938 struct SVGA3dCmdDXSetConstantBufferOffset { 939 uint32 slot; 940 uint32 offsetInBytes; 941 } 942 #include "vmware_pack_end.h" 943 SVGA3dCmdDXSetConstantBufferOffset; 944 945 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetVSConstantBufferOffset; 946 /* SVGA_3D_CMD_DX_SET_VS_CONSTANT_BUFFER_OFFSET */ 947 948 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetPSConstantBufferOffset; 949 /* SVGA_3D_CMD_DX_SET_PS_CONSTANT_BUFFER_OFFSET */ 950 951 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetGSConstantBufferOffset; 952 /* SVGA_3D_CMD_DX_SET_GS_CONSTANT_BUFFER_OFFSET */ 953 954 955 typedef 956 #include "vmware_pack_begin.h" 957 struct { 958 union { 959 struct { 960 uint32 firstElement; 961 uint32 numElements; 962 uint32 pad0; 963 uint32 pad1; 964 } buffer; 965 struct { 966 uint32 mostDetailedMip; 967 uint32 firstArraySlice; 968 uint32 mipLevels; 969 uint32 arraySize; 970 } tex; 971 struct { 972 uint32 firstElement; // D3D11DDIARG_BUFFEREX_SHADERRESOURCEVIEW 973 uint32 numElements; 974 uint32 flags; 975 uint32 pad0; 976 } bufferex; 977 }; 978 } 979 #include "vmware_pack_end.h" 980 SVGA3dShaderResourceViewDesc; 981 982 typedef 983 #include "vmware_pack_begin.h" 984 struct { 985 SVGA3dSurfaceId sid; 986 SVGA3dSurfaceFormat format; 987 SVGA3dResourceType resourceDimension; 988 SVGA3dShaderResourceViewDesc desc; 989 uint32 pad; 990 } 991 #include "vmware_pack_end.h" 992 SVGACOTableDXSRViewEntry; 993 994 typedef 995 #include "vmware_pack_begin.h" 996 struct SVGA3dCmdDXDefineShaderResourceView { 997 SVGA3dShaderResourceViewId shaderResourceViewId; 998 999 SVGA3dSurfaceId sid; 1000 SVGA3dSurfaceFormat format; 1001 SVGA3dResourceType resourceDimension; 1002 1003 SVGA3dShaderResourceViewDesc desc; 1004 } 1005 #include "vmware_pack_end.h" 1006 SVGA3dCmdDXDefineShaderResourceView; 1007 /* SVGA_3D_CMD_DX_DEFINE_SHADERRESOURCE_VIEW */ 1008 1009 typedef 1010 #include "vmware_pack_begin.h" 1011 struct SVGA3dCmdDXDestroyShaderResourceView { 1012 SVGA3dShaderResourceViewId shaderResourceViewId; 1013 } 1014 #include "vmware_pack_end.h" 1015 SVGA3dCmdDXDestroyShaderResourceView; 1016 /* SVGA_3D_CMD_DX_DESTROY_SHADERRESOURCE_VIEW */ 1017 1018 typedef 1019 #include "vmware_pack_begin.h" 1020 struct SVGA3dRenderTargetViewDesc { 1021 union { 1022 struct { 1023 uint32 firstElement; 1024 uint32 numElements; 1025 } buffer; 1026 struct { 1027 uint32 mipSlice; 1028 uint32 firstArraySlice; 1029 uint32 arraySize; 1030 } tex; /* 1d, 2d, cube */ 1031 struct { 1032 uint32 mipSlice; 1033 uint32 firstW; 1034 uint32 wSize; 1035 } tex3D; 1036 }; 1037 } 1038 #include "vmware_pack_end.h" 1039 SVGA3dRenderTargetViewDesc; 1040 1041 typedef 1042 #include "vmware_pack_begin.h" 1043 struct { 1044 SVGA3dSurfaceId sid; 1045 SVGA3dSurfaceFormat format; 1046 SVGA3dResourceType resourceDimension; 1047 SVGA3dRenderTargetViewDesc desc; 1048 uint32 pad[2]; 1049 } 1050 #include "vmware_pack_end.h" 1051 SVGACOTableDXRTViewEntry; 1052 1053 typedef 1054 #include "vmware_pack_begin.h" 1055 struct SVGA3dCmdDXDefineRenderTargetView { 1056 SVGA3dRenderTargetViewId renderTargetViewId; 1057 1058 SVGA3dSurfaceId sid; 1059 SVGA3dSurfaceFormat format; 1060 SVGA3dResourceType resourceDimension; 1061 1062 SVGA3dRenderTargetViewDesc desc; 1063 } 1064 #include "vmware_pack_end.h" 1065 SVGA3dCmdDXDefineRenderTargetView; 1066 /* SVGA_3D_CMD_DX_DEFINE_RENDERTARGET_VIEW */ 1067 1068 typedef 1069 #include "vmware_pack_begin.h" 1070 struct SVGA3dCmdDXDestroyRenderTargetView { 1071 SVGA3dRenderTargetViewId renderTargetViewId; 1072 } 1073 #include "vmware_pack_end.h" 1074 SVGA3dCmdDXDestroyRenderTargetView; 1075 /* SVGA_3D_CMD_DX_DESTROY_RENDERTARGET_VIEW */ 1076 1077 /* 1078 * Create Depth-stencil view flags 1079 * http://msdn.microsoft.com/en-us/library/windows/hardware/ff542167(v=vs.85).aspx 1080 */ 1081 #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_DEPTH 0x01 1082 #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_STENCIL 0x02 1083 #define SVGA3D_DXDSVIEW_CREATE_FLAG_MASK 0x03 1084 typedef uint8 SVGA3DCreateDSViewFlags; 1085 1086 typedef 1087 #include "vmware_pack_begin.h" 1088 struct { 1089 SVGA3dSurfaceId sid; 1090 SVGA3dSurfaceFormat format; 1091 SVGA3dResourceType resourceDimension; 1092 uint32 mipSlice; 1093 uint32 firstArraySlice; 1094 uint32 arraySize; 1095 SVGA3DCreateDSViewFlags flags; 1096 uint8 pad0; 1097 uint16 pad1; 1098 uint32 pad2; 1099 } 1100 #include "vmware_pack_end.h" 1101 SVGACOTableDXDSViewEntry; 1102 1103 typedef 1104 #include "vmware_pack_begin.h" 1105 struct SVGA3dCmdDXDefineDepthStencilView { 1106 SVGA3dDepthStencilViewId depthStencilViewId; 1107 1108 SVGA3dSurfaceId sid; 1109 SVGA3dSurfaceFormat format; 1110 SVGA3dResourceType resourceDimension; 1111 uint32 mipSlice; 1112 uint32 firstArraySlice; 1113 uint32 arraySize; 1114 SVGA3DCreateDSViewFlags flags; /* D3D11DDIARG_CREATEDEPTHSTENCILVIEW */ 1115 uint8 pad0; 1116 uint16 pad1; 1117 } 1118 #include "vmware_pack_end.h" 1119 SVGA3dCmdDXDefineDepthStencilView; 1120 /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW */ 1121 1122 typedef 1123 #include "vmware_pack_begin.h" 1124 struct SVGA3dCmdDXDestroyDepthStencilView { 1125 SVGA3dDepthStencilViewId depthStencilViewId; 1126 } 1127 #include "vmware_pack_end.h" 1128 SVGA3dCmdDXDestroyDepthStencilView; 1129 /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW */ 1130 1131 typedef 1132 #include "vmware_pack_begin.h" 1133 struct SVGA3dInputElementDesc { 1134 uint32 inputSlot; 1135 uint32 alignedByteOffset; 1136 SVGA3dSurfaceFormat format; 1137 SVGA3dInputClassification inputSlotClass; 1138 uint32 instanceDataStepRate; 1139 uint32 inputRegister; 1140 } 1141 #include "vmware_pack_end.h" 1142 SVGA3dInputElementDesc; 1143 1144 typedef 1145 #include "vmware_pack_begin.h" 1146 struct { 1147 uint32 elid; 1148 uint32 numDescs; 1149 SVGA3dInputElementDesc descs[32]; 1150 uint32 pad[62]; 1151 } 1152 #include "vmware_pack_end.h" 1153 SVGACOTableDXElementLayoutEntry; 1154 1155 typedef 1156 #include "vmware_pack_begin.h" 1157 struct SVGA3dCmdDXDefineElementLayout { 1158 SVGA3dElementLayoutId elementLayoutId; 1159 /* Followed by a variable number of SVGA3dInputElementDesc's. */ 1160 } 1161 #include "vmware_pack_end.h" 1162 SVGA3dCmdDXDefineElementLayout; 1163 /* SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT */ 1164 1165 typedef 1166 #include "vmware_pack_begin.h" 1167 struct SVGA3dCmdDXDestroyElementLayout { 1168 SVGA3dElementLayoutId elementLayoutId; 1169 } 1170 #include "vmware_pack_end.h" 1171 SVGA3dCmdDXDestroyElementLayout; 1172 /* SVGA_3D_CMD_DX_DESTROY_ELEMENTLAYOUT */ 1173 1174 1175 #define SVGA3D_DX_MAX_RENDER_TARGETS 8 1176 1177 typedef 1178 #include "vmware_pack_begin.h" 1179 struct SVGA3dDXBlendStatePerRT { 1180 uint8 blendEnable; 1181 uint8 srcBlend; 1182 uint8 destBlend; 1183 uint8 blendOp; 1184 uint8 srcBlendAlpha; 1185 uint8 destBlendAlpha; 1186 uint8 blendOpAlpha; 1187 SVGA3dColorWriteEnable renderTargetWriteMask; 1188 uint8 logicOpEnable; 1189 uint8 logicOp; 1190 uint16 pad0; 1191 } 1192 #include "vmware_pack_end.h" 1193 SVGA3dDXBlendStatePerRT; 1194 1195 typedef 1196 #include "vmware_pack_begin.h" 1197 struct { 1198 uint8 alphaToCoverageEnable; 1199 uint8 independentBlendEnable; 1200 uint16 pad0; 1201 SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS]; 1202 uint32 pad1[7]; 1203 } 1204 #include "vmware_pack_end.h" 1205 SVGACOTableDXBlendStateEntry; 1206 1207 /* 1208 * XXX - DX10 style (not 10.1 at this point) 1209 * XXX - For more information see 1210 * http://msdn.microsoft.com/en-us/library/ff541919%28v=VS.85%29.aspx 1211 */ 1212 typedef 1213 #include "vmware_pack_begin.h" 1214 struct SVGA3dCmdDXDefineBlendState { 1215 SVGA3dBlendStateId blendId; 1216 uint8 alphaToCoverageEnable; 1217 uint8 independentBlendEnable; 1218 uint16 pad0; 1219 SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS]; 1220 } 1221 #include "vmware_pack_end.h" 1222 SVGA3dCmdDXDefineBlendState; /* SVGA_3D_CMD_DX_DEFINE_BLEND_STATE */ 1223 1224 typedef 1225 #include "vmware_pack_begin.h" 1226 struct SVGA3dCmdDXDestroyBlendState { 1227 SVGA3dBlendStateId blendId; 1228 } 1229 #include "vmware_pack_end.h" 1230 SVGA3dCmdDXDestroyBlendState; /* SVGA_3D_CMD_DX_DESTROY_BLEND_STATE */ 1231 1232 typedef 1233 #include "vmware_pack_begin.h" 1234 struct { 1235 uint8 depthEnable; 1236 SVGA3dDepthWriteMask depthWriteMask; 1237 SVGA3dComparisonFunc depthFunc; 1238 uint8 stencilEnable; 1239 uint8 frontEnable; 1240 uint8 backEnable; 1241 uint8 stencilReadMask; 1242 uint8 stencilWriteMask; 1243 1244 uint8 frontStencilFailOp; 1245 uint8 frontStencilDepthFailOp; 1246 uint8 frontStencilPassOp; 1247 SVGA3dComparisonFunc frontStencilFunc; 1248 1249 uint8 backStencilFailOp; 1250 uint8 backStencilDepthFailOp; 1251 uint8 backStencilPassOp; 1252 SVGA3dComparisonFunc backStencilFunc; 1253 } 1254 #include "vmware_pack_end.h" 1255 SVGACOTableDXDepthStencilEntry; 1256 1257 /* 1258 * XXX - For more information see 1259 * http://msdn.microsoft.com/en-us/library/ff541944%28v=VS.85%29.aspx 1260 */ 1261 typedef 1262 #include "vmware_pack_begin.h" 1263 struct SVGA3dCmdDXDefineDepthStencilState { 1264 SVGA3dDepthStencilStateId depthStencilId; 1265 1266 uint8 depthEnable; 1267 SVGA3dDepthWriteMask depthWriteMask; 1268 SVGA3dComparisonFunc depthFunc; 1269 uint8 stencilEnable; 1270 uint8 frontEnable; 1271 uint8 backEnable; 1272 uint8 stencilReadMask; 1273 uint8 stencilWriteMask; 1274 1275 uint8 frontStencilFailOp; 1276 uint8 frontStencilDepthFailOp; 1277 uint8 frontStencilPassOp; 1278 SVGA3dComparisonFunc frontStencilFunc; 1279 1280 uint8 backStencilFailOp; 1281 uint8 backStencilDepthFailOp; 1282 uint8 backStencilPassOp; 1283 SVGA3dComparisonFunc backStencilFunc; 1284 } 1285 #include "vmware_pack_end.h" 1286 SVGA3dCmdDXDefineDepthStencilState; 1287 /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_STATE */ 1288 1289 typedef 1290 #include "vmware_pack_begin.h" 1291 struct SVGA3dCmdDXDestroyDepthStencilState { 1292 SVGA3dDepthStencilStateId depthStencilId; 1293 } 1294 #include "vmware_pack_end.h" 1295 SVGA3dCmdDXDestroyDepthStencilState; 1296 /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_STATE */ 1297 1298 typedef 1299 #include "vmware_pack_begin.h" 1300 struct { 1301 uint8 fillMode; 1302 SVGA3dCullMode cullMode; 1303 uint8 frontCounterClockwise; 1304 uint8 provokingVertexLast; 1305 int32 depthBias; 1306 float depthBiasClamp; 1307 float slopeScaledDepthBias; 1308 uint8 depthClipEnable; 1309 uint8 scissorEnable; 1310 SVGA3dMultisampleEnable multisampleEnable; 1311 uint8 antialiasedLineEnable; 1312 float lineWidth; 1313 uint8 lineStippleEnable; 1314 uint8 lineStippleFactor; 1315 uint16 lineStipplePattern; 1316 uint32 forcedSampleCount; 1317 } 1318 #include "vmware_pack_end.h" 1319 SVGACOTableDXRasterizerStateEntry; 1320 1321 /* 1322 * XXX - For more information see 1323 * http://msdn.microsoft.com/en-us/library/ff541988%28v=VS.85%29.aspx 1324 */ 1325 typedef 1326 #include "vmware_pack_begin.h" 1327 struct SVGA3dCmdDXDefineRasterizerState { 1328 SVGA3dRasterizerStateId rasterizerId; 1329 1330 uint8 fillMode; 1331 SVGA3dCullMode cullMode; 1332 uint8 frontCounterClockwise; 1333 uint8 provokingVertexLast; 1334 int32 depthBias; 1335 float depthBiasClamp; 1336 float slopeScaledDepthBias; 1337 uint8 depthClipEnable; 1338 uint8 scissorEnable; 1339 SVGA3dMultisampleEnable multisampleEnable; 1340 uint8 antialiasedLineEnable; 1341 float lineWidth; 1342 uint8 lineStippleEnable; 1343 uint8 lineStippleFactor; 1344 uint16 lineStipplePattern; 1345 } 1346 #include "vmware_pack_end.h" 1347 SVGA3dCmdDXDefineRasterizerState; 1348 /* SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE */ 1349 1350 typedef 1351 #include "vmware_pack_begin.h" 1352 struct SVGA3dCmdDXDestroyRasterizerState { 1353 SVGA3dRasterizerStateId rasterizerId; 1354 } 1355 #include "vmware_pack_end.h" 1356 SVGA3dCmdDXDestroyRasterizerState; 1357 /* SVGA_3D_CMD_DX_DESTROY_RASTERIZER_STATE */ 1358 1359 typedef 1360 #include "vmware_pack_begin.h" 1361 struct { 1362 SVGA3dFilter filter; 1363 uint8 addressU; 1364 uint8 addressV; 1365 uint8 addressW; 1366 uint8 pad0; 1367 float mipLODBias; 1368 uint8 maxAnisotropy; 1369 SVGA3dComparisonFunc comparisonFunc; 1370 uint16 pad1; 1371 SVGA3dRGBAFloat borderColor; 1372 float minLOD; 1373 float maxLOD; 1374 uint32 pad2[6]; 1375 } 1376 #include "vmware_pack_end.h" 1377 SVGACOTableDXSamplerEntry; 1378 1379 /* 1380 * XXX - For more information see 1381 * http://msdn.microsoft.com/en-us/library/ff542011%28v=VS.85%29.aspx 1382 */ 1383 typedef 1384 #include "vmware_pack_begin.h" 1385 struct SVGA3dCmdDXDefineSamplerState { 1386 SVGA3dSamplerId samplerId; 1387 SVGA3dFilter filter; 1388 uint8 addressU; 1389 uint8 addressV; 1390 uint8 addressW; 1391 uint8 pad0; 1392 float mipLODBias; 1393 uint8 maxAnisotropy; 1394 SVGA3dComparisonFunc comparisonFunc; 1395 uint16 pad1; 1396 SVGA3dRGBAFloat borderColor; 1397 float minLOD; 1398 float maxLOD; 1399 } 1400 #include "vmware_pack_end.h" 1401 SVGA3dCmdDXDefineSamplerState; /* SVGA_3D_CMD_DX_DEFINE_SAMPLER_STATE */ 1402 1403 typedef 1404 #include "vmware_pack_begin.h" 1405 struct SVGA3dCmdDXDestroySamplerState { 1406 SVGA3dSamplerId samplerId; 1407 } 1408 #include "vmware_pack_end.h" 1409 SVGA3dCmdDXDestroySamplerState; /* SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE */ 1410 1411 1412 #define SVGADX_SIGNATURE_SEMANTIC_NAME_UNDEFINED 0 1413 #define SVGADX_SIGNATURE_SEMANTIC_NAME_POSITION 1 1414 #define SVGADX_SIGNATURE_SEMANTIC_NAME_CLIP_DISTANCE 2 1415 #define SVGADX_SIGNATURE_SEMANTIC_NAME_CULL_DISTANCE 3 1416 #define SVGADX_SIGNATURE_SEMANTIC_NAME_RENDER_TARGET_ARRAY_INDEX 4 1417 #define SVGADX_SIGNATURE_SEMANTIC_NAME_VIEWPORT_ARRAY_INDEX 5 1418 #define SVGADX_SIGNATURE_SEMANTIC_NAME_VERTEX_ID 6 1419 #define SVGADX_SIGNATURE_SEMANTIC_NAME_PRIMITIVE_ID 7 1420 #define SVGADX_SIGNATURE_SEMANTIC_NAME_INSTANCE_ID 8 1421 #define SVGADX_SIGNATURE_SEMANTIC_NAME_IS_FRONT_FACE 9 1422 #define SVGADX_SIGNATURE_SEMANTIC_NAME_SAMPLE_INDEX 10 1423 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_EQ_0_EDGE_TESSFACTOR 11 1424 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_EQ_0_EDGE_TESSFACTOR 12 1425 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_EQ_1_EDGE_TESSFACTOR 13 1426 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_EQ_1_EDGE_TESSFACTOR 14 1427 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_INSIDE_TESSFACTOR 15 1428 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_INSIDE_TESSFACTOR 16 1429 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_U_EQ_0_EDGE_TESSFACTOR 17 1430 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_V_EQ_0_EDGE_TESSFACTOR 18 1431 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_W_EQ_0_EDGE_TESSFACTOR 19 1432 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_INSIDE_TESSFACTOR 20 1433 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_LINE_DETAIL_TESSFACTOR 21 1434 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_LINE_DENSITY_TESSFACTOR 22 1435 #define SVGADX_SIGNATURE_SEMANTIC_NAME_MAX 23 1436 typedef uint32 SVGA3dDXSignatureSemanticName; 1437 1438 #define SVGADX_SIGNATURE_REGISTER_COMPONENT_UNKNOWN 0 1439 typedef uint32 SVGA3dDXSignatureRegisterComponentType; 1440 1441 #define SVGADX_SIGNATURE_MIN_PRECISION_DEFAULT 0 1442 typedef uint32 SVGA3dDXSignatureMinPrecision; 1443 1444 typedef 1445 #include "vmware_pack_begin.h" 1446 struct SVGA3dDXSignatureEntry { 1447 uint32 registerIndex; 1448 SVGA3dDXSignatureSemanticName semanticName; 1449 uint32 mask; /* Lower 4 bits represent X, Y, Z, W channels */ 1450 SVGA3dDXSignatureRegisterComponentType componentType; 1451 SVGA3dDXSignatureMinPrecision minPrecision; 1452 } 1453 #include "vmware_pack_end.h" 1454 SVGA3dDXShaderSignatureEntry; 1455 1456 #define SVGADX_SIGNATURE_HEADER_VERSION_0 0x08a92d12 1457 1458 /* 1459 * The SVGA3dDXSignatureHeader structure is added after the shader 1460 * body in the mob that is bound to the shader. It is followed by the 1461 * specified number of SVGA3dDXSignatureEntry structures for each of 1462 * the three types of signatures in the order (input, output, patch 1463 * constants). 1464 */ 1465 typedef 1466 #include "vmware_pack_begin.h" 1467 struct SVGA3dDXSignatureHeader { 1468 uint32 headerVersion; 1469 uint32 numInputSignatures; 1470 uint32 numOutputSignatures; 1471 uint32 numPatchConstantSignatures; 1472 } 1473 #include "vmware_pack_end.h" 1474 SVGA3dDXShaderSignatureHeader; 1475 1476 1477 typedef 1478 #include "vmware_pack_begin.h" 1479 struct SVGA3dCmdDXDefineShader { 1480 SVGA3dShaderId shaderId; 1481 SVGA3dShaderType type; 1482 uint32 sizeInBytes; /* Number of bytes of shader text. */ 1483 } 1484 #include "vmware_pack_end.h" 1485 SVGA3dCmdDXDefineShader; /* SVGA_3D_CMD_DX_DEFINE_SHADER */ 1486 1487 typedef 1488 #include "vmware_pack_begin.h" 1489 struct SVGACOTableDXShaderEntry { 1490 SVGA3dShaderType type; 1491 uint32 sizeInBytes; 1492 uint32 offsetInBytes; 1493 SVGAMobId mobid; 1494 uint32 pad[4]; 1495 } 1496 #include "vmware_pack_end.h" 1497 SVGACOTableDXShaderEntry; 1498 1499 typedef 1500 #include "vmware_pack_begin.h" 1501 struct SVGA3dCmdDXDestroyShader { 1502 SVGA3dShaderId shaderId; 1503 } 1504 #include "vmware_pack_end.h" 1505 SVGA3dCmdDXDestroyShader; /* SVGA_3D_CMD_DX_DESTROY_SHADER */ 1506 1507 typedef 1508 #include "vmware_pack_begin.h" 1509 struct SVGA3dCmdDXBindShader { 1510 uint32 cid; 1511 uint32 shid; 1512 SVGAMobId mobid; 1513 uint32 offsetInBytes; 1514 } 1515 #include "vmware_pack_end.h" 1516 SVGA3dCmdDXBindShader; /* SVGA_3D_CMD_DX_BIND_SHADER */ 1517 1518 typedef 1519 #include "vmware_pack_begin.h" 1520 struct SVGA3dCmdDXBindAllShader { 1521 uint32 cid; 1522 SVGAMobId mobid; 1523 } 1524 #include "vmware_pack_end.h" 1525 SVGA3dCmdDXBindAllShader; /* SVGA_3D_CMD_DX_BIND_ALL_SHADER */ 1526 1527 typedef 1528 #include "vmware_pack_begin.h" 1529 struct SVGA3dCmdDXCondBindAllShader { 1530 uint32 cid; 1531 SVGAMobId testMobid; 1532 SVGAMobId mobid; 1533 } 1534 #include "vmware_pack_end.h" 1535 SVGA3dCmdDXCondBindAllShader; /* SVGA_3D_CMD_DX_COND_BIND_ALL_SHADER */ 1536 1537 /* 1538 * The maximum number of streamout decl's in each streamout entry. 1539 */ 1540 #define SVGA3D_MAX_DX10_STREAMOUT_DECLS 64 1541 #define SVGA3D_MAX_STREAMOUT_DECLS 512 1542 1543 typedef 1544 #include "vmware_pack_begin.h" 1545 struct SVGA3dStreamOutputDeclarationEntry { 1546 uint32 outputSlot; 1547 uint32 registerIndex; 1548 uint8 registerMask; 1549 uint8 pad0; 1550 uint16 pad1; 1551 uint32 stream; 1552 } 1553 #include "vmware_pack_end.h" 1554 SVGA3dStreamOutputDeclarationEntry; 1555 1556 typedef 1557 #include "vmware_pack_begin.h" 1558 struct SVGAOTableStreamOutputEntry { 1559 uint32 numOutputStreamEntries; 1560 SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_DX10_STREAMOUT_DECLS]; 1561 uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS]; 1562 uint32 rasterizedStream; 1563 uint32 numOutputStreamStrides; 1564 uint32 mobid; 1565 uint32 offsetInBytes; 1566 uint8 usesMob; 1567 uint8 pad0; 1568 uint16 pad1; 1569 uint32 pad2[246]; 1570 } 1571 #include "vmware_pack_end.h" 1572 SVGACOTableDXStreamOutputEntry; 1573 1574 typedef 1575 #include "vmware_pack_begin.h" 1576 struct SVGA3dCmdDXDefineStreamOutput { 1577 SVGA3dStreamOutputId soid; 1578 uint32 numOutputStreamEntries; 1579 SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_DX10_STREAMOUT_DECLS]; 1580 uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS]; 1581 uint32 rasterizedStream; 1582 } 1583 #include "vmware_pack_end.h" 1584 SVGA3dCmdDXDefineStreamOutput; /* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT */ 1585 1586 /* 1587 * Version 2 needed in order to start validating and using the 1588 * rasterizedStream field. Unfortunately the device wasn't validating 1589 * or using this field and the driver wasn't initializing it in shipped 1590 * code, so a new version of the command is needed to allow that code 1591 * to continue to work. Also added new numOutputStreamStrides field. 1592 */ 1593 1594 #define SVGA3D_DX_SO_NO_RASTERIZED_STREAM 0xFFFFFFFF 1595 1596 typedef 1597 #include "vmware_pack_begin.h" 1598 struct SVGA3dCmdDXDefineStreamOutputWithMob { 1599 SVGA3dStreamOutputId soid; 1600 uint32 numOutputStreamEntries; 1601 uint32 numOutputStreamStrides; 1602 uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS]; 1603 uint32 rasterizedStream; 1604 } 1605 #include "vmware_pack_end.h" 1606 SVGA3dCmdDXDefineStreamOutputWithMob; 1607 /* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT_WITH_MOB */ 1608 1609 typedef 1610 #include "vmware_pack_begin.h" 1611 struct SVGA3dCmdDXBindStreamOutput { 1612 SVGA3dStreamOutputId soid; 1613 uint32 mobid; 1614 uint32 offsetInBytes; 1615 uint32 sizeInBytes; 1616 } 1617 #include "vmware_pack_end.h" 1618 SVGA3dCmdDXBindStreamOutput; /* SVGA_3D_CMD_DX_BIND_STREAMOUTPUT */ 1619 1620 typedef 1621 #include "vmware_pack_begin.h" 1622 struct SVGA3dCmdDXDestroyStreamOutput { 1623 SVGA3dStreamOutputId soid; 1624 } 1625 #include "vmware_pack_end.h" 1626 SVGA3dCmdDXDestroyStreamOutput; /* SVGA_3D_CMD_DX_DESTROY_STREAMOUTPUT */ 1627 1628 typedef 1629 #include "vmware_pack_begin.h" 1630 struct SVGA3dCmdDXSetStreamOutput { 1631 SVGA3dStreamOutputId soid; 1632 } 1633 #include "vmware_pack_end.h" 1634 SVGA3dCmdDXSetStreamOutput; /* SVGA_3D_CMD_DX_SET_STREAMOUTPUT */ 1635 1636 typedef 1637 #include "vmware_pack_begin.h" 1638 struct SVGA3dCmdDXSetMinLOD { 1639 SVGA3dSurfaceId sid; 1640 float minLOD; 1641 } 1642 #include "vmware_pack_end.h" 1643 SVGA3dCmdDXSetMinLOD; /* SVGA_3D_CMD_DX_SET_MIN_LOD */ 1644 1645 typedef 1646 #include "vmware_pack_begin.h" 1647 struct { 1648 uint64 value; 1649 uint32 mobId; 1650 uint32 mobOffset; 1651 } 1652 #include "vmware_pack_end.h" 1653 SVGA3dCmdDXMobFence64; /* SVGA_3D_CMD_DX_MOB_FENCE_64 */ 1654 1655 /* 1656 * SVGA3dCmdSetCOTable -- 1657 * 1658 * This command allows the guest to bind a mob to a context-object table. 1659 */ 1660 typedef 1661 #include "vmware_pack_begin.h" 1662 struct SVGA3dCmdDXSetCOTable { 1663 uint32 cid; 1664 uint32 mobid; 1665 SVGACOTableType type; 1666 uint32 validSizeInBytes; 1667 } 1668 #include "vmware_pack_end.h" 1669 SVGA3dCmdDXSetCOTable; /* SVGA_3D_CMD_DX_SET_COTABLE */ 1670 1671 /* 1672 * Guests using SVGA_3D_CMD_DX_GROW_COTABLE are promising that 1673 * the new COTable contains the same contents as the old one, except possibly 1674 * for some new invalid entries at the end. 1675 * 1676 * If there is an old cotable mob bound, it also has to still be valid. 1677 * 1678 * (Otherwise, guests should use the DXSetCOTableBase command.) 1679 */ 1680 typedef 1681 #include "vmware_pack_begin.h" 1682 struct SVGA3dCmdDXGrowCOTable { 1683 uint32 cid; 1684 uint32 mobid; 1685 SVGACOTableType type; 1686 uint32 validSizeInBytes; 1687 } 1688 #include "vmware_pack_end.h" 1689 SVGA3dCmdDXGrowCOTable; /* SVGA_3D_CMD_DX_GROW_COTABLE */ 1690 1691 typedef 1692 #include "vmware_pack_begin.h" 1693 struct SVGA3dCmdDXReadbackCOTable { 1694 uint32 cid; 1695 SVGACOTableType type; 1696 } 1697 #include "vmware_pack_end.h" 1698 SVGA3dCmdDXReadbackCOTable; /* SVGA_3D_CMD_DX_READBACK_COTABLE */ 1699 1700 typedef 1701 #include "vmware_pack_begin.h" 1702 struct SVGA3dCOTableData { 1703 uint32 mobid; 1704 } 1705 #include "vmware_pack_end.h" 1706 SVGA3dCOTableData; 1707 1708 typedef 1709 #include "vmware_pack_begin.h" 1710 struct SVGA3dBufferBinding { 1711 uint32 bufferId; 1712 uint32 stride; 1713 uint32 offset; 1714 } 1715 #include "vmware_pack_end.h" 1716 SVGA3dBufferBinding; 1717 1718 typedef 1719 #include "vmware_pack_begin.h" 1720 struct SVGA3dConstantBufferBinding { 1721 uint32 sid; 1722 uint32 offsetInBytes; 1723 uint32 sizeInBytes; 1724 } 1725 #include "vmware_pack_end.h" 1726 SVGA3dConstantBufferBinding; 1727 1728 typedef 1729 #include "vmware_pack_begin.h" 1730 struct SVGADXInputAssemblyMobFormat { 1731 uint32 layoutId; 1732 SVGA3dBufferBinding vertexBuffers[SVGA3D_DX_MAX_VERTEXBUFFERS]; 1733 uint32 indexBufferSid; 1734 uint32 pad; 1735 uint32 indexBufferOffset; 1736 uint32 indexBufferFormat; 1737 uint32 topology; 1738 } 1739 #include "vmware_pack_end.h" 1740 SVGADXInputAssemblyMobFormat; 1741 1742 typedef 1743 #include "vmware_pack_begin.h" 1744 struct SVGADXContextMobFormat { 1745 SVGADXInputAssemblyMobFormat inputAssembly; 1746 1747 struct { 1748 uint32 blendStateId; 1749 uint32 blendFactor[4]; 1750 uint32 sampleMask; 1751 uint32 depthStencilStateId; 1752 uint32 stencilRef; 1753 uint32 rasterizerStateId; 1754 uint32 depthStencilViewId; 1755 uint32 renderTargetViewIds[SVGA3D_MAX_SIMULTANEOUS_RENDER_TARGETS]; 1756 uint32 unorderedAccessViewIds[SVGA3D_MAX_UAVIEWS]; 1757 } renderState; 1758 1759 struct { 1760 uint32 targets[SVGA3D_DX_MAX_SOTARGETS]; 1761 uint32 soid; 1762 } streamOut; 1763 uint32 pad0[11]; 1764 1765 uint8 numViewports; 1766 uint8 numScissorRects; 1767 uint16 pad1[1]; 1768 1769 uint32 pad2[3]; 1770 1771 SVGA3dViewport viewports[SVGA3D_DX_MAX_VIEWPORTS]; 1772 uint32 pad3[32]; 1773 1774 SVGASignedRect scissorRects[SVGA3D_DX_MAX_SCISSORRECTS]; 1775 uint32 pad4[64]; 1776 1777 struct { 1778 uint32 queryID; 1779 uint32 value; 1780 } predication; 1781 uint32 pad5[2]; 1782 1783 struct { 1784 uint32 shaderId; 1785 SVGA3dConstantBufferBinding constantBuffers[SVGA3D_DX_MAX_CONSTBUFFERS]; 1786 uint32 shaderResources[SVGA3D_DX_MAX_SRVIEWS]; 1787 uint32 samplers[SVGA3D_DX_MAX_SAMPLERS]; 1788 } shaderState[SVGA3D_NUM_SHADERTYPE]; 1789 uint32 pad6[26]; 1790 1791 SVGA3dQueryId queryID[SVGA3D_MAX_QUERY]; 1792 1793 SVGA3dCOTableData cotables[SVGA_COTABLE_MAX]; 1794 uint32 pad7[380]; 1795 } 1796 #include "vmware_pack_end.h" 1797 SVGADXContextMobFormat; 1798 1799 #endif // _SVGA3D_DX_H_ 1800