1488 lines
36 KiB
C
1488 lines
36 KiB
C
/**********************************************************
|
|
* Copyright 2012-2015 VMware, Inc. All rights reserved.
|
|
*
|
|
* 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_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_DX_MAX_VERTEXBUFFERS 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
|
|
|
|
/* Id limits */
|
|
static const uint32 SVGA3dBlendObjectCountPerContext = 4096;
|
|
static const uint32 SVGA3dDepthStencilObjectCountPerContext = 4096;
|
|
|
|
typedef uint32 SVGA3dSurfaceId;
|
|
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 SVGA3dReplyFormatData {
|
|
uint32 formatSupport;
|
|
uint32 msaa2xQualityLevels:5;
|
|
uint32 msaa4xQualityLevels:5;
|
|
uint32 msaa8xQualityLevels:5;
|
|
uint32 msaa16xQualityLevels:5;
|
|
uint32 msaa32xQualityLevels:5;
|
|
uint32 pad:7;
|
|
}
|
|
#include "vmware_pack_end.h"
|
|
SVGA3dReplyFormatData;
|
|
|
|
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 SVGA3dCmdDXBufferCopy {
|
|
SVGA3dSurfaceId dest;
|
|
SVGA3dSurfaceId src;
|
|
uint32 destX;
|
|
uint32 srcX;
|
|
uint32 width;
|
|
}
|
|
#include "vmware_pack_end.h"
|
|
SVGA3dCmdDXBufferCopy;
|
|
/* SVGA_3D_CMD_DX_BUFFER_COPY */
|
|
|
|
typedef uint32 SVGA3dDXStretchBltMode;
|
|
#define SVGADX_STRETCHBLT_LINEAR (1 << 0)
|
|
#define SVGADX_STRETCHBLT_FORCE_SRC_SRGB (1 << 1)
|
|
|
|
typedef
|
|
#include "vmware_pack_begin.h"
|
|
struct SVGA3dCmdDXStretchBlt {
|
|
SVGA3dSurfaceId srcSid;
|
|
uint32 srcSubResource;
|
|
SVGA3dSurfaceId dstSid;
|
|
uint32 destSubResource;
|
|
SVGA3dBox boxSrc;
|
|
SVGA3dBox boxDest;
|
|
SVGA3dDXStretchBltMode mode;
|
|
}
|
|
#include "vmware_pack_end.h"
|
|
SVGA3dCmdDXStretchBlt; /* SVGA_3D_CMD_DX_STRETCHBLT */
|
|
|
|
typedef
|
|
#include "vmware_pack_begin.h"
|
|
struct SVGA3dCmdDXGenMips {
|
|
SVGA3dShaderResourceViewId shaderResourceViewId;
|
|
}
|
|
#include "vmware_pack_end.h"
|
|
SVGA3dCmdDXGenMips; /* SVGA_3D_CMD_DX_GENMIPS */
|
|
|
|
/*
|
|
* Defines a resource/DX surface. Resources share the surfaceId namespace.
|
|
*
|
|
*/
|
|
typedef
|
|
#include "vmware_pack_begin.h"
|
|
struct SVGA3dCmdDefineGBSurface_v2 {
|
|
uint32 sid;
|
|
SVGA3dSurfaceFlags surfaceFlags;
|
|
SVGA3dSurfaceFormat format;
|
|
uint32 numMipLevels;
|
|
uint32 multisampleCount;
|
|
SVGA3dTextureFilter autogenFilter;
|
|
SVGA3dSize size;
|
|
uint32 arraySize;
|
|
uint32 pad;
|
|
}
|
|
#include "vmware_pack_end.h"
|
|
SVGA3dCmdDefineGBSurface_v2; /* SVGA_3D_CMD_DEFINE_GB_SURFACE_V2 */
|
|
|
|
/*
|
|
* 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.
|
|
*/
|
|
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 */
|
|
|
|
|
|
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;
|
|
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;
|
|
} 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 {
|
|
/*
|
|
* XXX: How many of these can there be?
|
|
*/
|
|
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;
|
|
uint8 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;
|
|
uint8 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;
|
|
uint8 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 SVGA3dSignatureEntry {
|
|
uint8 systemValue;
|
|
uint8 reg; /* register is a reserved word */
|
|
uint16 mask;
|
|
uint8 registerComponentType;
|
|
uint8 minPrecision;
|
|
uint16 pad0;
|
|
}
|
|
#include "vmware_pack_end.h"
|
|
SVGA3dSignatureEntry;
|
|
|
|
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 numInputSignatureEntries;
|
|
uint32 numOutputSignatureEntries;
|
|
|
|
uint32 numPatchConstantSignatureEntries;
|
|
|
|
uint32 pad;
|
|
}
|
|
#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 */
|
|
|
|
/*
|
|
* 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 */
|
|
|
|
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[381];
|
|
}
|
|
#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_ */
|