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