svga3d_dx.h (41792B)
1/* SPDX-License-Identifier: GPL-2.0 OR MIT */ 2/* 3 * Copyright 2012-2021 VMware, Inc. 4 * 5 * Permission is hereby granted, free of charge, to any person 6 * obtaining a copy of this software and associated documentation 7 * files (the "Software"), to deal in the Software without 8 * restriction, including without limitation the rights to use, copy, 9 * modify, merge, publish, distribute, sublicense, and/or sell copies 10 * of the Software, and to permit persons to whom the Software is 11 * furnished to do so, subject to the following conditions: 12 * 13 * The above copyright notice and this permission notice shall be 14 * included in all copies or substantial portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 20 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 21 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 * SOFTWARE. 24 * 25 */ 26 27/* 28 * svga3d_dx.h -- 29 * 30 * SVGA 3d hardware definitions for DX10 support. 31 */ 32 33 34 35#ifndef _SVGA3D_DX_H_ 36#define _SVGA3D_DX_H_ 37 38#include "svga_reg.h" 39#include "svga3d_limits.h" 40#include "svga3d_types.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 46typedef uint32 SVGA3dInputClassification; 47 48#define SVGA3D_COLOR_WRITE_ENABLE_RED (1 << 0) 49#define SVGA3D_COLOR_WRITE_ENABLE_GREEN (1 << 1) 50#define SVGA3D_COLOR_WRITE_ENABLE_BLUE (1 << 2) 51#define SVGA3D_COLOR_WRITE_ENABLE_ALPHA (1 << 3) 52#define SVGA3D_COLOR_WRITE_ENABLE_ALL \ 53 (SVGA3D_COLOR_WRITE_ENABLE_RED | SVGA3D_COLOR_WRITE_ENABLE_GREEN | \ 54 SVGA3D_COLOR_WRITE_ENABLE_BLUE | SVGA3D_COLOR_WRITE_ENABLE_ALPHA) 55typedef uint8 SVGA3dColorWriteEnable; 56 57#define SVGA3D_DEPTH_WRITE_MASK_ZERO 0 58#define SVGA3D_DEPTH_WRITE_MASK_ALL 1 59typedef uint8 SVGA3dDepthWriteMask; 60 61#define SVGA3D_FILTER_MIP_LINEAR (1 << 0) 62#define SVGA3D_FILTER_MAG_LINEAR (1 << 2) 63#define SVGA3D_FILTER_MIN_LINEAR (1 << 4) 64#define SVGA3D_FILTER_ANISOTROPIC (1 << 6) 65#define SVGA3D_FILTER_COMPARE (1 << 7) 66typedef uint32 SVGA3dFilter; 67 68#define SVGA3D_CULL_INVALID 0 69#define SVGA3D_CULL_MIN 1 70#define SVGA3D_CULL_NONE 1 71#define SVGA3D_CULL_FRONT 2 72#define SVGA3D_CULL_BACK 3 73#define SVGA3D_CULL_MAX 4 74typedef uint8 SVGA3dCullMode; 75 76#define SVGA3D_COMPARISON_INVALID 0 77#define SVGA3D_COMPARISON_MIN 1 78#define SVGA3D_COMPARISON_NEVER 1 79#define SVGA3D_COMPARISON_LESS 2 80#define SVGA3D_COMPARISON_EQUAL 3 81#define SVGA3D_COMPARISON_LESS_EQUAL 4 82#define SVGA3D_COMPARISON_GREATER 5 83#define SVGA3D_COMPARISON_NOT_EQUAL 6 84#define SVGA3D_COMPARISON_GREATER_EQUAL 7 85#define SVGA3D_COMPARISON_ALWAYS 8 86#define SVGA3D_COMPARISON_MAX 9 87typedef uint8 SVGA3dComparisonFunc; 88 89#define SVGA3D_MULTISAMPLE_RAST_DISABLE 0 90#define SVGA3D_MULTISAMPLE_RAST_ENABLE 1 91#define SVGA3D_MULTISAMPLE_RAST_DX_MAX 1 92#define SVGA3D_MULTISAMPLE_RAST_DISABLE_LINE 2 93#define SVGA3D_MULTISAMPLE_RAST_MAX 2 94typedef uint8 SVGA3dMultisampleRastEnable; 95 96#define SVGA3D_DX_MAX_VERTEXBUFFERS 32 97#define SVGA3D_DX_MAX_VERTEXINPUTREGISTERS 16 98#define SVGA3D_DX_SM41_MAX_VERTEXINPUTREGISTERS 32 99#define SVGA3D_DX_MAX_SOTARGETS 4 100#define SVGA3D_DX_MAX_SRVIEWS 128 101#define SVGA3D_DX_MAX_CONSTBUFFERS 16 102#define SVGA3D_DX_MAX_SAMPLERS 16 103#define SVGA3D_DX_MAX_CLASS_INSTANCES 253 104 105#define SVGA3D_DX_MAX_CONSTBUF_BINDING_SIZE (4096 * 4 * (uint32)sizeof(uint32)) 106 107typedef uint32 SVGA3dShaderResourceViewId; 108typedef uint32 SVGA3dRenderTargetViewId; 109typedef uint32 SVGA3dDepthStencilViewId; 110typedef uint32 SVGA3dUAViewId; 111 112typedef uint32 SVGA3dShaderId; 113typedef uint32 SVGA3dElementLayoutId; 114typedef uint32 SVGA3dSamplerId; 115typedef uint32 SVGA3dBlendStateId; 116typedef uint32 SVGA3dDepthStencilStateId; 117typedef uint32 SVGA3dRasterizerStateId; 118typedef uint32 SVGA3dQueryId; 119typedef uint32 SVGA3dStreamOutputId; 120 121typedef union { 122 struct { 123 uint32 r; 124 uint32 g; 125 uint32 b; 126 uint32 a; 127 }; 128 129 uint32 value[4]; 130} SVGA3dRGBAUint32; 131 132#pragma pack(push, 1) 133typedef struct { 134 uint32 cid; 135 SVGAMobId mobid; 136} SVGAOTableDXContextEntry; 137#pragma pack(pop) 138 139#pragma pack(push, 1) 140typedef struct SVGA3dCmdDXDefineContext { 141 uint32 cid; 142} SVGA3dCmdDXDefineContext; 143#pragma pack(pop) 144 145#pragma pack(push, 1) 146typedef struct SVGA3dCmdDXDestroyContext { 147 uint32 cid; 148} SVGA3dCmdDXDestroyContext; 149#pragma pack(pop) 150 151#pragma pack(push, 1) 152typedef struct SVGA3dCmdDXBindContext { 153 uint32 cid; 154 SVGAMobId mobid; 155 uint32 validContents; 156} SVGA3dCmdDXBindContext; 157#pragma pack(pop) 158 159#pragma pack(push, 1) 160typedef struct SVGA3dCmdDXReadbackContext { 161 uint32 cid; 162} SVGA3dCmdDXReadbackContext; 163#pragma pack(pop) 164 165#pragma pack(push, 1) 166typedef struct SVGA3dCmdDXInvalidateContext { 167 uint32 cid; 168} SVGA3dCmdDXInvalidateContext; 169#pragma pack(pop) 170 171#pragma pack(push, 1) 172typedef struct SVGA3dCmdDXSetSingleConstantBuffer { 173 uint32 slot; 174 SVGA3dShaderType type; 175 SVGA3dSurfaceId sid; 176 uint32 offsetInBytes; 177 uint32 sizeInBytes; 178} SVGA3dCmdDXSetSingleConstantBuffer; 179#pragma pack(pop) 180 181#pragma pack(push, 1) 182typedef struct SVGA3dCmdDXSetShaderResources { 183 uint32 startView; 184 SVGA3dShaderType type; 185 186} SVGA3dCmdDXSetShaderResources; 187#pragma pack(pop) 188 189#pragma pack(push, 1) 190typedef struct SVGA3dCmdDXSetShader { 191 SVGA3dShaderId shaderId; 192 SVGA3dShaderType type; 193} SVGA3dCmdDXSetShader; 194#pragma pack(pop) 195 196typedef union { 197 struct { 198 uint32 cbOffset : 12; 199 uint32 cbId : 4; 200 uint32 baseSamp : 4; 201 uint32 baseTex : 7; 202 uint32 reserved : 5; 203 }; 204 uint32 value; 205} SVGA3dIfaceData; 206 207#pragma pack(push, 1) 208typedef struct SVGA3dCmdDXSetShaderIface { 209 SVGA3dShaderType type; 210 uint32 numClassInstances; 211 uint32 index; 212 uint32 iface; 213 SVGA3dIfaceData data; 214} SVGA3dCmdDXSetShaderIface; 215#pragma pack(pop) 216 217#pragma pack(push, 1) 218typedef struct SVGA3dCmdDXBindShaderIface { 219 uint32 cid; 220 SVGAMobId mobid; 221 uint32 offsetInBytes; 222} SVGA3dCmdDXBindShaderIface; 223#pragma pack(pop) 224 225#pragma pack(push, 1) 226typedef struct SVGA3dCmdDXSetSamplers { 227 uint32 startSampler; 228 SVGA3dShaderType type; 229 230} SVGA3dCmdDXSetSamplers; 231#pragma pack(pop) 232 233#pragma pack(push, 1) 234typedef struct SVGA3dCmdDXDraw { 235 uint32 vertexCount; 236 uint32 startVertexLocation; 237} SVGA3dCmdDXDraw; 238#pragma pack(pop) 239 240#pragma pack(push, 1) 241typedef struct SVGA3dCmdDXDrawIndexed { 242 uint32 indexCount; 243 uint32 startIndexLocation; 244 int32 baseVertexLocation; 245} SVGA3dCmdDXDrawIndexed; 246#pragma pack(pop) 247 248#pragma pack(push, 1) 249typedef struct SVGA3dCmdDXDrawInstanced { 250 uint32 vertexCountPerInstance; 251 uint32 instanceCount; 252 uint32 startVertexLocation; 253 uint32 startInstanceLocation; 254} SVGA3dCmdDXDrawInstanced; 255#pragma pack(pop) 256 257#pragma pack(push, 1) 258typedef struct SVGA3dCmdDXDrawIndexedInstanced { 259 uint32 indexCountPerInstance; 260 uint32 instanceCount; 261 uint32 startIndexLocation; 262 int32 baseVertexLocation; 263 uint32 startInstanceLocation; 264} SVGA3dCmdDXDrawIndexedInstanced; 265#pragma pack(pop) 266 267#pragma pack(push, 1) 268typedef struct SVGA3dCmdDXDrawIndexedInstancedIndirect { 269 SVGA3dSurfaceId argsBufferSid; 270 uint32 byteOffsetForArgs; 271} SVGA3dCmdDXDrawIndexedInstancedIndirect; 272#pragma pack(pop) 273 274#pragma pack(push, 1) 275typedef struct SVGA3dCmdDXDrawInstancedIndirect { 276 SVGA3dSurfaceId argsBufferSid; 277 uint32 byteOffsetForArgs; 278} SVGA3dCmdDXDrawInstancedIndirect; 279#pragma pack(pop) 280 281#pragma pack(push, 1) 282typedef struct SVGA3dCmdDXDrawAuto { 283 uint32 pad0; 284} SVGA3dCmdDXDrawAuto; 285#pragma pack(pop) 286 287#pragma pack(push, 1) 288typedef struct SVGA3dCmdDXDispatch { 289 uint32 threadGroupCountX; 290 uint32 threadGroupCountY; 291 uint32 threadGroupCountZ; 292} SVGA3dCmdDXDispatch; 293#pragma pack(pop) 294 295#pragma pack(push, 1) 296typedef struct SVGA3dCmdDXDispatchIndirect { 297 SVGA3dSurfaceId argsBufferSid; 298 uint32 byteOffsetForArgs; 299} SVGA3dCmdDXDispatchIndirect; 300#pragma pack(pop) 301 302#pragma pack(push, 1) 303typedef struct SVGA3dCmdDXSetInputLayout { 304 SVGA3dElementLayoutId elementLayoutId; 305} SVGA3dCmdDXSetInputLayout; 306#pragma pack(pop) 307 308#pragma pack(push, 1) 309typedef struct SVGA3dVertexBuffer { 310 SVGA3dSurfaceId sid; 311 uint32 stride; 312 uint32 offset; 313} SVGA3dVertexBuffer; 314#pragma pack(pop) 315 316#pragma pack(push, 1) 317typedef struct SVGA3dCmdDXSetVertexBuffers { 318 uint32 startBuffer; 319 320} SVGA3dCmdDXSetVertexBuffers; 321#pragma pack(pop) 322 323#pragma pack(push, 1) 324typedef struct SVGA3dVertexBuffer_v2 { 325 SVGA3dSurfaceId sid; 326 uint32 stride; 327 uint32 offset; 328 uint32 sizeInBytes; 329} SVGA3dVertexBuffer_v2; 330#pragma pack(pop) 331 332#pragma pack(push, 1) 333typedef struct SVGA3dCmdDXSetVertexBuffers_v2 { 334 uint32 startBuffer; 335 336} SVGA3dCmdDXSetVertexBuffers_v2; 337#pragma pack(pop) 338 339#pragma pack(push, 1) 340typedef struct SVGA3dVertexBufferOffsetAndSize { 341 uint32 stride; 342 uint32 offset; 343 uint32 sizeInBytes; 344} SVGA3dVertexBufferOffsetAndSize; 345#pragma pack(pop) 346 347#pragma pack(push, 1) 348typedef struct SVGA3dCmdDXSetVertexBuffersOffsetAndSize { 349 uint32 startBuffer; 350 351} SVGA3dCmdDXSetVertexBuffersOffsetAndSize; 352#pragma pack(pop) 353 354#pragma pack(push, 1) 355typedef struct SVGA3dCmdDXSetIndexBuffer { 356 SVGA3dSurfaceId sid; 357 SVGA3dSurfaceFormat format; 358 uint32 offset; 359} SVGA3dCmdDXSetIndexBuffer; 360#pragma pack(pop) 361 362#pragma pack(push, 1) 363typedef struct SVGA3dCmdDXSetIndexBuffer_v2 { 364 SVGA3dSurfaceId sid; 365 SVGA3dSurfaceFormat format; 366 uint32 offset; 367 uint32 sizeInBytes; 368} SVGA3dCmdDXSetIndexBuffer_v2; 369#pragma pack(pop) 370 371#pragma pack(push, 1) 372typedef struct SVGA3dCmdDXSetIndexBufferOffsetAndSize { 373 SVGA3dSurfaceFormat format; 374 uint32 offset; 375 uint32 sizeInBytes; 376} SVGA3dCmdDXSetIndexBufferOffsetAndSize; 377#pragma pack(pop) 378 379#pragma pack(push, 1) 380typedef struct SVGA3dCmdDXSetTopology { 381 SVGA3dPrimitiveType topology; 382} SVGA3dCmdDXSetTopology; 383#pragma pack(pop) 384 385#pragma pack(push, 1) 386typedef struct SVGA3dCmdDXSetRenderTargets { 387 SVGA3dDepthStencilViewId depthStencilViewId; 388 389} SVGA3dCmdDXSetRenderTargets; 390#pragma pack(pop) 391 392#pragma pack(push, 1) 393typedef struct SVGA3dCmdDXSetBlendState { 394 SVGA3dBlendStateId blendId; 395 float blendFactor[4]; 396 uint32 sampleMask; 397} SVGA3dCmdDXSetBlendState; 398#pragma pack(pop) 399 400#pragma pack(push, 1) 401typedef struct SVGA3dCmdDXSetDepthStencilState { 402 SVGA3dDepthStencilStateId depthStencilId; 403 uint32 stencilRef; 404} SVGA3dCmdDXSetDepthStencilState; 405#pragma pack(pop) 406 407#pragma pack(push, 1) 408typedef struct SVGA3dCmdDXSetRasterizerState { 409 SVGA3dRasterizerStateId rasterizerId; 410} SVGA3dCmdDXSetRasterizerState; 411#pragma pack(pop) 412 413#define SVGA3D_DXQUERY_FLAG_PREDICATEHINT (1 << 0) 414typedef uint32 SVGA3dDXQueryFlags; 415 416#define SVGADX_QDSTATE_INVALID ((uint8)-1) 417#define SVGADX_QDSTATE_MIN 0 418#define SVGADX_QDSTATE_IDLE 0 419#define SVGADX_QDSTATE_ACTIVE 1 420#define SVGADX_QDSTATE_PENDING 2 421#define SVGADX_QDSTATE_FINISHED 3 422#define SVGADX_QDSTATE_MAX 4 423typedef uint8 SVGADXQueryDeviceState; 424 425#pragma pack(push, 1) 426typedef struct { 427 SVGA3dQueryTypeUint8 type; 428 uint16 pad0; 429 SVGADXQueryDeviceState state; 430 SVGA3dDXQueryFlags flags; 431 SVGAMobId mobid; 432 uint32 offset; 433} SVGACOTableDXQueryEntry; 434#pragma pack(pop) 435 436#pragma pack(push, 1) 437typedef struct SVGA3dCmdDXDefineQuery { 438 SVGA3dQueryId queryId; 439 SVGA3dQueryType type; 440 SVGA3dDXQueryFlags flags; 441} SVGA3dCmdDXDefineQuery; 442#pragma pack(pop) 443 444#pragma pack(push, 1) 445typedef struct SVGA3dCmdDXDestroyQuery { 446 SVGA3dQueryId queryId; 447} SVGA3dCmdDXDestroyQuery; 448#pragma pack(pop) 449 450#pragma pack(push, 1) 451typedef struct SVGA3dCmdDXBindQuery { 452 SVGA3dQueryId queryId; 453 SVGAMobId mobid; 454} SVGA3dCmdDXBindQuery; 455#pragma pack(pop) 456 457#pragma pack(push, 1) 458typedef struct SVGA3dCmdDXSetQueryOffset { 459 SVGA3dQueryId queryId; 460 uint32 mobOffset; 461} SVGA3dCmdDXSetQueryOffset; 462#pragma pack(pop) 463 464#pragma pack(push, 1) 465typedef struct SVGA3dCmdDXBeginQuery { 466 SVGA3dQueryId queryId; 467} SVGA3dCmdDXBeginQuery; 468#pragma pack(pop) 469 470#pragma pack(push, 1) 471typedef struct SVGA3dCmdDXEndQuery { 472 SVGA3dQueryId queryId; 473} SVGA3dCmdDXEndQuery; 474#pragma pack(pop) 475 476#pragma pack(push, 1) 477typedef struct SVGA3dCmdDXReadbackQuery { 478 SVGA3dQueryId queryId; 479} SVGA3dCmdDXReadbackQuery; 480#pragma pack(pop) 481 482#pragma pack(push, 1) 483typedef struct SVGA3dCmdDXMoveQuery { 484 SVGA3dQueryId queryId; 485 SVGAMobId mobid; 486 uint32 mobOffset; 487} SVGA3dCmdDXMoveQuery; 488#pragma pack(pop) 489 490#pragma pack(push, 1) 491typedef struct SVGA3dCmdDXBindAllQuery { 492 uint32 cid; 493 SVGAMobId mobid; 494} SVGA3dCmdDXBindAllQuery; 495#pragma pack(pop) 496 497#pragma pack(push, 1) 498typedef struct SVGA3dCmdDXReadbackAllQuery { 499 uint32 cid; 500} SVGA3dCmdDXReadbackAllQuery; 501#pragma pack(pop) 502 503#pragma pack(push, 1) 504typedef struct SVGA3dCmdDXSetPredication { 505 SVGA3dQueryId queryId; 506 uint32 predicateValue; 507} SVGA3dCmdDXSetPredication; 508#pragma pack(pop) 509 510#pragma pack(push, 1) 511typedef struct SVGA3dDXSOState { 512 uint32 offset; 513 uint32 intOffset; 514 uint32 dead1; 515 uint32 dead2; 516} SVGA3dDXSOState; 517#pragma pack(pop) 518 519#define SVGA3D_DX_SO_OFFSET_APPEND ((uint32)~0u) 520 521#pragma pack(push, 1) 522typedef struct SVGA3dSoTarget { 523 SVGA3dSurfaceId sid; 524 uint32 offset; 525 uint32 sizeInBytes; 526} SVGA3dSoTarget; 527#pragma pack(pop) 528 529#pragma pack(push, 1) 530typedef struct SVGA3dCmdDXSetSOTargets { 531 uint32 pad0; 532 533} SVGA3dCmdDXSetSOTargets; 534#pragma pack(pop) 535 536#pragma pack(push, 1) 537typedef struct SVGA3dViewport { 538 float x; 539 float y; 540 float width; 541 float height; 542 float minDepth; 543 float maxDepth; 544} SVGA3dViewport; 545#pragma pack(pop) 546 547#pragma pack(push, 1) 548typedef struct SVGA3dCmdDXSetViewports { 549 uint32 pad0; 550 551} SVGA3dCmdDXSetViewports; 552#pragma pack(pop) 553 554#define SVGA3D_DX_MAX_VIEWPORTS 16 555 556#pragma pack(push, 1) 557typedef struct SVGA3dCmdDXSetScissorRects { 558 uint32 pad0; 559 560} SVGA3dCmdDXSetScissorRects; 561#pragma pack(pop) 562 563#define SVGA3D_DX_MAX_SCISSORRECTS 16 564 565#pragma pack(push, 1) 566typedef struct SVGA3dCmdDXClearRenderTargetView { 567 SVGA3dRenderTargetViewId renderTargetViewId; 568 SVGA3dRGBAFloat rgba; 569} SVGA3dCmdDXClearRenderTargetView; 570#pragma pack(pop) 571 572#pragma pack(push, 1) 573typedef struct SVGA3dCmdDXClearDepthStencilView { 574 uint16 flags; 575 uint16 stencil; 576 SVGA3dDepthStencilViewId depthStencilViewId; 577 float depth; 578} SVGA3dCmdDXClearDepthStencilView; 579#pragma pack(pop) 580 581#pragma pack(push, 1) 582typedef struct SVGA3dCmdDXPredCopyRegion { 583 SVGA3dSurfaceId dstSid; 584 uint32 dstSubResource; 585 SVGA3dSurfaceId srcSid; 586 uint32 srcSubResource; 587 SVGA3dCopyBox box; 588} SVGA3dCmdDXPredCopyRegion; 589#pragma pack(pop) 590 591#pragma pack(push, 1) 592typedef struct SVGA3dCmdDXPredStagingCopyRegion { 593 SVGA3dSurfaceId dstSid; 594 uint32 dstSubResource; 595 SVGA3dSurfaceId srcSid; 596 uint32 srcSubResource; 597 SVGA3dCopyBox box; 598 uint8 readback; 599 uint8 unsynchronized; 600 uint8 mustBeZero[2]; 601} SVGA3dCmdDXPredStagingCopyRegion; 602#pragma pack(pop) 603 604#pragma pack(push, 1) 605typedef struct SVGA3dCmdDXPredCopy { 606 SVGA3dSurfaceId dstSid; 607 SVGA3dSurfaceId srcSid; 608} SVGA3dCmdDXPredCopy; 609#pragma pack(pop) 610 611#pragma pack(push, 1) 612typedef struct SVGA3dCmdDXPredConvertRegion { 613 SVGA3dSurfaceId dstSid; 614 uint32 dstSubResource; 615 SVGA3dBox destBox; 616 SVGA3dSurfaceId srcSid; 617 uint32 srcSubResource; 618 SVGA3dBox srcBox; 619} SVGA3dCmdDXPredConvertRegion; 620#pragma pack(pop) 621 622#pragma pack(push, 1) 623typedef struct SVGA3dCmdDXPredStagingConvertRegion { 624 SVGA3dSurfaceId dstSid; 625 uint32 dstSubResource; 626 SVGA3dBox destBox; 627 SVGA3dSurfaceId srcSid; 628 uint32 srcSubResource; 629 SVGA3dBox srcBox; 630 uint8 readback; 631 uint8 unsynchronized; 632 uint8 mustBeZero[2]; 633} SVGA3dCmdDXPredStagingConvertRegion; 634#pragma pack(pop) 635 636#pragma pack(push, 1) 637typedef struct SVGA3dCmdDXPredConvert { 638 SVGA3dSurfaceId dstSid; 639 SVGA3dSurfaceId srcSid; 640} SVGA3dCmdDXPredConvert; 641#pragma pack(pop) 642 643#pragma pack(push, 1) 644typedef struct SVGA3dCmdDXPredStagingConvert { 645 SVGA3dSurfaceId dstSid; 646 SVGA3dSurfaceId srcSid; 647 uint8 readback; 648 uint8 unsynchronized; 649 uint8 mustBeZero[2]; 650} SVGA3dCmdDXPredStagingConvert; 651#pragma pack(pop) 652 653#pragma pack(push, 1) 654typedef struct SVGA3dCmdDXBufferCopy { 655 SVGA3dSurfaceId dest; 656 SVGA3dSurfaceId src; 657 uint32 destX; 658 uint32 srcX; 659 uint32 width; 660} SVGA3dCmdDXBufferCopy; 661#pragma pack(pop) 662 663#pragma pack(push, 1) 664typedef struct SVGA3dCmdDXStagingBufferCopy { 665 SVGA3dSurfaceId dest; 666 SVGA3dSurfaceId src; 667 uint32 destX; 668 uint32 srcX; 669 uint32 width; 670 uint8 readback; 671 uint8 unsynchronized; 672 uint8 mustBeZero[2]; 673} SVGA3dCmdDXStagingBufferCopy; 674#pragma pack(pop) 675 676#pragma pack(push, 1) 677typedef struct { 678 SVGA3dSurfaceId dstSid; 679 uint32 dstSubResource; 680 SVGA3dSurfaceId srcSid; 681 uint32 srcSubResource; 682 SVGA3dSurfaceFormat copyFormat; 683} SVGA3dCmdDXResolveCopy; 684#pragma pack(pop) 685 686#pragma pack(push, 1) 687typedef struct { 688 SVGA3dSurfaceId dstSid; 689 uint32 dstSubResource; 690 SVGA3dSurfaceId srcSid; 691 uint32 srcSubResource; 692 SVGA3dSurfaceFormat copyFormat; 693} SVGA3dCmdDXPredResolveCopy; 694#pragma pack(pop) 695 696typedef uint32 SVGA3dDXPresentBltMode; 697#define SVGADX_PRESENTBLT_LINEAR (1 << 0) 698#define SVGADX_PRESENTBLT_FORCE_SRC_SRGB (1 << 1) 699#define SVGADX_PRESENTBLT_FORCE_SRC_XRBIAS (1 << 2) 700#define SVGADX_PRESENTBLT_MODE_MAX (1 << 3) 701 702#pragma pack(push, 1) 703typedef struct SVGA3dCmdDXPresentBlt { 704 SVGA3dSurfaceId srcSid; 705 uint32 srcSubResource; 706 SVGA3dSurfaceId dstSid; 707 uint32 destSubResource; 708 SVGA3dBox boxSrc; 709 SVGA3dBox boxDest; 710 SVGA3dDXPresentBltMode mode; 711} SVGA3dCmdDXPresentBlt; 712#pragma pack(pop) 713 714#pragma pack(push, 1) 715typedef struct SVGA3dCmdDXGenMips { 716 SVGA3dShaderResourceViewId shaderResourceViewId; 717} SVGA3dCmdDXGenMips; 718#pragma pack(pop) 719 720#pragma pack(push, 1) 721typedef struct SVGA3dCmdDXUpdateSubResource { 722 SVGA3dSurfaceId sid; 723 uint32 subResource; 724 SVGA3dBox box; 725} SVGA3dCmdDXUpdateSubResource; 726#pragma pack(pop) 727 728#pragma pack(push, 1) 729typedef struct SVGA3dCmdDXReadbackSubResource { 730 SVGA3dSurfaceId sid; 731 uint32 subResource; 732} SVGA3dCmdDXReadbackSubResource; 733#pragma pack(pop) 734 735#pragma pack(push, 1) 736typedef struct SVGA3dCmdDXInvalidateSubResource { 737 SVGA3dSurfaceId sid; 738 uint32 subResource; 739} SVGA3dCmdDXInvalidateSubResource; 740#pragma pack(pop) 741 742#pragma pack(push, 1) 743typedef struct SVGA3dCmdDXTransferFromBuffer { 744 SVGA3dSurfaceId srcSid; 745 uint32 srcOffset; 746 uint32 srcPitch; 747 uint32 srcSlicePitch; 748 SVGA3dSurfaceId destSid; 749 uint32 destSubResource; 750 SVGA3dBox destBox; 751} SVGA3dCmdDXTransferFromBuffer; 752#pragma pack(pop) 753 754#define SVGA3D_TRANSFER_TO_BUFFER_READBACK (1 << 0) 755#define SVGA3D_TRANSFER_TO_BUFFER_FLAGS_MASK (1 << 0) 756typedef uint32 SVGA3dTransferToBufferFlags; 757 758#pragma pack(push, 1) 759typedef struct SVGA3dCmdDXTransferToBuffer { 760 SVGA3dSurfaceId srcSid; 761 uint32 srcSubResource; 762 SVGA3dBox srcBox; 763 SVGA3dSurfaceId destSid; 764 uint32 destOffset; 765 uint32 destPitch; 766 uint32 destSlicePitch; 767 SVGA3dTransferToBufferFlags flags; 768} SVGA3dCmdDXTransferToBuffer; 769#pragma pack(pop) 770 771#pragma pack(push, 1) 772typedef struct SVGA3dCmdDXPredTransferFromBuffer { 773 SVGA3dSurfaceId srcSid; 774 uint32 srcOffset; 775 uint32 srcPitch; 776 uint32 srcSlicePitch; 777 SVGA3dSurfaceId destSid; 778 uint32 destSubResource; 779 SVGA3dBox destBox; 780} SVGA3dCmdDXPredTransferFromBuffer; 781#pragma pack(pop) 782 783#pragma pack(push, 1) 784typedef struct SVGA3dCmdDXSurfaceCopyAndReadback { 785 SVGA3dSurfaceId srcSid; 786 SVGA3dSurfaceId destSid; 787 SVGA3dCopyBox box; 788} SVGA3dCmdDXSurfaceCopyAndReadback; 789#pragma pack(pop) 790 791typedef uint32 SVGADXHintId; 792#define SVGA_DX_HINT_NONE 0 793#define SVGA_DX_HINT_PREFETCH_OBJECT 1 794#define SVGA_DX_HINT_PREEVICT_OBJECT 2 795#define SVGA_DX_HINT_PREFETCH_COBJECT 3 796#define SVGA_DX_HINT_PREEVICT_COBJECT 4 797#define SVGA_DX_HINT_MAX 5 798 799#pragma pack(push, 1) 800typedef struct SVGAObjectRef { 801 SVGAOTableType type; 802 uint32 id; 803} SVGAObjectRef; 804#pragma pack(pop) 805 806#pragma pack(push, 1) 807typedef struct SVGACObjectRef { 808 SVGACOTableType type; 809 uint32 cid; 810 uint32 id; 811} SVGACObjectRef; 812#pragma pack(pop) 813 814#pragma pack(push, 1) 815typedef struct SVGA3dCmdDXHint { 816 SVGADXHintId hintId; 817 818} SVGA3dCmdDXHint; 819#pragma pack(pop) 820 821#pragma pack(push, 1) 822typedef struct SVGA3dCmdDXBufferUpdate { 823 SVGA3dSurfaceId sid; 824 uint32 x; 825 uint32 width; 826} SVGA3dCmdDXBufferUpdate; 827#pragma pack(pop) 828 829#pragma pack(push, 1) 830typedef struct SVGA3dCmdDXSetConstantBufferOffset { 831 uint32 slot; 832 uint32 offsetInBytes; 833} SVGA3dCmdDXSetConstantBufferOffset; 834#pragma pack(pop) 835 836typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetVSConstantBufferOffset; 837 838typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetPSConstantBufferOffset; 839 840typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetGSConstantBufferOffset; 841 842typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetHSConstantBufferOffset; 843 844typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetDSConstantBufferOffset; 845 846typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetCSConstantBufferOffset; 847 848#define SVGA3D_BUFFEREX_SRV_RAW (1 << 0) 849#define SVGA3D_BUFFEREX_SRV_FLAGS_MAX (1 << 1) 850#define SVGA3D_BUFFEREX_SRV_FLAGS_MASK (SVGA3D_BUFFEREX_SRV_FLAGS_MAX - 1) 851typedef uint32 SVGA3dBufferExFlags; 852 853#pragma pack(push, 1) 854typedef struct { 855 union { 856 struct { 857 uint32 firstElement; 858 uint32 numElements; 859 uint32 pad0; 860 uint32 pad1; 861 } buffer; 862 struct { 863 uint32 mostDetailedMip; 864 uint32 firstArraySlice; 865 uint32 mipLevels; 866 uint32 arraySize; 867 } tex; 868 struct { 869 uint32 firstElement; 870 uint32 numElements; 871 SVGA3dBufferExFlags flags; 872 uint32 pad0; 873 } bufferex; 874 }; 875} SVGA3dShaderResourceViewDesc; 876#pragma pack(pop) 877 878#pragma pack(push, 1) 879typedef struct { 880 SVGA3dSurfaceId sid; 881 SVGA3dSurfaceFormat format; 882 SVGA3dResourceType resourceDimension; 883 SVGA3dShaderResourceViewDesc desc; 884 uint32 pad; 885} SVGACOTableDXSRViewEntry; 886#pragma pack(pop) 887 888#pragma pack(push, 1) 889typedef struct SVGA3dCmdDXDefineShaderResourceView { 890 SVGA3dShaderResourceViewId shaderResourceViewId; 891 892 SVGA3dSurfaceId sid; 893 SVGA3dSurfaceFormat format; 894 SVGA3dResourceType resourceDimension; 895 896 SVGA3dShaderResourceViewDesc desc; 897} SVGA3dCmdDXDefineShaderResourceView; 898#pragma pack(pop) 899 900#pragma pack(push, 1) 901typedef struct SVGA3dCmdDXDestroyShaderResourceView { 902 SVGA3dShaderResourceViewId shaderResourceViewId; 903} SVGA3dCmdDXDestroyShaderResourceView; 904#pragma pack(pop) 905 906#pragma pack(push, 1) 907typedef struct SVGA3dRenderTargetViewDesc { 908 union { 909 struct { 910 uint32 firstElement; 911 uint32 numElements; 912 uint32 padding0; 913 } buffer; 914 struct { 915 uint32 mipSlice; 916 uint32 firstArraySlice; 917 uint32 arraySize; 918 } tex; 919 struct { 920 uint32 mipSlice; 921 uint32 firstW; 922 uint32 wSize; 923 } tex3D; 924 }; 925} SVGA3dRenderTargetViewDesc; 926#pragma pack(pop) 927 928#pragma pack(push, 1) 929typedef struct { 930 SVGA3dSurfaceId sid; 931 SVGA3dSurfaceFormat format; 932 SVGA3dResourceType resourceDimension; 933 SVGA3dRenderTargetViewDesc desc; 934 uint32 pad[2]; 935} SVGACOTableDXRTViewEntry; 936#pragma pack(pop) 937 938#pragma pack(push, 1) 939typedef struct SVGA3dCmdDXDefineRenderTargetView { 940 SVGA3dRenderTargetViewId renderTargetViewId; 941 942 SVGA3dSurfaceId sid; 943 SVGA3dSurfaceFormat format; 944 SVGA3dResourceType resourceDimension; 945 946 SVGA3dRenderTargetViewDesc desc; 947} SVGA3dCmdDXDefineRenderTargetView; 948#pragma pack(pop) 949 950#pragma pack(push, 1) 951typedef struct SVGA3dCmdDXDestroyRenderTargetView { 952 SVGA3dRenderTargetViewId renderTargetViewId; 953} SVGA3dCmdDXDestroyRenderTargetView; 954#pragma pack(pop) 955 956#define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_DEPTH 0x01 957#define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_STENCIL 0x02 958#define SVGA3D_DXDSVIEW_CREATE_FLAG_MASK 0x03 959typedef uint8 SVGA3DCreateDSViewFlags; 960 961#pragma pack(push, 1) 962typedef struct { 963 SVGA3dSurfaceId sid; 964 SVGA3dSurfaceFormat format; 965 SVGA3dResourceType resourceDimension; 966 uint32 mipSlice; 967 uint32 firstArraySlice; 968 uint32 arraySize; 969 SVGA3DCreateDSViewFlags flags; 970 uint8 pad0; 971 uint16 pad1; 972 uint32 pad2; 973} SVGACOTableDXDSViewEntry; 974#pragma pack(pop) 975 976#pragma pack(push, 1) 977typedef struct SVGA3dCmdDXDefineDepthStencilView { 978 SVGA3dDepthStencilViewId depthStencilViewId; 979 980 SVGA3dSurfaceId sid; 981 SVGA3dSurfaceFormat format; 982 SVGA3dResourceType resourceDimension; 983 uint32 mipSlice; 984 uint32 firstArraySlice; 985 uint32 arraySize; 986 SVGA3DCreateDSViewFlags flags; 987 uint8 pad0; 988 uint16 pad1; 989} SVGA3dCmdDXDefineDepthStencilView; 990#pragma pack(pop) 991 992#pragma pack(push, 1) 993typedef struct SVGA3dCmdDXDefineDepthStencilView_v2 { 994 SVGA3dDepthStencilViewId depthStencilViewId; 995 996 SVGA3dSurfaceId sid; 997 SVGA3dSurfaceFormat format; 998 SVGA3dResourceType resourceDimension; 999 uint32 mipSlice; 1000 uint32 firstArraySlice; 1001 uint32 arraySize; 1002 SVGA3DCreateDSViewFlags flags; 1003 uint8 pad0; 1004 uint16 pad1; 1005} SVGA3dCmdDXDefineDepthStencilView_v2; 1006#pragma pack(pop) 1007 1008#pragma pack(push, 1) 1009typedef struct SVGA3dCmdDXDestroyDepthStencilView { 1010 SVGA3dDepthStencilViewId depthStencilViewId; 1011} SVGA3dCmdDXDestroyDepthStencilView; 1012#pragma pack(pop) 1013 1014#define SVGA3D_UABUFFER_RAW (1 << 0) 1015#define SVGA3D_UABUFFER_APPEND (1 << 1) 1016#define SVGA3D_UABUFFER_COUNTER (1 << 2) 1017typedef uint32 SVGA3dUABufferFlags; 1018 1019#pragma pack(push, 1) 1020typedef struct { 1021 union { 1022 struct { 1023 uint32 firstElement; 1024 uint32 numElements; 1025 SVGA3dUABufferFlags flags; 1026 uint32 padding0; 1027 uint32 padding1; 1028 } buffer; 1029 struct { 1030 uint32 mipSlice; 1031 uint32 firstArraySlice; 1032 uint32 arraySize; 1033 uint32 padding0; 1034 uint32 padding1; 1035 } tex; 1036 struct { 1037 uint32 mipSlice; 1038 uint32 firstW; 1039 uint32 wSize; 1040 uint32 padding0; 1041 uint32 padding1; 1042 } tex3D; 1043 }; 1044} SVGA3dUAViewDesc; 1045#pragma pack(pop) 1046 1047#pragma pack(push, 1) 1048typedef struct { 1049 SVGA3dSurfaceId sid; 1050 SVGA3dSurfaceFormat format; 1051 SVGA3dResourceType resourceDimension; 1052 SVGA3dUAViewDesc desc; 1053 uint32 structureCount; 1054 uint32 pad[7]; 1055} SVGACOTableDXUAViewEntry; 1056#pragma pack(pop) 1057 1058#pragma pack(push, 1) 1059typedef struct SVGA3dCmdDXDefineUAView { 1060 SVGA3dUAViewId uaViewId; 1061 1062 SVGA3dSurfaceId sid; 1063 SVGA3dSurfaceFormat format; 1064 SVGA3dResourceType resourceDimension; 1065 1066 SVGA3dUAViewDesc desc; 1067} SVGA3dCmdDXDefineUAView; 1068#pragma pack(pop) 1069 1070#pragma pack(push, 1) 1071typedef struct SVGA3dCmdDXDestroyUAView { 1072 SVGA3dUAViewId uaViewId; 1073} SVGA3dCmdDXDestroyUAView; 1074#pragma pack(pop) 1075 1076#pragma pack(push, 1) 1077typedef struct SVGA3dCmdDXClearUAViewUint { 1078 SVGA3dUAViewId uaViewId; 1079 SVGA3dRGBAUint32 value; 1080} SVGA3dCmdDXClearUAViewUint; 1081#pragma pack(pop) 1082 1083#pragma pack(push, 1) 1084typedef struct SVGA3dCmdDXClearUAViewFloat { 1085 SVGA3dUAViewId uaViewId; 1086 SVGA3dRGBAFloat value; 1087} SVGA3dCmdDXClearUAViewFloat; 1088#pragma pack(pop) 1089 1090#pragma pack(push, 1) 1091typedef struct SVGA3dCmdDXCopyStructureCount { 1092 SVGA3dUAViewId srcUAViewId; 1093 SVGA3dSurfaceId destSid; 1094 uint32 destByteOffset; 1095} SVGA3dCmdDXCopyStructureCount; 1096#pragma pack(pop) 1097 1098#pragma pack(push, 1) 1099typedef struct SVGA3dCmdDXSetStructureCount { 1100 SVGA3dUAViewId uaViewId; 1101 uint32 structureCount; 1102} SVGA3dCmdDXSetStructureCount; 1103#pragma pack(pop) 1104 1105#pragma pack(push, 1) 1106typedef struct SVGA3dCmdDXSetUAViews { 1107 uint32 uavSpliceIndex; 1108 1109} SVGA3dCmdDXSetUAViews; 1110#pragma pack(pop) 1111 1112#pragma pack(push, 1) 1113typedef struct SVGA3dCmdDXSetCSUAViews { 1114 uint32 startIndex; 1115 1116} SVGA3dCmdDXSetCSUAViews; 1117#pragma pack(pop) 1118 1119#pragma pack(push, 1) 1120typedef struct SVGA3dInputElementDesc { 1121 uint32 inputSlot; 1122 uint32 alignedByteOffset; 1123 SVGA3dSurfaceFormat format; 1124 SVGA3dInputClassification inputSlotClass; 1125 uint32 instanceDataStepRate; 1126 uint32 inputRegister; 1127} SVGA3dInputElementDesc; 1128#pragma pack(pop) 1129 1130#pragma pack(push, 1) 1131typedef struct { 1132 uint32 elid; 1133 uint32 numDescs; 1134 SVGA3dInputElementDesc descs[32]; 1135 uint32 pad[62]; 1136} SVGACOTableDXElementLayoutEntry; 1137#pragma pack(pop) 1138 1139#pragma pack(push, 1) 1140typedef struct SVGA3dCmdDXDefineElementLayout { 1141 SVGA3dElementLayoutId elementLayoutId; 1142 1143} SVGA3dCmdDXDefineElementLayout; 1144#pragma pack(pop) 1145 1146#pragma pack(push, 1) 1147typedef struct SVGA3dCmdDXDestroyElementLayout { 1148 SVGA3dElementLayoutId elementLayoutId; 1149} SVGA3dCmdDXDestroyElementLayout; 1150#pragma pack(pop) 1151 1152#define SVGA3D_DX_MAX_RENDER_TARGETS 8 1153 1154#pragma pack(push, 1) 1155typedef struct SVGA3dDXBlendStatePerRT { 1156 uint8 blendEnable; 1157 uint8 srcBlend; 1158 uint8 destBlend; 1159 uint8 blendOp; 1160 uint8 srcBlendAlpha; 1161 uint8 destBlendAlpha; 1162 uint8 blendOpAlpha; 1163 SVGA3dColorWriteEnable renderTargetWriteMask; 1164 uint8 logicOpEnable; 1165 uint8 logicOp; 1166 uint16 pad0; 1167} SVGA3dDXBlendStatePerRT; 1168#pragma pack(pop) 1169 1170#pragma pack(push, 1) 1171typedef struct { 1172 uint8 alphaToCoverageEnable; 1173 uint8 independentBlendEnable; 1174 uint16 pad0; 1175 SVGA3dDXBlendStatePerRT perRT[SVGA3D_DX_MAX_RENDER_TARGETS]; 1176 uint32 pad1[7]; 1177} SVGACOTableDXBlendStateEntry; 1178#pragma pack(pop) 1179 1180#pragma pack(push, 1) 1181typedef struct SVGA3dCmdDXDefineBlendState { 1182 SVGA3dBlendStateId blendId; 1183 uint8 alphaToCoverageEnable; 1184 uint8 independentBlendEnable; 1185 uint16 pad0; 1186 SVGA3dDXBlendStatePerRT perRT[SVGA3D_DX_MAX_RENDER_TARGETS]; 1187} SVGA3dCmdDXDefineBlendState; 1188#pragma pack(pop) 1189 1190#pragma pack(push, 1) 1191typedef struct SVGA3dCmdDXDestroyBlendState { 1192 SVGA3dBlendStateId blendId; 1193} SVGA3dCmdDXDestroyBlendState; 1194#pragma pack(pop) 1195 1196#pragma pack(push, 1) 1197typedef struct { 1198 uint8 depthEnable; 1199 SVGA3dDepthWriteMask depthWriteMask; 1200 SVGA3dComparisonFunc depthFunc; 1201 uint8 stencilEnable; 1202 uint8 frontEnable; 1203 uint8 backEnable; 1204 uint8 stencilReadMask; 1205 uint8 stencilWriteMask; 1206 1207 uint8 frontStencilFailOp; 1208 uint8 frontStencilDepthFailOp; 1209 uint8 frontStencilPassOp; 1210 SVGA3dComparisonFunc frontStencilFunc; 1211 1212 uint8 backStencilFailOp; 1213 uint8 backStencilDepthFailOp; 1214 uint8 backStencilPassOp; 1215 SVGA3dComparisonFunc backStencilFunc; 1216} SVGACOTableDXDepthStencilEntry; 1217#pragma pack(pop) 1218 1219#pragma pack(push, 1) 1220typedef struct SVGA3dCmdDXDefineDepthStencilState { 1221 SVGA3dDepthStencilStateId depthStencilId; 1222 1223 uint8 depthEnable; 1224 SVGA3dDepthWriteMask depthWriteMask; 1225 SVGA3dComparisonFunc depthFunc; 1226 uint8 stencilEnable; 1227 uint8 frontEnable; 1228 uint8 backEnable; 1229 uint8 stencilReadMask; 1230 uint8 stencilWriteMask; 1231 1232 uint8 frontStencilFailOp; 1233 uint8 frontStencilDepthFailOp; 1234 uint8 frontStencilPassOp; 1235 SVGA3dComparisonFunc frontStencilFunc; 1236 1237 uint8 backStencilFailOp; 1238 uint8 backStencilDepthFailOp; 1239 uint8 backStencilPassOp; 1240 SVGA3dComparisonFunc backStencilFunc; 1241} SVGA3dCmdDXDefineDepthStencilState; 1242#pragma pack(pop) 1243 1244#pragma pack(push, 1) 1245typedef struct SVGA3dCmdDXDestroyDepthStencilState { 1246 SVGA3dDepthStencilStateId depthStencilId; 1247} SVGA3dCmdDXDestroyDepthStencilState; 1248#pragma pack(pop) 1249 1250#pragma pack(push, 1) 1251typedef struct { 1252 uint8 fillMode; 1253 SVGA3dCullMode cullMode; 1254 uint8 frontCounterClockwise; 1255 uint8 provokingVertexLast; 1256 int32 depthBias; 1257 float depthBiasClamp; 1258 float slopeScaledDepthBias; 1259 uint8 depthClipEnable; 1260 uint8 scissorEnable; 1261 SVGA3dMultisampleRastEnable multisampleEnable; 1262 uint8 antialiasedLineEnable; 1263 float lineWidth; 1264 uint8 lineStippleEnable; 1265 uint8 lineStippleFactor; 1266 uint16 lineStipplePattern; 1267 uint8 forcedSampleCount; 1268 uint8 mustBeZero[3]; 1269} SVGACOTableDXRasterizerStateEntry; 1270#pragma pack(pop) 1271 1272#pragma pack(push, 1) 1273typedef struct SVGA3dCmdDXDefineRasterizerState { 1274 SVGA3dRasterizerStateId rasterizerId; 1275 1276 uint8 fillMode; 1277 SVGA3dCullMode cullMode; 1278 uint8 frontCounterClockwise; 1279 uint8 provokingVertexLast; 1280 int32 depthBias; 1281 float depthBiasClamp; 1282 float slopeScaledDepthBias; 1283 uint8 depthClipEnable; 1284 uint8 scissorEnable; 1285 SVGA3dMultisampleRastEnable multisampleEnable; 1286 uint8 antialiasedLineEnable; 1287 float lineWidth; 1288 uint8 lineStippleEnable; 1289 uint8 lineStippleFactor; 1290 uint16 lineStipplePattern; 1291} SVGA3dCmdDXDefineRasterizerState; 1292#pragma pack(pop) 1293 1294#pragma pack(push, 1) 1295typedef struct SVGA3dCmdDXDefineRasterizerState_v2 { 1296 SVGA3dRasterizerStateId rasterizerId; 1297 1298 uint8 fillMode; 1299 SVGA3dCullMode cullMode; 1300 uint8 frontCounterClockwise; 1301 uint8 provokingVertexLast; 1302 int32 depthBias; 1303 float depthBiasClamp; 1304 float slopeScaledDepthBias; 1305 uint8 depthClipEnable; 1306 uint8 scissorEnable; 1307 SVGA3dMultisampleRastEnable multisampleEnable; 1308 uint8 antialiasedLineEnable; 1309 float lineWidth; 1310 uint8 lineStippleEnable; 1311 uint8 lineStippleFactor; 1312 uint16 lineStipplePattern; 1313 uint32 forcedSampleCount; 1314} SVGA3dCmdDXDefineRasterizerState_v2; 1315#pragma pack(pop) 1316 1317#pragma pack(push, 1) 1318typedef struct SVGA3dCmdDXDestroyRasterizerState { 1319 SVGA3dRasterizerStateId rasterizerId; 1320} SVGA3dCmdDXDestroyRasterizerState; 1321#pragma pack(pop) 1322 1323#pragma pack(push, 1) 1324typedef struct { 1325 SVGA3dFilter filter; 1326 uint8 addressU; 1327 uint8 addressV; 1328 uint8 addressW; 1329 uint8 pad0; 1330 float mipLODBias; 1331 uint8 maxAnisotropy; 1332 SVGA3dComparisonFunc comparisonFunc; 1333 uint16 pad1; 1334 SVGA3dRGBAFloat borderColor; 1335 float minLOD; 1336 float maxLOD; 1337 uint32 pad2[6]; 1338} SVGACOTableDXSamplerEntry; 1339#pragma pack(pop) 1340 1341#pragma pack(push, 1) 1342typedef struct SVGA3dCmdDXDefineSamplerState { 1343 SVGA3dSamplerId samplerId; 1344 SVGA3dFilter filter; 1345 uint8 addressU; 1346 uint8 addressV; 1347 uint8 addressW; 1348 uint8 pad0; 1349 float mipLODBias; 1350 uint8 maxAnisotropy; 1351 SVGA3dComparisonFunc comparisonFunc; 1352 uint16 pad1; 1353 SVGA3dRGBAFloat borderColor; 1354 float minLOD; 1355 float maxLOD; 1356} SVGA3dCmdDXDefineSamplerState; 1357#pragma pack(pop) 1358 1359#pragma pack(push, 1) 1360typedef struct SVGA3dCmdDXDestroySamplerState { 1361 SVGA3dSamplerId samplerId; 1362} SVGA3dCmdDXDestroySamplerState; 1363#pragma pack(pop) 1364 1365#define SVGADX_SIGNATURE_SEMANTIC_NAME_UNDEFINED 0 1366#define SVGADX_SIGNATURE_SEMANTIC_NAME_POSITION 1 1367#define SVGADX_SIGNATURE_SEMANTIC_NAME_CLIP_DISTANCE 2 1368#define SVGADX_SIGNATURE_SEMANTIC_NAME_CULL_DISTANCE 3 1369#define SVGADX_SIGNATURE_SEMANTIC_NAME_RENDER_TARGET_ARRAY_INDEX 4 1370#define SVGADX_SIGNATURE_SEMANTIC_NAME_VIEWPORT_ARRAY_INDEX 5 1371#define SVGADX_SIGNATURE_SEMANTIC_NAME_VERTEX_ID 6 1372#define SVGADX_SIGNATURE_SEMANTIC_NAME_PRIMITIVE_ID 7 1373#define SVGADX_SIGNATURE_SEMANTIC_NAME_INSTANCE_ID 8 1374#define SVGADX_SIGNATURE_SEMANTIC_NAME_IS_FRONT_FACE 9 1375#define SVGADX_SIGNATURE_SEMANTIC_NAME_SAMPLE_INDEX 10 1376#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_EQ_0_EDGE_TESSFACTOR 11 1377#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_EQ_0_EDGE_TESSFACTOR 12 1378#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_EQ_1_EDGE_TESSFACTOR 13 1379#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_EQ_1_EDGE_TESSFACTOR 14 1380#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_INSIDE_TESSFACTOR 15 1381#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_INSIDE_TESSFACTOR 16 1382#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_U_EQ_0_EDGE_TESSFACTOR 17 1383#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_V_EQ_0_EDGE_TESSFACTOR 18 1384#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_W_EQ_0_EDGE_TESSFACTOR 19 1385#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_INSIDE_TESSFACTOR 20 1386#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_LINE_DETAIL_TESSFACTOR 21 1387#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_LINE_DENSITY_TESSFACTOR 22 1388#define SVGADX_SIGNATURE_SEMANTIC_NAME_MAX 23 1389typedef uint32 SVGA3dDXSignatureSemanticName; 1390 1391#define SVGADX_SIGNATURE_REGISTER_COMPONENT_UNKNOWN 0 1392typedef uint32 SVGA3dDXSignatureRegisterComponentType; 1393 1394#define SVGADX_SIGNATURE_MIN_PRECISION_DEFAULT 0 1395typedef uint32 SVGA3dDXSignatureMinPrecision; 1396 1397#pragma pack(push, 1) 1398typedef struct SVGA3dDXSignatureEntry { 1399 uint32 registerIndex; 1400 SVGA3dDXSignatureSemanticName semanticName; 1401 uint32 mask; 1402 SVGA3dDXSignatureRegisterComponentType componentType; 1403 SVGA3dDXSignatureMinPrecision minPrecision; 1404} SVGA3dDXShaderSignatureEntry; 1405#pragma pack(pop) 1406 1407#define SVGADX_SIGNATURE_HEADER_VERSION_0 0x08a92d12 1408 1409#pragma pack(push, 1) 1410typedef struct SVGA3dDXSignatureHeader { 1411 uint32 headerVersion; 1412 uint32 numInputSignatures; 1413 uint32 numOutputSignatures; 1414 uint32 numPatchConstantSignatures; 1415} SVGA3dDXShaderSignatureHeader; 1416#pragma pack(pop) 1417 1418#pragma pack(push, 1) 1419typedef struct SVGA3dCmdDXDefineShader { 1420 SVGA3dShaderId shaderId; 1421 SVGA3dShaderType type; 1422 uint32 sizeInBytes; 1423} SVGA3dCmdDXDefineShader; 1424#pragma pack(pop) 1425 1426#pragma pack(push, 1) 1427typedef struct SVGACOTableDXShaderEntry { 1428 SVGA3dShaderType type; 1429 uint32 sizeInBytes; 1430 uint32 offsetInBytes; 1431 SVGAMobId mobid; 1432 uint32 pad[4]; 1433} SVGACOTableDXShaderEntry; 1434#pragma pack(pop) 1435 1436#pragma pack(push, 1) 1437typedef struct SVGA3dCmdDXDestroyShader { 1438 SVGA3dShaderId shaderId; 1439} SVGA3dCmdDXDestroyShader; 1440#pragma pack(pop) 1441 1442#pragma pack(push, 1) 1443typedef struct SVGA3dCmdDXBindShader { 1444 uint32 cid; 1445 uint32 shid; 1446 SVGAMobId mobid; 1447 uint32 offsetInBytes; 1448} SVGA3dCmdDXBindShader; 1449#pragma pack(pop) 1450 1451#pragma pack(push, 1) 1452typedef struct SVGA3dCmdDXBindAllShader { 1453 uint32 cid; 1454 SVGAMobId mobid; 1455} SVGA3dCmdDXBindAllShader; 1456#pragma pack(pop) 1457 1458#pragma pack(push, 1) 1459typedef struct SVGA3dCmdDXCondBindAllShader { 1460 uint32 cid; 1461 SVGAMobId testMobid; 1462 SVGAMobId mobid; 1463} SVGA3dCmdDXCondBindAllShader; 1464#pragma pack(pop) 1465 1466#define SVGA3D_MAX_DX10_STREAMOUT_DECLS 64 1467#define SVGA3D_MAX_STREAMOUT_DECLS 512 1468 1469#pragma pack(push, 1) 1470typedef struct SVGA3dStreamOutputDeclarationEntry { 1471 uint32 outputSlot; 1472 uint32 registerIndex; 1473 uint8 registerMask; 1474 uint8 pad0; 1475 uint16 pad1; 1476 uint32 stream; 1477} SVGA3dStreamOutputDeclarationEntry; 1478#pragma pack(pop) 1479 1480#pragma pack(push, 1) 1481typedef struct SVGAOTableStreamOutputEntry { 1482 uint32 numOutputStreamEntries; 1483 SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_DX10_STREAMOUT_DECLS]; 1484 uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS]; 1485 uint32 rasterizedStream; 1486 uint32 numOutputStreamStrides; 1487 uint32 mobid; 1488 uint32 offsetInBytes; 1489 uint8 usesMob; 1490 uint8 pad0; 1491 uint16 pad1; 1492 uint32 pad2[246]; 1493} SVGACOTableDXStreamOutputEntry; 1494#pragma pack(pop) 1495 1496#pragma pack(push, 1) 1497typedef struct SVGA3dCmdDXDefineStreamOutput { 1498 SVGA3dStreamOutputId soid; 1499 uint32 numOutputStreamEntries; 1500 SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_DX10_STREAMOUT_DECLS]; 1501 uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS]; 1502 uint32 rasterizedStream; 1503} SVGA3dCmdDXDefineStreamOutput; 1504#pragma pack(pop) 1505 1506#define SVGA3D_DX_SO_NO_RASTERIZED_STREAM 0xFFFFFFFF 1507 1508#pragma pack(push, 1) 1509typedef struct SVGA3dCmdDXDefineStreamOutputWithMob { 1510 SVGA3dStreamOutputId soid; 1511 uint32 numOutputStreamEntries; 1512 uint32 numOutputStreamStrides; 1513 uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS]; 1514 uint32 rasterizedStream; 1515} SVGA3dCmdDXDefineStreamOutputWithMob; 1516#pragma pack(pop) 1517 1518#pragma pack(push, 1) 1519typedef struct SVGA3dCmdDXBindStreamOutput { 1520 SVGA3dStreamOutputId soid; 1521 uint32 mobid; 1522 uint32 offsetInBytes; 1523 uint32 sizeInBytes; 1524} SVGA3dCmdDXBindStreamOutput; 1525#pragma pack(pop) 1526 1527#pragma pack(push, 1) 1528typedef struct SVGA3dCmdDXDestroyStreamOutput { 1529 SVGA3dStreamOutputId soid; 1530} SVGA3dCmdDXDestroyStreamOutput; 1531#pragma pack(pop) 1532 1533#pragma pack(push, 1) 1534typedef struct SVGA3dCmdDXSetStreamOutput { 1535 SVGA3dStreamOutputId soid; 1536} SVGA3dCmdDXSetStreamOutput; 1537#pragma pack(pop) 1538 1539#pragma pack(push, 1) 1540typedef struct SVGA3dCmdDXSetMinLOD { 1541 SVGA3dSurfaceId sid; 1542 float minLOD; 1543} SVGA3dCmdDXSetMinLOD; 1544#pragma pack(pop) 1545 1546#pragma pack(push, 1) 1547typedef struct { 1548 uint64 value; 1549 uint32 mobId; 1550 uint32 mobOffset; 1551} SVGA3dCmdDXMobFence64; 1552#pragma pack(pop) 1553 1554#pragma pack(push, 1) 1555typedef struct SVGA3dCmdDXSetCOTable { 1556 uint32 cid; 1557 uint32 mobid; 1558 SVGACOTableType type; 1559 uint32 validSizeInBytes; 1560} SVGA3dCmdDXSetCOTable; 1561#pragma pack(pop) 1562 1563#pragma pack(push, 1) 1564typedef struct SVGA3dCmdDXGrowCOTable { 1565 uint32 cid; 1566 uint32 mobid; 1567 SVGACOTableType type; 1568 uint32 validSizeInBytes; 1569} SVGA3dCmdDXGrowCOTable; 1570#pragma pack(pop) 1571 1572#pragma pack(push, 1) 1573typedef struct SVGA3dCmdDXReadbackCOTable { 1574 uint32 cid; 1575 SVGACOTableType type; 1576} SVGA3dCmdDXReadbackCOTable; 1577#pragma pack(pop) 1578 1579#pragma pack(push, 1) 1580typedef struct SVGA3dCmdDXCopyCOTableIntoMob { 1581 uint32 cid; 1582 SVGACOTableType type; 1583 uint32 mobid; 1584} SVGA3dCmdDXCopyCOTableIntoMob; 1585#pragma pack(pop) 1586 1587#pragma pack(push, 1) 1588typedef struct SVGA3dCmdDXPredStagingCopy { 1589 SVGA3dSurfaceId dstSid; 1590 SVGA3dSurfaceId srcSid; 1591 uint8 readback; 1592 uint8 unsynchronized; 1593 uint8 mustBeZero[2]; 1594 1595} SVGA3dCmdDXPredStagingCopy; 1596#pragma pack(pop) 1597 1598#pragma pack(push, 1) 1599typedef struct SVGA3dCmdDXStagingCopy { 1600 SVGA3dSurfaceId dstSid; 1601 SVGA3dSurfaceId srcSid; 1602 uint8 readback; 1603 uint8 unsynchronized; 1604 uint8 mustBeZero[2]; 1605 1606} SVGA3dCmdDXStagingCopy; 1607#pragma pack(pop) 1608 1609#pragma pack(push, 1) 1610typedef struct SVGA3dCOTableData { 1611 uint32 mobid; 1612} SVGA3dCOTableData; 1613#pragma pack(pop) 1614 1615#pragma pack(push, 1) 1616typedef struct SVGA3dBufferBinding { 1617 uint32 bufferId; 1618 uint32 stride; 1619 uint32 offset; 1620} SVGA3dBufferBinding; 1621#pragma pack(pop) 1622 1623#pragma pack(push, 1) 1624typedef struct SVGA3dConstantBufferBinding { 1625 uint32 sid; 1626 uint32 offsetInBytes; 1627 uint32 sizeInBytes; 1628} SVGA3dConstantBufferBinding; 1629#pragma pack(pop) 1630 1631#pragma pack(push, 1) 1632typedef struct SVGADXInputAssemblyMobFormat { 1633 uint32 layoutId; 1634 SVGA3dBufferBinding vertexBuffers[SVGA3D_DX_MAX_VERTEXBUFFERS]; 1635 uint32 indexBufferSid; 1636 uint32 pad; 1637 uint32 indexBufferOffset; 1638 uint32 indexBufferFormat; 1639 uint32 topology; 1640} SVGADXInputAssemblyMobFormat; 1641#pragma pack(pop) 1642 1643#pragma pack(push, 1) 1644typedef struct SVGADXContextMobFormat { 1645 SVGADXInputAssemblyMobFormat inputAssembly; 1646 1647 struct { 1648 uint32 blendStateId; 1649 uint32 blendFactor[4]; 1650 uint32 sampleMask; 1651 uint32 depthStencilStateId; 1652 uint32 stencilRef; 1653 uint32 rasterizerStateId; 1654 uint32 depthStencilViewId; 1655 uint32 renderTargetViewIds[SVGA3D_DX_MAX_RENDER_TARGETS]; 1656 } renderState; 1657 1658 uint32 pad0[8]; 1659 1660 struct { 1661 uint32 targets[SVGA3D_DX_MAX_SOTARGETS]; 1662 uint32 soid; 1663 } streamOut; 1664 1665 uint32 pad1[10]; 1666 1667 uint32 uavSpliceIndex; 1668 1669 uint8 numViewports; 1670 uint8 numScissorRects; 1671 uint16 pad2[1]; 1672 1673 uint32 pad3[3]; 1674 1675 SVGA3dViewport viewports[SVGA3D_DX_MAX_VIEWPORTS]; 1676 uint32 pad4[32]; 1677 1678 SVGASignedRect scissorRects[SVGA3D_DX_MAX_SCISSORRECTS]; 1679 uint32 pad5[64]; 1680 1681 struct { 1682 uint32 queryID; 1683 uint32 value; 1684 } predication; 1685 1686 SVGAMobId shaderIfaceMobid; 1687 uint32 shaderIfaceOffset; 1688 struct { 1689 uint32 shaderId; 1690 SVGA3dConstantBufferBinding 1691 constantBuffers[SVGA3D_DX_MAX_CONSTBUFFERS]; 1692 uint32 shaderResources[SVGA3D_DX_MAX_SRVIEWS]; 1693 uint32 samplers[SVGA3D_DX_MAX_SAMPLERS]; 1694 } shaderState[SVGA3D_NUM_SHADERTYPE]; 1695 uint32 pad6[26]; 1696 1697 SVGA3dQueryId queryID[SVGA3D_MAX_QUERY]; 1698 1699 SVGA3dCOTableData cotables[SVGA_COTABLE_MAX]; 1700 1701 uint32 pad7[64]; 1702 1703 uint32 uaViewIds[SVGA3D_DX11_1_MAX_UAVIEWS]; 1704 uint32 csuaViewIds[SVGA3D_DX11_1_MAX_UAVIEWS]; 1705 1706 uint32 pad8[188]; 1707} SVGADXContextMobFormat; 1708#pragma pack(pop) 1709 1710#define SVGA3D_DX_MAX_CLASS_INSTANCES_PADDED 256 1711 1712#pragma pack(push, 1) 1713typedef struct SVGADXShaderIfaceMobFormat { 1714 struct { 1715 uint32 numClassInstances; 1716 uint32 iface[SVGA3D_DX_MAX_CLASS_INSTANCES_PADDED]; 1717 SVGA3dIfaceData data[SVGA3D_DX_MAX_CLASS_INSTANCES_PADDED]; 1718 } shaderIfaceState[SVGA3D_NUM_SHADERTYPE]; 1719 1720 uint32 pad0[1018]; 1721} SVGADXShaderIfaceMobFormat; 1722#pragma pack(pop) 1723 1724#endif