root/drivers/gpu/drm/vmwgfx/device_include/svga3d_dx.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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
  47 typedef 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
  58 typedef 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)
  68 typedef uint8 SVGA3dColorWriteEnable;
  69 
  70 #define SVGA3D_DEPTH_WRITE_MASK_ZERO   0
  71 #define SVGA3D_DEPTH_WRITE_MASK_ALL    1
  72 typedef 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)
  79 typedef 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
  87 typedef 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
 100 typedef 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
 112 typedef 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 
 124 typedef uint32 SVGA3dShaderResourceViewId;
 125 typedef uint32 SVGA3dRenderTargetViewId;
 126 typedef uint32 SVGA3dDepthStencilViewId;
 127 
 128 typedef uint32 SVGA3dShaderId;
 129 typedef uint32 SVGA3dElementLayoutId;
 130 typedef uint32 SVGA3dSamplerId;
 131 typedef uint32 SVGA3dBlendStateId;
 132 typedef uint32 SVGA3dDepthStencilStateId;
 133 typedef uint32 SVGA3dRasterizerStateId;
 134 typedef uint32 SVGA3dQueryId;
 135 typedef uint32 SVGA3dStreamOutputId;
 136 
 137 typedef union {
 138    struct {
 139       float r;
 140       float g;
 141       float b;
 142       float a;
 143    };
 144 
 145    float value[4];
 146 } SVGA3dRGBAFloat;
 147 
 148 typedef
 149 #include "vmware_pack_begin.h"
 150 struct {
 151    uint32 cid;
 152    SVGAMobId mobid;
 153 }
 154 #include "vmware_pack_end.h"
 155 SVGAOTableDXContextEntry;
 156 
 157 typedef
 158 #include "vmware_pack_begin.h"
 159 struct SVGA3dCmdDXDefineContext {
 160    uint32 cid;
 161 }
 162 #include "vmware_pack_end.h"
 163 SVGA3dCmdDXDefineContext;   /* SVGA_3D_CMD_DX_DEFINE_CONTEXT */
 164 
 165 typedef
 166 #include "vmware_pack_begin.h"
 167 struct SVGA3dCmdDXDestroyContext {
 168    uint32 cid;
 169 }
 170 #include "vmware_pack_end.h"
 171 SVGA3dCmdDXDestroyContext;   /* 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  */
 184 typedef
 185 #include "vmware_pack_begin.h"
 186 struct SVGA3dCmdDXBindContext {
 187    uint32 cid;
 188    SVGAMobId mobid;
 189    uint32 validContents;
 190 }
 191 #include "vmware_pack_end.h"
 192 SVGA3dCmdDXBindContext;   /* 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  */
 198 typedef
 199 #include "vmware_pack_begin.h"
 200 struct SVGA3dCmdDXReadbackContext {
 201    uint32 cid;
 202 }
 203 #include "vmware_pack_end.h"
 204 SVGA3dCmdDXReadbackContext;   /* SVGA_3D_CMD_DX_READBACK_CONTEXT */
 205 
 206 /*
 207  * Invalidate a guest-backed context.
 208  */
 209 typedef
 210 #include "vmware_pack_begin.h"
 211 struct SVGA3dCmdDXInvalidateContext {
 212    uint32 cid;
 213 }
 214 #include "vmware_pack_end.h"
 215 SVGA3dCmdDXInvalidateContext;   /* SVGA_3D_CMD_DX_INVALIDATE_CONTEXT */
 216 
 217 typedef
 218 #include "vmware_pack_begin.h"
 219 struct SVGA3dCmdDXSetSingleConstantBuffer {
 220    uint32 slot;
 221    SVGA3dShaderType type;
 222    SVGA3dSurfaceId sid;
 223    uint32 offsetInBytes;
 224    uint32 sizeInBytes;
 225 }
 226 #include "vmware_pack_end.h"
 227 SVGA3dCmdDXSetSingleConstantBuffer;
 228 /* SVGA_3D_CMD_DX_SET_SINGLE_CONSTANT_BUFFER */
 229 
 230 typedef
 231 #include "vmware_pack_begin.h"
 232 struct 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"
 241 SVGA3dCmdDXSetShaderResources; /* SVGA_3D_CMD_DX_SET_SHADER_RESOURCES */
 242 
 243 typedef
 244 #include "vmware_pack_begin.h"
 245 struct SVGA3dCmdDXSetShader {
 246    SVGA3dShaderId shaderId;
 247    SVGA3dShaderType type;
 248 }
 249 #include "vmware_pack_end.h"
 250 SVGA3dCmdDXSetShader; /* SVGA_3D_CMD_DX_SET_SHADER */
 251 
 252 typedef
 253 #include "vmware_pack_begin.h"
 254 struct 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"
 263 SVGA3dCmdDXSetSamplers; /* SVGA_3D_CMD_DX_SET_SAMPLERS */
 264 
 265 typedef
 266 #include "vmware_pack_begin.h"
 267 struct SVGA3dCmdDXDraw {
 268    uint32 vertexCount;
 269    uint32 startVertexLocation;
 270 }
 271 #include "vmware_pack_end.h"
 272 SVGA3dCmdDXDraw; /* SVGA_3D_CMD_DX_DRAW */
 273 
 274 typedef
 275 #include "vmware_pack_begin.h"
 276 struct SVGA3dCmdDXDrawIndexed {
 277    uint32 indexCount;
 278    uint32 startIndexLocation;
 279    int32  baseVertexLocation;
 280 }
 281 #include "vmware_pack_end.h"
 282 SVGA3dCmdDXDrawIndexed; /* SVGA_3D_CMD_DX_DRAW_INDEXED */
 283 
 284 typedef
 285 #include "vmware_pack_begin.h"
 286 struct SVGA3dCmdDXDrawInstanced {
 287    uint32 vertexCountPerInstance;
 288    uint32 instanceCount;
 289    uint32 startVertexLocation;
 290    uint32 startInstanceLocation;
 291 }
 292 #include "vmware_pack_end.h"
 293 SVGA3dCmdDXDrawInstanced; /* SVGA_3D_CMD_DX_DRAW_INSTANCED */
 294 
 295 typedef
 296 #include "vmware_pack_begin.h"
 297 struct SVGA3dCmdDXDrawIndexedInstanced {
 298    uint32 indexCountPerInstance;
 299    uint32 instanceCount;
 300    uint32 startIndexLocation;
 301    int32  baseVertexLocation;
 302    uint32 startInstanceLocation;
 303 }
 304 #include "vmware_pack_end.h"
 305 SVGA3dCmdDXDrawIndexedInstanced; /* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED */
 306 
 307 typedef
 308 #include "vmware_pack_begin.h"
 309 struct SVGA3dCmdDXDrawAuto {
 310    uint32 pad0;
 311 }
 312 #include "vmware_pack_end.h"
 313 SVGA3dCmdDXDrawAuto; /* SVGA_3D_CMD_DX_DRAW_AUTO */
 314 
 315 typedef
 316 #include "vmware_pack_begin.h"
 317 struct SVGA3dCmdDXSetInputLayout {
 318    SVGA3dElementLayoutId elementLayoutId;
 319 }
 320 #include "vmware_pack_end.h"
 321 SVGA3dCmdDXSetInputLayout; /* SVGA_3D_CMD_DX_SET_INPUT_LAYOUT */
 322 
 323 typedef
 324 #include "vmware_pack_begin.h"
 325 struct SVGA3dVertexBuffer {
 326    SVGA3dSurfaceId sid;
 327    uint32 stride;
 328    uint32 offset;
 329 }
 330 #include "vmware_pack_end.h"
 331 SVGA3dVertexBuffer;
 332 
 333 typedef
 334 #include "vmware_pack_begin.h"
 335 struct SVGA3dCmdDXSetVertexBuffers {
 336    uint32 startBuffer;
 337    /* Followed by a variable number of SVGA3dVertexBuffer's. */
 338 }
 339 #include "vmware_pack_end.h"
 340 SVGA3dCmdDXSetVertexBuffers; /* SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS */
 341 
 342 typedef
 343 #include "vmware_pack_begin.h"
 344 struct SVGA3dCmdDXSetIndexBuffer {
 345    SVGA3dSurfaceId sid;
 346    SVGA3dSurfaceFormat format;
 347    uint32 offset;
 348 }
 349 #include "vmware_pack_end.h"
 350 SVGA3dCmdDXSetIndexBuffer; /* SVGA_3D_CMD_DX_SET_INDEX_BUFFER */
 351 
 352 typedef
 353 #include "vmware_pack_begin.h"
 354 struct SVGA3dCmdDXSetTopology {
 355    SVGA3dPrimitiveType topology;
 356 }
 357 #include "vmware_pack_end.h"
 358 SVGA3dCmdDXSetTopology; /* SVGA_3D_CMD_DX_SET_TOPOLOGY */
 359 
 360 typedef
 361 #include "vmware_pack_begin.h"
 362 struct SVGA3dCmdDXSetRenderTargets {
 363    SVGA3dDepthStencilViewId depthStencilViewId;
 364    /* Followed by a variable number of SVGA3dRenderTargetViewId's. */
 365 }
 366 #include "vmware_pack_end.h"
 367 SVGA3dCmdDXSetRenderTargets; /* SVGA_3D_CMD_DX_SET_RENDERTARGETS */
 368 
 369 typedef
 370 #include "vmware_pack_begin.h"
 371 struct SVGA3dCmdDXSetBlendState {
 372    SVGA3dBlendStateId blendId;
 373    float blendFactor[4];
 374    uint32 sampleMask;
 375 }
 376 #include "vmware_pack_end.h"
 377 SVGA3dCmdDXSetBlendState; /* SVGA_3D_CMD_DX_SET_BLEND_STATE */
 378 
 379 typedef
 380 #include "vmware_pack_begin.h"
 381 struct SVGA3dCmdDXSetDepthStencilState {
 382    SVGA3dDepthStencilStateId depthStencilId;
 383    uint32 stencilRef;
 384 }
 385 #include "vmware_pack_end.h"
 386 SVGA3dCmdDXSetDepthStencilState; /* SVGA_3D_CMD_DX_SET_DEPTHSTENCIL_STATE */
 387 
 388 typedef
 389 #include "vmware_pack_begin.h"
 390 struct SVGA3dCmdDXSetRasterizerState {
 391    SVGA3dRasterizerStateId rasterizerId;
 392 }
 393 #include "vmware_pack_end.h"
 394 SVGA3dCmdDXSetRasterizerState; /* SVGA_3D_CMD_DX_SET_RASTERIZER_STATE */
 395 
 396 #define SVGA3D_DXQUERY_FLAG_PREDICATEHINT (1 << 0)
 397 typedef 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
 411 typedef uint8 SVGADXQueryDeviceState;
 412 
 413 typedef
 414 #include "vmware_pack_begin.h"
 415 struct {
 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"
 424 SVGACOTableDXQueryEntry;
 425 
 426 typedef
 427 #include "vmware_pack_begin.h"
 428 struct SVGA3dCmdDXDefineQuery {
 429    SVGA3dQueryId queryId;
 430    SVGA3dQueryType type;
 431    SVGA3dDXQueryFlags flags;
 432 }
 433 #include "vmware_pack_end.h"
 434 SVGA3dCmdDXDefineQuery; /* SVGA_3D_CMD_DX_DEFINE_QUERY */
 435 
 436 typedef
 437 #include "vmware_pack_begin.h"
 438 struct SVGA3dCmdDXDestroyQuery {
 439    SVGA3dQueryId queryId;
 440 }
 441 #include "vmware_pack_end.h"
 442 SVGA3dCmdDXDestroyQuery; /* SVGA_3D_CMD_DX_DESTROY_QUERY */
 443 
 444 typedef
 445 #include "vmware_pack_begin.h"
 446 struct SVGA3dCmdDXBindQuery {
 447    SVGA3dQueryId queryId;
 448    SVGAMobId mobid;
 449 }
 450 #include "vmware_pack_end.h"
 451 SVGA3dCmdDXBindQuery; /* SVGA_3D_CMD_DX_BIND_QUERY */
 452 
 453 typedef
 454 #include "vmware_pack_begin.h"
 455 struct SVGA3dCmdDXSetQueryOffset {
 456    SVGA3dQueryId queryId;
 457    uint32 mobOffset;
 458 }
 459 #include "vmware_pack_end.h"
 460 SVGA3dCmdDXSetQueryOffset; /* SVGA_3D_CMD_DX_SET_QUERY_OFFSET */
 461 
 462 typedef
 463 #include "vmware_pack_begin.h"
 464 struct SVGA3dCmdDXBeginQuery {
 465    SVGA3dQueryId queryId;
 466 }
 467 #include "vmware_pack_end.h"
 468 SVGA3dCmdDXBeginQuery; /* SVGA_3D_CMD_DX_QUERY_BEGIN */
 469 
 470 typedef
 471 #include "vmware_pack_begin.h"
 472 struct SVGA3dCmdDXEndQuery {
 473    SVGA3dQueryId queryId;
 474 }
 475 #include "vmware_pack_end.h"
 476 SVGA3dCmdDXEndQuery; /* SVGA_3D_CMD_DX_QUERY_END */
 477 
 478 typedef
 479 #include "vmware_pack_begin.h"
 480 struct SVGA3dCmdDXReadbackQuery {
 481    SVGA3dQueryId queryId;
 482 }
 483 #include "vmware_pack_end.h"
 484 SVGA3dCmdDXReadbackQuery; /* SVGA_3D_CMD_DX_READBACK_QUERY */
 485 
 486 typedef
 487 #include "vmware_pack_begin.h"
 488 struct SVGA3dCmdDXMoveQuery {
 489    SVGA3dQueryId queryId;
 490    SVGAMobId mobid;
 491    uint32 mobOffset;
 492 }
 493 #include "vmware_pack_end.h"
 494 SVGA3dCmdDXMoveQuery; /* SVGA_3D_CMD_DX_MOVE_QUERY */
 495 
 496 typedef
 497 #include "vmware_pack_begin.h"
 498 struct SVGA3dCmdDXBindAllQuery {
 499    uint32 cid;
 500    SVGAMobId mobid;
 501 }
 502 #include "vmware_pack_end.h"
 503 SVGA3dCmdDXBindAllQuery; /* SVGA_3D_CMD_DX_BIND_ALL_QUERY */
 504 
 505 typedef
 506 #include "vmware_pack_begin.h"
 507 struct SVGA3dCmdDXReadbackAllQuery {
 508    uint32 cid;
 509 }
 510 #include "vmware_pack_end.h"
 511 SVGA3dCmdDXReadbackAllQuery; /* SVGA_3D_CMD_DX_READBACK_ALL_QUERY */
 512 
 513 typedef
 514 #include "vmware_pack_begin.h"
 515 struct SVGA3dCmdDXSetPredication {
 516    SVGA3dQueryId queryId;
 517    uint32 predicateValue;
 518 }
 519 #include "vmware_pack_end.h"
 520 SVGA3dCmdDXSetPredication; /* SVGA_3D_CMD_DX_SET_PREDICATION */
 521 
 522 typedef
 523 #include "vmware_pack_begin.h"
 524 struct 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"
 531 SVGA3dDXSOState;
 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 
 536 typedef
 537 #include "vmware_pack_begin.h"
 538 struct SVGA3dSoTarget {
 539    SVGA3dSurfaceId sid;
 540    uint32 offset;
 541    uint32 sizeInBytes;
 542 }
 543 #include "vmware_pack_end.h"
 544 SVGA3dSoTarget;
 545 
 546 typedef
 547 #include "vmware_pack_begin.h"
 548 struct SVGA3dCmdDXSetSOTargets {
 549    uint32 pad0;
 550    /* Followed by a variable number of SVGA3dSOTarget's. */
 551 }
 552 #include "vmware_pack_end.h"
 553 SVGA3dCmdDXSetSOTargets; /* SVGA_3D_CMD_DX_SET_SOTARGETS */
 554 
 555 typedef
 556 #include "vmware_pack_begin.h"
 557 struct 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"
 567 SVGA3dViewport;
 568 
 569 typedef
 570 #include "vmware_pack_begin.h"
 571 struct SVGA3dCmdDXSetViewports {
 572    uint32 pad0;
 573    /* Followed by a variable number of SVGA3dViewport's. */
 574 }
 575 #include "vmware_pack_end.h"
 576 SVGA3dCmdDXSetViewports; /* SVGA_3D_CMD_DX_SET_VIEWPORTS */
 577 
 578 #define SVGA3D_DX_MAX_VIEWPORTS  16
 579 
 580 typedef
 581 #include "vmware_pack_begin.h"
 582 struct SVGA3dCmdDXSetScissorRects {
 583    uint32 pad0;
 584    /* Followed by a variable number of SVGASignedRect's. */
 585 }
 586 #include "vmware_pack_end.h"
 587 SVGA3dCmdDXSetScissorRects; /* SVGA_3D_CMD_DX_SET_SCISSORRECTS */
 588 
 589 #define SVGA3D_DX_MAX_SCISSORRECTS  16
 590 
 591 typedef
 592 #include "vmware_pack_begin.h"
 593 struct SVGA3dCmdDXClearRenderTargetView {
 594    SVGA3dRenderTargetViewId renderTargetViewId;
 595    SVGA3dRGBAFloat rgba;
 596 }
 597 #include "vmware_pack_end.h"
 598 SVGA3dCmdDXClearRenderTargetView; /* SVGA_3D_CMD_DX_CLEAR_RENDERTARGET_VIEW */
 599 
 600 typedef
 601 #include "vmware_pack_begin.h"
 602 struct SVGA3dCmdDXClearDepthStencilView {
 603    uint16 flags;
 604    uint16 stencil;
 605    SVGA3dDepthStencilViewId depthStencilViewId;
 606    float depth;
 607 }
 608 #include "vmware_pack_end.h"
 609 SVGA3dCmdDXClearDepthStencilView; /* SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW */
 610 
 611 typedef
 612 #include "vmware_pack_begin.h"
 613 struct SVGA3dCmdDXPredCopyRegion {
 614    SVGA3dSurfaceId dstSid;
 615    uint32 dstSubResource;
 616    SVGA3dSurfaceId srcSid;
 617    uint32 srcSubResource;
 618    SVGA3dCopyBox box;
 619 }
 620 #include "vmware_pack_end.h"
 621 SVGA3dCmdDXPredCopyRegion;
 622 /* SVGA_3D_CMD_DX_PRED_COPY_REGION */
 623 
 624 typedef
 625 #include "vmware_pack_begin.h"
 626 struct SVGA3dCmdDXPredCopy {
 627    SVGA3dSurfaceId dstSid;
 628    SVGA3dSurfaceId srcSid;
 629 }
 630 #include "vmware_pack_end.h"
 631 SVGA3dCmdDXPredCopy; /* SVGA_3D_CMD_DX_PRED_COPY */
 632 
 633 typedef
 634 #include "vmware_pack_begin.h"
 635 struct 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"
 644 SVGA3dCmdDXPredConvertRegion; /* SVGA_3D_CMD_DX_PRED_CONVERT_REGION */
 645 
 646 typedef
 647 #include "vmware_pack_begin.h"
 648 struct SVGA3dCmdDXPredConvert {
 649    SVGA3dSurfaceId dstSid;
 650    SVGA3dSurfaceId srcSid;
 651 }
 652 #include "vmware_pack_end.h"
 653 SVGA3dCmdDXPredConvert; /* SVGA_3D_CMD_DX_PRED_CONVERT */
 654 
 655 typedef
 656 #include "vmware_pack_begin.h"
 657 struct SVGA3dCmdDXBufferCopy {
 658    SVGA3dSurfaceId dest;
 659    SVGA3dSurfaceId src;
 660    uint32 destX;
 661    uint32 srcX;
 662    uint32 width;
 663 }
 664 #include "vmware_pack_end.h"
 665 SVGA3dCmdDXBufferCopy;
 666 /* SVGA_3D_CMD_DX_BUFFER_COPY */
 667 
 668 /*
 669  * Perform a surface copy between a multisample, and a non-multisampled
 670  * surface.
 671  */
 672 typedef
 673 #include "vmware_pack_begin.h"
 674 struct {
 675    SVGA3dSurfaceId dstSid;
 676    uint32 dstSubResource;
 677    SVGA3dSurfaceId srcSid;
 678    uint32 srcSubResource;
 679    SVGA3dSurfaceFormat copyFormat;
 680 }
 681 #include "vmware_pack_end.h"
 682 SVGA3dCmdDXResolveCopy;               /* SVGA_3D_CMD_DX_RESOLVE_COPY */
 683 
 684 /*
 685  * Perform a predicated surface copy between a multisample, and a
 686  * non-multisampled surface.
 687  */
 688 typedef
 689 #include "vmware_pack_begin.h"
 690 struct {
 691    SVGA3dSurfaceId dstSid;
 692    uint32 dstSubResource;
 693    SVGA3dSurfaceId srcSid;
 694    uint32 srcSubResource;
 695    SVGA3dSurfaceFormat copyFormat;
 696 }
 697 #include "vmware_pack_end.h"
 698 SVGA3dCmdDXPredResolveCopy;           /* SVGA_3D_CMD_DX_PRED_RESOLVE_COPY */
 699 
 700 typedef 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 
 706 typedef
 707 #include "vmware_pack_begin.h"
 708 struct 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"
 718 SVGA3dCmdDXPresentBlt; /* SVGA_3D_CMD_DX_PRESENTBLT*/
 719 
 720 typedef
 721 #include "vmware_pack_begin.h"
 722 struct SVGA3dCmdDXGenMips {
 723    SVGA3dShaderResourceViewId shaderResourceViewId;
 724 }
 725 #include "vmware_pack_end.h"
 726 SVGA3dCmdDXGenMips; /* 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  */
 732 typedef
 733 #include "vmware_pack_begin.h"
 734 struct SVGA3dCmdDXUpdateSubResource {
 735    SVGA3dSurfaceId sid;
 736    uint32 subResource;
 737    SVGA3dBox box;
 738 }
 739 #include "vmware_pack_end.h"
 740 SVGA3dCmdDXUpdateSubResource;   /* 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  */
 746 typedef
 747 #include "vmware_pack_begin.h"
 748 struct SVGA3dCmdDXReadbackSubResource {
 749    SVGA3dSurfaceId sid;
 750    uint32 subResource;
 751 }
 752 #include "vmware_pack_end.h"
 753 SVGA3dCmdDXReadbackSubResource;   /* 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  */
 759 typedef
 760 #include "vmware_pack_begin.h"
 761 struct SVGA3dCmdDXInvalidateSubResource {
 762    SVGA3dSurfaceId sid;
 763    uint32 subResource;
 764 }
 765 #include "vmware_pack_end.h"
 766 SVGA3dCmdDXInvalidateSubResource;   /* 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  */
 774 typedef
 775 #include "vmware_pack_begin.h"
 776 struct 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"
 786 SVGA3dCmdDXTransferFromBuffer;   /* 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  */
 794 typedef
 795 #include "vmware_pack_begin.h"
 796 struct 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"
 806 SVGA3dCmdDXPredTransferFromBuffer;
 807 /* SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER */
 808 
 809 
 810 typedef
 811 #include "vmware_pack_begin.h"
 812 struct SVGA3dCmdDXSurfaceCopyAndReadback {
 813    SVGA3dSurfaceId srcSid;
 814    SVGA3dSurfaceId destSid;
 815    SVGA3dCopyBox box;
 816 }
 817 #include "vmware_pack_end.h"
 818 SVGA3dCmdDXSurfaceCopyAndReadback;
 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  */
 839 typedef 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 
 847 typedef
 848 #include "vmware_pack_begin.h"
 849 struct SVGAObjectRef {
 850    SVGAOTableType type;
 851    uint32 id;
 852 }
 853 #include "vmware_pack_end.h"
 854 SVGAObjectRef;
 855 
 856 typedef
 857 #include "vmware_pack_begin.h"
 858 struct SVGACObjectRef {
 859    SVGACOTableType type;
 860    uint32 cid;
 861    uint32 id;
 862 }
 863 #include "vmware_pack_end.h"
 864 SVGACObjectRef;
 865 
 866 typedef
 867 #include "vmware_pack_begin.h"
 868 struct SVGA3dCmdDXHint {
 869    SVGADXHintId hintId;
 870 
 871    /*
 872     * Followed by variable sized data depending on the hintId.
 873     */
 874 }
 875 #include "vmware_pack_end.h"
 876 SVGA3dCmdDXHint;
 877 /* SVGA_3D_CMD_DX_HINT */
 878 
 879 typedef
 880 #include "vmware_pack_begin.h"
 881 struct SVGA3dCmdDXBufferUpdate {
 882    SVGA3dSurfaceId sid;
 883    uint32 x;
 884    uint32 width;
 885 }
 886 #include "vmware_pack_end.h"
 887 SVGA3dCmdDXBufferUpdate;
 888 /* SVGA_3D_CMD_DX_BUFFER_UPDATE */
 889 
 890 typedef
 891 #include "vmware_pack_begin.h"
 892 struct SVGA3dCmdDXSetConstantBufferOffset {
 893    uint32 slot;
 894    uint32 offsetInBytes;
 895 }
 896 #include "vmware_pack_end.h"
 897 SVGA3dCmdDXSetConstantBufferOffset;
 898 
 899 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetVSConstantBufferOffset;
 900 /* SVGA_3D_CMD_DX_SET_VS_CONSTANT_BUFFER_OFFSET */
 901 
 902 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetPSConstantBufferOffset;
 903 /* SVGA_3D_CMD_DX_SET_PS_CONSTANT_BUFFER_OFFSET */
 904 
 905 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetGSConstantBufferOffset;
 906 /* SVGA_3D_CMD_DX_SET_GS_CONSTANT_BUFFER_OFFSET */
 907 
 908 
 909 typedef
 910 #include "vmware_pack_begin.h"
 911 struct {
 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"
 934 SVGA3dShaderResourceViewDesc;
 935 
 936 typedef
 937 #include "vmware_pack_begin.h"
 938 struct {
 939    SVGA3dSurfaceId sid;
 940    SVGA3dSurfaceFormat format;
 941    SVGA3dResourceType resourceDimension;
 942    SVGA3dShaderResourceViewDesc desc;
 943    uint32 pad;
 944 }
 945 #include "vmware_pack_end.h"
 946 SVGACOTableDXSRViewEntry;
 947 
 948 typedef
 949 #include "vmware_pack_begin.h"
 950 struct 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"
 960 SVGA3dCmdDXDefineShaderResourceView;
 961 /* SVGA_3D_CMD_DX_DEFINE_SHADERRESOURCE_VIEW */
 962 
 963 typedef
 964 #include "vmware_pack_begin.h"
 965 struct SVGA3dCmdDXDestroyShaderResourceView {
 966    SVGA3dShaderResourceViewId shaderResourceViewId;
 967 }
 968 #include "vmware_pack_end.h"
 969 SVGA3dCmdDXDestroyShaderResourceView;
 970 /* SVGA_3D_CMD_DX_DESTROY_SHADERRESOURCE_VIEW */
 971 
 972 typedef
 973 #include "vmware_pack_begin.h"
 974 struct 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"
 994 SVGA3dRenderTargetViewDesc;
 995 
 996 typedef
 997 #include "vmware_pack_begin.h"
 998 struct {
 999    SVGA3dSurfaceId sid;
1000    SVGA3dSurfaceFormat format;
1001    SVGA3dResourceType resourceDimension;
1002    SVGA3dRenderTargetViewDesc desc;
1003    uint32 pad[2];
1004 }
1005 #include "vmware_pack_end.h"
1006 SVGACOTableDXRTViewEntry;
1007 
1008 typedef
1009 #include "vmware_pack_begin.h"
1010 struct 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"
1020 SVGA3dCmdDXDefineRenderTargetView;
1021 /* SVGA_3D_CMD_DX_DEFINE_RENDERTARGET_VIEW */
1022 
1023 typedef
1024 #include "vmware_pack_begin.h"
1025 struct SVGA3dCmdDXDestroyRenderTargetView {
1026    SVGA3dRenderTargetViewId renderTargetViewId;
1027 }
1028 #include "vmware_pack_end.h"
1029 SVGA3dCmdDXDestroyRenderTargetView;
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
1037 typedef uint8 SVGA3DCreateDSViewFlags;
1038 
1039 typedef
1040 #include "vmware_pack_begin.h"
1041 struct {
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"
1054 SVGACOTableDXDSViewEntry;
1055 
1056 typedef
1057 #include "vmware_pack_begin.h"
1058 struct 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"
1072 SVGA3dCmdDXDefineDepthStencilView;
1073 /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW */
1074 
1075 typedef
1076 #include "vmware_pack_begin.h"
1077 struct SVGA3dCmdDXDestroyDepthStencilView {
1078    SVGA3dDepthStencilViewId depthStencilViewId;
1079 }
1080 #include "vmware_pack_end.h"
1081 SVGA3dCmdDXDestroyDepthStencilView;
1082 /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW */
1083 
1084 typedef
1085 #include "vmware_pack_begin.h"
1086 struct 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"
1095 SVGA3dInputElementDesc;
1096 
1097 typedef
1098 #include "vmware_pack_begin.h"
1099 struct {
1100    uint32 elid;
1101    uint32 numDescs;
1102    SVGA3dInputElementDesc desc[32];
1103    uint32 pad[62];
1104 }
1105 #include "vmware_pack_end.h"
1106 SVGACOTableDXElementLayoutEntry;
1107 
1108 typedef
1109 #include "vmware_pack_begin.h"
1110 struct SVGA3dCmdDXDefineElementLayout {
1111    SVGA3dElementLayoutId elementLayoutId;
1112    /* Followed by a variable number of SVGA3dInputElementDesc's. */
1113 }
1114 #include "vmware_pack_end.h"
1115 SVGA3dCmdDXDefineElementLayout;
1116 /* SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT */
1117 
1118 typedef
1119 #include "vmware_pack_begin.h"
1120 struct SVGA3dCmdDXDestroyElementLayout {
1121    SVGA3dElementLayoutId elementLayoutId;
1122 }
1123 #include "vmware_pack_end.h"
1124 SVGA3dCmdDXDestroyElementLayout;
1125 /* SVGA_3D_CMD_DX_DESTROY_ELEMENTLAYOUT */
1126 
1127 
1128 #define SVGA3D_DX_MAX_RENDER_TARGETS 8
1129 
1130 typedef
1131 #include "vmware_pack_begin.h"
1132 struct 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"
1146 SVGA3dDXBlendStatePerRT;
1147 
1148 typedef
1149 #include "vmware_pack_begin.h"
1150 struct {
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"
1158 SVGACOTableDXBlendStateEntry;
1159 
1160 /*
1161  */
1162 typedef
1163 #include "vmware_pack_begin.h"
1164 struct 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"
1172 SVGA3dCmdDXDefineBlendState; /* SVGA_3D_CMD_DX_DEFINE_BLEND_STATE */
1173 
1174 typedef
1175 #include "vmware_pack_begin.h"
1176 struct SVGA3dCmdDXDestroyBlendState {
1177    SVGA3dBlendStateId blendId;
1178 }
1179 #include "vmware_pack_end.h"
1180 SVGA3dCmdDXDestroyBlendState; /* SVGA_3D_CMD_DX_DESTROY_BLEND_STATE */
1181 
1182 typedef
1183 #include "vmware_pack_begin.h"
1184 struct {
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"
1205 SVGACOTableDXDepthStencilEntry;
1206 
1207 /*
1208  */
1209 typedef
1210 #include "vmware_pack_begin.h"
1211 struct 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"
1234 SVGA3dCmdDXDefineDepthStencilState;
1235 /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_STATE */
1236 
1237 typedef
1238 #include "vmware_pack_begin.h"
1239 struct SVGA3dCmdDXDestroyDepthStencilState {
1240    SVGA3dDepthStencilStateId depthStencilId;
1241 }
1242 #include "vmware_pack_end.h"
1243 SVGA3dCmdDXDestroyDepthStencilState;
1244 /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_STATE */
1245 
1246 typedef
1247 #include "vmware_pack_begin.h"
1248 struct {
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"
1267 SVGACOTableDXRasterizerStateEntry;
1268 
1269 /*
1270  */
1271 typedef
1272 #include "vmware_pack_begin.h"
1273 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 }
1292 #include "vmware_pack_end.h"
1293 SVGA3dCmdDXDefineRasterizerState;
1294 /* SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE */
1295 
1296 typedef
1297 #include "vmware_pack_begin.h"
1298 struct SVGA3dCmdDXDestroyRasterizerState {
1299    SVGA3dRasterizerStateId rasterizerId;
1300 }
1301 #include "vmware_pack_end.h"
1302 SVGA3dCmdDXDestroyRasterizerState;
1303 /* SVGA_3D_CMD_DX_DESTROY_RASTERIZER_STATE */
1304 
1305 typedef
1306 #include "vmware_pack_begin.h"
1307 struct {
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"
1323 SVGACOTableDXSamplerEntry;
1324 
1325 /*
1326  */
1327 typedef
1328 #include "vmware_pack_begin.h"
1329 struct 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"
1345 SVGA3dCmdDXDefineSamplerState; /* SVGA_3D_CMD_DX_DEFINE_SAMPLER_STATE */
1346 
1347 typedef
1348 #include "vmware_pack_begin.h"
1349 struct SVGA3dCmdDXDestroySamplerState {
1350    SVGA3dSamplerId samplerId;
1351 }
1352 #include "vmware_pack_end.h"
1353 SVGA3dCmdDXDestroySamplerState; /* SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE */
1354 
1355 typedef
1356 #include "vmware_pack_begin.h"
1357 struct SVGA3dCmdDXDefineShader {
1358    SVGA3dShaderId shaderId;
1359    SVGA3dShaderType type;
1360    uint32 sizeInBytes; /* Number of bytes of shader text. */
1361 }
1362 #include "vmware_pack_end.h"
1363 SVGA3dCmdDXDefineShader; /* SVGA_3D_CMD_DX_DEFINE_SHADER */
1364 
1365 typedef
1366 #include "vmware_pack_begin.h"
1367 struct SVGACOTableDXShaderEntry {
1368    SVGA3dShaderType type;
1369    uint32 sizeInBytes;
1370    uint32 offsetInBytes;
1371    SVGAMobId mobid;
1372    uint32 pad[4];
1373 }
1374 #include "vmware_pack_end.h"
1375 SVGACOTableDXShaderEntry;
1376 
1377 typedef
1378 #include "vmware_pack_begin.h"
1379 struct SVGA3dCmdDXDestroyShader {
1380    SVGA3dShaderId shaderId;
1381 }
1382 #include "vmware_pack_end.h"
1383 SVGA3dCmdDXDestroyShader; /* SVGA_3D_CMD_DX_DESTROY_SHADER */
1384 
1385 typedef
1386 #include "vmware_pack_begin.h"
1387 struct SVGA3dCmdDXBindShader {
1388    uint32 cid;
1389    uint32 shid;
1390    SVGAMobId mobid;
1391    uint32 offsetInBytes;
1392 }
1393 #include "vmware_pack_end.h"
1394 SVGA3dCmdDXBindShader;   /* SVGA_3D_CMD_DX_BIND_SHADER */
1395 
1396 typedef
1397 #include "vmware_pack_begin.h"
1398 struct SVGA3dCmdDXBindAllShader {
1399    uint32 cid;
1400    SVGAMobId mobid;
1401 }
1402 #include "vmware_pack_end.h"
1403 SVGA3dCmdDXBindAllShader;   /* SVGA_3D_CMD_DX_BIND_ALL_SHADER */
1404 
1405 typedef
1406 #include "vmware_pack_begin.h"
1407 struct SVGA3dCmdDXCondBindAllShader {
1408    uint32 cid;
1409    SVGAMobId testMobid;
1410    SVGAMobId mobid;
1411 }
1412 #include "vmware_pack_end.h"
1413 SVGA3dCmdDXCondBindAllShader;   /* 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 
1420 typedef
1421 #include "vmware_pack_begin.h"
1422 struct 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"
1431 SVGA3dStreamOutputDeclarationEntry;
1432 
1433 typedef
1434 #include "vmware_pack_begin.h"
1435 struct 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"
1443 SVGACOTableDXStreamOutputEntry;
1444 
1445 typedef
1446 #include "vmware_pack_begin.h"
1447 struct 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"
1455 SVGA3dCmdDXDefineStreamOutput; /* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT */
1456 
1457 typedef
1458 #include "vmware_pack_begin.h"
1459 struct SVGA3dCmdDXDestroyStreamOutput {
1460    SVGA3dStreamOutputId soid;
1461 }
1462 #include "vmware_pack_end.h"
1463 SVGA3dCmdDXDestroyStreamOutput; /* SVGA_3D_CMD_DX_DESTROY_STREAMOUTPUT */
1464 
1465 typedef
1466 #include "vmware_pack_begin.h"
1467 struct SVGA3dCmdDXSetStreamOutput {
1468    SVGA3dStreamOutputId soid;
1469 }
1470 #include "vmware_pack_end.h"
1471 SVGA3dCmdDXSetStreamOutput; /* SVGA_3D_CMD_DX_SET_STREAMOUTPUT */
1472 
1473 typedef
1474 #include "vmware_pack_begin.h"
1475 struct {
1476    uint64 value;
1477    uint32 mobId;
1478    uint32 mobOffset;
1479 }
1480 #include "vmware_pack_end.h"
1481 SVGA3dCmdDXMobFence64;  /* 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  */
1488 typedef
1489 #include "vmware_pack_begin.h"
1490 struct SVGA3dCmdDXSetCOTable {
1491    uint32 cid;
1492    uint32 mobid;
1493    SVGACOTableType type;
1494    uint32 validSizeInBytes;
1495 }
1496 #include "vmware_pack_end.h"
1497 SVGA3dCmdDXSetCOTable; /* 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  */
1508 typedef
1509 #include "vmware_pack_begin.h"
1510 struct SVGA3dCmdDXGrowCOTable {
1511    uint32 cid;
1512    uint32 mobid;
1513    SVGACOTableType type;
1514    uint32 validSizeInBytes;
1515 }
1516 #include "vmware_pack_end.h"
1517 SVGA3dCmdDXGrowCOTable; /* SVGA_3D_CMD_DX_GROW_COTABLE */
1518 
1519 typedef
1520 #include "vmware_pack_begin.h"
1521 struct SVGA3dCmdDXReadbackCOTable {
1522    uint32 cid;
1523    SVGACOTableType type;
1524 }
1525 #include "vmware_pack_end.h"
1526 SVGA3dCmdDXReadbackCOTable; /* SVGA_3D_CMD_DX_READBACK_COTABLE */
1527 
1528 typedef
1529 #include "vmware_pack_begin.h"
1530 struct SVGA3dCOTableData {
1531    uint32 mobid;
1532 }
1533 #include "vmware_pack_end.h"
1534 SVGA3dCOTableData;
1535 
1536 typedef
1537 #include "vmware_pack_begin.h"
1538 struct SVGA3dBufferBinding {
1539    uint32 bufferId;
1540    uint32 stride;
1541    uint32 offset;
1542 }
1543 #include "vmware_pack_end.h"
1544 SVGA3dBufferBinding;
1545 
1546 typedef
1547 #include "vmware_pack_begin.h"
1548 struct SVGA3dConstantBufferBinding {
1549    uint32 sid;
1550    uint32 offsetInBytes;
1551    uint32 sizeInBytes;
1552 }
1553 #include "vmware_pack_end.h"
1554 SVGA3dConstantBufferBinding;
1555 
1556 typedef
1557 #include "vmware_pack_begin.h"
1558 struct 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"
1568 SVGADXInputAssemblyMobFormat;
1569 
1570 typedef
1571 #include "vmware_pack_begin.h"
1572 struct 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"
1625 SVGADXContextMobFormat;
1626 
1627 typedef
1628 #include "vmware_pack_begin.h"
1629 struct SVGA3dCmdDXTempSetContext {
1630    uint32 dxcid;
1631 }
1632 #include "vmware_pack_end.h"
1633 SVGA3dCmdDXTempSetContext; /* SVGA_3D_CMD_DX_TEMP_SET_CONTEXT */
1634 
1635 #endif /* _SVGA3D_DX_H_ */

/* [<][>][^][v][top][bottom][index][help] */