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_ */ 1636