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