| /* SPDX-License-Identifier: GPL-2.0 OR MIT */ |
| /********************************************************** |
| * Copyright 2012-2015 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_ |
| |
| #define INCLUDE_ALLOW_MODULE |
| #define INCLUDE_ALLOW_USERLEVEL |
| #define INCLUDE_ALLOW_VMCORE |
| #include "includeCheck.h" |
| |
| #include "svga3d_limits.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_RESOURCE_TYPE_MIN 1 |
| #define SVGA3D_RESOURCE_BUFFER 1 |
| #define SVGA3D_RESOURCE_TEXTURE1D 2 |
| #define SVGA3D_RESOURCE_TEXTURE2D 3 |
| #define SVGA3D_RESOURCE_TEXTURE3D 4 |
| #define SVGA3D_RESOURCE_TEXTURECUBE 5 |
| #define SVGA3D_RESOURCE_TYPE_DX10_MAX 6 |
| #define SVGA3D_RESOURCE_BUFFEREX 6 |
| #define SVGA3D_RESOURCE_TYPE_MAX 7 |
| typedef uint32 SVGA3dResourceType; |
| |
| #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; |
| |
| /* |
| * SVGA3D_MULTISAMPLE_RAST_DISABLE disables MSAA for all primitives. |
| * SVGA3D_MULTISAMPLE_RAST_DISABLE_LINE, which is supported in SM41, |
| * disables MSAA for lines only. |
| */ |
| #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_CONSTBUF_BINDING_SIZE (4096 * 4 * (uint32)sizeof(uint32)) |
| |
| typedef uint32 SVGA3dShaderResourceViewId; |
| typedef uint32 SVGA3dRenderTargetViewId; |
| typedef uint32 SVGA3dDepthStencilViewId; |
| |
| 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 { |
| float r; |
| float g; |
| float b; |
| float a; |
| }; |
| |
| float value[4]; |
| } SVGA3dRGBAFloat; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct { |
| uint32 cid; |
| SVGAMobId mobid; |
| } |
| #include "vmware_pack_end.h" |
| SVGAOTableDXContextEntry; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDefineContext { |
| uint32 cid; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDefineContext; /* SVGA_3D_CMD_DX_DEFINE_CONTEXT */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDestroyContext { |
| uint32 cid; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDestroyContext; /* SVGA_3D_CMD_DX_DESTROY_CONTEXT */ |
| |
| /* |
| * Bind a DX context. |
| * |
| * validContents should be set to 0 for new contexts, |
| * and 1 if this is an old context which is getting paged |
| * back on to the device. |
| * |
| * For new contexts, it is recommended that the driver |
| * issue commands to initialize all interesting state |
| * prior to rendering. |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXBindContext { |
| uint32 cid; |
| SVGAMobId mobid; |
| uint32 validContents; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXBindContext; /* SVGA_3D_CMD_DX_BIND_CONTEXT */ |
| |
| /* |
| * Readback a DX context. |
| * (Request that the device flush the contents back into guest memory.) |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXReadbackContext { |
| uint32 cid; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXReadbackContext; /* SVGA_3D_CMD_DX_READBACK_CONTEXT */ |
| |
| /* |
| * Invalidate a guest-backed context. |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXInvalidateContext { |
| uint32 cid; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXInvalidateContext; /* SVGA_3D_CMD_DX_INVALIDATE_CONTEXT */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetSingleConstantBuffer { |
| uint32 slot; |
| SVGA3dShaderType type; |
| SVGA3dSurfaceId sid; |
| uint32 offsetInBytes; |
| uint32 sizeInBytes; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetSingleConstantBuffer; |
| /* SVGA_3D_CMD_DX_SET_SINGLE_CONSTANT_BUFFER */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetShaderResources { |
| uint32 startView; |
| SVGA3dShaderType type; |
| |
| /* |
| * Followed by a variable number of SVGA3dShaderResourceViewId's. |
| */ |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetShaderResources; /* SVGA_3D_CMD_DX_SET_SHADER_RESOURCES */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetShader { |
| SVGA3dShaderId shaderId; |
| SVGA3dShaderType type; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetShader; /* SVGA_3D_CMD_DX_SET_SHADER */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetSamplers { |
| uint32 startSampler; |
| SVGA3dShaderType type; |
| |
| /* |
| * Followed by a variable number of SVGA3dSamplerId's. |
| */ |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetSamplers; /* SVGA_3D_CMD_DX_SET_SAMPLERS */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDraw { |
| uint32 vertexCount; |
| uint32 startVertexLocation; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDraw; /* SVGA_3D_CMD_DX_DRAW */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDrawIndexed { |
| uint32 indexCount; |
| uint32 startIndexLocation; |
| int32 baseVertexLocation; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDrawIndexed; /* SVGA_3D_CMD_DX_DRAW_INDEXED */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDrawInstanced { |
| uint32 vertexCountPerInstance; |
| uint32 instanceCount; |
| uint32 startVertexLocation; |
| uint32 startInstanceLocation; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDrawInstanced; /* SVGA_3D_CMD_DX_DRAW_INSTANCED */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDrawIndexedInstanced { |
| uint32 indexCountPerInstance; |
| uint32 instanceCount; |
| uint32 startIndexLocation; |
| int32 baseVertexLocation; |
| uint32 startInstanceLocation; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDrawIndexedInstanced; /* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDrawAuto { |
| uint32 pad0; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDrawAuto; /* SVGA_3D_CMD_DX_DRAW_AUTO */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetInputLayout { |
| SVGA3dElementLayoutId elementLayoutId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetInputLayout; /* SVGA_3D_CMD_DX_SET_INPUT_LAYOUT */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dVertexBuffer { |
| SVGA3dSurfaceId sid; |
| uint32 stride; |
| uint32 offset; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dVertexBuffer; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetVertexBuffers { |
| uint32 startBuffer; |
| /* Followed by a variable number of SVGA3dVertexBuffer's. */ |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetVertexBuffers; /* SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetIndexBuffer { |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| uint32 offset; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetIndexBuffer; /* SVGA_3D_CMD_DX_SET_INDEX_BUFFER */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetTopology { |
| SVGA3dPrimitiveType topology; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetTopology; /* SVGA_3D_CMD_DX_SET_TOPOLOGY */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetRenderTargets { |
| SVGA3dDepthStencilViewId depthStencilViewId; |
| /* Followed by a variable number of SVGA3dRenderTargetViewId's. */ |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetRenderTargets; /* SVGA_3D_CMD_DX_SET_RENDERTARGETS */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetBlendState { |
| SVGA3dBlendStateId blendId; |
| float blendFactor[4]; |
| uint32 sampleMask; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetBlendState; /* SVGA_3D_CMD_DX_SET_BLEND_STATE */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetDepthStencilState { |
| SVGA3dDepthStencilStateId depthStencilId; |
| uint32 stencilRef; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetDepthStencilState; /* SVGA_3D_CMD_DX_SET_DEPTHSTENCIL_STATE */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetRasterizerState { |
| SVGA3dRasterizerStateId rasterizerId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetRasterizerState; /* SVGA_3D_CMD_DX_SET_RASTERIZER_STATE */ |
| |
| #define SVGA3D_DXQUERY_FLAG_PREDICATEHINT (1 << 0) |
| typedef uint32 SVGA3dDXQueryFlags; |
| |
| /* |
| * The SVGADXQueryDeviceState and SVGADXQueryDeviceBits are used by the device |
| * to track query state transitions, but are not intended to be used by the |
| * driver. |
| */ |
| #define SVGADX_QDSTATE_INVALID ((uint8)-1) /* Query has no state */ |
| #define SVGADX_QDSTATE_MIN 0 |
| #define SVGADX_QDSTATE_IDLE 0 /* Query hasn't started yet */ |
| #define SVGADX_QDSTATE_ACTIVE 1 /* Query is actively gathering data */ |
| #define SVGADX_QDSTATE_PENDING 2 /* Query is waiting for results */ |
| #define SVGADX_QDSTATE_FINISHED 3 /* Query has completed */ |
| #define SVGADX_QDSTATE_MAX 4 |
| typedef uint8 SVGADXQueryDeviceState; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct { |
| SVGA3dQueryTypeUint8 type; |
| uint16 pad0; |
| SVGADXQueryDeviceState state; |
| SVGA3dDXQueryFlags flags; |
| SVGAMobId mobid; |
| uint32 offset; |
| } |
| #include "vmware_pack_end.h" |
| SVGACOTableDXQueryEntry; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDefineQuery { |
| SVGA3dQueryId queryId; |
| SVGA3dQueryType type; |
| SVGA3dDXQueryFlags flags; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDefineQuery; /* SVGA_3D_CMD_DX_DEFINE_QUERY */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDestroyQuery { |
| SVGA3dQueryId queryId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDestroyQuery; /* SVGA_3D_CMD_DX_DESTROY_QUERY */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXBindQuery { |
| SVGA3dQueryId queryId; |
| SVGAMobId mobid; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXBindQuery; /* SVGA_3D_CMD_DX_BIND_QUERY */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetQueryOffset { |
| SVGA3dQueryId queryId; |
| uint32 mobOffset; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetQueryOffset; /* SVGA_3D_CMD_DX_SET_QUERY_OFFSET */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXBeginQuery { |
| SVGA3dQueryId queryId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXBeginQuery; /* SVGA_3D_CMD_DX_QUERY_BEGIN */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXEndQuery { |
| SVGA3dQueryId queryId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXEndQuery; /* SVGA_3D_CMD_DX_QUERY_END */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXReadbackQuery { |
| SVGA3dQueryId queryId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXReadbackQuery; /* SVGA_3D_CMD_DX_READBACK_QUERY */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXMoveQuery { |
| SVGA3dQueryId queryId; |
| SVGAMobId mobid; |
| uint32 mobOffset; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXMoveQuery; /* SVGA_3D_CMD_DX_MOVE_QUERY */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXBindAllQuery { |
| uint32 cid; |
| SVGAMobId mobid; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXBindAllQuery; /* SVGA_3D_CMD_DX_BIND_ALL_QUERY */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXReadbackAllQuery { |
| uint32 cid; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXReadbackAllQuery; /* SVGA_3D_CMD_DX_READBACK_ALL_QUERY */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetPredication { |
| SVGA3dQueryId queryId; |
| uint32 predicateValue; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetPredication; /* SVGA_3D_CMD_DX_SET_PREDICATION */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct MKS3dDXSOState { |
| uint32 offset; /* Starting offset */ |
| uint32 intOffset; /* Internal offset */ |
| uint32 vertexCount; /* vertices written */ |
| uint32 sizeInBytes; /* max bytes to write */ |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dDXSOState; |
| |
| /* Set the offset field to this value to append SO values to the buffer */ |
| #define SVGA3D_DX_SO_OFFSET_APPEND ((uint32) ~0u) |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dSoTarget { |
| SVGA3dSurfaceId sid; |
| uint32 offset; |
| uint32 sizeInBytes; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dSoTarget; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetSOTargets { |
| uint32 pad0; |
| /* Followed by a variable number of SVGA3dSOTarget's. */ |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetSOTargets; /* SVGA_3D_CMD_DX_SET_SOTARGETS */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dViewport |
| { |
| float x; |
| float y; |
| float width; |
| float height; |
| float minDepth; |
| float maxDepth; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dViewport; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetViewports { |
| uint32 pad0; |
| /* Followed by a variable number of SVGA3dViewport's. */ |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetViewports; /* SVGA_3D_CMD_DX_SET_VIEWPORTS */ |
| |
| #define SVGA3D_DX_MAX_VIEWPORTS 16 |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetScissorRects { |
| uint32 pad0; |
| /* Followed by a variable number of SVGASignedRect's. */ |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetScissorRects; /* SVGA_3D_CMD_DX_SET_SCISSORRECTS */ |
| |
| #define SVGA3D_DX_MAX_SCISSORRECTS 16 |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXClearRenderTargetView { |
| SVGA3dRenderTargetViewId renderTargetViewId; |
| SVGA3dRGBAFloat rgba; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXClearRenderTargetView; /* SVGA_3D_CMD_DX_CLEAR_RENDERTARGET_VIEW */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXClearDepthStencilView { |
| uint16 flags; |
| uint16 stencil; |
| SVGA3dDepthStencilViewId depthStencilViewId; |
| float depth; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXClearDepthStencilView; /* SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXPredCopyRegion { |
| SVGA3dSurfaceId dstSid; |
| uint32 dstSubResource; |
| SVGA3dSurfaceId srcSid; |
| uint32 srcSubResource; |
| SVGA3dCopyBox box; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXPredCopyRegion; |
| /* SVGA_3D_CMD_DX_PRED_COPY_REGION */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXPredCopy { |
| SVGA3dSurfaceId dstSid; |
| SVGA3dSurfaceId srcSid; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXPredCopy; /* SVGA_3D_CMD_DX_PRED_COPY */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXPredConvertRegion { |
| SVGA3dSurfaceId dstSid; |
| uint32 dstSubResource; |
| SVGA3dBox destBox; |
| SVGA3dSurfaceId srcSid; |
| uint32 srcSubResource; |
| SVGA3dBox srcBox; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXPredConvertRegion; /* SVGA_3D_CMD_DX_PRED_CONVERT_REGION */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXPredConvert { |
| SVGA3dSurfaceId dstSid; |
| SVGA3dSurfaceId srcSid; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXPredConvert; /* SVGA_3D_CMD_DX_PRED_CONVERT */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXBufferCopy { |
| SVGA3dSurfaceId dest; |
| SVGA3dSurfaceId src; |
| uint32 destX; |
| uint32 srcX; |
| uint32 width; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXBufferCopy; |
| /* SVGA_3D_CMD_DX_BUFFER_COPY */ |
| |
| /* |
| * Perform a surface copy between a multisample, and a non-multisampled |
| * surface. |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| struct { |
| SVGA3dSurfaceId dstSid; |
| uint32 dstSubResource; |
| SVGA3dSurfaceId srcSid; |
| uint32 srcSubResource; |
| SVGA3dSurfaceFormat copyFormat; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXResolveCopy; /* SVGA_3D_CMD_DX_RESOLVE_COPY */ |
| |
| /* |
| * Perform a predicated surface copy between a multisample, and a |
| * non-multisampled surface. |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| struct { |
| SVGA3dSurfaceId dstSid; |
| uint32 dstSubResource; |
| SVGA3dSurfaceId srcSid; |
| uint32 srcSubResource; |
| SVGA3dSurfaceFormat copyFormat; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXPredResolveCopy; /* SVGA_3D_CMD_DX_PRED_RESOLVE_COPY */ |
| |
| 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) |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXPresentBlt { |
| SVGA3dSurfaceId srcSid; |
| uint32 srcSubResource; |
| SVGA3dSurfaceId dstSid; |
| uint32 destSubResource; |
| SVGA3dBox boxSrc; |
| SVGA3dBox boxDest; |
| SVGA3dDXPresentBltMode mode; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXPresentBlt; /* SVGA_3D_CMD_DX_PRESENTBLT*/ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXGenMips { |
| SVGA3dShaderResourceViewId shaderResourceViewId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXGenMips; /* SVGA_3D_CMD_DX_GENMIPS */ |
| |
| /* |
| * Update a sub-resource in a guest-backed resource. |
| * (Inform the device that the guest-contents have been updated.) |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXUpdateSubResource { |
| SVGA3dSurfaceId sid; |
| uint32 subResource; |
| SVGA3dBox box; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXUpdateSubResource; /* SVGA_3D_CMD_DX_UPDATE_SUBRESOURCE */ |
| |
| /* |
| * Readback a subresource in a guest-backed resource. |
| * (Request the device to flush the dirty contents into the guest.) |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXReadbackSubResource { |
| SVGA3dSurfaceId sid; |
| uint32 subResource; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXReadbackSubResource; /* SVGA_3D_CMD_DX_READBACK_SUBRESOURCE */ |
| |
| /* |
| * Invalidate an image in a guest-backed surface. |
| * (Notify the device that the contents can be lost.) |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXInvalidateSubResource { |
| SVGA3dSurfaceId sid; |
| uint32 subResource; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXInvalidateSubResource; /* SVGA_3D_CMD_DX_INVALIDATE_SUBRESOURCE */ |
| |
| |
| /* |
| * Raw byte wise transfer from a buffer surface into another surface |
| * of the requested box. Supported if 3d is enabled and SVGA_CAP_DX |
| * is set. This command does not take a context. |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXTransferFromBuffer { |
| SVGA3dSurfaceId srcSid; |
| uint32 srcOffset; |
| uint32 srcPitch; |
| uint32 srcSlicePitch; |
| SVGA3dSurfaceId destSid; |
| uint32 destSubResource; |
| SVGA3dBox destBox; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXTransferFromBuffer; /* SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER */ |
| |
| |
| /* |
| * Raw byte wise transfer from a buffer surface into another surface |
| * of the requested box. Supported if SVGA3D_DEVCAP_DXCONTEXT is set. |
| * The context is implied from the command buffer header. |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXPredTransferFromBuffer { |
| SVGA3dSurfaceId srcSid; |
| uint32 srcOffset; |
| uint32 srcPitch; |
| uint32 srcSlicePitch; |
| SVGA3dSurfaceId destSid; |
| uint32 destSubResource; |
| SVGA3dBox destBox; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXPredTransferFromBuffer; |
| /* SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER */ |
| |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSurfaceCopyAndReadback { |
| SVGA3dSurfaceId srcSid; |
| SVGA3dSurfaceId destSid; |
| SVGA3dCopyBox box; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSurfaceCopyAndReadback; |
| /* SVGA_3D_CMD_DX_SURFACE_COPY_AND_READBACK */ |
| |
| /* |
| * SVGA_DX_HINT_NONE: Does nothing. |
| * |
| * SVGA_DX_HINT_PREFETCH_OBJECT: |
| * SVGA_DX_HINT_PREEVICT_OBJECT: |
| * Consumes a SVGAObjectRef, and hints that the host should consider |
| * fetching/evicting the specified object. |
| * |
| * An id of SVGA3D_INVALID_ID can be used if the guest isn't sure |
| * what object was affected. (For instance, if the guest knows that |
| * it is about to evict a DXShader, but doesn't know precisely which one, |
| * the device can still use this to help limit it's search, or track |
| * how many page-outs have happened.) |
| * |
| * SVGA_DX_HINT_PREFETCH_COBJECT: |
| * SVGA_DX_HINT_PREEVICT_COBJECT: |
| * Same as the above, except they consume an SVGACObjectRef. |
| */ |
| 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 |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGAObjectRef { |
| SVGAOTableType type; |
| uint32 id; |
| } |
| #include "vmware_pack_end.h" |
| SVGAObjectRef; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGACObjectRef { |
| SVGACOTableType type; |
| uint32 cid; |
| uint32 id; |
| } |
| #include "vmware_pack_end.h" |
| SVGACObjectRef; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXHint { |
| SVGADXHintId hintId; |
| |
| /* |
| * Followed by variable sized data depending on the hintId. |
| */ |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXHint; |
| /* SVGA_3D_CMD_DX_HINT */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXBufferUpdate { |
| SVGA3dSurfaceId sid; |
| uint32 x; |
| uint32 width; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXBufferUpdate; |
| /* SVGA_3D_CMD_DX_BUFFER_UPDATE */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetConstantBufferOffset { |
| uint32 slot; |
| uint32 offsetInBytes; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetConstantBufferOffset; |
| |
| typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetVSConstantBufferOffset; |
| /* SVGA_3D_CMD_DX_SET_VS_CONSTANT_BUFFER_OFFSET */ |
| |
| typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetPSConstantBufferOffset; |
| /* SVGA_3D_CMD_DX_SET_PS_CONSTANT_BUFFER_OFFSET */ |
| |
| typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetGSConstantBufferOffset; |
| /* SVGA_3D_CMD_DX_SET_GS_CONSTANT_BUFFER_OFFSET */ |
| |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct { |
| union { |
| struct { |
| uint32 firstElement; |
| uint32 numElements; |
| uint32 pad0; |
| uint32 pad1; |
| } buffer; |
| struct { |
| uint32 mostDetailedMip; |
| uint32 firstArraySlice; |
| uint32 mipLevels; |
| uint32 arraySize; |
| } tex; /* 1d, 2d, 3d, cube */ |
| struct { |
| uint32 firstElement; |
| uint32 numElements; |
| uint32 flags; |
| uint32 pad0; |
| } bufferex; |
| }; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dShaderResourceViewDesc; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct { |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| SVGA3dResourceType resourceDimension; |
| SVGA3dShaderResourceViewDesc desc; |
| uint32 pad; |
| } |
| #include "vmware_pack_end.h" |
| SVGACOTableDXSRViewEntry; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDefineShaderResourceView { |
| SVGA3dShaderResourceViewId shaderResourceViewId; |
| |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| SVGA3dResourceType resourceDimension; |
| |
| SVGA3dShaderResourceViewDesc desc; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDefineShaderResourceView; |
| /* SVGA_3D_CMD_DX_DEFINE_SHADERRESOURCE_VIEW */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDestroyShaderResourceView { |
| SVGA3dShaderResourceViewId shaderResourceViewId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDestroyShaderResourceView; |
| /* SVGA_3D_CMD_DX_DESTROY_SHADERRESOURCE_VIEW */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dRenderTargetViewDesc { |
| union { |
| struct { |
| uint32 firstElement; |
| uint32 numElements; |
| uint32 padding0; |
| } buffer; |
| struct { |
| uint32 mipSlice; |
| uint32 firstArraySlice; |
| uint32 arraySize; |
| } tex; /* 1d, 2d, cube */ |
| struct { |
| uint32 mipSlice; |
| uint32 firstW; |
| uint32 wSize; |
| } tex3D; |
| }; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dRenderTargetViewDesc; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct { |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| SVGA3dResourceType resourceDimension; |
| SVGA3dRenderTargetViewDesc desc; |
| uint32 pad[2]; |
| } |
| #include "vmware_pack_end.h" |
| SVGACOTableDXRTViewEntry; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDefineRenderTargetView { |
| SVGA3dRenderTargetViewId renderTargetViewId; |
| |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| SVGA3dResourceType resourceDimension; |
| |
| SVGA3dRenderTargetViewDesc desc; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDefineRenderTargetView; |
| /* SVGA_3D_CMD_DX_DEFINE_RENDERTARGET_VIEW */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDestroyRenderTargetView { |
| SVGA3dRenderTargetViewId renderTargetViewId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDestroyRenderTargetView; |
| /* SVGA_3D_CMD_DX_DESTROY_RENDERTARGET_VIEW */ |
| |
| /* |
| */ |
| #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; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct { |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| SVGA3dResourceType resourceDimension; |
| uint32 mipSlice; |
| uint32 firstArraySlice; |
| uint32 arraySize; |
| SVGA3DCreateDSViewFlags flags; |
| uint8 pad0; |
| uint16 pad1; |
| uint32 pad2; |
| } |
| #include "vmware_pack_end.h" |
| SVGACOTableDXDSViewEntry; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDefineDepthStencilView { |
| SVGA3dDepthStencilViewId depthStencilViewId; |
| |
| SVGA3dSurfaceId sid; |
| SVGA3dSurfaceFormat format; |
| SVGA3dResourceType resourceDimension; |
| uint32 mipSlice; |
| uint32 firstArraySlice; |
| uint32 arraySize; |
| SVGA3DCreateDSViewFlags flags; |
| uint8 pad0; |
| uint16 pad1; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDefineDepthStencilView; |
| /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDestroyDepthStencilView { |
| SVGA3dDepthStencilViewId depthStencilViewId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDestroyDepthStencilView; |
| /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dInputElementDesc { |
| uint32 inputSlot; |
| uint32 alignedByteOffset; |
| SVGA3dSurfaceFormat format; |
| SVGA3dInputClassification inputSlotClass; |
| uint32 instanceDataStepRate; |
| uint32 inputRegister; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dInputElementDesc; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct { |
| uint32 elid; |
| uint32 numDescs; |
| SVGA3dInputElementDesc desc[32]; |
| uint32 pad[62]; |
| } |
| #include "vmware_pack_end.h" |
| SVGACOTableDXElementLayoutEntry; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDefineElementLayout { |
| SVGA3dElementLayoutId elementLayoutId; |
| /* Followed by a variable number of SVGA3dInputElementDesc's. */ |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDefineElementLayout; |
| /* SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDestroyElementLayout { |
| SVGA3dElementLayoutId elementLayoutId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDestroyElementLayout; |
| /* SVGA_3D_CMD_DX_DESTROY_ELEMENTLAYOUT */ |
| |
| |
| #define SVGA3D_DX_MAX_RENDER_TARGETS 8 |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dDXBlendStatePerRT { |
| uint8 blendEnable; |
| uint8 srcBlend; |
| uint8 destBlend; |
| uint8 blendOp; |
| uint8 srcBlendAlpha; |
| uint8 destBlendAlpha; |
| uint8 blendOpAlpha; |
| SVGA3dColorWriteEnable renderTargetWriteMask; |
| uint8 logicOpEnable; |
| uint8 logicOp; |
| uint16 pad0; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dDXBlendStatePerRT; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct { |
| uint8 alphaToCoverageEnable; |
| uint8 independentBlendEnable; |
| uint16 pad0; |
| SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS]; |
| uint32 pad1[7]; |
| } |
| #include "vmware_pack_end.h" |
| SVGACOTableDXBlendStateEntry; |
| |
| /* |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDefineBlendState { |
| SVGA3dBlendStateId blendId; |
| uint8 alphaToCoverageEnable; |
| uint8 independentBlendEnable; |
| uint16 pad0; |
| SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS]; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDefineBlendState; /* SVGA_3D_CMD_DX_DEFINE_BLEND_STATE */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDestroyBlendState { |
| SVGA3dBlendStateId blendId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDestroyBlendState; /* SVGA_3D_CMD_DX_DESTROY_BLEND_STATE */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| 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; |
| } |
| #include "vmware_pack_end.h" |
| SVGACOTableDXDepthStencilEntry; |
| |
| /* |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| 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; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDefineDepthStencilState; |
| /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_STATE */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDestroyDepthStencilState { |
| SVGA3dDepthStencilStateId depthStencilId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDestroyDepthStencilState; |
| /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_STATE */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| 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; |
| uint32 forcedSampleCount; |
| } |
| #include "vmware_pack_end.h" |
| SVGACOTableDXRasterizerStateEntry; |
| |
| /* |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| 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; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDefineRasterizerState; |
| /* SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDestroyRasterizerState { |
| SVGA3dRasterizerStateId rasterizerId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDestroyRasterizerState; |
| /* SVGA_3D_CMD_DX_DESTROY_RASTERIZER_STATE */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| 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]; |
| } |
| #include "vmware_pack_end.h" |
| SVGACOTableDXSamplerEntry; |
| |
| /* |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| 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; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDefineSamplerState; /* SVGA_3D_CMD_DX_DEFINE_SAMPLER_STATE */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDestroySamplerState { |
| SVGA3dSamplerId samplerId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDestroySamplerState; /* SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDefineShader { |
| SVGA3dShaderId shaderId; |
| SVGA3dShaderType type; |
| uint32 sizeInBytes; /* Number of bytes of shader text. */ |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDefineShader; /* SVGA_3D_CMD_DX_DEFINE_SHADER */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGACOTableDXShaderEntry { |
| SVGA3dShaderType type; |
| uint32 sizeInBytes; |
| uint32 offsetInBytes; |
| SVGAMobId mobid; |
| uint32 pad[4]; |
| } |
| #include "vmware_pack_end.h" |
| SVGACOTableDXShaderEntry; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDestroyShader { |
| SVGA3dShaderId shaderId; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDestroyShader; /* SVGA_3D_CMD_DX_DESTROY_SHADER */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXBindShader { |
| uint32 cid; |
| uint32 shid; |
| SVGAMobId mobid; |
| uint32 offsetInBytes; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXBindShader; /* SVGA_3D_CMD_DX_BIND_SHADER */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXBindAllShader { |
| uint32 cid; |
| SVGAMobId mobid; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXBindAllShader; /* SVGA_3D_CMD_DX_BIND_ALL_SHADER */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXCondBindAllShader { |
| uint32 cid; |
| SVGAMobId testMobid; |
| SVGAMobId mobid; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXCondBindAllShader; /* SVGA_3D_CMD_DX_COND_BIND_ALL_SHADER */ |
| |
| /* |
| * The maximum number of streamout decl's in each streamout entry. |
| */ |
| #define SVGA3D_MAX_STREAMOUT_DECLS 64 |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dStreamOutputDeclarationEntry { |
| uint32 outputSlot; |
| uint32 registerIndex; |
| uint8 registerMask; |
| uint8 pad0; |
| uint16 pad1; |
| uint32 stream; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dStreamOutputDeclarationEntry; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGAOTableStreamOutputEntry { |
| uint32 numOutputStreamEntries; |
| SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS]; |
| uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS]; |
| uint32 rasterizedStream; |
| uint32 pad[250]; |
| } |
| #include "vmware_pack_end.h" |
| SVGACOTableDXStreamOutputEntry; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDefineStreamOutput { |
| SVGA3dStreamOutputId soid; |
| uint32 numOutputStreamEntries; |
| SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS]; |
| uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS]; |
| uint32 rasterizedStream; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDefineStreamOutput; /* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXDestroyStreamOutput { |
| SVGA3dStreamOutputId soid; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXDestroyStreamOutput; /* SVGA_3D_CMD_DX_DESTROY_STREAMOUTPUT */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetStreamOutput { |
| SVGA3dStreamOutputId soid; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetStreamOutput; /* SVGA_3D_CMD_DX_SET_STREAMOUTPUT */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct { |
| uint64 value; |
| uint32 mobId; |
| uint32 mobOffset; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXMobFence64; /* SVGA_3D_CMD_DX_MOB_FENCE_64 */ |
| |
| /* |
| * SVGA3dCmdSetCOTable -- |
| * |
| * This command allows the guest to bind a mob to a context-object table. |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXSetCOTable { |
| uint32 cid; |
| uint32 mobid; |
| SVGACOTableType type; |
| uint32 validSizeInBytes; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXSetCOTable; /* SVGA_3D_CMD_DX_SET_COTABLE */ |
| |
| /* |
| * Guests using SVGA_3D_CMD_DX_GROW_COTABLE are promising that |
| * the new COTable contains the same contents as the old one, except possibly |
| * for some new invalid entries at the end. |
| * |
| * If there is an old cotable mob bound, it also has to still be valid. |
| * |
| * (Otherwise, guests should use the DXSetCOTableBase command.) |
| */ |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXGrowCOTable { |
| uint32 cid; |
| uint32 mobid; |
| SVGACOTableType type; |
| uint32 validSizeInBytes; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXGrowCOTable; /* SVGA_3D_CMD_DX_GROW_COTABLE */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXReadbackCOTable { |
| uint32 cid; |
| SVGACOTableType type; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXReadbackCOTable; /* SVGA_3D_CMD_DX_READBACK_COTABLE */ |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCOTableData { |
| uint32 mobid; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCOTableData; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dBufferBinding { |
| uint32 bufferId; |
| uint32 stride; |
| uint32 offset; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dBufferBinding; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dConstantBufferBinding { |
| uint32 sid; |
| uint32 offsetInBytes; |
| uint32 sizeInBytes; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dConstantBufferBinding; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGADXInputAssemblyMobFormat { |
| uint32 layoutId; |
| SVGA3dBufferBinding vertexBuffers[SVGA3D_DX_MAX_VERTEXBUFFERS]; |
| uint32 indexBufferSid; |
| uint32 pad; |
| uint32 indexBufferOffset; |
| uint32 indexBufferFormat; |
| uint32 topology; |
| } |
| #include "vmware_pack_end.h" |
| SVGADXInputAssemblyMobFormat; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGADXContextMobFormat { |
| SVGADXInputAssemblyMobFormat inputAssembly; |
| |
| struct { |
| uint32 blendStateId; |
| uint32 blendFactor[4]; |
| uint32 sampleMask; |
| uint32 depthStencilStateId; |
| uint32 stencilRef; |
| uint32 rasterizerStateId; |
| uint32 depthStencilViewId; |
| uint32 renderTargetViewIds[SVGA3D_MAX_SIMULTANEOUS_RENDER_TARGETS]; |
| uint32 unorderedAccessViewIds[SVGA3D_MAX_UAVIEWS]; |
| } renderState; |
| |
| struct { |
| uint32 targets[SVGA3D_DX_MAX_SOTARGETS]; |
| uint32 soid; |
| } streamOut; |
| uint32 pad0[11]; |
| |
| uint8 numViewports; |
| uint8 numScissorRects; |
| uint16 pad1[1]; |
| |
| uint32 pad2[3]; |
| |
| SVGA3dViewport viewports[SVGA3D_DX_MAX_VIEWPORTS]; |
| uint32 pad3[32]; |
| |
| SVGASignedRect scissorRects[SVGA3D_DX_MAX_SCISSORRECTS]; |
| uint32 pad4[64]; |
| |
| struct { |
| uint32 queryID; |
| uint32 value; |
| } predication; |
| uint32 pad5[2]; |
| |
| 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[380]; |
| } |
| #include "vmware_pack_end.h" |
| SVGADXContextMobFormat; |
| |
| typedef |
| #include "vmware_pack_begin.h" |
| struct SVGA3dCmdDXTempSetContext { |
| uint32 dxcid; |
| } |
| #include "vmware_pack_end.h" |
| SVGA3dCmdDXTempSetContext; /* SVGA_3D_CMD_DX_TEMP_SET_CONTEXT */ |
| |
| #endif /* _SVGA3D_DX_H_ */ |