/**********************************************************
 * Copyright 2012-2021 VMware, Inc.
 * SPDX-License-Identifier: GPL-2.0 OR MIT
 *
 * 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 MKS3dDXSOState {
	uint32 offset;
	uint32 intOffset;
	uint32 vertexCount;
	uint32 dead;
} 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
