| /* SPDX-License-Identifier: GPL-2.0 OR MIT */ |
| /* |
| * Copyright 2012-2021 VMware, Inc. |
| * |
| * Permission is hereby granted, free of charge, to any person |
| * obtaining a copy of this software and associated documentation |
| * files (the "Software"), to deal in the Software without |
| * restriction, including without limitation the rights to use, copy, |
| * modify, merge, publish, distribute, sublicense, and/or sell copies |
| * of the Software, and to permit persons to whom the Software is |
| * furnished to do so, subject to the following conditions: |
| * |
| * The above copyright notice and this permission notice shall be |
| * included in all copies or substantial portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
| * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
| * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| * SOFTWARE. |
| * |
| */ |
| |
| /* |
| * svga3d_dx.h -- |
| * |
| * SVGA 3d hardware definitions for DX10 support. |
| */ |
| |
| |
| |
| #ifndef _SVGA3D_DX_H_ |
| #define _SVGA3D_DX_H_ |
| |
| #include "svga_reg.h" |
| #include "svga3d_limits.h" |
| #include "svga3d_types.h" |
| |
| #define SVGA3D_INPUT_MIN 0 |
| #define SVGA3D_INPUT_PER_VERTEX_DATA 0 |
| #define SVGA3D_INPUT_PER_INSTANCE_DATA 1 |
| #define SVGA3D_INPUT_MAX 2 |
| typedef uint32 SVGA3dInputClassification; |
| |
| #define SVGA3D_COLOR_WRITE_ENABLE_RED (1 << 0) |
| #define SVGA3D_COLOR_WRITE_ENABLE_GREEN (1 << 1) |
| #define SVGA3D_COLOR_WRITE_ENABLE_BLUE (1 << 2) |
| #define SVGA3D_COLOR_WRITE_ENABLE_ALPHA (1 << 3) |
| #define SVGA3D_COLOR_WRITE_ENABLE_ALL \ |
| (SVGA3D_COLOR_WRITE_ENABLE_RED | SVGA3D_COLOR_WRITE_ENABLE_GREEN | \ |
| SVGA3D_COLOR_WRITE_ENABLE_BLUE | SVGA3D_COLOR_WRITE_ENABLE_ALPHA) |
| typedef uint8 SVGA3dColorWriteEnable; |
| |
| #define SVGA3D_DEPTH_WRITE_MASK_ZERO 0 |
| #define SVGA3D_DEPTH_WRITE_MASK_ALL 1 |
| typedef uint8 SVGA3dDepthWriteMask; |
| |
| #define SVGA3D_FILTER_MIP_LINEAR (1 << 0) |
| #define SVGA3D_FILTER_MAG_LINEAR (1 << 2) |
| #define SVGA3D_FILTER_MIN_LINEAR (1 << 4) |
| #define SVGA3D_FILTER_ANISOTROPIC (1 << 6) |
| #define SVGA3D_FILTER_COMPARE (1 << 7) |
| typedef uint32 SVGA3dFilter; |
| |
| #define SVGA3D_CULL_INVALID 0 |
| #define SVGA3D_CULL_MIN 1 |
| #define SVGA3D_CULL_NONE 1 |
| #define SVGA3D_CULL_FRONT 2 |
| #define SVGA3D_CULL_BACK 3 |
| #define SVGA3D_CULL_MAX 4 |
| typedef uint8 SVGA3dCullMode; |
| |
| #define SVGA3D_COMPARISON_INVALID 0 |
| #define SVGA3D_COMPARISON_MIN 1 |
| #define SVGA3D_COMPARISON_NEVER 1 |
| #define SVGA3D_COMPARISON_LESS 2 |
| #define SVGA3D_COMPARISON_EQUAL 3 |
| #define SVGA3D_COMPARISON_LESS_EQUAL 4 |
| #define SVGA3D_COMPARISON_GREATER 5 |
| #define SVGA3D_COMPARISON_NOT_EQUAL 6 |
| #define SVGA3D_COMPARISON_GREATER_EQUAL 7 |
| #define SVGA3D_COMPARISON_ALWAYS 8 |
| #define SVGA3D_COMPARISON_MAX 9 |
| typedef uint8 SVGA3dComparisonFunc; |
| |
| #define SVGA3D_MULTISAMPLE_RAST_DISABLE 0 |
| #define SVGA3D_MULTISAMPLE_RAST_ENABLE 1 |
| #define SVGA3D_MULTISAMPLE_RAST_DX_MAX 1 |
| #define SVGA3D_MULTISAMPLE_RAST_DISABLE_LINE 2 |
| #define SVGA3D_MULTISAMPLE_RAST_MAX 2 |
| typedef uint8 SVGA3dMultisampleRastEnable; |
| |
| #define SVGA3D_DX_MAX_VERTEXBUFFERS 32 |
| #define SVGA3D_DX_MAX_VERTEXINPUTREGISTERS 16 |
| #define SVGA3D_DX_SM41_MAX_VERTEXINPUTREGISTERS 32 |
| #define SVGA3D_DX_MAX_SOTARGETS 4 |
| #define SVGA3D_DX_MAX_SRVIEWS 128 |
| #define SVGA3D_DX_MAX_CONSTBUFFERS 16 |
| #define SVGA3D_DX_MAX_SAMPLERS 16 |
| #define SVGA3D_DX_MAX_CLASS_INSTANCES 253 |
| |
| #define SVGA3D_DX_MAX_CONSTBUF_BINDING_SIZE (4096 * 4 * (uint32)sizeof(uint32)) |
| |
| typedef uint32 SVGA3dShaderResourceViewId; |
| typedef uint32 SVGA3dRenderTargetViewId; |
| typedef uint32 SVGA3dDepthStencilViewId; |
| typedef uint32 SVGA3dUAViewId; |
| |
| typedef uint32 SVGA3dShaderId; |
| typedef uint32 SVGA3dElementLayoutId; |
| typedef uint32 SVGA3dSamplerId; |
| typedef uint32 SVGA3dBlendStateId; |
| typedef uint32 SVGA3dDepthStencilStateId; |
| typedef uint32 SVGA3dRasterizerStateId; |
| typedef uint32 SVGA3dQueryId; |
| typedef uint32 SVGA3dStreamOutputId; |
| |
| typedef union { |
| struct { |
| uint32 r; |
| uint32 g; |
| uint32 b; |
| uint32 a; |
| }; |
| |
| uint32 value[4]; |
| } SVGA3dRGBAUint32; |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| uint32 cid; |
| SVGAMobId mobid; |
| } SVGAOTableDXContextEntry; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineContext { |
| uint32 cid; |
| } SVGA3dCmdDXDefineContext; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDestroyContext { |
| uint32 cid; |
| } SVGA3dCmdDXDestroyContext; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXBindContext { |
| uint32 cid; |
| SVGAMobId mobid; |
| uint32 validContents; |
| } SVGA3dCmdDXBindContext; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXReadbackContext { |
| uint32 cid; |
| } SVGA3dCmdDXReadbackContext; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXInvalidateContext { |
| uint32 cid; |
| } SVGA3dCmdDXInvalidateContext; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetSingleConstantBuffer { |
| uint32 slot; |
| SVGA3dShaderType type; |
| SVGA3dSurfaceId sid; |
| uint32 offsetInBytes; |
| uint32 sizeInBytes; |
| } SVGA3dCmdDXSetSingleConstantBuffer; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetShaderResources { |
| uint32 startView; |
| SVGA3dShaderType type; |
| |
| } SVGA3dCmdDXSetShaderResources; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetShader { |
| SVGA3dShaderId shaderId; |
| SVGA3dShaderType type; |
| } SVGA3dCmdDXSetShader; |
| #pragma pack(pop) |
| |
| typedef union { |
| struct { |
| uint32 cbOffset : 12; |
| uint32 cbId : 4; |
| uint32 baseSamp : 4; |
| uint32 baseTex : 7; |
| uint32 reserved : 5; |
| }; |
| uint32 value; |
| } SVGA3dIfaceData; |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetShaderIface { |
| SVGA3dShaderType type; |
| uint32 numClassInstances; |
| uint32 index; |
| uint32 iface; |
| SVGA3dIfaceData data; |
| } SVGA3dCmdDXSetShaderIface; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXBindShaderIface { |
| uint32 cid; |
| SVGAMobId mobid; |
| uint32 offsetInBytes; |
| } SVGA3dCmdDXBindShaderIface; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetSamplers { |
| uint32 startSampler; |
| SVGA3dShaderType type; |
| |
| } SVGA3dCmdDXSetSamplers; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDraw { |
| uint32 vertexCount; |
| uint32 startVertexLocation; |
| } SVGA3dCmdDXDraw; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDrawIndexed { |
| uint32 indexCount; |
| uint32 startIndexLocation; |
| int32 baseVertexLocation; |
| } SVGA3dCmdDXDrawIndexed; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDrawInstanced { |
| uint32 vertexCountPerInstance; |
| uint32 instanceCount; |
| uint32 startVertexLocation; |
| uint32 startInstanceLocation; |
| } SVGA3dCmdDXDrawInstanced; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDrawIndexedInstanced { |
| uint32 indexCountPerInstance; |
| uint32 instanceCount; |
| uint32 startIndexLocation; |
| int32 baseVertexLocation; |
| uint32 startInstanceLocation; |
| } SVGA3dCmdDXDrawIndexedInstanced; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDrawIndexedInstancedIndirect { |
| SVGA3dSurfaceId argsBufferSid; |
| uint32 byteOffsetForArgs; |
| } SVGA3dCmdDXDrawIndexedInstancedIndirect; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDrawInstancedIndirect { |
| SVGA3dSurfaceId argsBufferSid; |
| uint32 byteOffsetForArgs; |
| } SVGA3dCmdDXDrawInstancedIndirect; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDrawAuto { |
| uint32 pad0; |
| } SVGA3dCmdDXDrawAuto; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDispatch { |
| uint32 threadGroupCountX; |
| uint32 threadGroupCountY; |
| uint32 threadGroupCountZ; |
| } SVGA3dCmdDXDispatch; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDispatchIndirect { |
| SVGA3dSurfaceId argsBufferSid; |
| uint32 byteOffsetForArgs; |
| } SVGA3dCmdDXDispatchIndirect; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetInputLayout { |
| SVGA3dElementLayoutId elementLayoutId; |
| } SVGA3dCmdDXSetInputLayout; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dVertexBuffer { |
| SVGA3dSurfaceId sid; |
| uint32 stride; |
| uint32 offset; |
| } SVGA3dVertexBuffer; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetVertexBuffers { |
| uint32 startBuffer; |
| |
| } SVGA3dCmdDXSetVertexBuffers; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dVertexBuffer_v2 { |
| SVGA3dSurfaceId sid; |
| uint32 stride; |
| uint32 offset; |
| uint32 sizeInBytes; |
| } SVGA3dVertexBuffer_v2; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetVertexBuffers_v2 { |
| uint32 startBuffer; |
| |
| } SVGA3dCmdDXSetVertexBuffers_v2; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dVertexBufferOffsetAndSize { |
| uint32 stride; |
| uint32 offset; |
| uint32 sizeInBytes; |
| } SVGA3dVertexBufferOffsetAndSize; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetVertexBuffersOffsetAndSize { |
| uint32 startBuffer; |
| |
| } SVGA3dCmdDXSetVertexBuffersOffsetAndSize; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetIndexBuffer { |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| uint32 offset; |
| } SVGA3dCmdDXSetIndexBuffer; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetIndexBuffer_v2 { |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| uint32 offset; |
| uint32 sizeInBytes; |
| } SVGA3dCmdDXSetIndexBuffer_v2; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetIndexBufferOffsetAndSize { |
| SVGA3dSurfaceFormat format; |
| uint32 offset; |
| uint32 sizeInBytes; |
| } SVGA3dCmdDXSetIndexBufferOffsetAndSize; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetTopology { |
| SVGA3dPrimitiveType topology; |
| } SVGA3dCmdDXSetTopology; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetRenderTargets { |
| SVGA3dDepthStencilViewId depthStencilViewId; |
| |
| } SVGA3dCmdDXSetRenderTargets; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetBlendState { |
| SVGA3dBlendStateId blendId; |
| float blendFactor[4]; |
| uint32 sampleMask; |
| } SVGA3dCmdDXSetBlendState; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetDepthStencilState { |
| SVGA3dDepthStencilStateId depthStencilId; |
| uint32 stencilRef; |
| } SVGA3dCmdDXSetDepthStencilState; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetRasterizerState { |
| SVGA3dRasterizerStateId rasterizerId; |
| } SVGA3dCmdDXSetRasterizerState; |
| #pragma pack(pop) |
| |
| #define SVGA3D_DXQUERY_FLAG_PREDICATEHINT (1 << 0) |
| typedef uint32 SVGA3dDXQueryFlags; |
| |
| #define SVGADX_QDSTATE_INVALID ((uint8)-1) |
| #define SVGADX_QDSTATE_MIN 0 |
| #define SVGADX_QDSTATE_IDLE 0 |
| #define SVGADX_QDSTATE_ACTIVE 1 |
| #define SVGADX_QDSTATE_PENDING 2 |
| #define SVGADX_QDSTATE_FINISHED 3 |
| #define SVGADX_QDSTATE_MAX 4 |
| typedef uint8 SVGADXQueryDeviceState; |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| SVGA3dQueryTypeUint8 type; |
| uint16 pad0; |
| SVGADXQueryDeviceState state; |
| SVGA3dDXQueryFlags flags; |
| SVGAMobId mobid; |
| uint32 offset; |
| } SVGACOTableDXQueryEntry; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineQuery { |
| SVGA3dQueryId queryId; |
| SVGA3dQueryType type; |
| SVGA3dDXQueryFlags flags; |
| } SVGA3dCmdDXDefineQuery; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDestroyQuery { |
| SVGA3dQueryId queryId; |
| } SVGA3dCmdDXDestroyQuery; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXBindQuery { |
| SVGA3dQueryId queryId; |
| SVGAMobId mobid; |
| } SVGA3dCmdDXBindQuery; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetQueryOffset { |
| SVGA3dQueryId queryId; |
| uint32 mobOffset; |
| } SVGA3dCmdDXSetQueryOffset; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXBeginQuery { |
| SVGA3dQueryId queryId; |
| } SVGA3dCmdDXBeginQuery; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXEndQuery { |
| SVGA3dQueryId queryId; |
| } SVGA3dCmdDXEndQuery; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXReadbackQuery { |
| SVGA3dQueryId queryId; |
| } SVGA3dCmdDXReadbackQuery; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXMoveQuery { |
| SVGA3dQueryId queryId; |
| SVGAMobId mobid; |
| uint32 mobOffset; |
| } SVGA3dCmdDXMoveQuery; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXBindAllQuery { |
| uint32 cid; |
| SVGAMobId mobid; |
| } SVGA3dCmdDXBindAllQuery; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXReadbackAllQuery { |
| uint32 cid; |
| } SVGA3dCmdDXReadbackAllQuery; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetPredication { |
| SVGA3dQueryId queryId; |
| uint32 predicateValue; |
| } SVGA3dCmdDXSetPredication; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dDXSOState { |
| uint32 offset; |
| uint32 intOffset; |
| uint32 dead1; |
| uint32 dead2; |
| } SVGA3dDXSOState; |
| #pragma pack(pop) |
| |
| #define SVGA3D_DX_SO_OFFSET_APPEND ((uint32)~0u) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dSoTarget { |
| SVGA3dSurfaceId sid; |
| uint32 offset; |
| uint32 sizeInBytes; |
| } SVGA3dSoTarget; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetSOTargets { |
| uint32 pad0; |
| |
| } SVGA3dCmdDXSetSOTargets; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dViewport { |
| float x; |
| float y; |
| float width; |
| float height; |
| float minDepth; |
| float maxDepth; |
| } SVGA3dViewport; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetViewports { |
| uint32 pad0; |
| |
| } SVGA3dCmdDXSetViewports; |
| #pragma pack(pop) |
| |
| #define SVGA3D_DX_MAX_VIEWPORTS 16 |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetScissorRects { |
| uint32 pad0; |
| |
| } SVGA3dCmdDXSetScissorRects; |
| #pragma pack(pop) |
| |
| #define SVGA3D_DX_MAX_SCISSORRECTS 16 |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXClearRenderTargetView { |
| SVGA3dRenderTargetViewId renderTargetViewId; |
| SVGA3dRGBAFloat rgba; |
| } SVGA3dCmdDXClearRenderTargetView; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXClearDepthStencilView { |
| uint16 flags; |
| uint16 stencil; |
| SVGA3dDepthStencilViewId depthStencilViewId; |
| float depth; |
| } SVGA3dCmdDXClearDepthStencilView; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXPredCopyRegion { |
| SVGA3dSurfaceId dstSid; |
| uint32 dstSubResource; |
| SVGA3dSurfaceId srcSid; |
| uint32 srcSubResource; |
| SVGA3dCopyBox box; |
| } SVGA3dCmdDXPredCopyRegion; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXPredStagingCopyRegion { |
| SVGA3dSurfaceId dstSid; |
| uint32 dstSubResource; |
| SVGA3dSurfaceId srcSid; |
| uint32 srcSubResource; |
| SVGA3dCopyBox box; |
| uint8 readback; |
| uint8 unsynchronized; |
| uint8 mustBeZero[2]; |
| } SVGA3dCmdDXPredStagingCopyRegion; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXPredCopy { |
| SVGA3dSurfaceId dstSid; |
| SVGA3dSurfaceId srcSid; |
| } SVGA3dCmdDXPredCopy; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXPredConvertRegion { |
| SVGA3dSurfaceId dstSid; |
| uint32 dstSubResource; |
| SVGA3dBox destBox; |
| SVGA3dSurfaceId srcSid; |
| uint32 srcSubResource; |
| SVGA3dBox srcBox; |
| } SVGA3dCmdDXPredConvertRegion; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXPredStagingConvertRegion { |
| SVGA3dSurfaceId dstSid; |
| uint32 dstSubResource; |
| SVGA3dBox destBox; |
| SVGA3dSurfaceId srcSid; |
| uint32 srcSubResource; |
| SVGA3dBox srcBox; |
| uint8 readback; |
| uint8 unsynchronized; |
| uint8 mustBeZero[2]; |
| } SVGA3dCmdDXPredStagingConvertRegion; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXPredConvert { |
| SVGA3dSurfaceId dstSid; |
| SVGA3dSurfaceId srcSid; |
| } SVGA3dCmdDXPredConvert; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXPredStagingConvert { |
| SVGA3dSurfaceId dstSid; |
| SVGA3dSurfaceId srcSid; |
| uint8 readback; |
| uint8 unsynchronized; |
| uint8 mustBeZero[2]; |
| } SVGA3dCmdDXPredStagingConvert; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXBufferCopy { |
| SVGA3dSurfaceId dest; |
| SVGA3dSurfaceId src; |
| uint32 destX; |
| uint32 srcX; |
| uint32 width; |
| } SVGA3dCmdDXBufferCopy; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXStagingBufferCopy { |
| SVGA3dSurfaceId dest; |
| SVGA3dSurfaceId src; |
| uint32 destX; |
| uint32 srcX; |
| uint32 width; |
| uint8 readback; |
| uint8 unsynchronized; |
| uint8 mustBeZero[2]; |
| } SVGA3dCmdDXStagingBufferCopy; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| SVGA3dSurfaceId dstSid; |
| uint32 dstSubResource; |
| SVGA3dSurfaceId srcSid; |
| uint32 srcSubResource; |
| SVGA3dSurfaceFormat copyFormat; |
| } SVGA3dCmdDXResolveCopy; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| SVGA3dSurfaceId dstSid; |
| uint32 dstSubResource; |
| SVGA3dSurfaceId srcSid; |
| uint32 srcSubResource; |
| SVGA3dSurfaceFormat copyFormat; |
| } SVGA3dCmdDXPredResolveCopy; |
| #pragma pack(pop) |
| |
| typedef uint32 SVGA3dDXPresentBltMode; |
| #define SVGADX_PRESENTBLT_LINEAR (1 << 0) |
| #define SVGADX_PRESENTBLT_FORCE_SRC_SRGB (1 << 1) |
| #define SVGADX_PRESENTBLT_FORCE_SRC_XRBIAS (1 << 2) |
| #define SVGADX_PRESENTBLT_MODE_MAX (1 << 3) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXPresentBlt { |
| SVGA3dSurfaceId srcSid; |
| uint32 srcSubResource; |
| SVGA3dSurfaceId dstSid; |
| uint32 destSubResource; |
| SVGA3dBox boxSrc; |
| SVGA3dBox boxDest; |
| SVGA3dDXPresentBltMode mode; |
| } SVGA3dCmdDXPresentBlt; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXGenMips { |
| SVGA3dShaderResourceViewId shaderResourceViewId; |
| } SVGA3dCmdDXGenMips; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXUpdateSubResource { |
| SVGA3dSurfaceId sid; |
| uint32 subResource; |
| SVGA3dBox box; |
| } SVGA3dCmdDXUpdateSubResource; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXReadbackSubResource { |
| SVGA3dSurfaceId sid; |
| uint32 subResource; |
| } SVGA3dCmdDXReadbackSubResource; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXInvalidateSubResource { |
| SVGA3dSurfaceId sid; |
| uint32 subResource; |
| } SVGA3dCmdDXInvalidateSubResource; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXTransferFromBuffer { |
| SVGA3dSurfaceId srcSid; |
| uint32 srcOffset; |
| uint32 srcPitch; |
| uint32 srcSlicePitch; |
| SVGA3dSurfaceId destSid; |
| uint32 destSubResource; |
| SVGA3dBox destBox; |
| } SVGA3dCmdDXTransferFromBuffer; |
| #pragma pack(pop) |
| |
| #define SVGA3D_TRANSFER_TO_BUFFER_READBACK (1 << 0) |
| #define SVGA3D_TRANSFER_TO_BUFFER_FLAGS_MASK (1 << 0) |
| typedef uint32 SVGA3dTransferToBufferFlags; |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXTransferToBuffer { |
| SVGA3dSurfaceId srcSid; |
| uint32 srcSubResource; |
| SVGA3dBox srcBox; |
| SVGA3dSurfaceId destSid; |
| uint32 destOffset; |
| uint32 destPitch; |
| uint32 destSlicePitch; |
| SVGA3dTransferToBufferFlags flags; |
| } SVGA3dCmdDXTransferToBuffer; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXPredTransferFromBuffer { |
| SVGA3dSurfaceId srcSid; |
| uint32 srcOffset; |
| uint32 srcPitch; |
| uint32 srcSlicePitch; |
| SVGA3dSurfaceId destSid; |
| uint32 destSubResource; |
| SVGA3dBox destBox; |
| } SVGA3dCmdDXPredTransferFromBuffer; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSurfaceCopyAndReadback { |
| SVGA3dSurfaceId srcSid; |
| SVGA3dSurfaceId destSid; |
| SVGA3dCopyBox box; |
| } SVGA3dCmdDXSurfaceCopyAndReadback; |
| #pragma pack(pop) |
| |
| typedef uint32 SVGADXHintId; |
| #define SVGA_DX_HINT_NONE 0 |
| #define SVGA_DX_HINT_PREFETCH_OBJECT 1 |
| #define SVGA_DX_HINT_PREEVICT_OBJECT 2 |
| #define SVGA_DX_HINT_PREFETCH_COBJECT 3 |
| #define SVGA_DX_HINT_PREEVICT_COBJECT 4 |
| #define SVGA_DX_HINT_MAX 5 |
| |
| #pragma pack(push, 1) |
| typedef struct SVGAObjectRef { |
| SVGAOTableType type; |
| uint32 id; |
| } SVGAObjectRef; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGACObjectRef { |
| SVGACOTableType type; |
| uint32 cid; |
| uint32 id; |
| } SVGACObjectRef; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXHint { |
| SVGADXHintId hintId; |
| |
| } SVGA3dCmdDXHint; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXBufferUpdate { |
| SVGA3dSurfaceId sid; |
| uint32 x; |
| uint32 width; |
| } SVGA3dCmdDXBufferUpdate; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetConstantBufferOffset { |
| uint32 slot; |
| uint32 offsetInBytes; |
| } SVGA3dCmdDXSetConstantBufferOffset; |
| #pragma pack(pop) |
| |
| typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetVSConstantBufferOffset; |
| |
| typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetPSConstantBufferOffset; |
| |
| typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetGSConstantBufferOffset; |
| |
| typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetHSConstantBufferOffset; |
| |
| typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetDSConstantBufferOffset; |
| |
| typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetCSConstantBufferOffset; |
| |
| #define SVGA3D_BUFFEREX_SRV_RAW (1 << 0) |
| #define SVGA3D_BUFFEREX_SRV_FLAGS_MAX (1 << 1) |
| #define SVGA3D_BUFFEREX_SRV_FLAGS_MASK (SVGA3D_BUFFEREX_SRV_FLAGS_MAX - 1) |
| typedef uint32 SVGA3dBufferExFlags; |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| union { |
| struct { |
| uint32 firstElement; |
| uint32 numElements; |
| uint32 pad0; |
| uint32 pad1; |
| } buffer; |
| struct { |
| uint32 mostDetailedMip; |
| uint32 firstArraySlice; |
| uint32 mipLevels; |
| uint32 arraySize; |
| } tex; |
| struct { |
| uint32 firstElement; |
| uint32 numElements; |
| SVGA3dBufferExFlags flags; |
| uint32 pad0; |
| } bufferex; |
| }; |
| } SVGA3dShaderResourceViewDesc; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| SVGA3dResourceType resourceDimension; |
| SVGA3dShaderResourceViewDesc desc; |
| uint32 pad; |
| } SVGACOTableDXSRViewEntry; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineShaderResourceView { |
| SVGA3dShaderResourceViewId shaderResourceViewId; |
| |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| SVGA3dResourceType resourceDimension; |
| |
| SVGA3dShaderResourceViewDesc desc; |
| } SVGA3dCmdDXDefineShaderResourceView; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDestroyShaderResourceView { |
| SVGA3dShaderResourceViewId shaderResourceViewId; |
| } SVGA3dCmdDXDestroyShaderResourceView; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dRenderTargetViewDesc { |
| union { |
| struct { |
| uint32 firstElement; |
| uint32 numElements; |
| uint32 padding0; |
| } buffer; |
| struct { |
| uint32 mipSlice; |
| uint32 firstArraySlice; |
| uint32 arraySize; |
| } tex; |
| struct { |
| uint32 mipSlice; |
| uint32 firstW; |
| uint32 wSize; |
| } tex3D; |
| }; |
| } SVGA3dRenderTargetViewDesc; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| SVGA3dResourceType resourceDimension; |
| SVGA3dRenderTargetViewDesc desc; |
| uint32 pad[2]; |
| } SVGACOTableDXRTViewEntry; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineRenderTargetView { |
| SVGA3dRenderTargetViewId renderTargetViewId; |
| |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| SVGA3dResourceType resourceDimension; |
| |
| SVGA3dRenderTargetViewDesc desc; |
| } SVGA3dCmdDXDefineRenderTargetView; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDestroyRenderTargetView { |
| SVGA3dRenderTargetViewId renderTargetViewId; |
| } SVGA3dCmdDXDestroyRenderTargetView; |
| #pragma pack(pop) |
| |
| #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_DEPTH 0x01 |
| #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_STENCIL 0x02 |
| #define SVGA3D_DXDSVIEW_CREATE_FLAG_MASK 0x03 |
| typedef uint8 SVGA3DCreateDSViewFlags; |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| SVGA3dResourceType resourceDimension; |
| uint32 mipSlice; |
| uint32 firstArraySlice; |
| uint32 arraySize; |
| SVGA3DCreateDSViewFlags flags; |
| uint8 pad0; |
| uint16 pad1; |
| uint32 pad2; |
| } SVGACOTableDXDSViewEntry; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineDepthStencilView { |
| SVGA3dDepthStencilViewId depthStencilViewId; |
| |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| SVGA3dResourceType resourceDimension; |
| uint32 mipSlice; |
| uint32 firstArraySlice; |
| uint32 arraySize; |
| SVGA3DCreateDSViewFlags flags; |
| uint8 pad0; |
| uint16 pad1; |
| } SVGA3dCmdDXDefineDepthStencilView; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineDepthStencilView_v2 { |
| SVGA3dDepthStencilViewId depthStencilViewId; |
| |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| SVGA3dResourceType resourceDimension; |
| uint32 mipSlice; |
| uint32 firstArraySlice; |
| uint32 arraySize; |
| SVGA3DCreateDSViewFlags flags; |
| uint8 pad0; |
| uint16 pad1; |
| } SVGA3dCmdDXDefineDepthStencilView_v2; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDestroyDepthStencilView { |
| SVGA3dDepthStencilViewId depthStencilViewId; |
| } SVGA3dCmdDXDestroyDepthStencilView; |
| #pragma pack(pop) |
| |
| #define SVGA3D_UABUFFER_RAW (1 << 0) |
| #define SVGA3D_UABUFFER_APPEND (1 << 1) |
| #define SVGA3D_UABUFFER_COUNTER (1 << 2) |
| typedef uint32 SVGA3dUABufferFlags; |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| union { |
| struct { |
| uint32 firstElement; |
| uint32 numElements; |
| SVGA3dUABufferFlags flags; |
| uint32 padding0; |
| uint32 padding1; |
| } buffer; |
| struct { |
| uint32 mipSlice; |
| uint32 firstArraySlice; |
| uint32 arraySize; |
| uint32 padding0; |
| uint32 padding1; |
| } tex; |
| struct { |
| uint32 mipSlice; |
| uint32 firstW; |
| uint32 wSize; |
| uint32 padding0; |
| uint32 padding1; |
| } tex3D; |
| }; |
| } SVGA3dUAViewDesc; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| SVGA3dResourceType resourceDimension; |
| SVGA3dUAViewDesc desc; |
| uint32 structureCount; |
| uint32 pad[7]; |
| } SVGACOTableDXUAViewEntry; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineUAView { |
| SVGA3dUAViewId uaViewId; |
| |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| SVGA3dResourceType resourceDimension; |
| |
| SVGA3dUAViewDesc desc; |
| } SVGA3dCmdDXDefineUAView; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDestroyUAView { |
| SVGA3dUAViewId uaViewId; |
| } SVGA3dCmdDXDestroyUAView; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXClearUAViewUint { |
| SVGA3dUAViewId uaViewId; |
| SVGA3dRGBAUint32 value; |
| } SVGA3dCmdDXClearUAViewUint; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXClearUAViewFloat { |
| SVGA3dUAViewId uaViewId; |
| SVGA3dRGBAFloat value; |
| } SVGA3dCmdDXClearUAViewFloat; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXCopyStructureCount { |
| SVGA3dUAViewId srcUAViewId; |
| SVGA3dSurfaceId destSid; |
| uint32 destByteOffset; |
| } SVGA3dCmdDXCopyStructureCount; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetStructureCount { |
| SVGA3dUAViewId uaViewId; |
| uint32 structureCount; |
| } SVGA3dCmdDXSetStructureCount; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetUAViews { |
| uint32 uavSpliceIndex; |
| |
| } SVGA3dCmdDXSetUAViews; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetCSUAViews { |
| uint32 startIndex; |
| |
| } SVGA3dCmdDXSetCSUAViews; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dInputElementDesc { |
| uint32 inputSlot; |
| uint32 alignedByteOffset; |
| SVGA3dSurfaceFormat format; |
| SVGA3dInputClassification inputSlotClass; |
| uint32 instanceDataStepRate; |
| uint32 inputRegister; |
| } SVGA3dInputElementDesc; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| uint32 elid; |
| uint32 numDescs; |
| SVGA3dInputElementDesc descs[32]; |
| uint32 pad[62]; |
| } SVGACOTableDXElementLayoutEntry; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineElementLayout { |
| SVGA3dElementLayoutId elementLayoutId; |
| |
| } SVGA3dCmdDXDefineElementLayout; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDestroyElementLayout { |
| SVGA3dElementLayoutId elementLayoutId; |
| } SVGA3dCmdDXDestroyElementLayout; |
| #pragma pack(pop) |
| |
| #define SVGA3D_DX_MAX_RENDER_TARGETS 8 |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dDXBlendStatePerRT { |
| uint8 blendEnable; |
| uint8 srcBlend; |
| uint8 destBlend; |
| uint8 blendOp; |
| uint8 srcBlendAlpha; |
| uint8 destBlendAlpha; |
| uint8 blendOpAlpha; |
| SVGA3dColorWriteEnable renderTargetWriteMask; |
| uint8 logicOpEnable; |
| uint8 logicOp; |
| uint16 pad0; |
| } SVGA3dDXBlendStatePerRT; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| uint8 alphaToCoverageEnable; |
| uint8 independentBlendEnable; |
| uint16 pad0; |
| SVGA3dDXBlendStatePerRT perRT[SVGA3D_DX_MAX_RENDER_TARGETS]; |
| uint32 pad1[7]; |
| } SVGACOTableDXBlendStateEntry; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineBlendState { |
| SVGA3dBlendStateId blendId; |
| uint8 alphaToCoverageEnable; |
| uint8 independentBlendEnable; |
| uint16 pad0; |
| SVGA3dDXBlendStatePerRT perRT[SVGA3D_DX_MAX_RENDER_TARGETS]; |
| } SVGA3dCmdDXDefineBlendState; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDestroyBlendState { |
| SVGA3dBlendStateId blendId; |
| } SVGA3dCmdDXDestroyBlendState; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| uint8 depthEnable; |
| SVGA3dDepthWriteMask depthWriteMask; |
| SVGA3dComparisonFunc depthFunc; |
| uint8 stencilEnable; |
| uint8 frontEnable; |
| uint8 backEnable; |
| uint8 stencilReadMask; |
| uint8 stencilWriteMask; |
| |
| uint8 frontStencilFailOp; |
| uint8 frontStencilDepthFailOp; |
| uint8 frontStencilPassOp; |
| SVGA3dComparisonFunc frontStencilFunc; |
| |
| uint8 backStencilFailOp; |
| uint8 backStencilDepthFailOp; |
| uint8 backStencilPassOp; |
| SVGA3dComparisonFunc backStencilFunc; |
| } SVGACOTableDXDepthStencilEntry; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineDepthStencilState { |
| SVGA3dDepthStencilStateId depthStencilId; |
| |
| uint8 depthEnable; |
| SVGA3dDepthWriteMask depthWriteMask; |
| SVGA3dComparisonFunc depthFunc; |
| uint8 stencilEnable; |
| uint8 frontEnable; |
| uint8 backEnable; |
| uint8 stencilReadMask; |
| uint8 stencilWriteMask; |
| |
| uint8 frontStencilFailOp; |
| uint8 frontStencilDepthFailOp; |
| uint8 frontStencilPassOp; |
| SVGA3dComparisonFunc frontStencilFunc; |
| |
| uint8 backStencilFailOp; |
| uint8 backStencilDepthFailOp; |
| uint8 backStencilPassOp; |
| SVGA3dComparisonFunc backStencilFunc; |
| } SVGA3dCmdDXDefineDepthStencilState; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDestroyDepthStencilState { |
| SVGA3dDepthStencilStateId depthStencilId; |
| } SVGA3dCmdDXDestroyDepthStencilState; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| uint8 fillMode; |
| SVGA3dCullMode cullMode; |
| uint8 frontCounterClockwise; |
| uint8 provokingVertexLast; |
| int32 depthBias; |
| float depthBiasClamp; |
| float slopeScaledDepthBias; |
| uint8 depthClipEnable; |
| uint8 scissorEnable; |
| SVGA3dMultisampleRastEnable multisampleEnable; |
| uint8 antialiasedLineEnable; |
| float lineWidth; |
| uint8 lineStippleEnable; |
| uint8 lineStippleFactor; |
| uint16 lineStipplePattern; |
| uint8 forcedSampleCount; |
| uint8 mustBeZero[3]; |
| } SVGACOTableDXRasterizerStateEntry; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineRasterizerState { |
| SVGA3dRasterizerStateId rasterizerId; |
| |
| uint8 fillMode; |
| SVGA3dCullMode cullMode; |
| uint8 frontCounterClockwise; |
| uint8 provokingVertexLast; |
| int32 depthBias; |
| float depthBiasClamp; |
| float slopeScaledDepthBias; |
| uint8 depthClipEnable; |
| uint8 scissorEnable; |
| SVGA3dMultisampleRastEnable multisampleEnable; |
| uint8 antialiasedLineEnable; |
| float lineWidth; |
| uint8 lineStippleEnable; |
| uint8 lineStippleFactor; |
| uint16 lineStipplePattern; |
| } SVGA3dCmdDXDefineRasterizerState; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineRasterizerState_v2 { |
| SVGA3dRasterizerStateId rasterizerId; |
| |
| uint8 fillMode; |
| SVGA3dCullMode cullMode; |
| uint8 frontCounterClockwise; |
| uint8 provokingVertexLast; |
| int32 depthBias; |
| float depthBiasClamp; |
| float slopeScaledDepthBias; |
| uint8 depthClipEnable; |
| uint8 scissorEnable; |
| SVGA3dMultisampleRastEnable multisampleEnable; |
| uint8 antialiasedLineEnable; |
| float lineWidth; |
| uint8 lineStippleEnable; |
| uint8 lineStippleFactor; |
| uint16 lineStipplePattern; |
| uint32 forcedSampleCount; |
| } SVGA3dCmdDXDefineRasterizerState_v2; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDestroyRasterizerState { |
| SVGA3dRasterizerStateId rasterizerId; |
| } SVGA3dCmdDXDestroyRasterizerState; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| SVGA3dFilter filter; |
| uint8 addressU; |
| uint8 addressV; |
| uint8 addressW; |
| uint8 pad0; |
| float mipLODBias; |
| uint8 maxAnisotropy; |
| SVGA3dComparisonFunc comparisonFunc; |
| uint16 pad1; |
| SVGA3dRGBAFloat borderColor; |
| float minLOD; |
| float maxLOD; |
| uint32 pad2[6]; |
| } SVGACOTableDXSamplerEntry; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineSamplerState { |
| SVGA3dSamplerId samplerId; |
| SVGA3dFilter filter; |
| uint8 addressU; |
| uint8 addressV; |
| uint8 addressW; |
| uint8 pad0; |
| float mipLODBias; |
| uint8 maxAnisotropy; |
| SVGA3dComparisonFunc comparisonFunc; |
| uint16 pad1; |
| SVGA3dRGBAFloat borderColor; |
| float minLOD; |
| float maxLOD; |
| } SVGA3dCmdDXDefineSamplerState; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDestroySamplerState { |
| SVGA3dSamplerId samplerId; |
| } SVGA3dCmdDXDestroySamplerState; |
| #pragma pack(pop) |
| |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_UNDEFINED 0 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_POSITION 1 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_CLIP_DISTANCE 2 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_CULL_DISTANCE 3 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_RENDER_TARGET_ARRAY_INDEX 4 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_VIEWPORT_ARRAY_INDEX 5 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_VERTEX_ID 6 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_PRIMITIVE_ID 7 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_INSTANCE_ID 8 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_IS_FRONT_FACE 9 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_SAMPLE_INDEX 10 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_EQ_0_EDGE_TESSFACTOR 11 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_EQ_0_EDGE_TESSFACTOR 12 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_EQ_1_EDGE_TESSFACTOR 13 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_EQ_1_EDGE_TESSFACTOR 14 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_INSIDE_TESSFACTOR 15 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_INSIDE_TESSFACTOR 16 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_U_EQ_0_EDGE_TESSFACTOR 17 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_V_EQ_0_EDGE_TESSFACTOR 18 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_W_EQ_0_EDGE_TESSFACTOR 19 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_INSIDE_TESSFACTOR 20 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_LINE_DETAIL_TESSFACTOR 21 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_LINE_DENSITY_TESSFACTOR 22 |
| #define SVGADX_SIGNATURE_SEMANTIC_NAME_MAX 23 |
| typedef uint32 SVGA3dDXSignatureSemanticName; |
| |
| #define SVGADX_SIGNATURE_REGISTER_COMPONENT_UNKNOWN 0 |
| typedef uint32 SVGA3dDXSignatureRegisterComponentType; |
| |
| #define SVGADX_SIGNATURE_MIN_PRECISION_DEFAULT 0 |
| typedef uint32 SVGA3dDXSignatureMinPrecision; |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dDXSignatureEntry { |
| uint32 registerIndex; |
| SVGA3dDXSignatureSemanticName semanticName; |
| uint32 mask; |
| SVGA3dDXSignatureRegisterComponentType componentType; |
| SVGA3dDXSignatureMinPrecision minPrecision; |
| } SVGA3dDXShaderSignatureEntry; |
| #pragma pack(pop) |
| |
| #define SVGADX_SIGNATURE_HEADER_VERSION_0 0x08a92d12 |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dDXSignatureHeader { |
| uint32 headerVersion; |
| uint32 numInputSignatures; |
| uint32 numOutputSignatures; |
| uint32 numPatchConstantSignatures; |
| } SVGA3dDXShaderSignatureHeader; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineShader { |
| SVGA3dShaderId shaderId; |
| SVGA3dShaderType type; |
| uint32 sizeInBytes; |
| } SVGA3dCmdDXDefineShader; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGACOTableDXShaderEntry { |
| SVGA3dShaderType type; |
| uint32 sizeInBytes; |
| uint32 offsetInBytes; |
| SVGAMobId mobid; |
| uint32 pad[4]; |
| } SVGACOTableDXShaderEntry; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDestroyShader { |
| SVGA3dShaderId shaderId; |
| } SVGA3dCmdDXDestroyShader; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXBindShader { |
| uint32 cid; |
| uint32 shid; |
| SVGAMobId mobid; |
| uint32 offsetInBytes; |
| } SVGA3dCmdDXBindShader; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXBindAllShader { |
| uint32 cid; |
| SVGAMobId mobid; |
| } SVGA3dCmdDXBindAllShader; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXCondBindAllShader { |
| uint32 cid; |
| SVGAMobId testMobid; |
| SVGAMobId mobid; |
| } SVGA3dCmdDXCondBindAllShader; |
| #pragma pack(pop) |
| |
| #define SVGA3D_MAX_DX10_STREAMOUT_DECLS 64 |
| #define SVGA3D_MAX_STREAMOUT_DECLS 512 |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dStreamOutputDeclarationEntry { |
| uint32 outputSlot; |
| uint32 registerIndex; |
| uint8 registerMask; |
| uint8 pad0; |
| uint16 pad1; |
| uint32 stream; |
| } SVGA3dStreamOutputDeclarationEntry; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGAOTableStreamOutputEntry { |
| uint32 numOutputStreamEntries; |
| SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_DX10_STREAMOUT_DECLS]; |
| uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS]; |
| uint32 rasterizedStream; |
| uint32 numOutputStreamStrides; |
| uint32 mobid; |
| uint32 offsetInBytes; |
| uint8 usesMob; |
| uint8 pad0; |
| uint16 pad1; |
| uint32 pad2[246]; |
| } SVGACOTableDXStreamOutputEntry; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineStreamOutput { |
| SVGA3dStreamOutputId soid; |
| uint32 numOutputStreamEntries; |
| SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_DX10_STREAMOUT_DECLS]; |
| uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS]; |
| uint32 rasterizedStream; |
| } SVGA3dCmdDXDefineStreamOutput; |
| #pragma pack(pop) |
| |
| #define SVGA3D_DX_SO_NO_RASTERIZED_STREAM 0xFFFFFFFF |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDefineStreamOutputWithMob { |
| SVGA3dStreamOutputId soid; |
| uint32 numOutputStreamEntries; |
| uint32 numOutputStreamStrides; |
| uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS]; |
| uint32 rasterizedStream; |
| } SVGA3dCmdDXDefineStreamOutputWithMob; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXBindStreamOutput { |
| SVGA3dStreamOutputId soid; |
| uint32 mobid; |
| uint32 offsetInBytes; |
| uint32 sizeInBytes; |
| } SVGA3dCmdDXBindStreamOutput; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXDestroyStreamOutput { |
| SVGA3dStreamOutputId soid; |
| } SVGA3dCmdDXDestroyStreamOutput; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetStreamOutput { |
| SVGA3dStreamOutputId soid; |
| } SVGA3dCmdDXSetStreamOutput; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetMinLOD { |
| SVGA3dSurfaceId sid; |
| float minLOD; |
| } SVGA3dCmdDXSetMinLOD; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct { |
| uint64 value; |
| uint32 mobId; |
| uint32 mobOffset; |
| } SVGA3dCmdDXMobFence64; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXSetCOTable { |
| uint32 cid; |
| uint32 mobid; |
| SVGACOTableType type; |
| uint32 validSizeInBytes; |
| } SVGA3dCmdDXSetCOTable; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXGrowCOTable { |
| uint32 cid; |
| uint32 mobid; |
| SVGACOTableType type; |
| uint32 validSizeInBytes; |
| } SVGA3dCmdDXGrowCOTable; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXReadbackCOTable { |
| uint32 cid; |
| SVGACOTableType type; |
| } SVGA3dCmdDXReadbackCOTable; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXCopyCOTableIntoMob { |
| uint32 cid; |
| SVGACOTableType type; |
| uint32 mobid; |
| } SVGA3dCmdDXCopyCOTableIntoMob; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXPredStagingCopy { |
| SVGA3dSurfaceId dstSid; |
| SVGA3dSurfaceId srcSid; |
| uint8 readback; |
| uint8 unsynchronized; |
| uint8 mustBeZero[2]; |
| |
| } SVGA3dCmdDXPredStagingCopy; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCmdDXStagingCopy { |
| SVGA3dSurfaceId dstSid; |
| SVGA3dSurfaceId srcSid; |
| uint8 readback; |
| uint8 unsynchronized; |
| uint8 mustBeZero[2]; |
| |
| } SVGA3dCmdDXStagingCopy; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dCOTableData { |
| uint32 mobid; |
| } SVGA3dCOTableData; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dBufferBinding { |
| uint32 bufferId; |
| uint32 stride; |
| uint32 offset; |
| } SVGA3dBufferBinding; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGA3dConstantBufferBinding { |
| uint32 sid; |
| uint32 offsetInBytes; |
| uint32 sizeInBytes; |
| } SVGA3dConstantBufferBinding; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGADXInputAssemblyMobFormat { |
| uint32 layoutId; |
| SVGA3dBufferBinding vertexBuffers[SVGA3D_DX_MAX_VERTEXBUFFERS]; |
| uint32 indexBufferSid; |
| uint32 pad; |
| uint32 indexBufferOffset; |
| uint32 indexBufferFormat; |
| uint32 topology; |
| } SVGADXInputAssemblyMobFormat; |
| #pragma pack(pop) |
| |
| #pragma pack(push, 1) |
| typedef struct SVGADXContextMobFormat { |
| SVGADXInputAssemblyMobFormat inputAssembly; |
| |
| struct { |
| uint32 blendStateId; |
| uint32 blendFactor[4]; |
| uint32 sampleMask; |
| uint32 depthStencilStateId; |
| uint32 stencilRef; |
| uint32 rasterizerStateId; |
| uint32 depthStencilViewId; |
| uint32 renderTargetViewIds[SVGA3D_DX_MAX_RENDER_TARGETS]; |
| } renderState; |
| |
| uint32 pad0[8]; |
| |
| struct { |
| uint32 targets[SVGA3D_DX_MAX_SOTARGETS]; |
| uint32 soid; |
| } streamOut; |
| |
| uint32 pad1[10]; |
| |
| uint32 uavSpliceIndex; |
| |
| uint8 numViewports; |
| uint8 numScissorRects; |
| uint16 pad2[1]; |
| |
| uint32 pad3[3]; |
| |
| SVGA3dViewport viewports[SVGA3D_DX_MAX_VIEWPORTS]; |
| uint32 pad4[32]; |
| |
| SVGASignedRect scissorRects[SVGA3D_DX_MAX_SCISSORRECTS]; |
| uint32 pad5[64]; |
| |
| struct { |
| uint32 queryID; |
| uint32 value; |
| } predication; |
| |
| SVGAMobId shaderIfaceMobid; |
| uint32 shaderIfaceOffset; |
| struct { |
| uint32 shaderId; |
| SVGA3dConstantBufferBinding |
| constantBuffers[SVGA3D_DX_MAX_CONSTBUFFERS]; |
| uint32 shaderResources[SVGA3D_DX_MAX_SRVIEWS]; |
| uint32 samplers[SVGA3D_DX_MAX_SAMPLERS]; |
| } shaderState[SVGA3D_NUM_SHADERTYPE]; |
| uint32 pad6[26]; |
| |
| SVGA3dQueryId queryID[SVGA3D_MAX_QUERY]; |
| |
| SVGA3dCOTableData cotables[SVGA_COTABLE_MAX]; |
| |
| uint32 pad7[64]; |
| |
| uint32 uaViewIds[SVGA3D_DX11_1_MAX_UAVIEWS]; |
| uint32 csuaViewIds[SVGA3D_DX11_1_MAX_UAVIEWS]; |
| |
| uint32 pad8[188]; |
| } SVGADXContextMobFormat; |
| #pragma pack(pop) |
| |
| #define SVGA3D_DX_MAX_CLASS_INSTANCES_PADDED 256 |
| |
| #pragma pack(push, 1) |
| typedef struct SVGADXShaderIfaceMobFormat { |
| struct { |
| uint32 numClassInstances; |
| uint32 iface[SVGA3D_DX_MAX_CLASS_INSTANCES_PADDED]; |
| SVGA3dIfaceData data[SVGA3D_DX_MAX_CLASS_INSTANCES_PADDED]; |
| } shaderIfaceState[SVGA3D_NUM_SHADERTYPE]; |
| |
| uint32 pad0[1018]; |
| } SVGADXShaderIfaceMobFormat; |
| #pragma pack(pop) |
| |
| #endif |