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