Path: blob/21.2-virgl/src/gallium/drivers/svga/include/svga3d_dx.h
4574 views
/**********************************************************1* Copyright 2007-2017 VMware, Inc. All rights reserved.2*3* Permission is hereby granted, free of charge, to any person4* obtaining a copy of this software and associated documentation5* files (the "Software"), to deal in the Software without6* restriction, including without limitation the rights to use, copy,7* modify, merge, publish, distribute, sublicense, and/or sell copies8* of the Software, and to permit persons to whom the Software is9* furnished to do so, subject to the following conditions:10*11* The above copyright notice and this permission notice shall be12* included in all copies or substantial portions of the Software.13*14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,15* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF16* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND17* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS18* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN19* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN20* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE21* SOFTWARE.22*23**********************************************************/2425/*26* svga3d_dx.h --27*28* SVGA 3d hardware definitions for DX10 support.29*/3031#ifndef _SVGA3D_DX_H_32#define _SVGA3D_DX_H_3334#define INCLUDE_ALLOW_MODULE35#define INCLUDE_ALLOW_USERLEVEL36#define INCLUDE_ALLOW_VMCORE37#include "includeCheck.h"3839#include "svga3d_limits.h"4041/* Matches D3D10_DDI_INPUT_CLASSIFICATION and D3D10_INPUT_CLASSIFICATION */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;4748/* Matches D3D10DDIRESOURCE_TYPE */49#define SVGA3D_RESOURCE_TYPE_MIN 150#define SVGA3D_RESOURCE_BUFFER 151#define SVGA3D_RESOURCE_TEXTURE1D 252#define SVGA3D_RESOURCE_TEXTURE2D 353#define SVGA3D_RESOURCE_TEXTURE3D 454#define SVGA3D_RESOURCE_TEXTURECUBE 555#define SVGA3D_RESOURCE_TYPE_DX10_MAX 656#define SVGA3D_RESOURCE_BUFFEREX 657#define SVGA3D_RESOURCE_TYPE_MAX 758typedef uint32 SVGA3dResourceType;5960/* Matches D3D10_DDI_COLOR_WRITE_ENABLE and D3D10_COLOR_WRITE_ENABLE */61#define SVGA3D_COLOR_WRITE_ENABLE_RED (1 << 0)62#define SVGA3D_COLOR_WRITE_ENABLE_GREEN (1 << 1)63#define SVGA3D_COLOR_WRITE_ENABLE_BLUE (1 << 2)64#define SVGA3D_COLOR_WRITE_ENABLE_ALPHA (1 << 3)65#define SVGA3D_COLOR_WRITE_ENABLE_ALL (SVGA3D_COLOR_WRITE_ENABLE_RED | \66SVGA3D_COLOR_WRITE_ENABLE_GREEN | \67SVGA3D_COLOR_WRITE_ENABLE_BLUE | \68SVGA3D_COLOR_WRITE_ENABLE_ALPHA)69typedef uint8 SVGA3dColorWriteEnable;7071/* Matches D3D10_DDI_DEPTH_WRITE_MASK and D3D10_DEPTH_WRITE_MASK */72#define SVGA3D_DEPTH_WRITE_MASK_ZERO 073#define SVGA3D_DEPTH_WRITE_MASK_ALL 174typedef uint8 SVGA3dDepthWriteMask;7576/* Matches D3D10_DDI_FILTER and D3D10_FILTER */77#define SVGA3D_FILTER_MIP_LINEAR (1 << 0)78#define SVGA3D_FILTER_MAG_LINEAR (1 << 2)79#define SVGA3D_FILTER_MIN_LINEAR (1 << 4)80#define SVGA3D_FILTER_ANISOTROPIC (1 << 6)81#define SVGA3D_FILTER_COMPARE (1 << 7)82typedef uint32 SVGA3dFilter;8384/* Matches D3D10_DDI_CULL_MODE */85#define SVGA3D_CULL_INVALID 086#define SVGA3D_CULL_MIN 187#define SVGA3D_CULL_NONE 188#define SVGA3D_CULL_FRONT 289#define SVGA3D_CULL_BACK 390#define SVGA3D_CULL_MAX 491typedef uint8 SVGA3dCullMode;9293/* Matches D3D10_DDI_COMPARISON_FUNC */94#define SVGA3D_COMPARISON_INVALID 095#define SVGA3D_COMPARISON_MIN 196#define SVGA3D_COMPARISON_NEVER 197#define SVGA3D_COMPARISON_LESS 298#define SVGA3D_COMPARISON_EQUAL 399#define SVGA3D_COMPARISON_LESS_EQUAL 4100#define SVGA3D_COMPARISON_GREATER 5101#define SVGA3D_COMPARISON_NOT_EQUAL 6102#define SVGA3D_COMPARISON_GREATER_EQUAL 7103#define SVGA3D_COMPARISON_ALWAYS 8104#define SVGA3D_COMPARISON_MAX 9105typedef uint8 SVGA3dComparisonFunc;106107/*108* SVGA3D_MULTISAMPLE_DISABLE disables MSAA for all primitives.109* SVGA3D_MULTISAMPLE_DISABLE_LINE, which is supported in DX10.1,110* disables MSAA for lines only.111*/112#define SVGA3D_MULTISAMPLE_DISABLE 0113#define SVGA3D_MULTISAMPLE_ENABLE 1114#define SVGA3D_MULTISAMPLE_DX_MAX 1115#define SVGA3D_MULTISAMPLE_DISABLE_LINE 2116#define SVGA3D_MULTISAMPLE_MAX 2117typedef uint8 SVGA3dMultisampleEnable;118119#define SVGA3D_DX_MAX_VERTEXBUFFERS 32120#define SVGA3D_DX_MAX_VERTEXINPUTREGISTERS 16121#define SVGA3D_DX_SM41_MAX_VERTEXINPUTREGISTERS 32122#define SVGA3D_DX_MAX_SOTARGETS 4123#define SVGA3D_DX_MAX_SRVIEWS 128124#define SVGA3D_DX_MAX_CONSTBUFFERS 16125#define SVGA3D_DX_MAX_SAMPLERS 16126127#define SVGA3D_DX_MAX_CONSTBUF_BINDING_SIZE (4096 * 4 * (uint32)sizeof(uint32))128129typedef uint32 SVGA3dShaderResourceViewId;130typedef uint32 SVGA3dRenderTargetViewId;131typedef uint32 SVGA3dDepthStencilViewId;132133typedef uint32 SVGA3dShaderId;134typedef uint32 SVGA3dElementLayoutId;135typedef uint32 SVGA3dSamplerId;136typedef uint32 SVGA3dBlendStateId;137typedef uint32 SVGA3dDepthStencilStateId;138typedef uint32 SVGA3dRasterizerStateId;139typedef uint32 SVGA3dQueryId;140typedef uint32 SVGA3dStreamOutputId;141142typedef union {143struct {144float r;145float g;146float b;147float a;148};149150float value[4];151} SVGA3dRGBAFloat;152153typedef154#include "vmware_pack_begin.h"155struct {156uint32 cid;157SVGAMobId mobid;158}159#include "vmware_pack_end.h"160SVGAOTableDXContextEntry;161162typedef163#include "vmware_pack_begin.h"164struct SVGA3dCmdDXDefineContext {165uint32 cid;166}167#include "vmware_pack_end.h"168SVGA3dCmdDXDefineContext; /* SVGA_3D_CMD_DX_DEFINE_CONTEXT */169170typedef171#include "vmware_pack_begin.h"172struct SVGA3dCmdDXDestroyContext {173uint32 cid;174}175#include "vmware_pack_end.h"176SVGA3dCmdDXDestroyContext; /* SVGA_3D_CMD_DX_DESTROY_CONTEXT */177178/*179* Bind a DX context.180*181* validContents should be set to 0 for new contexts,182* and 1 if this is an old context which is getting paged183* back on to the device.184*185* For new contexts, it is recommended that the driver186* issue commands to initialize all interesting state187* prior to rendering.188*/189typedef190#include "vmware_pack_begin.h"191struct SVGA3dCmdDXBindContext {192uint32 cid;193SVGAMobId mobid;194uint32 validContents;195}196#include "vmware_pack_end.h"197SVGA3dCmdDXBindContext; /* SVGA_3D_CMD_DX_BIND_CONTEXT */198199/*200* Readback a DX context.201* (Request that the device flush the contents back into guest memory.)202*/203typedef204#include "vmware_pack_begin.h"205struct SVGA3dCmdDXReadbackContext {206uint32 cid;207}208#include "vmware_pack_end.h"209SVGA3dCmdDXReadbackContext; /* SVGA_3D_CMD_DX_READBACK_CONTEXT */210211/*212* Invalidate a guest-backed context.213*/214typedef215#include "vmware_pack_begin.h"216struct SVGA3dCmdDXInvalidateContext {217uint32 cid;218}219#include "vmware_pack_end.h"220SVGA3dCmdDXInvalidateContext; /* SVGA_3D_CMD_DX_INVALIDATE_CONTEXT */221222typedef223#include "vmware_pack_begin.h"224struct SVGA3dCmdDXSetSingleConstantBuffer {225uint32 slot;226SVGA3dShaderType type;227SVGA3dSurfaceId sid;228uint32 offsetInBytes;229uint32 sizeInBytes;230}231#include "vmware_pack_end.h"232SVGA3dCmdDXSetSingleConstantBuffer;233/* SVGA_3D_CMD_DX_SET_SINGLE_CONSTANT_BUFFER */234235typedef236#include "vmware_pack_begin.h"237struct SVGA3dCmdDXSetShaderResources {238uint32 startView;239SVGA3dShaderType type;240241/*242* Followed by a variable number of SVGA3dShaderResourceViewId's.243*/244}245#include "vmware_pack_end.h"246SVGA3dCmdDXSetShaderResources; /* SVGA_3D_CMD_DX_SET_SHADER_RESOURCES */247248typedef249#include "vmware_pack_begin.h"250struct SVGA3dCmdDXSetShader {251SVGA3dShaderId shaderId;252SVGA3dShaderType type;253}254#include "vmware_pack_end.h"255SVGA3dCmdDXSetShader; /* SVGA_3D_CMD_DX_SET_SHADER */256257typedef258#include "vmware_pack_begin.h"259struct SVGA3dCmdDXSetSamplers {260uint32 startSampler;261SVGA3dShaderType type;262263/*264* Followed by a variable number of SVGA3dSamplerId's.265*/266}267#include "vmware_pack_end.h"268SVGA3dCmdDXSetSamplers; /* SVGA_3D_CMD_DX_SET_SAMPLERS */269270typedef271#include "vmware_pack_begin.h"272struct SVGA3dCmdDXDraw {273uint32 vertexCount;274uint32 startVertexLocation;275}276#include "vmware_pack_end.h"277SVGA3dCmdDXDraw; /* SVGA_3D_CMD_DX_DRAW */278279typedef280#include "vmware_pack_begin.h"281struct SVGA3dCmdDXDrawIndexed {282uint32 indexCount;283uint32 startIndexLocation;284int32 baseVertexLocation;285}286#include "vmware_pack_end.h"287SVGA3dCmdDXDrawIndexed; /* SVGA_3D_CMD_DX_DRAW_INDEXED */288289typedef290#include "vmware_pack_begin.h"291struct SVGA3dCmdDXDrawInstanced {292uint32 vertexCountPerInstance;293uint32 instanceCount;294uint32 startVertexLocation;295uint32 startInstanceLocation;296}297#include "vmware_pack_end.h"298SVGA3dCmdDXDrawInstanced; /* SVGA_3D_CMD_DX_DRAW_INSTANCED */299300typedef301#include "vmware_pack_begin.h"302struct SVGA3dCmdDXDrawIndexedInstanced {303uint32 indexCountPerInstance;304uint32 instanceCount;305uint32 startIndexLocation;306int32 baseVertexLocation;307uint32 startInstanceLocation;308}309#include "vmware_pack_end.h"310SVGA3dCmdDXDrawIndexedInstanced; /* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED */311312typedef313#include "vmware_pack_begin.h"314struct SVGA3dCmdDXDrawIndexedInstancedIndirect {315SVGA3dSurfaceId argsBufferSid;316uint32 byteOffsetForArgs;317}318#include "vmware_pack_end.h"319SVGA3dCmdDXDrawIndexedInstancedIndirect;320/* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED_INDIRECT */321322typedef323#include "vmware_pack_begin.h"324struct SVGA3dCmdDXDrawInstancedIndirect {325SVGA3dSurfaceId argsBufferSid;326uint32 byteOffsetForArgs;327}328#include "vmware_pack_end.h"329SVGA3dCmdDXDrawInstancedIndirect;330/* SVGA_3D_CMD_DX_DRAW_INSTANCED_INDIRECT */331332typedef333#include "vmware_pack_begin.h"334struct SVGA3dCmdDXDrawAuto {335uint32 pad0;336}337#include "vmware_pack_end.h"338SVGA3dCmdDXDrawAuto; /* SVGA_3D_CMD_DX_DRAW_AUTO */339340typedef341#include "vmware_pack_begin.h"342struct SVGA3dCmdDXDispatch {343uint32 threadGroupCountX;344uint32 threadGroupCountY;345uint32 threadGroupCountZ;346}347#include "vmware_pack_end.h"348SVGA3dCmdDXDispatch;349/* SVGA_3D_CMD_DX_DISPATCH */350351typedef352#include "vmware_pack_begin.h"353struct SVGA3dCmdDXDispatchIndirect {354SVGA3dSurfaceId argsBufferSid;355uint32 byteOffsetForArgs;356}357#include "vmware_pack_end.h"358SVGA3dCmdDXDispatchIndirect;359/* SVGA_3D_CMD_DX_DISPATCH_INDIRECT */360361typedef362#include "vmware_pack_begin.h"363struct SVGA3dCmdDXSetInputLayout {364SVGA3dElementLayoutId elementLayoutId;365}366#include "vmware_pack_end.h"367SVGA3dCmdDXSetInputLayout; /* SVGA_3D_CMD_DX_SET_INPUT_LAYOUT */368369typedef370#include "vmware_pack_begin.h"371struct SVGA3dVertexBuffer {372SVGA3dSurfaceId sid;373uint32 stride;374uint32 offset;375}376#include "vmware_pack_end.h"377SVGA3dVertexBuffer;378379typedef380#include "vmware_pack_begin.h"381struct SVGA3dCmdDXSetVertexBuffers {382uint32 startBuffer;383/* Followed by a variable number of SVGA3dVertexBuffer's. */384}385#include "vmware_pack_end.h"386SVGA3dCmdDXSetVertexBuffers; /* SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS */387388typedef389#include "vmware_pack_begin.h"390struct SVGA3dCmdDXSetIndexBuffer {391SVGA3dSurfaceId sid;392SVGA3dSurfaceFormat format;393uint32 offset;394}395#include "vmware_pack_end.h"396SVGA3dCmdDXSetIndexBuffer; /* SVGA_3D_CMD_DX_SET_INDEX_BUFFER */397398typedef399#include "vmware_pack_begin.h"400struct SVGA3dCmdDXSetTopology {401SVGA3dPrimitiveType topology;402}403#include "vmware_pack_end.h"404SVGA3dCmdDXSetTopology; /* SVGA_3D_CMD_DX_SET_TOPOLOGY */405406typedef407#include "vmware_pack_begin.h"408struct SVGA3dCmdDXSetRenderTargets {409SVGA3dDepthStencilViewId depthStencilViewId;410/* Followed by a variable number of SVGA3dRenderTargetViewId's. */411}412#include "vmware_pack_end.h"413SVGA3dCmdDXSetRenderTargets; /* SVGA_3D_CMD_DX_SET_RENDERTARGETS */414415typedef416#include "vmware_pack_begin.h"417struct SVGA3dCmdDXSetBlendState {418SVGA3dBlendStateId blendId;419float blendFactor[4];420uint32 sampleMask;421}422#include "vmware_pack_end.h"423SVGA3dCmdDXSetBlendState; /* SVGA_3D_CMD_DX_SET_BLEND_STATE */424425typedef426#include "vmware_pack_begin.h"427struct SVGA3dCmdDXSetDepthStencilState {428SVGA3dDepthStencilStateId depthStencilId;429uint32 stencilRef;430}431#include "vmware_pack_end.h"432SVGA3dCmdDXSetDepthStencilState; /* SVGA_3D_CMD_DX_SET_DEPTHSTENCIL_STATE */433434typedef435#include "vmware_pack_begin.h"436struct SVGA3dCmdDXSetRasterizerState {437SVGA3dRasterizerStateId rasterizerId;438}439#include "vmware_pack_end.h"440SVGA3dCmdDXSetRasterizerState; /* SVGA_3D_CMD_DX_SET_RASTERIZER_STATE */441442/* Matches D3D10DDI_QUERY_MISCFLAG and D3D10_QUERY_MISC_FLAG */443#define SVGA3D_DXQUERY_FLAG_PREDICATEHINT (1 << 0)444typedef uint32 SVGA3dDXQueryFlags;445446/*447* The SVGADXQueryDeviceState and SVGADXQueryDeviceBits are used by the device448* to track query state transitions, but are not intended to be used by the449* driver.450*/451#define SVGADX_QDSTATE_INVALID ((uint8)-1) /* Query has no state */452#define SVGADX_QDSTATE_MIN 0453#define SVGADX_QDSTATE_IDLE 0 /* Query hasn't started yet */454#define SVGADX_QDSTATE_ACTIVE 1 /* Query is actively gathering data */455#define SVGADX_QDSTATE_PENDING 2 /* Query is waiting for results */456#define SVGADX_QDSTATE_FINISHED 3 /* Query has completed */457#define SVGADX_QDSTATE_MAX 4458typedef uint8 SVGADXQueryDeviceState;459460typedef461#include "vmware_pack_begin.h"462struct {463SVGA3dQueryTypeUint8 type;464uint16 pad0;465SVGADXQueryDeviceState state;466SVGA3dDXQueryFlags flags;467SVGAMobId mobid;468uint32 offset;469}470#include "vmware_pack_end.h"471SVGACOTableDXQueryEntry;472473typedef474#include "vmware_pack_begin.h"475struct SVGA3dCmdDXDefineQuery {476SVGA3dQueryId queryId;477SVGA3dQueryType type;478SVGA3dDXQueryFlags flags;479}480#include "vmware_pack_end.h"481SVGA3dCmdDXDefineQuery; /* SVGA_3D_CMD_DX_DEFINE_QUERY */482483typedef484#include "vmware_pack_begin.h"485struct SVGA3dCmdDXDestroyQuery {486SVGA3dQueryId queryId;487}488#include "vmware_pack_end.h"489SVGA3dCmdDXDestroyQuery; /* SVGA_3D_CMD_DX_DESTROY_QUERY */490491typedef492#include "vmware_pack_begin.h"493struct SVGA3dCmdDXBindQuery {494SVGA3dQueryId queryId;495SVGAMobId mobid;496}497#include "vmware_pack_end.h"498SVGA3dCmdDXBindQuery; /* SVGA_3D_CMD_DX_BIND_QUERY */499500typedef501#include "vmware_pack_begin.h"502struct SVGA3dCmdDXSetQueryOffset {503SVGA3dQueryId queryId;504uint32 mobOffset;505}506#include "vmware_pack_end.h"507SVGA3dCmdDXSetQueryOffset; /* SVGA_3D_CMD_DX_SET_QUERY_OFFSET */508509typedef510#include "vmware_pack_begin.h"511struct SVGA3dCmdDXBeginQuery {512SVGA3dQueryId queryId;513}514#include "vmware_pack_end.h"515SVGA3dCmdDXBeginQuery; /* SVGA_3D_CMD_DX_QUERY_BEGIN */516517typedef518#include "vmware_pack_begin.h"519struct SVGA3dCmdDXEndQuery {520SVGA3dQueryId queryId;521}522#include "vmware_pack_end.h"523SVGA3dCmdDXEndQuery; /* SVGA_3D_CMD_DX_QUERY_END */524525typedef526#include "vmware_pack_begin.h"527struct SVGA3dCmdDXReadbackQuery {528SVGA3dQueryId queryId;529}530#include "vmware_pack_end.h"531SVGA3dCmdDXReadbackQuery; /* SVGA_3D_CMD_DX_READBACK_QUERY */532533typedef534#include "vmware_pack_begin.h"535struct SVGA3dCmdDXMoveQuery {536SVGA3dQueryId queryId;537SVGAMobId mobid;538uint32 mobOffset;539}540#include "vmware_pack_end.h"541SVGA3dCmdDXMoveQuery; /* SVGA_3D_CMD_DX_MOVE_QUERY */542543typedef544#include "vmware_pack_begin.h"545struct SVGA3dCmdDXBindAllQuery {546uint32 cid;547SVGAMobId mobid;548}549#include "vmware_pack_end.h"550SVGA3dCmdDXBindAllQuery; /* SVGA_3D_CMD_DX_BIND_ALL_QUERY */551552typedef553#include "vmware_pack_begin.h"554struct SVGA3dCmdDXReadbackAllQuery {555uint32 cid;556}557#include "vmware_pack_end.h"558SVGA3dCmdDXReadbackAllQuery; /* SVGA_3D_CMD_DX_READBACK_ALL_QUERY */559560typedef561#include "vmware_pack_begin.h"562struct SVGA3dCmdDXSetPredication {563SVGA3dQueryId queryId;564uint32 predicateValue;565}566#include "vmware_pack_end.h"567SVGA3dCmdDXSetPredication; /* SVGA_3D_CMD_DX_SET_PREDICATION */568569typedef570#include "vmware_pack_begin.h"571struct MKS3dDXSOState {572uint32 offset; /* Starting offset */573uint32 intOffset; /* Internal offset */574uint32 vertexCount; /* vertices written */575uint32 sizeInBytes; /* max bytes to write */576}577#include "vmware_pack_end.h"578SVGA3dDXSOState;579580/* Set the offset field to this value to append SO values to the buffer */581#define SVGA3D_DX_SO_OFFSET_APPEND ((uint32) ~0u)582583typedef584#include "vmware_pack_begin.h"585struct SVGA3dSoTarget {586SVGA3dSurfaceId sid;587uint32 offset;588uint32 sizeInBytes;589}590#include "vmware_pack_end.h"591SVGA3dSoTarget;592593typedef594#include "vmware_pack_begin.h"595struct SVGA3dCmdDXSetSOTargets {596uint32 pad0;597/* Followed by a variable number of SVGA3dSOTarget's. */598}599#include "vmware_pack_end.h"600SVGA3dCmdDXSetSOTargets; /* SVGA_3D_CMD_DX_SET_SOTARGETS */601602typedef603#include "vmware_pack_begin.h"604struct SVGA3dViewport605{606float x;607float y;608float width;609float height;610float minDepth;611float maxDepth;612}613#include "vmware_pack_end.h"614SVGA3dViewport;615616typedef617#include "vmware_pack_begin.h"618struct SVGA3dCmdDXSetViewports {619uint32 pad0;620/* Followed by a variable number of SVGA3dViewport's. */621}622#include "vmware_pack_end.h"623SVGA3dCmdDXSetViewports; /* SVGA_3D_CMD_DX_SET_VIEWPORTS */624625#define SVGA3D_DX_MAX_VIEWPORTS 16626627typedef628#include "vmware_pack_begin.h"629struct SVGA3dCmdDXSetScissorRects {630uint32 pad0;631/* Followed by a variable number of SVGASignedRect's. */632}633#include "vmware_pack_end.h"634SVGA3dCmdDXSetScissorRects; /* SVGA_3D_CMD_DX_SET_SCISSORRECTS */635636#define SVGA3D_DX_MAX_SCISSORRECTS 16637638typedef639#include "vmware_pack_begin.h"640struct SVGA3dCmdDXClearRenderTargetView {641SVGA3dRenderTargetViewId renderTargetViewId;642SVGA3dRGBAFloat rgba;643}644#include "vmware_pack_end.h"645SVGA3dCmdDXClearRenderTargetView; /* SVGA_3D_CMD_DX_CLEAR_RENDERTARGET_VIEW */646647typedef648#include "vmware_pack_begin.h"649struct SVGA3dCmdDXClearDepthStencilView {650uint16 flags;651uint16 stencil;652SVGA3dDepthStencilViewId depthStencilViewId;653float depth;654}655#include "vmware_pack_end.h"656SVGA3dCmdDXClearDepthStencilView; /* SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW */657658typedef659#include "vmware_pack_begin.h"660struct SVGA3dCmdDXPredCopyRegion {661SVGA3dSurfaceId dstSid;662uint32 dstSubResource;663SVGA3dSurfaceId srcSid;664uint32 srcSubResource;665SVGA3dCopyBox box;666}667#include "vmware_pack_end.h"668SVGA3dCmdDXPredCopyRegion;669/* SVGA_3D_CMD_DX_PRED_COPY_REGION */670671typedef672#include "vmware_pack_begin.h"673struct SVGA3dCmdDXPredCopy {674SVGA3dSurfaceId dstSid;675SVGA3dSurfaceId srcSid;676}677#include "vmware_pack_end.h"678SVGA3dCmdDXPredCopy; /* SVGA_3D_CMD_DX_PRED_COPY */679680typedef681#include "vmware_pack_begin.h"682struct SVGA3dCmdDXPredConvertRegion {683SVGA3dSurfaceId dstSid;684uint32 dstSubResource;685SVGA3dSurfaceId srcSid;686uint32 srcSubResource;687SVGA3dCopyBox box;688}689#include "vmware_pack_end.h"690SVGA3dCmdDXPredConvertRegion; /* SVGA_3D_CMD_DX_PRED_CONVERT_REGION */691692typedef693#include "vmware_pack_begin.h"694struct SVGA3dCmdDXPredConvert {695SVGA3dSurfaceId dstSid;696SVGA3dSurfaceId srcSid;697}698#include "vmware_pack_end.h"699SVGA3dCmdDXPredConvert; /* SVGA_3D_CMD_DX_PRED_CONVERT */700701typedef702#include "vmware_pack_begin.h"703struct SVGA3dCmdDXBufferCopy {704SVGA3dSurfaceId dest;705SVGA3dSurfaceId src;706uint32 destX;707uint32 srcX;708uint32 width;709}710#include "vmware_pack_end.h"711SVGA3dCmdDXBufferCopy;712/* SVGA_3D_CMD_DX_BUFFER_COPY */713714/*715* Perform a surface copy between a multisample, and a non-multisampled716* surface.717*/718typedef719#include "vmware_pack_begin.h"720struct {721SVGA3dSurfaceId dstSid;722uint32 dstSubResource;723SVGA3dSurfaceId srcSid;724uint32 srcSubResource;725SVGA3dSurfaceFormat copyFormat;726}727#include "vmware_pack_end.h"728SVGA3dCmdDXResolveCopy; /* SVGA_3D_CMD_DX_RESOLVE_COPY */729730/*731* Perform a predicated surface copy between a multisample, and a732* non-multisampled surface.733*/734typedef735#include "vmware_pack_begin.h"736struct {737SVGA3dSurfaceId dstSid;738uint32 dstSubResource;739SVGA3dSurfaceId srcSid;740uint32 srcSubResource;741SVGA3dSurfaceFormat copyFormat;742}743#include "vmware_pack_end.h"744SVGA3dCmdDXPredResolveCopy; /* SVGA_3D_CMD_DX_PRED_RESOLVE_COPY */745746typedef uint32 SVGA3dDXStretchBltMode;747#define SVGADX_STRETCHBLT_LINEAR (1 << 0)748#define SVGADX_STRETCHBLT_FORCE_SRC_SRGB (1 << 1)749#define SVGADX_STRETCHBLT_MODE_MAX (1 << 2)750751typedef752#include "vmware_pack_begin.h"753struct SVGA3dCmdDXStretchBlt {754SVGA3dSurfaceId srcSid;755uint32 srcSubResource;756SVGA3dSurfaceId dstSid;757uint32 destSubResource;758SVGA3dBox boxSrc;759SVGA3dBox boxDest;760SVGA3dDXStretchBltMode mode;761}762#include "vmware_pack_end.h"763SVGA3dCmdDXStretchBlt; /* SVGA_3D_CMD_DX_STRETCHBLT */764765typedef766#include "vmware_pack_begin.h"767struct SVGA3dCmdDXGenMips {768SVGA3dShaderResourceViewId shaderResourceViewId;769}770#include "vmware_pack_end.h"771SVGA3dCmdDXGenMips; /* SVGA_3D_CMD_DX_GENMIPS */772773/*774* Update a sub-resource in a guest-backed resource.775* (Inform the device that the guest-contents have been updated.)776*/777typedef778#include "vmware_pack_begin.h"779struct SVGA3dCmdDXUpdateSubResource {780SVGA3dSurfaceId sid;781uint32 subResource;782SVGA3dBox box;783}784#include "vmware_pack_end.h"785SVGA3dCmdDXUpdateSubResource; /* SVGA_3D_CMD_DX_UPDATE_SUBRESOURCE */786787/*788* Readback a subresource in a guest-backed resource.789* (Request the device to flush the dirty contents into the guest.)790*/791typedef792#include "vmware_pack_begin.h"793struct SVGA3dCmdDXReadbackSubResource {794SVGA3dSurfaceId sid;795uint32 subResource;796}797#include "vmware_pack_end.h"798SVGA3dCmdDXReadbackSubResource; /* SVGA_3D_CMD_DX_READBACK_SUBRESOURCE */799800/*801* Invalidate an image in a guest-backed surface.802* (Notify the device that the contents can be lost.)803*/804typedef805#include "vmware_pack_begin.h"806struct SVGA3dCmdDXInvalidateSubResource {807SVGA3dSurfaceId sid;808uint32 subResource;809}810#include "vmware_pack_end.h"811SVGA3dCmdDXInvalidateSubResource; /* SVGA_3D_CMD_DX_INVALIDATE_SUBRESOURCE */812813814/*815* Raw byte wise transfer from a buffer surface into another surface816* of the requested box. Supported if 3d is enabled and SVGA_CAP_DX817* is set. This command does not take a context.818*/819typedef820#include "vmware_pack_begin.h"821struct SVGA3dCmdDXTransferFromBuffer {822SVGA3dSurfaceId srcSid;823uint32 srcOffset;824uint32 srcPitch;825uint32 srcSlicePitch;826SVGA3dSurfaceId destSid;827uint32 destSubResource;828SVGA3dBox destBox;829}830#include "vmware_pack_end.h"831SVGA3dCmdDXTransferFromBuffer; /* SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER */832833834/*835* Raw byte wise transfer from a buffer surface into another surface836* of the requested box. Supported if SVGA3D_DEVCAP_DXCONTEXT is set.837* The context is implied from the command buffer header.838*/839typedef840#include "vmware_pack_begin.h"841struct SVGA3dCmdDXPredTransferFromBuffer {842SVGA3dSurfaceId srcSid;843uint32 srcOffset;844uint32 srcPitch;845uint32 srcSlicePitch;846SVGA3dSurfaceId destSid;847uint32 destSubResource;848SVGA3dBox destBox;849}850#include "vmware_pack_end.h"851SVGA3dCmdDXPredTransferFromBuffer;852/* SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER */853854855typedef856#include "vmware_pack_begin.h"857struct SVGA3dCmdDXSurfaceCopyAndReadback {858SVGA3dSurfaceId srcSid;859SVGA3dSurfaceId destSid;860SVGA3dCopyBox box;861}862#include "vmware_pack_end.h"863SVGA3dCmdDXSurfaceCopyAndReadback;864/* SVGA_3D_CMD_DX_SURFACE_COPY_AND_READBACK */865866/*867* SVGA_DX_HINT_NONE: Does nothing.868*869* SVGA_DX_HINT_PREFETCH_OBJECT:870* SVGA_DX_HINT_PREEVICT_OBJECT:871* Consumes a SVGAObjectRef, and hints that the host should consider872* fetching/evicting the specified object.873*874* An id of SVGA3D_INVALID_ID can be used if the guest isn't sure875* what object was affected. (For instance, if the guest knows that876* it is about to evict a DXShader, but doesn't know precisely which one,877* the device can still use this to help limit it's search, or track878* how many page-outs have happened.)879*880* SVGA_DX_HINT_PREFETCH_COBJECT:881* SVGA_DX_HINT_PREEVICT_COBJECT:882* Same as the above, except they consume an SVGACObjectRef.883*/884typedef uint32 SVGADXHintId;885#define SVGA_DX_HINT_NONE 0886#define SVGA_DX_HINT_PREFETCH_OBJECT 1887#define SVGA_DX_HINT_PREEVICT_OBJECT 2888#define SVGA_DX_HINT_PREFETCH_COBJECT 3889#define SVGA_DX_HINT_PREEVICT_COBJECT 4890#define SVGA_DX_HINT_MAX 5891892typedef893#include "vmware_pack_begin.h"894struct SVGAObjectRef {895SVGAOTableType type;896uint32 id;897}898#include "vmware_pack_end.h"899SVGAObjectRef;900901typedef902#include "vmware_pack_begin.h"903struct SVGACObjectRef {904SVGACOTableType type;905uint32 cid;906uint32 id;907}908#include "vmware_pack_end.h"909SVGACObjectRef;910911typedef912#include "vmware_pack_begin.h"913struct SVGA3dCmdDXHint {914SVGADXHintId hintId;915916/*917* Followed by variable sized data depending on the hintId.918*/919}920#include "vmware_pack_end.h"921SVGA3dCmdDXHint;922/* SVGA_3D_CMD_DX_HINT */923924typedef925#include "vmware_pack_begin.h"926struct SVGA3dCmdDXBufferUpdate {927SVGA3dSurfaceId sid;928uint32 x;929uint32 width;930}931#include "vmware_pack_end.h"932SVGA3dCmdDXBufferUpdate;933/* SVGA_3D_CMD_DX_BUFFER_UPDATE */934935typedef936#include "vmware_pack_begin.h"937struct SVGA3dCmdDXSetConstantBufferOffset {938uint32 slot;939uint32 offsetInBytes;940}941#include "vmware_pack_end.h"942SVGA3dCmdDXSetConstantBufferOffset;943944typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetVSConstantBufferOffset;945/* SVGA_3D_CMD_DX_SET_VS_CONSTANT_BUFFER_OFFSET */946947typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetPSConstantBufferOffset;948/* SVGA_3D_CMD_DX_SET_PS_CONSTANT_BUFFER_OFFSET */949950typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetGSConstantBufferOffset;951/* SVGA_3D_CMD_DX_SET_GS_CONSTANT_BUFFER_OFFSET */952953954typedef955#include "vmware_pack_begin.h"956struct {957union {958struct {959uint32 firstElement;960uint32 numElements;961uint32 pad0;962uint32 pad1;963} buffer;964struct {965uint32 mostDetailedMip;966uint32 firstArraySlice;967uint32 mipLevels;968uint32 arraySize;969} tex;970struct {971uint32 firstElement; // D3D11DDIARG_BUFFEREX_SHADERRESOURCEVIEW972uint32 numElements;973uint32 flags;974uint32 pad0;975} bufferex;976};977}978#include "vmware_pack_end.h"979SVGA3dShaderResourceViewDesc;980981typedef982#include "vmware_pack_begin.h"983struct {984SVGA3dSurfaceId sid;985SVGA3dSurfaceFormat format;986SVGA3dResourceType resourceDimension;987SVGA3dShaderResourceViewDesc desc;988uint32 pad;989}990#include "vmware_pack_end.h"991SVGACOTableDXSRViewEntry;992993typedef994#include "vmware_pack_begin.h"995struct SVGA3dCmdDXDefineShaderResourceView {996SVGA3dShaderResourceViewId shaderResourceViewId;997998SVGA3dSurfaceId sid;999SVGA3dSurfaceFormat format;1000SVGA3dResourceType resourceDimension;10011002SVGA3dShaderResourceViewDesc desc;1003}1004#include "vmware_pack_end.h"1005SVGA3dCmdDXDefineShaderResourceView;1006/* SVGA_3D_CMD_DX_DEFINE_SHADERRESOURCE_VIEW */10071008typedef1009#include "vmware_pack_begin.h"1010struct SVGA3dCmdDXDestroyShaderResourceView {1011SVGA3dShaderResourceViewId shaderResourceViewId;1012}1013#include "vmware_pack_end.h"1014SVGA3dCmdDXDestroyShaderResourceView;1015/* SVGA_3D_CMD_DX_DESTROY_SHADERRESOURCE_VIEW */10161017typedef1018#include "vmware_pack_begin.h"1019struct SVGA3dRenderTargetViewDesc {1020union {1021struct {1022uint32 firstElement;1023uint32 numElements;1024} buffer;1025struct {1026uint32 mipSlice;1027uint32 firstArraySlice;1028uint32 arraySize;1029} tex; /* 1d, 2d, cube */1030struct {1031uint32 mipSlice;1032uint32 firstW;1033uint32 wSize;1034} tex3D;1035};1036}1037#include "vmware_pack_end.h"1038SVGA3dRenderTargetViewDesc;10391040typedef1041#include "vmware_pack_begin.h"1042struct {1043SVGA3dSurfaceId sid;1044SVGA3dSurfaceFormat format;1045SVGA3dResourceType resourceDimension;1046SVGA3dRenderTargetViewDesc desc;1047uint32 pad[2];1048}1049#include "vmware_pack_end.h"1050SVGACOTableDXRTViewEntry;10511052typedef1053#include "vmware_pack_begin.h"1054struct SVGA3dCmdDXDefineRenderTargetView {1055SVGA3dRenderTargetViewId renderTargetViewId;10561057SVGA3dSurfaceId sid;1058SVGA3dSurfaceFormat format;1059SVGA3dResourceType resourceDimension;10601061SVGA3dRenderTargetViewDesc desc;1062}1063#include "vmware_pack_end.h"1064SVGA3dCmdDXDefineRenderTargetView;1065/* SVGA_3D_CMD_DX_DEFINE_RENDERTARGET_VIEW */10661067typedef1068#include "vmware_pack_begin.h"1069struct SVGA3dCmdDXDestroyRenderTargetView {1070SVGA3dRenderTargetViewId renderTargetViewId;1071}1072#include "vmware_pack_end.h"1073SVGA3dCmdDXDestroyRenderTargetView;1074/* SVGA_3D_CMD_DX_DESTROY_RENDERTARGET_VIEW */10751076/*1077* Create Depth-stencil view flags1078* http://msdn.microsoft.com/en-us/library/windows/hardware/ff542167(v=vs.85).aspx1079*/1080#define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_DEPTH 0x011081#define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_STENCIL 0x021082#define SVGA3D_DXDSVIEW_CREATE_FLAG_MASK 0x031083typedef uint8 SVGA3DCreateDSViewFlags;10841085typedef1086#include "vmware_pack_begin.h"1087struct {1088SVGA3dSurfaceId sid;1089SVGA3dSurfaceFormat format;1090SVGA3dResourceType resourceDimension;1091uint32 mipSlice;1092uint32 firstArraySlice;1093uint32 arraySize;1094SVGA3DCreateDSViewFlags flags;1095uint8 pad0;1096uint16 pad1;1097uint32 pad2;1098}1099#include "vmware_pack_end.h"1100SVGACOTableDXDSViewEntry;11011102typedef1103#include "vmware_pack_begin.h"1104struct SVGA3dCmdDXDefineDepthStencilView {1105SVGA3dDepthStencilViewId depthStencilViewId;11061107SVGA3dSurfaceId sid;1108SVGA3dSurfaceFormat format;1109SVGA3dResourceType resourceDimension;1110uint32 mipSlice;1111uint32 firstArraySlice;1112uint32 arraySize;1113SVGA3DCreateDSViewFlags flags; /* D3D11DDIARG_CREATEDEPTHSTENCILVIEW */1114uint8 pad0;1115uint16 pad1;1116}1117#include "vmware_pack_end.h"1118SVGA3dCmdDXDefineDepthStencilView;1119/* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW */11201121typedef1122#include "vmware_pack_begin.h"1123struct SVGA3dCmdDXDestroyDepthStencilView {1124SVGA3dDepthStencilViewId depthStencilViewId;1125}1126#include "vmware_pack_end.h"1127SVGA3dCmdDXDestroyDepthStencilView;1128/* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW */11291130typedef1131#include "vmware_pack_begin.h"1132struct SVGA3dInputElementDesc {1133uint32 inputSlot;1134uint32 alignedByteOffset;1135SVGA3dSurfaceFormat format;1136SVGA3dInputClassification inputSlotClass;1137uint32 instanceDataStepRate;1138uint32 inputRegister;1139}1140#include "vmware_pack_end.h"1141SVGA3dInputElementDesc;11421143typedef1144#include "vmware_pack_begin.h"1145struct {1146uint32 elid;1147uint32 numDescs;1148SVGA3dInputElementDesc descs[32];1149uint32 pad[62];1150}1151#include "vmware_pack_end.h"1152SVGACOTableDXElementLayoutEntry;11531154typedef1155#include "vmware_pack_begin.h"1156struct SVGA3dCmdDXDefineElementLayout {1157SVGA3dElementLayoutId elementLayoutId;1158/* Followed by a variable number of SVGA3dInputElementDesc's. */1159}1160#include "vmware_pack_end.h"1161SVGA3dCmdDXDefineElementLayout;1162/* SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT */11631164typedef1165#include "vmware_pack_begin.h"1166struct SVGA3dCmdDXDestroyElementLayout {1167SVGA3dElementLayoutId elementLayoutId;1168}1169#include "vmware_pack_end.h"1170SVGA3dCmdDXDestroyElementLayout;1171/* SVGA_3D_CMD_DX_DESTROY_ELEMENTLAYOUT */117211731174#define SVGA3D_DX_MAX_RENDER_TARGETS 811751176typedef1177#include "vmware_pack_begin.h"1178struct SVGA3dDXBlendStatePerRT {1179uint8 blendEnable;1180uint8 srcBlend;1181uint8 destBlend;1182uint8 blendOp;1183uint8 srcBlendAlpha;1184uint8 destBlendAlpha;1185uint8 blendOpAlpha;1186SVGA3dColorWriteEnable renderTargetWriteMask;1187uint8 logicOpEnable;1188uint8 logicOp;1189uint16 pad0;1190}1191#include "vmware_pack_end.h"1192SVGA3dDXBlendStatePerRT;11931194typedef1195#include "vmware_pack_begin.h"1196struct {1197uint8 alphaToCoverageEnable;1198uint8 independentBlendEnable;1199uint16 pad0;1200SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS];1201uint32 pad1[7];1202}1203#include "vmware_pack_end.h"1204SVGACOTableDXBlendStateEntry;12051206/*1207* XXX - DX10 style (not 10.1 at this point)1208* XXX - For more information see1209* http://msdn.microsoft.com/en-us/library/ff541919%28v=VS.85%29.aspx1210*/1211typedef1212#include "vmware_pack_begin.h"1213struct SVGA3dCmdDXDefineBlendState {1214SVGA3dBlendStateId blendId;1215uint8 alphaToCoverageEnable;1216uint8 independentBlendEnable;1217uint16 pad0;1218SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS];1219}1220#include "vmware_pack_end.h"1221SVGA3dCmdDXDefineBlendState; /* SVGA_3D_CMD_DX_DEFINE_BLEND_STATE */12221223typedef1224#include "vmware_pack_begin.h"1225struct SVGA3dCmdDXDestroyBlendState {1226SVGA3dBlendStateId blendId;1227}1228#include "vmware_pack_end.h"1229SVGA3dCmdDXDestroyBlendState; /* SVGA_3D_CMD_DX_DESTROY_BLEND_STATE */12301231typedef1232#include "vmware_pack_begin.h"1233struct {1234uint8 depthEnable;1235SVGA3dDepthWriteMask depthWriteMask;1236SVGA3dComparisonFunc depthFunc;1237uint8 stencilEnable;1238uint8 frontEnable;1239uint8 backEnable;1240uint8 stencilReadMask;1241uint8 stencilWriteMask;12421243uint8 frontStencilFailOp;1244uint8 frontStencilDepthFailOp;1245uint8 frontStencilPassOp;1246SVGA3dComparisonFunc frontStencilFunc;12471248uint8 backStencilFailOp;1249uint8 backStencilDepthFailOp;1250uint8 backStencilPassOp;1251SVGA3dComparisonFunc backStencilFunc;1252}1253#include "vmware_pack_end.h"1254SVGACOTableDXDepthStencilEntry;12551256/*1257* XXX - For more information see1258* http://msdn.microsoft.com/en-us/library/ff541944%28v=VS.85%29.aspx1259*/1260typedef1261#include "vmware_pack_begin.h"1262struct SVGA3dCmdDXDefineDepthStencilState {1263SVGA3dDepthStencilStateId depthStencilId;12641265uint8 depthEnable;1266SVGA3dDepthWriteMask depthWriteMask;1267SVGA3dComparisonFunc depthFunc;1268uint8 stencilEnable;1269uint8 frontEnable;1270uint8 backEnable;1271uint8 stencilReadMask;1272uint8 stencilWriteMask;12731274uint8 frontStencilFailOp;1275uint8 frontStencilDepthFailOp;1276uint8 frontStencilPassOp;1277SVGA3dComparisonFunc frontStencilFunc;12781279uint8 backStencilFailOp;1280uint8 backStencilDepthFailOp;1281uint8 backStencilPassOp;1282SVGA3dComparisonFunc backStencilFunc;1283}1284#include "vmware_pack_end.h"1285SVGA3dCmdDXDefineDepthStencilState;1286/* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_STATE */12871288typedef1289#include "vmware_pack_begin.h"1290struct SVGA3dCmdDXDestroyDepthStencilState {1291SVGA3dDepthStencilStateId depthStencilId;1292}1293#include "vmware_pack_end.h"1294SVGA3dCmdDXDestroyDepthStencilState;1295/* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_STATE */12961297typedef1298#include "vmware_pack_begin.h"1299struct {1300uint8 fillMode;1301SVGA3dCullMode cullMode;1302uint8 frontCounterClockwise;1303uint8 provokingVertexLast;1304int32 depthBias;1305float depthBiasClamp;1306float slopeScaledDepthBias;1307uint8 depthClipEnable;1308uint8 scissorEnable;1309SVGA3dMultisampleEnable multisampleEnable;1310uint8 antialiasedLineEnable;1311float lineWidth;1312uint8 lineStippleEnable;1313uint8 lineStippleFactor;1314uint16 lineStipplePattern;1315uint32 forcedSampleCount;1316}1317#include "vmware_pack_end.h"1318SVGACOTableDXRasterizerStateEntry;13191320/*1321* XXX - For more information see1322* http://msdn.microsoft.com/en-us/library/ff541988%28v=VS.85%29.aspx1323*/1324typedef1325#include "vmware_pack_begin.h"1326struct SVGA3dCmdDXDefineRasterizerState {1327SVGA3dRasterizerStateId rasterizerId;13281329uint8 fillMode;1330SVGA3dCullMode cullMode;1331uint8 frontCounterClockwise;1332uint8 provokingVertexLast;1333int32 depthBias;1334float depthBiasClamp;1335float slopeScaledDepthBias;1336uint8 depthClipEnable;1337uint8 scissorEnable;1338SVGA3dMultisampleEnable multisampleEnable;1339uint8 antialiasedLineEnable;1340float lineWidth;1341uint8 lineStippleEnable;1342uint8 lineStippleFactor;1343uint16 lineStipplePattern;1344}1345#include "vmware_pack_end.h"1346SVGA3dCmdDXDefineRasterizerState;1347/* SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE */13481349typedef1350#include "vmware_pack_begin.h"1351struct SVGA3dCmdDXDestroyRasterizerState {1352SVGA3dRasterizerStateId rasterizerId;1353}1354#include "vmware_pack_end.h"1355SVGA3dCmdDXDestroyRasterizerState;1356/* SVGA_3D_CMD_DX_DESTROY_RASTERIZER_STATE */13571358typedef1359#include "vmware_pack_begin.h"1360struct {1361SVGA3dFilter filter;1362uint8 addressU;1363uint8 addressV;1364uint8 addressW;1365uint8 pad0;1366float mipLODBias;1367uint8 maxAnisotropy;1368SVGA3dComparisonFunc comparisonFunc;1369uint16 pad1;1370SVGA3dRGBAFloat borderColor;1371float minLOD;1372float maxLOD;1373uint32 pad2[6];1374}1375#include "vmware_pack_end.h"1376SVGACOTableDXSamplerEntry;13771378/*1379* XXX - For more information see1380* http://msdn.microsoft.com/en-us/library/ff542011%28v=VS.85%29.aspx1381*/1382typedef1383#include "vmware_pack_begin.h"1384struct SVGA3dCmdDXDefineSamplerState {1385SVGA3dSamplerId samplerId;1386SVGA3dFilter filter;1387uint8 addressU;1388uint8 addressV;1389uint8 addressW;1390uint8 pad0;1391float mipLODBias;1392uint8 maxAnisotropy;1393SVGA3dComparisonFunc comparisonFunc;1394uint16 pad1;1395SVGA3dRGBAFloat borderColor;1396float minLOD;1397float maxLOD;1398}1399#include "vmware_pack_end.h"1400SVGA3dCmdDXDefineSamplerState; /* SVGA_3D_CMD_DX_DEFINE_SAMPLER_STATE */14011402typedef1403#include "vmware_pack_begin.h"1404struct SVGA3dCmdDXDestroySamplerState {1405SVGA3dSamplerId samplerId;1406}1407#include "vmware_pack_end.h"1408SVGA3dCmdDXDestroySamplerState; /* SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE */140914101411#define SVGADX_SIGNATURE_SEMANTIC_NAME_UNDEFINED 01412#define SVGADX_SIGNATURE_SEMANTIC_NAME_POSITION 11413#define SVGADX_SIGNATURE_SEMANTIC_NAME_CLIP_DISTANCE 21414#define SVGADX_SIGNATURE_SEMANTIC_NAME_CULL_DISTANCE 31415#define SVGADX_SIGNATURE_SEMANTIC_NAME_RENDER_TARGET_ARRAY_INDEX 41416#define SVGADX_SIGNATURE_SEMANTIC_NAME_VIEWPORT_ARRAY_INDEX 51417#define SVGADX_SIGNATURE_SEMANTIC_NAME_VERTEX_ID 61418#define SVGADX_SIGNATURE_SEMANTIC_NAME_PRIMITIVE_ID 71419#define SVGADX_SIGNATURE_SEMANTIC_NAME_INSTANCE_ID 81420#define SVGADX_SIGNATURE_SEMANTIC_NAME_IS_FRONT_FACE 91421#define SVGADX_SIGNATURE_SEMANTIC_NAME_SAMPLE_INDEX 101422#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_EQ_0_EDGE_TESSFACTOR 111423#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_EQ_0_EDGE_TESSFACTOR 121424#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_EQ_1_EDGE_TESSFACTOR 131425#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_EQ_1_EDGE_TESSFACTOR 141426#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_INSIDE_TESSFACTOR 151427#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_INSIDE_TESSFACTOR 161428#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_U_EQ_0_EDGE_TESSFACTOR 171429#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_V_EQ_0_EDGE_TESSFACTOR 181430#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_W_EQ_0_EDGE_TESSFACTOR 191431#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_INSIDE_TESSFACTOR 201432#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_LINE_DETAIL_TESSFACTOR 211433#define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_LINE_DENSITY_TESSFACTOR 221434#define SVGADX_SIGNATURE_SEMANTIC_NAME_MAX 231435typedef uint32 SVGA3dDXSignatureSemanticName;14361437#define SVGADX_SIGNATURE_REGISTER_COMPONENT_UNKNOWN 01438typedef uint32 SVGA3dDXSignatureRegisterComponentType;14391440#define SVGADX_SIGNATURE_MIN_PRECISION_DEFAULT 01441typedef uint32 SVGA3dDXSignatureMinPrecision;14421443typedef1444#include "vmware_pack_begin.h"1445struct SVGA3dDXSignatureEntry {1446uint32 registerIndex;1447SVGA3dDXSignatureSemanticName semanticName;1448uint32 mask; /* Lower 4 bits represent X, Y, Z, W channels */1449SVGA3dDXSignatureRegisterComponentType componentType;1450SVGA3dDXSignatureMinPrecision minPrecision;1451}1452#include "vmware_pack_end.h"1453SVGA3dDXShaderSignatureEntry;14541455#define SVGADX_SIGNATURE_HEADER_VERSION_0 0x08a92d1214561457/*1458* The SVGA3dDXSignatureHeader structure is added after the shader1459* body in the mob that is bound to the shader. It is followed by the1460* specified number of SVGA3dDXSignatureEntry structures for each of1461* the three types of signatures in the order (input, output, patch1462* constants).1463*/1464typedef1465#include "vmware_pack_begin.h"1466struct SVGA3dDXSignatureHeader {1467uint32 headerVersion;1468uint32 numInputSignatures;1469uint32 numOutputSignatures;1470uint32 numPatchConstantSignatures;1471}1472#include "vmware_pack_end.h"1473SVGA3dDXShaderSignatureHeader;147414751476typedef1477#include "vmware_pack_begin.h"1478struct SVGA3dCmdDXDefineShader {1479SVGA3dShaderId shaderId;1480SVGA3dShaderType type;1481uint32 sizeInBytes; /* Number of bytes of shader text. */1482}1483#include "vmware_pack_end.h"1484SVGA3dCmdDXDefineShader; /* SVGA_3D_CMD_DX_DEFINE_SHADER */14851486typedef1487#include "vmware_pack_begin.h"1488struct SVGACOTableDXShaderEntry {1489SVGA3dShaderType type;1490uint32 sizeInBytes;1491uint32 offsetInBytes;1492SVGAMobId mobid;1493uint32 pad[4];1494}1495#include "vmware_pack_end.h"1496SVGACOTableDXShaderEntry;14971498typedef1499#include "vmware_pack_begin.h"1500struct SVGA3dCmdDXDestroyShader {1501SVGA3dShaderId shaderId;1502}1503#include "vmware_pack_end.h"1504SVGA3dCmdDXDestroyShader; /* SVGA_3D_CMD_DX_DESTROY_SHADER */15051506typedef1507#include "vmware_pack_begin.h"1508struct SVGA3dCmdDXBindShader {1509uint32 cid;1510uint32 shid;1511SVGAMobId mobid;1512uint32 offsetInBytes;1513}1514#include "vmware_pack_end.h"1515SVGA3dCmdDXBindShader; /* SVGA_3D_CMD_DX_BIND_SHADER */15161517typedef1518#include "vmware_pack_begin.h"1519struct SVGA3dCmdDXBindAllShader {1520uint32 cid;1521SVGAMobId mobid;1522}1523#include "vmware_pack_end.h"1524SVGA3dCmdDXBindAllShader; /* SVGA_3D_CMD_DX_BIND_ALL_SHADER */15251526typedef1527#include "vmware_pack_begin.h"1528struct SVGA3dCmdDXCondBindAllShader {1529uint32 cid;1530SVGAMobId testMobid;1531SVGAMobId mobid;1532}1533#include "vmware_pack_end.h"1534SVGA3dCmdDXCondBindAllShader; /* SVGA_3D_CMD_DX_COND_BIND_ALL_SHADER */15351536/*1537* The maximum number of streamout decl's in each streamout entry.1538*/1539#define SVGA3D_MAX_DX10_STREAMOUT_DECLS 641540#define SVGA3D_MAX_STREAMOUT_DECLS 51215411542typedef1543#include "vmware_pack_begin.h"1544struct SVGA3dStreamOutputDeclarationEntry {1545uint32 outputSlot;1546uint32 registerIndex;1547uint8 registerMask;1548uint8 pad0;1549uint16 pad1;1550uint32 stream;1551}1552#include "vmware_pack_end.h"1553SVGA3dStreamOutputDeclarationEntry;15541555typedef1556#include "vmware_pack_begin.h"1557struct SVGAOTableStreamOutputEntry {1558uint32 numOutputStreamEntries;1559SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_DX10_STREAMOUT_DECLS];1560uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];1561uint32 rasterizedStream;1562uint32 numOutputStreamStrides;1563uint32 mobid;1564uint32 offsetInBytes;1565uint8 usesMob;1566uint8 pad0;1567uint16 pad1;1568uint32 pad2[246];1569}1570#include "vmware_pack_end.h"1571SVGACOTableDXStreamOutputEntry;15721573typedef1574#include "vmware_pack_begin.h"1575struct SVGA3dCmdDXDefineStreamOutput {1576SVGA3dStreamOutputId soid;1577uint32 numOutputStreamEntries;1578SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_DX10_STREAMOUT_DECLS];1579uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];1580uint32 rasterizedStream;1581}1582#include "vmware_pack_end.h"1583SVGA3dCmdDXDefineStreamOutput; /* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT */15841585/*1586* Version 2 needed in order to start validating and using the1587* rasterizedStream field. Unfortunately the device wasn't validating1588* or using this field and the driver wasn't initializing it in shipped1589* code, so a new version of the command is needed to allow that code1590* to continue to work. Also added new numOutputStreamStrides field.1591*/15921593#define SVGA3D_DX_SO_NO_RASTERIZED_STREAM 0xFFFFFFFF15941595typedef1596#include "vmware_pack_begin.h"1597struct SVGA3dCmdDXDefineStreamOutputWithMob {1598SVGA3dStreamOutputId soid;1599uint32 numOutputStreamEntries;1600uint32 numOutputStreamStrides;1601uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];1602uint32 rasterizedStream;1603}1604#include "vmware_pack_end.h"1605SVGA3dCmdDXDefineStreamOutputWithMob;1606/* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT_WITH_MOB */16071608typedef1609#include "vmware_pack_begin.h"1610struct SVGA3dCmdDXBindStreamOutput {1611SVGA3dStreamOutputId soid;1612uint32 mobid;1613uint32 offsetInBytes;1614uint32 sizeInBytes;1615}1616#include "vmware_pack_end.h"1617SVGA3dCmdDXBindStreamOutput; /* SVGA_3D_CMD_DX_BIND_STREAMOUTPUT */16181619typedef1620#include "vmware_pack_begin.h"1621struct SVGA3dCmdDXDestroyStreamOutput {1622SVGA3dStreamOutputId soid;1623}1624#include "vmware_pack_end.h"1625SVGA3dCmdDXDestroyStreamOutput; /* SVGA_3D_CMD_DX_DESTROY_STREAMOUTPUT */16261627typedef1628#include "vmware_pack_begin.h"1629struct SVGA3dCmdDXSetStreamOutput {1630SVGA3dStreamOutputId soid;1631}1632#include "vmware_pack_end.h"1633SVGA3dCmdDXSetStreamOutput; /* SVGA_3D_CMD_DX_SET_STREAMOUTPUT */16341635typedef1636#include "vmware_pack_begin.h"1637struct SVGA3dCmdDXSetMinLOD {1638SVGA3dSurfaceId sid;1639float minLOD;1640}1641#include "vmware_pack_end.h"1642SVGA3dCmdDXSetMinLOD; /* SVGA_3D_CMD_DX_SET_MIN_LOD */16431644typedef1645#include "vmware_pack_begin.h"1646struct {1647uint64 value;1648uint32 mobId;1649uint32 mobOffset;1650}1651#include "vmware_pack_end.h"1652SVGA3dCmdDXMobFence64; /* SVGA_3D_CMD_DX_MOB_FENCE_64 */16531654/*1655* SVGA3dCmdSetCOTable --1656*1657* This command allows the guest to bind a mob to a context-object table.1658*/1659typedef1660#include "vmware_pack_begin.h"1661struct SVGA3dCmdDXSetCOTable {1662uint32 cid;1663uint32 mobid;1664SVGACOTableType type;1665uint32 validSizeInBytes;1666}1667#include "vmware_pack_end.h"1668SVGA3dCmdDXSetCOTable; /* SVGA_3D_CMD_DX_SET_COTABLE */16691670/*1671* Guests using SVGA_3D_CMD_DX_GROW_COTABLE are promising that1672* the new COTable contains the same contents as the old one, except possibly1673* for some new invalid entries at the end.1674*1675* If there is an old cotable mob bound, it also has to still be valid.1676*1677* (Otherwise, guests should use the DXSetCOTableBase command.)1678*/1679typedef1680#include "vmware_pack_begin.h"1681struct SVGA3dCmdDXGrowCOTable {1682uint32 cid;1683uint32 mobid;1684SVGACOTableType type;1685uint32 validSizeInBytes;1686}1687#include "vmware_pack_end.h"1688SVGA3dCmdDXGrowCOTable; /* SVGA_3D_CMD_DX_GROW_COTABLE */16891690typedef1691#include "vmware_pack_begin.h"1692struct SVGA3dCmdDXReadbackCOTable {1693uint32 cid;1694SVGACOTableType type;1695}1696#include "vmware_pack_end.h"1697SVGA3dCmdDXReadbackCOTable; /* SVGA_3D_CMD_DX_READBACK_COTABLE */16981699typedef1700#include "vmware_pack_begin.h"1701struct SVGA3dCOTableData {1702uint32 mobid;1703}1704#include "vmware_pack_end.h"1705SVGA3dCOTableData;17061707typedef1708#include "vmware_pack_begin.h"1709struct SVGA3dBufferBinding {1710uint32 bufferId;1711uint32 stride;1712uint32 offset;1713}1714#include "vmware_pack_end.h"1715SVGA3dBufferBinding;17161717typedef1718#include "vmware_pack_begin.h"1719struct SVGA3dConstantBufferBinding {1720uint32 sid;1721uint32 offsetInBytes;1722uint32 sizeInBytes;1723}1724#include "vmware_pack_end.h"1725SVGA3dConstantBufferBinding;17261727typedef1728#include "vmware_pack_begin.h"1729struct SVGADXInputAssemblyMobFormat {1730uint32 layoutId;1731SVGA3dBufferBinding vertexBuffers[SVGA3D_DX_MAX_VERTEXBUFFERS];1732uint32 indexBufferSid;1733uint32 pad;1734uint32 indexBufferOffset;1735uint32 indexBufferFormat;1736uint32 topology;1737}1738#include "vmware_pack_end.h"1739SVGADXInputAssemblyMobFormat;17401741typedef1742#include "vmware_pack_begin.h"1743struct SVGADXContextMobFormat {1744SVGADXInputAssemblyMobFormat inputAssembly;17451746struct {1747uint32 blendStateId;1748uint32 blendFactor[4];1749uint32 sampleMask;1750uint32 depthStencilStateId;1751uint32 stencilRef;1752uint32 rasterizerStateId;1753uint32 depthStencilViewId;1754uint32 renderTargetViewIds[SVGA3D_MAX_SIMULTANEOUS_RENDER_TARGETS];1755uint32 unorderedAccessViewIds[SVGA3D_MAX_UAVIEWS];1756} renderState;17571758struct {1759uint32 targets[SVGA3D_DX_MAX_SOTARGETS];1760uint32 soid;1761} streamOut;1762uint32 pad0[11];17631764uint8 numViewports;1765uint8 numScissorRects;1766uint16 pad1[1];17671768uint32 pad2[3];17691770SVGA3dViewport viewports[SVGA3D_DX_MAX_VIEWPORTS];1771uint32 pad3[32];17721773SVGASignedRect scissorRects[SVGA3D_DX_MAX_SCISSORRECTS];1774uint32 pad4[64];17751776struct {1777uint32 queryID;1778uint32 value;1779} predication;1780uint32 pad5[2];17811782struct {1783uint32 shaderId;1784SVGA3dConstantBufferBinding constantBuffers[SVGA3D_DX_MAX_CONSTBUFFERS];1785uint32 shaderResources[SVGA3D_DX_MAX_SRVIEWS];1786uint32 samplers[SVGA3D_DX_MAX_SAMPLERS];1787} shaderState[SVGA3D_NUM_SHADERTYPE];1788uint32 pad6[26];17891790SVGA3dQueryId queryID[SVGA3D_MAX_QUERY];17911792SVGA3dCOTableData cotables[SVGA_COTABLE_MAX];1793uint32 pad7[380];1794}1795#include "vmware_pack_end.h"1796SVGADXContextMobFormat;17971798#endif // _SVGA3D_DX_H_179918001801