1 /********************************************************** 2 * Copyright 2012-2015 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 #define SVGA3D_INPUT_MIN 0 43 #define SVGA3D_INPUT_PER_VERTEX_DATA 0 44 #define SVGA3D_INPUT_PER_INSTANCE_DATA 1 45 #define SVGA3D_INPUT_MAX 2 46 typedef uint32 SVGA3dInputClassification; 47 48 #define SVGA3D_RESOURCE_TYPE_MIN 1 49 #define SVGA3D_RESOURCE_BUFFER 1 50 #define SVGA3D_RESOURCE_TEXTURE1D 2 51 #define SVGA3D_RESOURCE_TEXTURE2D 3 52 #define SVGA3D_RESOURCE_TEXTURE3D 4 53 #define SVGA3D_RESOURCE_TEXTURECUBE 5 54 #define SVGA3D_RESOURCE_TYPE_DX10_MAX 6 55 #define SVGA3D_RESOURCE_BUFFEREX 6 56 #define SVGA3D_RESOURCE_TYPE_MAX 7 57 typedef uint32 SVGA3dResourceType; 58 59 #define SVGA3D_DEPTH_WRITE_MASK_ZERO 0 60 #define SVGA3D_DEPTH_WRITE_MASK_ALL 1 61 typedef uint8 SVGA3dDepthWriteMask; 62 63 #define SVGA3D_FILTER_MIP_LINEAR (1 << 0) 64 #define SVGA3D_FILTER_MAG_LINEAR (1 << 2) 65 #define SVGA3D_FILTER_MIN_LINEAR (1 << 4) 66 #define SVGA3D_FILTER_ANISOTROPIC (1 << 6) 67 #define SVGA3D_FILTER_COMPARE (1 << 7) 68 typedef uint32 SVGA3dFilter; 69 70 #define SVGA3D_CULL_INVALID 0 71 #define SVGA3D_CULL_MIN 1 72 #define SVGA3D_CULL_NONE 1 73 #define SVGA3D_CULL_FRONT 2 74 #define SVGA3D_CULL_BACK 3 75 #define SVGA3D_CULL_MAX 4 76 typedef uint8 SVGA3dCullMode; 77 78 #define SVGA3D_COMPARISON_INVALID 0 79 #define SVGA3D_COMPARISON_MIN 1 80 #define SVGA3D_COMPARISON_NEVER 1 81 #define SVGA3D_COMPARISON_LESS 2 82 #define SVGA3D_COMPARISON_EQUAL 3 83 #define SVGA3D_COMPARISON_LESS_EQUAL 4 84 #define SVGA3D_COMPARISON_GREATER 5 85 #define SVGA3D_COMPARISON_NOT_EQUAL 6 86 #define SVGA3D_COMPARISON_GREATER_EQUAL 7 87 #define SVGA3D_COMPARISON_ALWAYS 8 88 #define SVGA3D_COMPARISON_MAX 9 89 typedef uint8 SVGA3dComparisonFunc; 90 91 #define SVGA3D_DX_MAX_VERTEXBUFFERS 32 92 #define SVGA3D_DX_MAX_SOTARGETS 4 93 #define SVGA3D_DX_MAX_SRVIEWS 128 94 #define SVGA3D_DX_MAX_CONSTBUFFERS 16 95 #define SVGA3D_DX_MAX_SAMPLERS 16 96 97 /* Id limits */ 98 static const uint32 SVGA3dBlendObjectCountPerContext = 4096; 99 static const uint32 SVGA3dDepthStencilObjectCountPerContext = 4096; 100 101 typedef uint32 SVGA3dSurfaceId; 102 typedef uint32 SVGA3dShaderResourceViewId; 103 typedef uint32 SVGA3dRenderTargetViewId; 104 typedef uint32 SVGA3dDepthStencilViewId; 105 106 typedef uint32 SVGA3dShaderId; 107 typedef uint32 SVGA3dElementLayoutId; 108 typedef uint32 SVGA3dSamplerId; 109 typedef uint32 SVGA3dBlendStateId; 110 typedef uint32 SVGA3dDepthStencilStateId; 111 typedef uint32 SVGA3dRasterizerStateId; 112 typedef uint32 SVGA3dQueryId; 113 typedef uint32 SVGA3dStreamOutputId; 114 115 typedef union { 116 struct { 117 float r; 118 float g; 119 float b; 120 float a; 121 }; 122 123 float value[4]; 124 } SVGA3dRGBAFloat; 125 126 typedef 127 #include "vmware_pack_begin.h" 128 struct { 129 uint32 cid; 130 SVGAMobId mobid; 131 } 132 #include "vmware_pack_end.h" 133 SVGAOTableDXContextEntry; 134 135 typedef 136 #include "vmware_pack_begin.h" 137 struct SVGA3dCmdDXDefineContext { 138 uint32 cid; 139 } 140 #include "vmware_pack_end.h" 141 SVGA3dCmdDXDefineContext; /* SVGA_3D_CMD_DX_DEFINE_CONTEXT */ 142 143 typedef 144 #include "vmware_pack_begin.h" 145 struct SVGA3dCmdDXDestroyContext { 146 uint32 cid; 147 } 148 #include "vmware_pack_end.h" 149 SVGA3dCmdDXDestroyContext; /* SVGA_3D_CMD_DX_DESTROY_CONTEXT */ 150 151 /* 152 * Bind a DX context. 153 * 154 * validContents should be set to 0 for new contexts, 155 * and 1 if this is an old context which is getting paged 156 * back on to the device. 157 * 158 * For new contexts, it is recommended that the driver 159 * issue commands to initialize all interesting state 160 * prior to rendering. 161 */ 162 typedef 163 #include "vmware_pack_begin.h" 164 struct SVGA3dCmdDXBindContext { 165 uint32 cid; 166 SVGAMobId mobid; 167 uint32 validContents; 168 } 169 #include "vmware_pack_end.h" 170 SVGA3dCmdDXBindContext; /* SVGA_3D_CMD_DX_BIND_CONTEXT */ 171 172 /* 173 * Readback a DX context. 174 * (Request that the device flush the contents back into guest memory.) 175 */ 176 typedef 177 #include "vmware_pack_begin.h" 178 struct SVGA3dCmdDXReadbackContext { 179 uint32 cid; 180 } 181 #include "vmware_pack_end.h" 182 SVGA3dCmdDXReadbackContext; /* SVGA_3D_CMD_DX_READBACK_CONTEXT */ 183 184 /* 185 * Invalidate a guest-backed context. 186 */ 187 typedef 188 #include "vmware_pack_begin.h" 189 struct SVGA3dCmdDXInvalidateContext { 190 uint32 cid; 191 } 192 #include "vmware_pack_end.h" 193 SVGA3dCmdDXInvalidateContext; /* SVGA_3D_CMD_DX_INVALIDATE_CONTEXT */ 194 195 typedef 196 #include "vmware_pack_begin.h" 197 struct SVGA3dReplyFormatData { 198 uint32 formatSupport; 199 uint32 msaa2xQualityLevels:5; 200 uint32 msaa4xQualityLevels:5; 201 uint32 msaa8xQualityLevels:5; 202 uint32 msaa16xQualityLevels:5; 203 uint32 msaa32xQualityLevels:5; 204 uint32 pad:7; 205 } 206 #include "vmware_pack_end.h" 207 SVGA3dReplyFormatData; 208 209 typedef 210 #include "vmware_pack_begin.h" 211 struct SVGA3dCmdDXSetSingleConstantBuffer { 212 uint32 slot; 213 SVGA3dShaderType type; 214 SVGA3dSurfaceId sid; 215 uint32 offsetInBytes; 216 uint32 sizeInBytes; 217 } 218 #include "vmware_pack_end.h" 219 SVGA3dCmdDXSetSingleConstantBuffer; 220 /* SVGA_3D_CMD_DX_SET_SINGLE_CONSTANT_BUFFER */ 221 222 typedef 223 #include "vmware_pack_begin.h" 224 struct SVGA3dCmdDXSetShaderResources { 225 uint32 startView; 226 SVGA3dShaderType type; 227 228 /* 229 * Followed by a variable number of SVGA3dShaderResourceViewId's. 230 */ 231 } 232 #include "vmware_pack_end.h" 233 SVGA3dCmdDXSetShaderResources; /* SVGA_3D_CMD_DX_SET_SHADER_RESOURCES */ 234 235 typedef 236 #include "vmware_pack_begin.h" 237 struct SVGA3dCmdDXSetShader { 238 SVGA3dShaderId shaderId; 239 SVGA3dShaderType type; 240 } 241 #include "vmware_pack_end.h" 242 SVGA3dCmdDXSetShader; /* SVGA_3D_CMD_DX_SET_SHADER */ 243 244 typedef 245 #include "vmware_pack_begin.h" 246 struct SVGA3dCmdDXSetSamplers { 247 uint32 startSampler; 248 SVGA3dShaderType type; 249 250 /* 251 * Followed by a variable number of SVGA3dSamplerId's. 252 */ 253 } 254 #include "vmware_pack_end.h" 255 SVGA3dCmdDXSetSamplers; /* SVGA_3D_CMD_DX_SET_SAMPLERS */ 256 257 typedef 258 #include "vmware_pack_begin.h" 259 struct SVGA3dCmdDXDraw { 260 uint32 vertexCount; 261 uint32 startVertexLocation; 262 } 263 #include "vmware_pack_end.h" 264 SVGA3dCmdDXDraw; /* SVGA_3D_CMD_DX_DRAW */ 265 266 typedef 267 #include "vmware_pack_begin.h" 268 struct SVGA3dCmdDXDrawIndexed { 269 uint32 indexCount; 270 uint32 startIndexLocation; 271 int32 baseVertexLocation; 272 } 273 #include "vmware_pack_end.h" 274 SVGA3dCmdDXDrawIndexed; /* SVGA_3D_CMD_DX_DRAW_INDEXED */ 275 276 typedef 277 #include "vmware_pack_begin.h" 278 struct SVGA3dCmdDXDrawInstanced { 279 uint32 vertexCountPerInstance; 280 uint32 instanceCount; 281 uint32 startVertexLocation; 282 uint32 startInstanceLocation; 283 } 284 #include "vmware_pack_end.h" 285 SVGA3dCmdDXDrawInstanced; /* SVGA_3D_CMD_DX_DRAW_INSTANCED */ 286 287 typedef 288 #include "vmware_pack_begin.h" 289 struct SVGA3dCmdDXDrawIndexedInstanced { 290 uint32 indexCountPerInstance; 291 uint32 instanceCount; 292 uint32 startIndexLocation; 293 int32 baseVertexLocation; 294 uint32 startInstanceLocation; 295 } 296 #include "vmware_pack_end.h" 297 SVGA3dCmdDXDrawIndexedInstanced; /* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED */ 298 299 typedef 300 #include "vmware_pack_begin.h" 301 struct SVGA3dCmdDXDrawAuto { 302 uint32 pad0; 303 } 304 #include "vmware_pack_end.h" 305 SVGA3dCmdDXDrawAuto; /* SVGA_3D_CMD_DX_DRAW_AUTO */ 306 307 typedef 308 #include "vmware_pack_begin.h" 309 struct SVGA3dCmdDXSetInputLayout { 310 SVGA3dElementLayoutId elementLayoutId; 311 } 312 #include "vmware_pack_end.h" 313 SVGA3dCmdDXSetInputLayout; /* SVGA_3D_CMD_DX_SET_INPUT_LAYOUT */ 314 315 typedef 316 #include "vmware_pack_begin.h" 317 struct SVGA3dVertexBuffer { 318 SVGA3dSurfaceId sid; 319 uint32 stride; 320 uint32 offset; 321 } 322 #include "vmware_pack_end.h" 323 SVGA3dVertexBuffer; 324 325 typedef 326 #include "vmware_pack_begin.h" 327 struct SVGA3dCmdDXSetVertexBuffers { 328 uint32 startBuffer; 329 /* Followed by a variable number of SVGA3dVertexBuffer's. */ 330 } 331 #include "vmware_pack_end.h" 332 SVGA3dCmdDXSetVertexBuffers; /* SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS */ 333 334 typedef 335 #include "vmware_pack_begin.h" 336 struct SVGA3dCmdDXSetIndexBuffer { 337 SVGA3dSurfaceId sid; 338 SVGA3dSurfaceFormat format; 339 uint32 offset; 340 } 341 #include "vmware_pack_end.h" 342 SVGA3dCmdDXSetIndexBuffer; /* SVGA_3D_CMD_DX_SET_INDEX_BUFFER */ 343 344 typedef 345 #include "vmware_pack_begin.h" 346 struct SVGA3dCmdDXSetTopology { 347 SVGA3dPrimitiveType topology; 348 } 349 #include "vmware_pack_end.h" 350 SVGA3dCmdDXSetTopology; /* SVGA_3D_CMD_DX_SET_TOPOLOGY */ 351 352 typedef 353 #include "vmware_pack_begin.h" 354 struct SVGA3dCmdDXSetRenderTargets { 355 SVGA3dDepthStencilViewId depthStencilViewId; 356 /* Followed by a variable number of SVGA3dRenderTargetViewId's. */ 357 } 358 #include "vmware_pack_end.h" 359 SVGA3dCmdDXSetRenderTargets; /* SVGA_3D_CMD_DX_SET_RENDERTARGETS */ 360 361 typedef 362 #include "vmware_pack_begin.h" 363 struct SVGA3dCmdDXSetBlendState { 364 SVGA3dBlendStateId blendId; 365 float blendFactor[4]; 366 uint32 sampleMask; 367 } 368 #include "vmware_pack_end.h" 369 SVGA3dCmdDXSetBlendState; /* SVGA_3D_CMD_DX_SET_BLEND_STATE */ 370 371 typedef 372 #include "vmware_pack_begin.h" 373 struct SVGA3dCmdDXSetDepthStencilState { 374 SVGA3dDepthStencilStateId depthStencilId; 375 uint32 stencilRef; 376 } 377 #include "vmware_pack_end.h" 378 SVGA3dCmdDXSetDepthStencilState; /* SVGA_3D_CMD_DX_SET_DEPTHSTENCIL_STATE */ 379 380 typedef 381 #include "vmware_pack_begin.h" 382 struct SVGA3dCmdDXSetRasterizerState { 383 SVGA3dRasterizerStateId rasterizerId; 384 } 385 #include "vmware_pack_end.h" 386 SVGA3dCmdDXSetRasterizerState; /* SVGA_3D_CMD_DX_SET_RASTERIZER_STATE */ 387 388 #define SVGA3D_DXQUERY_FLAG_PREDICATEHINT (1 << 0) 389 typedef uint32 SVGA3dDXQueryFlags; 390 391 /* 392 * The SVGADXQueryDeviceState and SVGADXQueryDeviceBits are used by the device 393 * to track query state transitions, but are not intended to be used by the 394 * driver. 395 */ 396 #define SVGADX_QDSTATE_INVALID ((uint8)-1) /* Query has no state */ 397 #define SVGADX_QDSTATE_MIN 0 398 #define SVGADX_QDSTATE_IDLE 0 /* Query hasn't started yet */ 399 #define SVGADX_QDSTATE_ACTIVE 1 /* Query is actively gathering data */ 400 #define SVGADX_QDSTATE_PENDING 2 /* Query is waiting for results */ 401 #define SVGADX_QDSTATE_FINISHED 3 /* Query has completed */ 402 #define SVGADX_QDSTATE_MAX 4 403 typedef uint8 SVGADXQueryDeviceState; 404 405 typedef 406 #include "vmware_pack_begin.h" 407 struct { 408 SVGA3dQueryTypeUint8 type; 409 uint16 pad0; 410 SVGADXQueryDeviceState state; 411 SVGA3dDXQueryFlags flags; 412 SVGAMobId mobid; 413 uint32 offset; 414 } 415 #include "vmware_pack_end.h" 416 SVGACOTableDXQueryEntry; 417 418 typedef 419 #include "vmware_pack_begin.h" 420 struct SVGA3dCmdDXDefineQuery { 421 SVGA3dQueryId queryId; 422 SVGA3dQueryType type; 423 SVGA3dDXQueryFlags flags; 424 } 425 #include "vmware_pack_end.h" 426 SVGA3dCmdDXDefineQuery; /* SVGA_3D_CMD_DX_DEFINE_QUERY */ 427 428 typedef 429 #include "vmware_pack_begin.h" 430 struct SVGA3dCmdDXDestroyQuery { 431 SVGA3dQueryId queryId; 432 } 433 #include "vmware_pack_end.h" 434 SVGA3dCmdDXDestroyQuery; /* SVGA_3D_CMD_DX_DESTROY_QUERY */ 435 436 typedef 437 #include "vmware_pack_begin.h" 438 struct SVGA3dCmdDXBindQuery { 439 SVGA3dQueryId queryId; 440 SVGAMobId mobid; 441 } 442 #include "vmware_pack_end.h" 443 SVGA3dCmdDXBindQuery; /* SVGA_3D_CMD_DX_BIND_QUERY */ 444 445 typedef 446 #include "vmware_pack_begin.h" 447 struct SVGA3dCmdDXSetQueryOffset { 448 SVGA3dQueryId queryId; 449 uint32 mobOffset; 450 } 451 #include "vmware_pack_end.h" 452 SVGA3dCmdDXSetQueryOffset; /* SVGA_3D_CMD_DX_SET_QUERY_OFFSET */ 453 454 typedef 455 #include "vmware_pack_begin.h" 456 struct SVGA3dCmdDXBeginQuery { 457 SVGA3dQueryId queryId; 458 } 459 #include "vmware_pack_end.h" 460 SVGA3dCmdDXBeginQuery; /* SVGA_3D_CMD_DX_QUERY_BEGIN */ 461 462 typedef 463 #include "vmware_pack_begin.h" 464 struct SVGA3dCmdDXEndQuery { 465 SVGA3dQueryId queryId; 466 } 467 #include "vmware_pack_end.h" 468 SVGA3dCmdDXEndQuery; /* SVGA_3D_CMD_DX_QUERY_END */ 469 470 typedef 471 #include "vmware_pack_begin.h" 472 struct SVGA3dCmdDXReadbackQuery { 473 SVGA3dQueryId queryId; 474 } 475 #include "vmware_pack_end.h" 476 SVGA3dCmdDXReadbackQuery; /* SVGA_3D_CMD_DX_READBACK_QUERY */ 477 478 typedef 479 #include "vmware_pack_begin.h" 480 struct SVGA3dCmdDXMoveQuery { 481 SVGA3dQueryId queryId; 482 SVGAMobId mobid; 483 uint32 mobOffset; 484 } 485 #include "vmware_pack_end.h" 486 SVGA3dCmdDXMoveQuery; /* SVGA_3D_CMD_DX_MOVE_QUERY */ 487 488 typedef 489 #include "vmware_pack_begin.h" 490 struct SVGA3dCmdDXBindAllQuery { 491 uint32 cid; 492 SVGAMobId mobid; 493 } 494 #include "vmware_pack_end.h" 495 SVGA3dCmdDXBindAllQuery; /* SVGA_3D_CMD_DX_BIND_ALL_QUERY */ 496 497 typedef 498 #include "vmware_pack_begin.h" 499 struct SVGA3dCmdDXReadbackAllQuery { 500 uint32 cid; 501 } 502 #include "vmware_pack_end.h" 503 SVGA3dCmdDXReadbackAllQuery; /* SVGA_3D_CMD_DX_READBACK_ALL_QUERY */ 504 505 typedef 506 #include "vmware_pack_begin.h" 507 struct SVGA3dCmdDXSetPredication { 508 SVGA3dQueryId queryId; 509 uint32 predicateValue; 510 } 511 #include "vmware_pack_end.h" 512 SVGA3dCmdDXSetPredication; /* SVGA_3D_CMD_DX_SET_PREDICATION */ 513 514 typedef 515 #include "vmware_pack_begin.h" 516 struct MKS3dDXSOState { 517 uint32 offset; /* Starting offset */ 518 uint32 intOffset; /* Internal offset */ 519 uint32 vertexCount; /* vertices written */ 520 uint32 sizeInBytes; /* max bytes to write */ 521 } 522 #include "vmware_pack_end.h" 523 SVGA3dDXSOState; 524 525 /* Set the offset field to this value to append SO values to the buffer */ 526 #define SVGA3D_DX_SO_OFFSET_APPEND ((uint32) ~0u) 527 528 typedef 529 #include "vmware_pack_begin.h" 530 struct SVGA3dSoTarget { 531 SVGA3dSurfaceId sid; 532 uint32 offset; 533 uint32 sizeInBytes; 534 } 535 #include "vmware_pack_end.h" 536 SVGA3dSoTarget; 537 538 typedef 539 #include "vmware_pack_begin.h" 540 struct SVGA3dCmdDXSetSOTargets { 541 uint32 pad0; 542 /* Followed by a variable number of SVGA3dSOTarget's. */ 543 } 544 #include "vmware_pack_end.h" 545 SVGA3dCmdDXSetSOTargets; /* SVGA_3D_CMD_DX_SET_SOTARGETS */ 546 547 typedef 548 #include "vmware_pack_begin.h" 549 struct SVGA3dViewport 550 { 551 float x; 552 float y; 553 float width; 554 float height; 555 float minDepth; 556 float maxDepth; 557 } 558 #include "vmware_pack_end.h" 559 SVGA3dViewport; 560 561 typedef 562 #include "vmware_pack_begin.h" 563 struct SVGA3dCmdDXSetViewports { 564 uint32 pad0; 565 /* Followed by a variable number of SVGA3dViewport's. */ 566 } 567 #include "vmware_pack_end.h" 568 SVGA3dCmdDXSetViewports; /* SVGA_3D_CMD_DX_SET_VIEWPORTS */ 569 570 #define SVGA3D_DX_MAX_VIEWPORTS 16 571 572 typedef 573 #include "vmware_pack_begin.h" 574 struct SVGA3dCmdDXSetScissorRects { 575 uint32 pad0; 576 /* Followed by a variable number of SVGASignedRect's. */ 577 } 578 #include "vmware_pack_end.h" 579 SVGA3dCmdDXSetScissorRects; /* SVGA_3D_CMD_DX_SET_SCISSORRECTS */ 580 581 #define SVGA3D_DX_MAX_SCISSORRECTS 16 582 583 typedef 584 #include "vmware_pack_begin.h" 585 struct SVGA3dCmdDXClearRenderTargetView { 586 SVGA3dRenderTargetViewId renderTargetViewId; 587 SVGA3dRGBAFloat rgba; 588 } 589 #include "vmware_pack_end.h" 590 SVGA3dCmdDXClearRenderTargetView; /* SVGA_3D_CMD_DX_CLEAR_RENDERTARGET_VIEW */ 591 592 typedef 593 #include "vmware_pack_begin.h" 594 struct SVGA3dCmdDXClearDepthStencilView { 595 uint16 flags; 596 uint16 stencil; 597 SVGA3dDepthStencilViewId depthStencilViewId; 598 float depth; 599 } 600 #include "vmware_pack_end.h" 601 SVGA3dCmdDXClearDepthStencilView; /* SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW */ 602 603 typedef 604 #include "vmware_pack_begin.h" 605 struct SVGA3dCmdDXPredCopyRegion { 606 SVGA3dSurfaceId dstSid; 607 uint32 dstSubResource; 608 SVGA3dSurfaceId srcSid; 609 uint32 srcSubResource; 610 SVGA3dCopyBox box; 611 } 612 #include "vmware_pack_end.h" 613 SVGA3dCmdDXPredCopyRegion; 614 /* SVGA_3D_CMD_DX_PRED_COPY_REGION */ 615 616 typedef 617 #include "vmware_pack_begin.h" 618 struct SVGA3dCmdDXPredCopy { 619 SVGA3dSurfaceId dstSid; 620 SVGA3dSurfaceId srcSid; 621 } 622 #include "vmware_pack_end.h" 623 SVGA3dCmdDXPredCopy; /* SVGA_3D_CMD_DX_PRED_COPY */ 624 625 typedef 626 #include "vmware_pack_begin.h" 627 struct SVGA3dCmdDXBufferCopy { 628 SVGA3dSurfaceId dest; 629 SVGA3dSurfaceId src; 630 uint32 destX; 631 uint32 srcX; 632 uint32 width; 633 } 634 #include "vmware_pack_end.h" 635 SVGA3dCmdDXBufferCopy; 636 /* SVGA_3D_CMD_DX_BUFFER_COPY */ 637 638 typedef uint32 SVGA3dDXStretchBltMode; 639 #define SVGADX_STRETCHBLT_LINEAR (1 << 0) 640 #define SVGADX_STRETCHBLT_FORCE_SRC_SRGB (1 << 1) 641 642 typedef 643 #include "vmware_pack_begin.h" 644 struct SVGA3dCmdDXStretchBlt { 645 SVGA3dSurfaceId srcSid; 646 uint32 srcSubResource; 647 SVGA3dSurfaceId dstSid; 648 uint32 destSubResource; 649 SVGA3dBox boxSrc; 650 SVGA3dBox boxDest; 651 SVGA3dDXStretchBltMode mode; 652 } 653 #include "vmware_pack_end.h" 654 SVGA3dCmdDXStretchBlt; /* SVGA_3D_CMD_DX_STRETCHBLT */ 655 656 typedef 657 #include "vmware_pack_begin.h" 658 struct SVGA3dCmdDXGenMips { 659 SVGA3dShaderResourceViewId shaderResourceViewId; 660 } 661 #include "vmware_pack_end.h" 662 SVGA3dCmdDXGenMips; /* SVGA_3D_CMD_DX_GENMIPS */ 663 664 /* 665 * Defines a resource/DX surface. Resources share the surfaceId namespace. 666 * 667 */ 668 typedef 669 #include "vmware_pack_begin.h" 670 struct SVGA3dCmdDefineGBSurface_v2 { 671 uint32 sid; 672 SVGA3dSurfaceFlags surfaceFlags; 673 SVGA3dSurfaceFormat format; 674 uint32 numMipLevels; 675 uint32 multisampleCount; 676 SVGA3dTextureFilter autogenFilter; 677 SVGA3dSize size; 678 uint32 arraySize; 679 uint32 pad; 680 } 681 #include "vmware_pack_end.h" 682 SVGA3dCmdDefineGBSurface_v2; /* SVGA_3D_CMD_DEFINE_GB_SURFACE_V2 */ 683 684 /* 685 * Update a sub-resource in a guest-backed resource. 686 * (Inform the device that the guest-contents have been updated.) 687 */ 688 typedef 689 #include "vmware_pack_begin.h" 690 struct SVGA3dCmdDXUpdateSubResource { 691 SVGA3dSurfaceId sid; 692 uint32 subResource; 693 SVGA3dBox box; 694 } 695 #include "vmware_pack_end.h" 696 SVGA3dCmdDXUpdateSubResource; /* SVGA_3D_CMD_DX_UPDATE_SUBRESOURCE */ 697 698 /* 699 * Readback a subresource in a guest-backed resource. 700 * (Request the device to flush the dirty contents into the guest.) 701 */ 702 typedef 703 #include "vmware_pack_begin.h" 704 struct SVGA3dCmdDXReadbackSubResource { 705 SVGA3dSurfaceId sid; 706 uint32 subResource; 707 } 708 #include "vmware_pack_end.h" 709 SVGA3dCmdDXReadbackSubResource; /* SVGA_3D_CMD_DX_READBACK_SUBRESOURCE */ 710 711 /* 712 * Invalidate an image in a guest-backed surface. 713 * (Notify the device that the contents can be lost.) 714 */ 715 typedef 716 #include "vmware_pack_begin.h" 717 struct SVGA3dCmdDXInvalidateSubResource { 718 SVGA3dSurfaceId sid; 719 uint32 subResource; 720 } 721 #include "vmware_pack_end.h" 722 SVGA3dCmdDXInvalidateSubResource; /* SVGA_3D_CMD_DX_INVALIDATE_SUBRESOURCE */ 723 724 725 /* 726 * Raw byte wise transfer from a buffer surface into another surface 727 * of the requested box. 728 */ 729 typedef 730 #include "vmware_pack_begin.h" 731 struct SVGA3dCmdDXTransferFromBuffer { 732 SVGA3dSurfaceId srcSid; 733 uint32 srcOffset; 734 uint32 srcPitch; 735 uint32 srcSlicePitch; 736 SVGA3dSurfaceId destSid; 737 uint32 destSubResource; 738 SVGA3dBox destBox; 739 } 740 #include "vmware_pack_end.h" 741 SVGA3dCmdDXTransferFromBuffer; /* SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER */ 742 743 744 /* 745 * Raw byte wise transfer from a buffer surface into another surface 746 * of the requested box. Supported if SVGA3D_DEVCAP_DXCONTEXT is set. 747 * The context is implied from the command buffer header. 748 */ 749 typedef 750 #include "vmware_pack_begin.h" 751 struct SVGA3dCmdDXPredTransferFromBuffer { 752 SVGA3dSurfaceId srcSid; 753 uint32 srcOffset; 754 uint32 srcPitch; 755 uint32 srcSlicePitch; 756 SVGA3dSurfaceId destSid; 757 uint32 destSubResource; 758 SVGA3dBox destBox; 759 } 760 #include "vmware_pack_end.h" 761 SVGA3dCmdDXPredTransferFromBuffer; 762 /* SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER */ 763 764 765 typedef 766 #include "vmware_pack_begin.h" 767 struct SVGA3dCmdDXSurfaceCopyAndReadback { 768 SVGA3dSurfaceId srcSid; 769 SVGA3dSurfaceId destSid; 770 SVGA3dCopyBox box; 771 } 772 #include "vmware_pack_end.h" 773 SVGA3dCmdDXSurfaceCopyAndReadback; 774 /* SVGA_3D_CMD_DX_SURFACE_COPY_AND_READBACK */ 775 776 777 typedef 778 #include "vmware_pack_begin.h" 779 struct { 780 union { 781 struct { 782 uint32 firstElement; 783 uint32 numElements; 784 uint32 pad0; 785 uint32 pad1; 786 } buffer; 787 struct { 788 uint32 mostDetailedMip; 789 uint32 firstArraySlice; 790 uint32 mipLevels; 791 uint32 arraySize; 792 } tex; 793 struct { 794 uint32 firstElement; 795 uint32 numElements; 796 uint32 flags; 797 uint32 pad0; 798 } bufferex; 799 }; 800 } 801 #include "vmware_pack_end.h" 802 SVGA3dShaderResourceViewDesc; 803 804 typedef 805 #include "vmware_pack_begin.h" 806 struct { 807 SVGA3dSurfaceId sid; 808 SVGA3dSurfaceFormat format; 809 SVGA3dResourceType resourceDimension; 810 SVGA3dShaderResourceViewDesc desc; 811 uint32 pad; 812 } 813 #include "vmware_pack_end.h" 814 SVGACOTableDXSRViewEntry; 815 816 typedef 817 #include "vmware_pack_begin.h" 818 struct SVGA3dCmdDXDefineShaderResourceView { 819 SVGA3dShaderResourceViewId shaderResourceViewId; 820 821 SVGA3dSurfaceId sid; 822 SVGA3dSurfaceFormat format; 823 SVGA3dResourceType resourceDimension; 824 825 SVGA3dShaderResourceViewDesc desc; 826 } 827 #include "vmware_pack_end.h" 828 SVGA3dCmdDXDefineShaderResourceView; 829 /* SVGA_3D_CMD_DX_DEFINE_SHADERRESOURCE_VIEW */ 830 831 typedef 832 #include "vmware_pack_begin.h" 833 struct SVGA3dCmdDXDestroyShaderResourceView { 834 SVGA3dShaderResourceViewId shaderResourceViewId; 835 } 836 #include "vmware_pack_end.h" 837 SVGA3dCmdDXDestroyShaderResourceView; 838 /* SVGA_3D_CMD_DX_DESTROY_SHADERRESOURCE_VIEW */ 839 840 typedef 841 #include "vmware_pack_begin.h" 842 struct SVGA3dRenderTargetViewDesc { 843 union { 844 struct { 845 uint32 firstElement; 846 uint32 numElements; 847 } buffer; 848 struct { 849 uint32 mipSlice; 850 uint32 firstArraySlice; 851 uint32 arraySize; 852 } tex; /* 1d, 2d, cube */ 853 struct { 854 uint32 mipSlice; 855 uint32 firstW; 856 uint32 wSize; 857 } tex3D; 858 }; 859 } 860 #include "vmware_pack_end.h" 861 SVGA3dRenderTargetViewDesc; 862 863 typedef 864 #include "vmware_pack_begin.h" 865 struct { 866 SVGA3dSurfaceId sid; 867 SVGA3dSurfaceFormat format; 868 SVGA3dResourceType resourceDimension; 869 SVGA3dRenderTargetViewDesc desc; 870 uint32 pad[2]; 871 } 872 #include "vmware_pack_end.h" 873 SVGACOTableDXRTViewEntry; 874 875 typedef 876 #include "vmware_pack_begin.h" 877 struct SVGA3dCmdDXDefineRenderTargetView { 878 SVGA3dRenderTargetViewId renderTargetViewId; 879 880 SVGA3dSurfaceId sid; 881 SVGA3dSurfaceFormat format; 882 SVGA3dResourceType resourceDimension; 883 884 SVGA3dRenderTargetViewDesc desc; 885 } 886 #include "vmware_pack_end.h" 887 SVGA3dCmdDXDefineRenderTargetView; 888 /* SVGA_3D_CMD_DX_DEFINE_RENDERTARGET_VIEW */ 889 890 typedef 891 #include "vmware_pack_begin.h" 892 struct SVGA3dCmdDXDestroyRenderTargetView { 893 SVGA3dRenderTargetViewId renderTargetViewId; 894 } 895 #include "vmware_pack_end.h" 896 SVGA3dCmdDXDestroyRenderTargetView; 897 /* SVGA_3D_CMD_DX_DESTROY_RENDERTARGET_VIEW */ 898 899 /* 900 */ 901 #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_DEPTH 0x01 902 #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_STENCIL 0x02 903 #define SVGA3D_DXDSVIEW_CREATE_FLAG_MASK 0x03 904 typedef uint8 SVGA3DCreateDSViewFlags; 905 906 typedef 907 #include "vmware_pack_begin.h" 908 struct { 909 SVGA3dSurfaceId sid; 910 SVGA3dSurfaceFormat format; 911 SVGA3dResourceType resourceDimension; 912 uint32 mipSlice; 913 uint32 firstArraySlice; 914 uint32 arraySize; 915 SVGA3DCreateDSViewFlags flags; 916 uint8 pad0; 917 uint16 pad1; 918 uint32 pad2; 919 } 920 #include "vmware_pack_end.h" 921 SVGACOTableDXDSViewEntry; 922 923 typedef 924 #include "vmware_pack_begin.h" 925 struct SVGA3dCmdDXDefineDepthStencilView { 926 SVGA3dDepthStencilViewId depthStencilViewId; 927 928 SVGA3dSurfaceId sid; 929 SVGA3dSurfaceFormat format; 930 SVGA3dResourceType resourceDimension; 931 uint32 mipSlice; 932 uint32 firstArraySlice; 933 uint32 arraySize; 934 SVGA3DCreateDSViewFlags flags; 935 uint8 pad0; 936 uint16 pad1; 937 } 938 #include "vmware_pack_end.h" 939 SVGA3dCmdDXDefineDepthStencilView; 940 /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW */ 941 942 typedef 943 #include "vmware_pack_begin.h" 944 struct SVGA3dCmdDXDestroyDepthStencilView { 945 SVGA3dDepthStencilViewId depthStencilViewId; 946 } 947 #include "vmware_pack_end.h" 948 SVGA3dCmdDXDestroyDepthStencilView; 949 /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW */ 950 951 typedef 952 #include "vmware_pack_begin.h" 953 struct SVGA3dInputElementDesc { 954 uint32 inputSlot; 955 uint32 alignedByteOffset; 956 SVGA3dSurfaceFormat format; 957 SVGA3dInputClassification inputSlotClass; 958 uint32 instanceDataStepRate; 959 uint32 inputRegister; 960 } 961 #include "vmware_pack_end.h" 962 SVGA3dInputElementDesc; 963 964 typedef 965 #include "vmware_pack_begin.h" 966 struct { 967 /* 968 * XXX: How many of these can there be? 969 */ 970 uint32 elid; 971 uint32 numDescs; 972 SVGA3dInputElementDesc desc[32]; 973 uint32 pad[62]; 974 } 975 #include "vmware_pack_end.h" 976 SVGACOTableDXElementLayoutEntry; 977 978 typedef 979 #include "vmware_pack_begin.h" 980 struct SVGA3dCmdDXDefineElementLayout { 981 SVGA3dElementLayoutId elementLayoutId; 982 /* Followed by a variable number of SVGA3dInputElementDesc's. */ 983 } 984 #include "vmware_pack_end.h" 985 SVGA3dCmdDXDefineElementLayout; 986 /* SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT */ 987 988 typedef 989 #include "vmware_pack_begin.h" 990 struct SVGA3dCmdDXDestroyElementLayout { 991 SVGA3dElementLayoutId elementLayoutId; 992 } 993 #include "vmware_pack_end.h" 994 SVGA3dCmdDXDestroyElementLayout; 995 /* SVGA_3D_CMD_DX_DESTROY_ELEMENTLAYOUT */ 996 997 998 #define SVGA3D_DX_MAX_RENDER_TARGETS 8 999 1000 typedef 1001 #include "vmware_pack_begin.h" 1002 struct SVGA3dDXBlendStatePerRT { 1003 uint8 blendEnable; 1004 uint8 srcBlend; 1005 uint8 destBlend; 1006 uint8 blendOp; 1007 uint8 srcBlendAlpha; 1008 uint8 destBlendAlpha; 1009 uint8 blendOpAlpha; 1010 uint8 renderTargetWriteMask; 1011 uint8 logicOpEnable; 1012 uint8 logicOp; 1013 uint16 pad0; 1014 } 1015 #include "vmware_pack_end.h" 1016 SVGA3dDXBlendStatePerRT; 1017 1018 typedef 1019 #include "vmware_pack_begin.h" 1020 struct { 1021 uint8 alphaToCoverageEnable; 1022 uint8 independentBlendEnable; 1023 uint16 pad0; 1024 SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS]; 1025 uint32 pad1[7]; 1026 } 1027 #include "vmware_pack_end.h" 1028 SVGACOTableDXBlendStateEntry; 1029 1030 /* 1031 */ 1032 typedef 1033 #include "vmware_pack_begin.h" 1034 struct SVGA3dCmdDXDefineBlendState { 1035 SVGA3dBlendStateId blendId; 1036 uint8 alphaToCoverageEnable; 1037 uint8 independentBlendEnable; 1038 uint16 pad0; 1039 SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS]; 1040 } 1041 #include "vmware_pack_end.h" 1042 SVGA3dCmdDXDefineBlendState; /* SVGA_3D_CMD_DX_DEFINE_BLEND_STATE */ 1043 1044 typedef 1045 #include "vmware_pack_begin.h" 1046 struct SVGA3dCmdDXDestroyBlendState { 1047 SVGA3dBlendStateId blendId; 1048 } 1049 #include "vmware_pack_end.h" 1050 SVGA3dCmdDXDestroyBlendState; /* SVGA_3D_CMD_DX_DESTROY_BLEND_STATE */ 1051 1052 typedef 1053 #include "vmware_pack_begin.h" 1054 struct { 1055 uint8 depthEnable; 1056 SVGA3dDepthWriteMask depthWriteMask; 1057 SVGA3dComparisonFunc depthFunc; 1058 uint8 stencilEnable; 1059 uint8 frontEnable; 1060 uint8 backEnable; 1061 uint8 stencilReadMask; 1062 uint8 stencilWriteMask; 1063 1064 uint8 frontStencilFailOp; 1065 uint8 frontStencilDepthFailOp; 1066 uint8 frontStencilPassOp; 1067 SVGA3dComparisonFunc frontStencilFunc; 1068 1069 uint8 backStencilFailOp; 1070 uint8 backStencilDepthFailOp; 1071 uint8 backStencilPassOp; 1072 SVGA3dComparisonFunc backStencilFunc; 1073 } 1074 #include "vmware_pack_end.h" 1075 SVGACOTableDXDepthStencilEntry; 1076 1077 /* 1078 */ 1079 typedef 1080 #include "vmware_pack_begin.h" 1081 struct SVGA3dCmdDXDefineDepthStencilState { 1082 SVGA3dDepthStencilStateId depthStencilId; 1083 1084 uint8 depthEnable; 1085 SVGA3dDepthWriteMask depthWriteMask; 1086 SVGA3dComparisonFunc depthFunc; 1087 uint8 stencilEnable; 1088 uint8 frontEnable; 1089 uint8 backEnable; 1090 uint8 stencilReadMask; 1091 uint8 stencilWriteMask; 1092 1093 uint8 frontStencilFailOp; 1094 uint8 frontStencilDepthFailOp; 1095 uint8 frontStencilPassOp; 1096 SVGA3dComparisonFunc frontStencilFunc; 1097 1098 uint8 backStencilFailOp; 1099 uint8 backStencilDepthFailOp; 1100 uint8 backStencilPassOp; 1101 SVGA3dComparisonFunc backStencilFunc; 1102 } 1103 #include "vmware_pack_end.h" 1104 SVGA3dCmdDXDefineDepthStencilState; 1105 /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_STATE */ 1106 1107 typedef 1108 #include "vmware_pack_begin.h" 1109 struct SVGA3dCmdDXDestroyDepthStencilState { 1110 SVGA3dDepthStencilStateId depthStencilId; 1111 } 1112 #include "vmware_pack_end.h" 1113 SVGA3dCmdDXDestroyDepthStencilState; 1114 /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_STATE */ 1115 1116 typedef 1117 #include "vmware_pack_begin.h" 1118 struct { 1119 uint8 fillMode; 1120 SVGA3dCullMode cullMode; 1121 uint8 frontCounterClockwise; 1122 uint8 provokingVertexLast; 1123 int32 depthBias; 1124 float depthBiasClamp; 1125 float slopeScaledDepthBias; 1126 uint8 depthClipEnable; 1127 uint8 scissorEnable; 1128 uint8 multisampleEnable; 1129 uint8 antialiasedLineEnable; 1130 float lineWidth; 1131 uint8 lineStippleEnable; 1132 uint8 lineStippleFactor; 1133 uint16 lineStipplePattern; 1134 uint32 forcedSampleCount; 1135 } 1136 #include "vmware_pack_end.h" 1137 SVGACOTableDXRasterizerStateEntry; 1138 1139 /* 1140 */ 1141 typedef 1142 #include "vmware_pack_begin.h" 1143 struct SVGA3dCmdDXDefineRasterizerState { 1144 SVGA3dRasterizerStateId rasterizerId; 1145 1146 uint8 fillMode; 1147 SVGA3dCullMode cullMode; 1148 uint8 frontCounterClockwise; 1149 uint8 provokingVertexLast; 1150 int32 depthBias; 1151 float depthBiasClamp; 1152 float slopeScaledDepthBias; 1153 uint8 depthClipEnable; 1154 uint8 scissorEnable; 1155 uint8 multisampleEnable; 1156 uint8 antialiasedLineEnable; 1157 float lineWidth; 1158 uint8 lineStippleEnable; 1159 uint8 lineStippleFactor; 1160 uint16 lineStipplePattern; 1161 } 1162 #include "vmware_pack_end.h" 1163 SVGA3dCmdDXDefineRasterizerState; 1164 /* SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE */ 1165 1166 typedef 1167 #include "vmware_pack_begin.h" 1168 struct SVGA3dCmdDXDestroyRasterizerState { 1169 SVGA3dRasterizerStateId rasterizerId; 1170 } 1171 #include "vmware_pack_end.h" 1172 SVGA3dCmdDXDestroyRasterizerState; 1173 /* SVGA_3D_CMD_DX_DESTROY_RASTERIZER_STATE */ 1174 1175 typedef 1176 #include "vmware_pack_begin.h" 1177 struct { 1178 SVGA3dFilter filter; 1179 uint8 addressU; 1180 uint8 addressV; 1181 uint8 addressW; 1182 uint8 pad0; 1183 float mipLODBias; 1184 uint8 maxAnisotropy; 1185 SVGA3dComparisonFunc comparisonFunc; 1186 uint16 pad1; 1187 SVGA3dRGBAFloat borderColor; 1188 float minLOD; 1189 float maxLOD; 1190 uint32 pad2[6]; 1191 } 1192 #include "vmware_pack_end.h" 1193 SVGACOTableDXSamplerEntry; 1194 1195 /* 1196 */ 1197 typedef 1198 #include "vmware_pack_begin.h" 1199 struct SVGA3dCmdDXDefineSamplerState { 1200 SVGA3dSamplerId samplerId; 1201 SVGA3dFilter filter; 1202 uint8 addressU; 1203 uint8 addressV; 1204 uint8 addressW; 1205 uint8 pad0; 1206 float mipLODBias; 1207 uint8 maxAnisotropy; 1208 SVGA3dComparisonFunc comparisonFunc; 1209 uint16 pad1; 1210 SVGA3dRGBAFloat borderColor; 1211 float minLOD; 1212 float maxLOD; 1213 } 1214 #include "vmware_pack_end.h" 1215 SVGA3dCmdDXDefineSamplerState; /* SVGA_3D_CMD_DX_DEFINE_SAMPLER_STATE */ 1216 1217 typedef 1218 #include "vmware_pack_begin.h" 1219 struct SVGA3dCmdDXDestroySamplerState { 1220 SVGA3dSamplerId samplerId; 1221 } 1222 #include "vmware_pack_end.h" 1223 SVGA3dCmdDXDestroySamplerState; /* SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE */ 1224 1225 /* 1226 */ 1227 typedef 1228 #include "vmware_pack_begin.h" 1229 struct SVGA3dSignatureEntry { 1230 uint8 systemValue; 1231 uint8 reg; /* register is a reserved word */ 1232 uint16 mask; 1233 uint8 registerComponentType; 1234 uint8 minPrecision; 1235 uint16 pad0; 1236 } 1237 #include "vmware_pack_end.h" 1238 SVGA3dSignatureEntry; 1239 1240 typedef 1241 #include "vmware_pack_begin.h" 1242 struct SVGA3dCmdDXDefineShader { 1243 SVGA3dShaderId shaderId; 1244 SVGA3dShaderType type; 1245 uint32 sizeInBytes; /* Number of bytes of shader text. */ 1246 } 1247 #include "vmware_pack_end.h" 1248 SVGA3dCmdDXDefineShader; /* SVGA_3D_CMD_DX_DEFINE_SHADER */ 1249 1250 typedef 1251 #include "vmware_pack_begin.h" 1252 struct SVGACOTableDXShaderEntry { 1253 SVGA3dShaderType type; 1254 uint32 sizeInBytes; 1255 uint32 offsetInBytes; 1256 SVGAMobId mobid; 1257 uint32 numInputSignatureEntries; 1258 uint32 numOutputSignatureEntries; 1259 1260 uint32 numPatchConstantSignatureEntries; 1261 1262 uint32 pad; 1263 } 1264 #include "vmware_pack_end.h" 1265 SVGACOTableDXShaderEntry; 1266 1267 typedef 1268 #include "vmware_pack_begin.h" 1269 struct SVGA3dCmdDXDestroyShader { 1270 SVGA3dShaderId shaderId; 1271 } 1272 #include "vmware_pack_end.h" 1273 SVGA3dCmdDXDestroyShader; /* SVGA_3D_CMD_DX_DESTROY_SHADER */ 1274 1275 typedef 1276 #include "vmware_pack_begin.h" 1277 struct SVGA3dCmdDXBindShader { 1278 uint32 cid; 1279 uint32 shid; 1280 SVGAMobId mobid; 1281 uint32 offsetInBytes; 1282 } 1283 #include "vmware_pack_end.h" 1284 SVGA3dCmdDXBindShader; /* SVGA_3D_CMD_DX_BIND_SHADER */ 1285 1286 /* 1287 * The maximum number of streamout decl's in each streamout entry. 1288 */ 1289 #define SVGA3D_MAX_STREAMOUT_DECLS 64 1290 1291 typedef 1292 #include "vmware_pack_begin.h" 1293 struct SVGA3dStreamOutputDeclarationEntry { 1294 uint32 outputSlot; 1295 uint32 registerIndex; 1296 uint8 registerMask; 1297 uint8 pad0; 1298 uint16 pad1; 1299 uint32 stream; 1300 } 1301 #include "vmware_pack_end.h" 1302 SVGA3dStreamOutputDeclarationEntry; 1303 1304 typedef 1305 #include "vmware_pack_begin.h" 1306 struct SVGAOTableStreamOutputEntry { 1307 uint32 numOutputStreamEntries; 1308 SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS]; 1309 uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS]; 1310 uint32 rasterizedStream; 1311 uint32 pad[250]; 1312 } 1313 #include "vmware_pack_end.h" 1314 SVGACOTableDXStreamOutputEntry; 1315 1316 typedef 1317 #include "vmware_pack_begin.h" 1318 struct SVGA3dCmdDXDefineStreamOutput { 1319 SVGA3dStreamOutputId soid; 1320 uint32 numOutputStreamEntries; 1321 SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS]; 1322 uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS]; 1323 uint32 rasterizedStream; 1324 } 1325 #include "vmware_pack_end.h" 1326 SVGA3dCmdDXDefineStreamOutput; /* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT */ 1327 1328 typedef 1329 #include "vmware_pack_begin.h" 1330 struct SVGA3dCmdDXDestroyStreamOutput { 1331 SVGA3dStreamOutputId soid; 1332 } 1333 #include "vmware_pack_end.h" 1334 SVGA3dCmdDXDestroyStreamOutput; /* SVGA_3D_CMD_DX_DESTROY_STREAMOUTPUT */ 1335 1336 typedef 1337 #include "vmware_pack_begin.h" 1338 struct SVGA3dCmdDXSetStreamOutput { 1339 SVGA3dStreamOutputId soid; 1340 } 1341 #include "vmware_pack_end.h" 1342 SVGA3dCmdDXSetStreamOutput; /* SVGA_3D_CMD_DX_SET_STREAMOUTPUT */ 1343 1344 typedef 1345 #include "vmware_pack_begin.h" 1346 struct { 1347 uint64 value; 1348 uint32 mobId; 1349 uint32 mobOffset; 1350 } 1351 #include "vmware_pack_end.h" 1352 SVGA3dCmdDXMobFence64; /* SVGA_3D_CMD_DX_MOB_FENCE_64 */ 1353 1354 /* 1355 * SVGA3dCmdSetCOTable -- 1356 * 1357 * This command allows the guest to bind a mob to a context-object table. 1358 */ 1359 1360 typedef 1361 #include "vmware_pack_begin.h" 1362 struct SVGA3dCmdDXSetCOTable { 1363 uint32 cid; 1364 uint32 mobid; 1365 SVGACOTableType type; 1366 uint32 validSizeInBytes; 1367 } 1368 #include "vmware_pack_end.h" 1369 SVGA3dCmdDXSetCOTable; /* SVGA_3D_CMD_DX_SET_COTABLE */ 1370 1371 typedef 1372 #include "vmware_pack_begin.h" 1373 struct SVGA3dCmdDXReadbackCOTable { 1374 uint32 cid; 1375 SVGACOTableType type; 1376 } 1377 #include "vmware_pack_end.h" 1378 SVGA3dCmdDXReadbackCOTable; /* SVGA_3D_CMD_DX_READBACK_COTABLE */ 1379 1380 typedef 1381 #include "vmware_pack_begin.h" 1382 struct SVGA3dCOTableData { 1383 uint32 mobid; 1384 } 1385 #include "vmware_pack_end.h" 1386 SVGA3dCOTableData; 1387 1388 typedef 1389 #include "vmware_pack_begin.h" 1390 struct SVGA3dBufferBinding { 1391 uint32 bufferId; 1392 uint32 stride; 1393 uint32 offset; 1394 } 1395 #include "vmware_pack_end.h" 1396 SVGA3dBufferBinding; 1397 1398 typedef 1399 #include "vmware_pack_begin.h" 1400 struct SVGA3dConstantBufferBinding { 1401 uint32 sid; 1402 uint32 offsetInBytes; 1403 uint32 sizeInBytes; 1404 } 1405 #include "vmware_pack_end.h" 1406 SVGA3dConstantBufferBinding; 1407 1408 typedef 1409 #include "vmware_pack_begin.h" 1410 struct SVGADXInputAssemblyMobFormat { 1411 uint32 layoutId; 1412 SVGA3dBufferBinding vertexBuffers[SVGA3D_DX_MAX_VERTEXBUFFERS]; 1413 uint32 indexBufferSid; 1414 uint32 pad; 1415 uint32 indexBufferOffset; 1416 uint32 indexBufferFormat; 1417 uint32 topology; 1418 } 1419 #include "vmware_pack_end.h" 1420 SVGADXInputAssemblyMobFormat; 1421 1422 typedef 1423 #include "vmware_pack_begin.h" 1424 struct SVGADXContextMobFormat { 1425 SVGADXInputAssemblyMobFormat inputAssembly; 1426 1427 struct { 1428 uint32 blendStateId; 1429 uint32 blendFactor[4]; 1430 uint32 sampleMask; 1431 uint32 depthStencilStateId; 1432 uint32 stencilRef; 1433 uint32 rasterizerStateId; 1434 uint32 depthStencilViewId; 1435 uint32 renderTargetViewIds[SVGA3D_MAX_SIMULTANEOUS_RENDER_TARGETS]; 1436 uint32 unorderedAccessViewIds[SVGA3D_MAX_UAVIEWS]; 1437 } renderState; 1438 1439 struct { 1440 uint32 targets[SVGA3D_DX_MAX_SOTARGETS]; 1441 uint32 soid; 1442 } streamOut; 1443 uint32 pad0[11]; 1444 1445 uint8 numViewports; 1446 uint8 numScissorRects; 1447 uint16 pad1[1]; 1448 1449 uint32 pad2[3]; 1450 1451 SVGA3dViewport viewports[SVGA3D_DX_MAX_VIEWPORTS]; 1452 uint32 pad3[32]; 1453 1454 SVGASignedRect scissorRects[SVGA3D_DX_MAX_SCISSORRECTS]; 1455 uint32 pad4[64]; 1456 1457 struct { 1458 uint32 queryID; 1459 uint32 value; 1460 } predication; 1461 uint32 pad5[2]; 1462 1463 struct { 1464 uint32 shaderId; 1465 SVGA3dConstantBufferBinding constantBuffers[SVGA3D_DX_MAX_CONSTBUFFERS]; 1466 uint32 shaderResources[SVGA3D_DX_MAX_SRVIEWS]; 1467 uint32 samplers[SVGA3D_DX_MAX_SAMPLERS]; 1468 } shaderState[SVGA3D_NUM_SHADERTYPE]; 1469 uint32 pad6[26]; 1470 1471 SVGA3dQueryId queryID[SVGA3D_MAX_QUERY]; 1472 1473 SVGA3dCOTableData cotables[SVGA_COTABLE_MAX]; 1474 uint32 pad7[381]; 1475 } 1476 #include "vmware_pack_end.h" 1477 SVGADXContextMobFormat; 1478 1479 typedef 1480 #include "vmware_pack_begin.h" 1481 struct SVGA3dCmdDXTempSetContext { 1482 uint32 dxcid; 1483 } 1484 #include "vmware_pack_end.h" 1485 SVGA3dCmdDXTempSetContext; /* SVGA_3D_CMD_DX_TEMP_SET_CONTEXT */ 1486 1487 #endif /* _SVGA3D_DX_H_ */ 1488