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