Linux Audio

Check our new training course

Linux debugging, profiling, tracing and performance analysis training

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