/**********************************************************
 * 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_types.h --
 *
 *    SVGA 3d hardware definitions for basic types
 */



#ifndef _SVGA3D_TYPES_H_
#define _SVGA3D_TYPES_H_

#include "vm_basic_types.h"

#define SVGA3D_INVALID_ID ((uint32)-1)

#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;

typedef uint8 SVGABool8;
typedef uint32 SVGA3dBool;
typedef uint32 SVGA3dColor;

typedef uint32 SVGA3dSurfaceId;

#pragma pack(push, 1)
typedef struct {
	uint32 numerator;
	uint32 denominator;
} SVGA3dFraction64;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct SVGA3dCopyRect {
	uint32 x;
	uint32 y;
	uint32 w;
	uint32 h;
	uint32 srcx;
	uint32 srcy;
} SVGA3dCopyRect;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct SVGA3dCopyBox {
	uint32 x;
	uint32 y;
	uint32 z;
	uint32 w;
	uint32 h;
	uint32 d;
	uint32 srcx;
	uint32 srcy;
	uint32 srcz;
} SVGA3dCopyBox;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct SVGA3dRect {
	uint32 x;
	uint32 y;
	uint32 w;
	uint32 h;
} SVGA3dRect;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct {
	uint32 x;
	uint32 y;
	uint32 z;
	uint32 w;
	uint32 h;
	uint32 d;
} SVGA3dBox;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct {
	int32 x;
	int32 y;
	int32 z;
	int32 w;
	int32 h;
	int32 d;
} SVGA3dSignedBox;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct {
	uint32 x;
	uint32 y;
	uint32 z;
} SVGA3dPoint;
#pragma pack(pop)

#pragma pack(push, 1)
typedef union {
	struct {
		float r;
		float g;
		float b;
		float a;
	};

	float value[4];
} SVGA3dRGBAFloat;
#pragma pack(pop)

typedef enum SVGA3dSurfaceFormat {
	SVGA3D_FORMAT_INVALID = 0,

	SVGA3D_X8R8G8B8 = 1,
	SVGA3D_FORMAT_MIN = 1,

	SVGA3D_A8R8G8B8 = 2,

	SVGA3D_R5G6B5 = 3,
	SVGA3D_X1R5G5B5 = 4,
	SVGA3D_A1R5G5B5 = 5,
	SVGA3D_A4R4G4B4 = 6,

	SVGA3D_Z_D32 = 7,
	SVGA3D_Z_D16 = 8,
	SVGA3D_Z_D24S8 = 9,
	SVGA3D_Z_D15S1 = 10,

	SVGA3D_LUMINANCE8 = 11,
	SVGA3D_LUMINANCE4_ALPHA4 = 12,
	SVGA3D_LUMINANCE16 = 13,
	SVGA3D_LUMINANCE8_ALPHA8 = 14,

	SVGA3D_DXT1 = 15,
	SVGA3D_DXT2 = 16,
	SVGA3D_DXT3 = 17,
	SVGA3D_DXT4 = 18,
	SVGA3D_DXT5 = 19,

	SVGA3D_BUMPU8V8 = 20,
	SVGA3D_BUMPL6V5U5 = 21,
	SVGA3D_BUMPX8L8V8U8 = 22,
	SVGA3D_FORMAT_DEAD1 = 23,

	SVGA3D_ARGB_S10E5 = 24,
	SVGA3D_ARGB_S23E8 = 25,

	SVGA3D_A2R10G10B10 = 26,

	SVGA3D_V8U8 = 27,
	SVGA3D_Q8W8V8U8 = 28,
	SVGA3D_CxV8U8 = 29,

	SVGA3D_X8L8V8U8 = 30,
	SVGA3D_A2W10V10U10 = 31,

	SVGA3D_ALPHA8 = 32,

	SVGA3D_R_S10E5 = 33,
	SVGA3D_R_S23E8 = 34,
	SVGA3D_RG_S10E5 = 35,
	SVGA3D_RG_S23E8 = 36,

	SVGA3D_BUFFER = 37,

	SVGA3D_Z_D24X8 = 38,

	SVGA3D_V16U16 = 39,

	SVGA3D_G16R16 = 40,
	SVGA3D_A16B16G16R16 = 41,

	SVGA3D_UYVY = 42,
	SVGA3D_YUY2 = 43,

	SVGA3D_NV12 = 44,

	SVGA3D_FORMAT_DEAD2 = 45,

	SVGA3D_R32G32B32A32_TYPELESS = 46,
	SVGA3D_R32G32B32A32_UINT = 47,
	SVGA3D_R32G32B32A32_SINT = 48,
	SVGA3D_R32G32B32_TYPELESS = 49,
	SVGA3D_R32G32B32_FLOAT = 50,
	SVGA3D_R32G32B32_UINT = 51,
	SVGA3D_R32G32B32_SINT = 52,
	SVGA3D_R16G16B16A16_TYPELESS = 53,
	SVGA3D_R16G16B16A16_UINT = 54,
	SVGA3D_R16G16B16A16_SNORM = 55,
	SVGA3D_R16G16B16A16_SINT = 56,
	SVGA3D_R32G32_TYPELESS = 57,
	SVGA3D_R32G32_UINT = 58,
	SVGA3D_R32G32_SINT = 59,
	SVGA3D_R32G8X24_TYPELESS = 60,
	SVGA3D_D32_FLOAT_S8X24_UINT = 61,
	SVGA3D_R32_FLOAT_X8X24 = 62,
	SVGA3D_X32_G8X24_UINT = 63,
	SVGA3D_R10G10B10A2_TYPELESS = 64,
	SVGA3D_R10G10B10A2_UINT = 65,
	SVGA3D_R11G11B10_FLOAT = 66,
	SVGA3D_R8G8B8A8_TYPELESS = 67,
	SVGA3D_R8G8B8A8_UNORM = 68,
	SVGA3D_R8G8B8A8_UNORM_SRGB = 69,
	SVGA3D_R8G8B8A8_UINT = 70,
	SVGA3D_R8G8B8A8_SINT = 71,
	SVGA3D_R16G16_TYPELESS = 72,
	SVGA3D_R16G16_UINT = 73,
	SVGA3D_R16G16_SINT = 74,
	SVGA3D_R32_TYPELESS = 75,
	SVGA3D_D32_FLOAT = 76,
	SVGA3D_R32_UINT = 77,
	SVGA3D_R32_SINT = 78,
	SVGA3D_R24G8_TYPELESS = 79,
	SVGA3D_D24_UNORM_S8_UINT = 80,
	SVGA3D_R24_UNORM_X8 = 81,
	SVGA3D_X24_G8_UINT = 82,
	SVGA3D_R8G8_TYPELESS = 83,
	SVGA3D_R8G8_UNORM = 84,
	SVGA3D_R8G8_UINT = 85,
	SVGA3D_R8G8_SINT = 86,
	SVGA3D_R16_TYPELESS = 87,
	SVGA3D_R16_UNORM = 88,
	SVGA3D_R16_UINT = 89,
	SVGA3D_R16_SNORM = 90,
	SVGA3D_R16_SINT = 91,
	SVGA3D_R8_TYPELESS = 92,
	SVGA3D_R8_UNORM = 93,
	SVGA3D_R8_UINT = 94,
	SVGA3D_R8_SNORM = 95,
	SVGA3D_R8_SINT = 96,
	SVGA3D_P8 = 97,
	SVGA3D_R9G9B9E5_SHAREDEXP = 98,
	SVGA3D_R8G8_B8G8_UNORM = 99,
	SVGA3D_G8R8_G8B8_UNORM = 100,
	SVGA3D_BC1_TYPELESS = 101,
	SVGA3D_BC1_UNORM_SRGB = 102,
	SVGA3D_BC2_TYPELESS = 103,
	SVGA3D_BC2_UNORM_SRGB = 104,
	SVGA3D_BC3_TYPELESS = 105,
	SVGA3D_BC3_UNORM_SRGB = 106,
	SVGA3D_BC4_TYPELESS = 107,
	SVGA3D_ATI1 = 108,
	SVGA3D_BC4_SNORM = 109,
	SVGA3D_BC5_TYPELESS = 110,
	SVGA3D_ATI2 = 111,
	SVGA3D_BC5_SNORM = 112,
	SVGA3D_R10G10B10_XR_BIAS_A2_UNORM = 113,
	SVGA3D_B8G8R8A8_TYPELESS = 114,
	SVGA3D_B8G8R8A8_UNORM_SRGB = 115,
	SVGA3D_B8G8R8X8_TYPELESS = 116,
	SVGA3D_B8G8R8X8_UNORM_SRGB = 117,

	SVGA3D_Z_DF16 = 118,
	SVGA3D_Z_DF24 = 119,
	SVGA3D_Z_D24S8_INT = 120,

	SVGA3D_YV12 = 121,

	SVGA3D_R32G32B32A32_FLOAT = 122,
	SVGA3D_R16G16B16A16_FLOAT = 123,
	SVGA3D_R16G16B16A16_UNORM = 124,
	SVGA3D_R32G32_FLOAT = 125,
	SVGA3D_R10G10B10A2_UNORM = 126,
	SVGA3D_R8G8B8A8_SNORM = 127,
	SVGA3D_R16G16_FLOAT = 128,
	SVGA3D_R16G16_UNORM = 129,
	SVGA3D_R16G16_SNORM = 130,
	SVGA3D_R32_FLOAT = 131,
	SVGA3D_R8G8_SNORM = 132,
	SVGA3D_R16_FLOAT = 133,
	SVGA3D_D16_UNORM = 134,
	SVGA3D_A8_UNORM = 135,
	SVGA3D_BC1_UNORM = 136,
	SVGA3D_BC2_UNORM = 137,
	SVGA3D_BC3_UNORM = 138,
	SVGA3D_B5G6R5_UNORM = 139,
	SVGA3D_B5G5R5A1_UNORM = 140,
	SVGA3D_B8G8R8A8_UNORM = 141,
	SVGA3D_B8G8R8X8_UNORM = 142,
	SVGA3D_BC4_UNORM = 143,
	SVGA3D_BC5_UNORM = 144,
	SVGA3D_B4G4R4A4_UNORM = 145,

	SVGA3D_BC6H_TYPELESS = 146,
	SVGA3D_BC6H_UF16 = 147,
	SVGA3D_BC6H_SF16 = 148,
	SVGA3D_BC7_TYPELESS = 149,
	SVGA3D_BC7_UNORM = 150,
	SVGA3D_BC7_UNORM_SRGB = 151,

	SVGA3D_AYUV = 152,

	SVGA3D_R11G11B10_TYPELESS = 153,

	SVGA3D_FORMAT_MAX
} SVGA3dSurfaceFormat;

#define SVGA3D_SURFACE_CUBEMAP (1 << 0)

#define SVGA3D_SURFACE_HINT_STATIC (CONST64U(1) << 1)
#define SVGA3D_SURFACE_HINT_DYNAMIC (CONST64U(1) << 2)
#define SVGA3D_SURFACE_HINT_INDEXBUFFER (CONST64U(1) << 3)
#define SVGA3D_SURFACE_HINT_VERTEXBUFFER (CONST64U(1) << 4)
#define SVGA3D_SURFACE_HINT_TEXTURE (CONST64U(1) << 5)
#define SVGA3D_SURFACE_HINT_RENDERTARGET (CONST64U(1) << 6)
#define SVGA3D_SURFACE_HINT_DEPTHSTENCIL (CONST64U(1) << 7)
#define SVGA3D_SURFACE_HINT_WRITEONLY (CONST64U(1) << 8)
#define SVGA3D_SURFACE_DEAD2 (CONST64U(1) << 9)
#define SVGA3D_SURFACE_AUTOGENMIPMAPS (CONST64U(1) << 10)

#define SVGA3D_SURFACE_DEAD1 (CONST64U(1) << 11)

#define SVGA3D_SURFACE_MOB_PITCH (CONST64U(1) << 12)

#define SVGA3D_SURFACE_INACTIVE (CONST64U(1) << 13)
#define SVGA3D_SURFACE_HINT_RT_LOCKABLE (CONST64U(1) << 14)
#define SVGA3D_SURFACE_VOLUME (CONST64U(1) << 15)

#define SVGA3D_SURFACE_SCREENTARGET (CONST64U(1) << 16)

#define SVGA3D_SURFACE_ALIGN16 (CONST64U(1) << 17)

#define SVGA3D_SURFACE_1D (CONST64U(1) << 18)
#define SVGA3D_SURFACE_ARRAY (CONST64U(1) << 19)

#define SVGA3D_SURFACE_BIND_VERTEX_BUFFER (CONST64U(1) << 20)
#define SVGA3D_SURFACE_BIND_INDEX_BUFFER (CONST64U(1) << 21)
#define SVGA3D_SURFACE_BIND_CONSTANT_BUFFER (CONST64U(1) << 22)
#define SVGA3D_SURFACE_BIND_SHADER_RESOURCE (CONST64U(1) << 23)
#define SVGA3D_SURFACE_BIND_RENDER_TARGET (CONST64U(1) << 24)
#define SVGA3D_SURFACE_BIND_DEPTH_STENCIL (CONST64U(1) << 25)
#define SVGA3D_SURFACE_BIND_STREAM_OUTPUT (CONST64U(1) << 26)

#define SVGA3D_SURFACE_STAGING_UPLOAD (CONST64U(1) << 27)
#define SVGA3D_SURFACE_STAGING_DOWNLOAD (CONST64U(1) << 28)
#define SVGA3D_SURFACE_HINT_INDIRECT_UPDATE (CONST64U(1) << 29)

#define SVGA3D_SURFACE_TRANSFER_FROM_BUFFER (CONST64U(1) << 30)

#define SVGA3D_SURFACE_RESERVED1 (CONST64U(1) << 31)
#define SVGA3D_SURFACE_VADECODE SVGA3D_SURFACE_RESERVED1

#define SVGA3D_SURFACE_MULTISAMPLE (CONST64U(1) << 32)

#define SVGA3D_SURFACE_BIND_UAVIEW (CONST64U(1) << 33)

#define SVGA3D_SURFACE_TRANSFER_TO_BUFFER (CONST64U(1) << 34)

#define SVGA3D_SURFACE_BIND_LOGICOPS (CONST64U(1) << 35)

#define SVGA3D_SURFACE_BIND_RAW_VIEWS (CONST64U(1) << 36)
#define SVGA3D_SURFACE_BUFFER_STRUCTURED (CONST64U(1) << 37)

#define SVGA3D_SURFACE_DRAWINDIRECT_ARGS (CONST64U(1) << 38)
#define SVGA3D_SURFACE_RESOURCE_CLAMP (CONST64U(1) << 39)

#define SVGA3D_SURFACE_STAGING_COPY (CONST64U(1) << 40)

#define SVGA3D_SURFACE_FLAG_MAX (CONST64U(1) << 44)

typedef uint32 SVGA3dSurface1Flags;
typedef uint32 SVGA3dSurface2Flags;
typedef uint64 SVGA3dSurfaceAllFlags;

#define SVGA3D_SURFACE_FLAGS1_MASK ((uint64)MAX_UINT32)
#define SVGA3D_SURFACE_FLAGS2_MASK (MAX_UINT64 & ~SVGA3D_SURFACE_FLAGS1_MASK)

#define SVGA3D_SURFACE_HB_DISALLOWED_MASK                                      \
	(SVGA3D_SURFACE_MOB_PITCH | SVGA3D_SURFACE_SCREENTARGET |              \
	 SVGA3D_SURFACE_ALIGN16 | SVGA3D_SURFACE_BIND_CONSTANT_BUFFER |        \
	 SVGA3D_SURFACE_BIND_STREAM_OUTPUT | SVGA3D_SURFACE_STAGING_UPLOAD |   \
	 SVGA3D_SURFACE_STAGING_DOWNLOAD |                                     \
	 SVGA3D_SURFACE_HINT_INDIRECT_UPDATE |                                 \
	 SVGA3D_SURFACE_TRANSFER_FROM_BUFFER | SVGA3D_SURFACE_MULTISAMPLE |    \
	 SVGA3D_SURFACE_BIND_UAVIEW | SVGA3D_SURFACE_TRANSFER_TO_BUFFER |      \
	 SVGA3D_SURFACE_BIND_LOGICOPS | SVGA3D_SURFACE_BIND_RAW_VIEWS |        \
	 SVGA3D_SURFACE_BUFFER_STRUCTURED | SVGA3D_SURFACE_DRAWINDIRECT_ARGS | \
	 SVGA3D_SURFACE_RESOURCE_CLAMP | SVGA3D_SURFACE_STAGING_COPY |         \
	 SVGA3D_SURFACE_RESTRICT_UPDATE | SVGA3D_SURFACE_BIND_TENSOR |         \
	 SVGA3D_SURFACE_LO_STAGING)

#define SVGA3D_SURFACE_HB_PRESENT_DISALLOWED_MASK                              \
	(SVGA3D_SURFACE_1D | SVGA3D_SURFACE_MULTISAMPLE |                      \
	 SVGA3D_SURFACE_STAGING_COPY)

#define SVGA3D_SURFACE_2D_DISALLOWED_MASK                                      \
	(SVGA3D_SURFACE_CUBEMAP | SVGA3D_SURFACE_AUTOGENMIPMAPS |              \
	 SVGA3D_SURFACE_VOLUME | SVGA3D_SURFACE_1D |                           \
	 SVGA3D_SURFACE_BIND_VERTEX_BUFFER |                                   \
	 SVGA3D_SURFACE_BIND_INDEX_BUFFER |                                    \
	 SVGA3D_SURFACE_BIND_CONSTANT_BUFFER |                                 \
	 SVGA3D_SURFACE_BIND_DEPTH_STENCIL |                                   \
	 SVGA3D_SURFACE_BIND_STREAM_OUTPUT |                                   \
	 SVGA3D_SURFACE_TRANSFER_FROM_BUFFER | SVGA3D_SURFACE_MULTISAMPLE |    \
	 SVGA3D_SURFACE_BIND_UAVIEW | SVGA3D_SURFACE_TRANSFER_TO_BUFFER |      \
	 SVGA3D_SURFACE_BIND_RAW_VIEWS | SVGA3D_SURFACE_BUFFER_STRUCTURED |    \
	 SVGA3D_SURFACE_DRAWINDIRECT_ARGS | SVGA3D_SURFACE_RESOURCE_CLAMP |    \
	 SVGA3D_SURFACE_BIND_TENSOR)

#define SVGA3D_SURFACE_BASICOPS_DISALLOWED_MASK                                \
	(SVGA3D_SURFACE_CUBEMAP | SVGA3D_SURFACE_AUTOGENMIPMAPS |              \
	 SVGA3D_SURFACE_VOLUME | SVGA3D_SURFACE_1D |                           \
	 SVGA3D_SURFACE_MULTISAMPLE)

#define SVGA3D_SURFACE_SCREENTARGET_DISALLOWED_MASK                            \
	(SVGA3D_SURFACE_CUBEMAP | SVGA3D_SURFACE_AUTOGENMIPMAPS |              \
	 SVGA3D_SURFACE_VOLUME | SVGA3D_SURFACE_1D |                           \
	 SVGA3D_SURFACE_BIND_VERTEX_BUFFER |                                   \
	 SVGA3D_SURFACE_BIND_INDEX_BUFFER |                                    \
	 SVGA3D_SURFACE_BIND_CONSTANT_BUFFER |                                 \
	 SVGA3D_SURFACE_BIND_DEPTH_STENCIL |                                   \
	 SVGA3D_SURFACE_BIND_STREAM_OUTPUT | SVGA3D_SURFACE_INACTIVE |         \
	 SVGA3D_SURFACE_STAGING_UPLOAD | SVGA3D_SURFACE_STAGING_DOWNLOAD |     \
	 SVGA3D_SURFACE_HINT_INDIRECT_UPDATE |                                 \
	 SVGA3D_SURFACE_TRANSFER_FROM_BUFFER | SVGA3D_SURFACE_MULTISAMPLE |    \
	 SVGA3D_SURFACE_TRANSFER_TO_BUFFER | SVGA3D_SURFACE_BIND_RAW_VIEWS |   \
	 SVGA3D_SURFACE_BUFFER_STRUCTURED | SVGA3D_SURFACE_DRAWINDIRECT_ARGS | \
	 SVGA3D_SURFACE_RESOURCE_CLAMP | SVGA3D_SURFACE_STAGING_COPY |         \
	 SVGA3D_SURFACE_BIND_TENSOR | SVGA3D_SURFACE_LO_STAGING)

#define SVGA3D_SURFACE_BUFFER_DISALLOWED_MASK                                  \
	(SVGA3D_SURFACE_CUBEMAP | SVGA3D_SURFACE_AUTOGENMIPMAPS |              \
	 SVGA3D_SURFACE_VOLUME | SVGA3D_SURFACE_1D | SVGA3D_SURFACE_DEAD2 |    \
	 SVGA3D_SURFACE_ARRAY | SVGA3D_SURFACE_MULTISAMPLE |                   \
	 SVGA3D_SURFACE_MOB_PITCH | SVGA3D_SURFACE_RESOURCE_CLAMP)

#define SVGA3D_SURFACE_MULTISAMPLE_DISALLOWED_MASK                             \
	(SVGA3D_SURFACE_CUBEMAP | SVGA3D_SURFACE_AUTOGENMIPMAPS |              \
	 SVGA3D_SURFACE_VOLUME | SVGA3D_SURFACE_1D |                           \
	 SVGA3D_SURFACE_SCREENTARGET | SVGA3D_SURFACE_MOB_PITCH |              \
	 SVGA3D_SURFACE_TRANSFER_FROM_BUFFER | SVGA3D_SURFACE_BIND_UAVIEW |    \
	 SVGA3D_SURFACE_TRANSFER_TO_BUFFER | SVGA3D_SURFACE_BIND_LOGICOPS |    \
	 SVGA3D_SURFACE_BIND_RAW_VIEWS | SVGA3D_SURFACE_BUFFER_STRUCTURED |    \
	 SVGA3D_SURFACE_DRAWINDIRECT_ARGS | SVGA3D_SURFACE_STAGING_COPY)

#define SVGA3D_SURFACE_DX_ONLY_MASK                                            \
	(SVGA3D_SURFACE_BIND_STREAM_OUTPUT | SVGA3D_SURFACE_STAGING_UPLOAD |   \
	 SVGA3D_SURFACE_STAGING_DOWNLOAD |                                     \
	 SVGA3D_SURFACE_TRANSFER_FROM_BUFFER |                                 \
	 SVGA3D_SURFACE_TRANSFER_TO_BUFFER)

#define SVGA3D_SURFACE_ANY_STAGING_MASK                                        \
	(SVGA3D_SURFACE_STAGING_UPLOAD | SVGA3D_SURFACE_STAGING_DOWNLOAD |     \
	 SVGA3D_SURFACE_STAGING_COPY | SVGA3D_SURFACE_LO_STAGING)

#define SVGA3D_SURFACE_ANY_NONHINT_STAGING_MASK                                \
	(SVGA3D_SURFACE_ANY_STAGING_MASK & ~(SVGA3D_SURFACE_LO_STAGING))

#define SVGA3D_SURFACE_BIND_MASK                                               \
	(SVGA3D_SURFACE_BIND_VERTEX_BUFFER |                                   \
	 SVGA3D_SURFACE_BIND_INDEX_BUFFER |                                    \
	 SVGA3D_SURFACE_BIND_CONSTANT_BUFFER |                                 \
	 SVGA3D_SURFACE_BIND_SHADER_RESOURCE |                                 \
	 SVGA3D_SURFACE_BIND_RENDER_TARGET |                                   \
	 SVGA3D_SURFACE_BIND_DEPTH_STENCIL |                                   \
	 SVGA3D_SURFACE_BIND_STREAM_OUTPUT | SVGA3D_SURFACE_BIND_UAVIEW |      \
	 SVGA3D_SURFACE_BIND_LOGICOPS | SVGA3D_SURFACE_BIND_RAW_VIEWS |        \
	 SVGA3D_SURFACE_BIND_TENSOR)

#define SVGA3D_SURFACE_STAGING_DISALLOWED_MASK                                 \
	(SVGA3D_SURFACE_BIND_MASK | SVGA3D_SURFACE_AUTOGENMIPMAPS |            \
	 SVGA3D_SURFACE_SCREENTARGET | SVGA3D_SURFACE_HINT_RENDERTARGET |      \
	 SVGA3D_SURFACE_HINT_INDIRECT_UPDATE | SVGA3D_SURFACE_MULTISAMPLE |    \
	 SVGA3D_SURFACE_DRAWINDIRECT_ARGS | SVGA3D_SURFACE_RESOURCE_CLAMP |    \
	 SVGA3D_SURFACE_BIND_TENSOR)

#define SVGA3D_SURFACE_STAGING_COPY_DISALLOWED_MASK                            \
	(SVGA3D_SURFACE_STAGING_DISALLOWED_MASK |                              \
	 SVGA3D_SURFACE_TRANSFER_TO_BUFFER |                                   \
	 SVGA3D_SURFACE_TRANSFER_FROM_BUFFER)

#define SVGA3D_SURFACE_LOGICOPS_DISALLOWED_MASK                                \
	(SVGA3D_SURFACE_CUBEMAP | SVGA3D_SURFACE_DEAD2 |                       \
	 SVGA3D_SURFACE_AUTOGENMIPMAPS | SVGA3D_SURFACE_VOLUME |               \
	 SVGA3D_SURFACE_1D | SVGA3D_SURFACE_BIND_VERTEX_BUFFER |               \
	 SVGA3D_SURFACE_BIND_INDEX_BUFFER |                                    \
	 SVGA3D_SURFACE_BIND_CONSTANT_BUFFER |                                 \
	 SVGA3D_SURFACE_BIND_DEPTH_STENCIL |                                   \
	 SVGA3D_SURFACE_BIND_STREAM_OUTPUT |                                   \
	 SVGA3D_SURFACE_TRANSFER_FROM_BUFFER | SVGA3D_SURFACE_MULTISAMPLE |    \
	 SVGA3D_SURFACE_BIND_UAVIEW | SVGA3D_SURFACE_TRANSFER_TO_BUFFER |      \
	 SVGA3D_SURFACE_BIND_RAW_VIEWS | SVGA3D_SURFACE_BUFFER_STRUCTURED |    \
	 SVGA3D_SURFACE_DRAWINDIRECT_ARGS | SVGA3D_SURFACE_RESOURCE_CLAMP |    \
	 SVGA3D_SURFACE_STAGING_COPY)

#define SVGA3D_SURFACE_SM5_MASK                                                \
	(SVGA3D_SURFACE_DRAWINDIRECT_ARGS | SVGA3D_SURFACE_BUFFER_STRUCTURED | \
	 SVGA3D_SURFACE_BIND_RAW_VIEWS | SVGA3D_SURFACE_BIND_UAVIEW |          \
	 SVGA3D_SURFACE_RESOURCE_CLAMP)

#define SVGA3D_BUFFER_STRUCTURED_STRIDE_MAX 2048

typedef enum {
	SVGA3DFORMAT_OP_TEXTURE = 0x00000001,
	SVGA3DFORMAT_OP_VOLUMETEXTURE = 0x00000002,
	SVGA3DFORMAT_OP_CUBETEXTURE = 0x00000004,
	SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET = 0x00000008,
	SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET = 0x00000010,
	SVGA3DFORMAT_OP_ZSTENCIL = 0x00000040,
	SVGA3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH = 0x00000080,

	SVGA3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET = 0x00000100,

	SVGA3DFORMAT_OP_DISPLAYMODE = 0x00000400,

	SVGA3DFORMAT_OP_3DACCELERATION = 0x00000800,

	SVGA3DFORMAT_OP_PIXELSIZE = 0x00001000,

	SVGA3DFORMAT_OP_CONVERT_TO_ARGB = 0x00002000,

	SVGA3DFORMAT_OP_OFFSCREENPLAIN = 0x00004000,

	SVGA3DFORMAT_OP_SRGBREAD = 0x00008000,

	SVGA3DFORMAT_OP_BUMPMAP = 0x00010000,

	SVGA3DFORMAT_OP_DMAP = 0x00020000,

	SVGA3DFORMAT_OP_NOFILTER = 0x00040000,

	SVGA3DFORMAT_OP_MEMBEROFGROUP_ARGB = 0x00080000,

	SVGA3DFORMAT_OP_SRGBWRITE = 0x00100000,

	SVGA3DFORMAT_OP_NOALPHABLEND = 0x00200000,

	SVGA3DFORMAT_OP_AUTOGENMIPMAP = 0x00400000,

	SVGA3DFORMAT_OP_VERTEXTEXTURE = 0x00800000,

	SVGA3DFORMAT_OP_NOTEXCOORDWRAPNORMIP = 0x01000000
} SVGA3dFormatOp;

#define SVGA3D_FORMAT_POSITIVE                                                 \
	(SVGA3DFORMAT_OP_TEXTURE | SVGA3DFORMAT_OP_VOLUMETEXTURE |             \
	 SVGA3DFORMAT_OP_CUBETEXTURE |                                         \
	 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET |                              \
	 SVGA3DFORMAT_OP_SAME_FORMAT_RENDERTARGET | SVGA3DFORMAT_OP_ZSTENCIL | \
	 SVGA3DFORMAT_OP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH |                 \
	 SVGA3DFORMAT_OP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET |                \
	 SVGA3DFORMAT_OP_DISPLAYMODE | SVGA3DFORMAT_OP_3DACCELERATION |        \
	 SVGA3DFORMAT_OP_PIXELSIZE | SVGA3DFORMAT_OP_CONVERT_TO_ARGB |         \
	 SVGA3DFORMAT_OP_OFFSCREENPLAIN | SVGA3DFORMAT_OP_SRGBREAD |           \
	 SVGA3DFORMAT_OP_BUMPMAP | SVGA3DFORMAT_OP_DMAP |                      \
	 SVGA3DFORMAT_OP_MEMBEROFGROUP_ARGB | SVGA3DFORMAT_OP_SRGBWRITE |      \
	 SVGA3DFORMAT_OP_AUTOGENMIPMAP | SVGA3DFORMAT_OP_VERTEXTEXTURE)

#define SVGA3D_FORMAT_NEGATIVE                                                 \
	(SVGA3DFORMAT_OP_NOFILTER | SVGA3DFORMAT_OP_NOALPHABLEND |             \
	 SVGA3DFORMAT_OP_NOTEXCOORDWRAPNORMIP)

typedef union {
	uint32 value;
	struct {
		uint32 texture : 1;
		uint32 volumeTexture : 1;
		uint32 cubeTexture : 1;
		uint32 offscreenRenderTarget : 1;
		uint32 sameFormatRenderTarget : 1;
		uint32 unknown1 : 1;
		uint32 zStencil : 1;
		uint32 zStencilArbitraryDepth : 1;
		uint32 sameFormatUpToAlpha : 1;
		uint32 unknown2 : 1;
		uint32 displayMode : 1;
		uint32 acceleration3d : 1;
		uint32 pixelSize : 1;
		uint32 convertToARGB : 1;
		uint32 offscreenPlain : 1;
		uint32 sRGBRead : 1;
		uint32 bumpMap : 1;
		uint32 dmap : 1;
		uint32 noFilter : 1;
		uint32 memberOfGroupARGB : 1;
		uint32 sRGBWrite : 1;
		uint32 noAlphaBlend : 1;
		uint32 autoGenMipMap : 1;
		uint32 vertexTexture : 1;
		uint32 noTexCoordWrapNorMip : 1;
	};
} SVGA3dSurfaceFormatCaps;

typedef enum {
	SVGA3D_RS_INVALID = 0,
	SVGA3D_RS_MIN = 1,
	SVGA3D_RS_ZENABLE = 1,
	SVGA3D_RS_ZWRITEENABLE = 2,
	SVGA3D_RS_ALPHATESTENABLE = 3,
	SVGA3D_RS_DITHERENABLE = 4,
	SVGA3D_RS_BLENDENABLE = 5,
	SVGA3D_RS_FOGENABLE = 6,
	SVGA3D_RS_SPECULARENABLE = 7,
	SVGA3D_RS_STENCILENABLE = 8,
	SVGA3D_RS_LIGHTINGENABLE = 9,
	SVGA3D_RS_NORMALIZENORMALS = 10,
	SVGA3D_RS_POINTSPRITEENABLE = 11,
	SVGA3D_RS_POINTSCALEENABLE = 12,
	SVGA3D_RS_STENCILREF = 13,
	SVGA3D_RS_STENCILMASK = 14,
	SVGA3D_RS_STENCILWRITEMASK = 15,
	SVGA3D_RS_FOGSTART = 16,
	SVGA3D_RS_FOGEND = 17,
	SVGA3D_RS_FOGDENSITY = 18,
	SVGA3D_RS_POINTSIZE = 19,
	SVGA3D_RS_POINTSIZEMIN = 20,
	SVGA3D_RS_POINTSIZEMAX = 21,
	SVGA3D_RS_POINTSCALE_A = 22,
	SVGA3D_RS_POINTSCALE_B = 23,
	SVGA3D_RS_POINTSCALE_C = 24,
	SVGA3D_RS_FOGCOLOR = 25,
	SVGA3D_RS_AMBIENT = 26,
	SVGA3D_RS_CLIPPLANEENABLE = 27,
	SVGA3D_RS_FOGMODE = 28,
	SVGA3D_RS_FILLMODE = 29,
	SVGA3D_RS_SHADEMODE = 30,
	SVGA3D_RS_LINEPATTERN = 31,
	SVGA3D_RS_SRCBLEND = 32,
	SVGA3D_RS_DSTBLEND = 33,
	SVGA3D_RS_BLENDEQUATION = 34,
	SVGA3D_RS_CULLMODE = 35,
	SVGA3D_RS_ZFUNC = 36,
	SVGA3D_RS_ALPHAFUNC = 37,
	SVGA3D_RS_STENCILFUNC = 38,
	SVGA3D_RS_STENCILFAIL = 39,
	SVGA3D_RS_STENCILZFAIL = 40,
	SVGA3D_RS_STENCILPASS = 41,
	SVGA3D_RS_ALPHAREF = 42,
	SVGA3D_RS_FRONTWINDING = 43,
	SVGA3D_RS_COORDINATETYPE = 44,
	SVGA3D_RS_ZBIAS = 45,
	SVGA3D_RS_RANGEFOGENABLE = 46,
	SVGA3D_RS_COLORWRITEENABLE = 47,
	SVGA3D_RS_VERTEXMATERIALENABLE = 48,
	SVGA3D_RS_DIFFUSEMATERIALSOURCE = 49,
	SVGA3D_RS_SPECULARMATERIALSOURCE = 50,
	SVGA3D_RS_AMBIENTMATERIALSOURCE = 51,
	SVGA3D_RS_EMISSIVEMATERIALSOURCE = 52,
	SVGA3D_RS_TEXTUREFACTOR = 53,
	SVGA3D_RS_LOCALVIEWER = 54,
	SVGA3D_RS_SCISSORTESTENABLE = 55,
	SVGA3D_RS_BLENDCOLOR = 56,
	SVGA3D_RS_STENCILENABLE2SIDED = 57,
	SVGA3D_RS_CCWSTENCILFUNC = 58,
	SVGA3D_RS_CCWSTENCILFAIL = 59,
	SVGA3D_RS_CCWSTENCILZFAIL = 60,
	SVGA3D_RS_CCWSTENCILPASS = 61,
	SVGA3D_RS_VERTEXBLEND = 62,
	SVGA3D_RS_SLOPESCALEDEPTHBIAS = 63,
	SVGA3D_RS_DEPTHBIAS = 64,

	SVGA3D_RS_OUTPUTGAMMA = 65,
	SVGA3D_RS_ZVISIBLE = 66,
	SVGA3D_RS_LASTPIXEL = 67,
	SVGA3D_RS_CLIPPING = 68,
	SVGA3D_RS_WRAP0 = 69,
	SVGA3D_RS_WRAP1 = 70,
	SVGA3D_RS_WRAP2 = 71,
	SVGA3D_RS_WRAP3 = 72,
	SVGA3D_RS_WRAP4 = 73,
	SVGA3D_RS_WRAP5 = 74,
	SVGA3D_RS_WRAP6 = 75,
	SVGA3D_RS_WRAP7 = 76,
	SVGA3D_RS_WRAP8 = 77,
	SVGA3D_RS_WRAP9 = 78,
	SVGA3D_RS_WRAP10 = 79,
	SVGA3D_RS_WRAP11 = 80,
	SVGA3D_RS_WRAP12 = 81,
	SVGA3D_RS_WRAP13 = 82,
	SVGA3D_RS_WRAP14 = 83,
	SVGA3D_RS_WRAP15 = 84,
	SVGA3D_RS_MULTISAMPLEANTIALIAS = 85,
	SVGA3D_RS_MULTISAMPLEMASK = 86,
	SVGA3D_RS_INDEXEDVERTEXBLENDENABLE = 87,
	SVGA3D_RS_TWEENFACTOR = 88,
	SVGA3D_RS_ANTIALIASEDLINEENABLE = 89,
	SVGA3D_RS_COLORWRITEENABLE1 = 90,
	SVGA3D_RS_COLORWRITEENABLE2 = 91,
	SVGA3D_RS_COLORWRITEENABLE3 = 92,
	SVGA3D_RS_SEPARATEALPHABLENDENABLE = 93,
	SVGA3D_RS_SRCBLENDALPHA = 94,
	SVGA3D_RS_DSTBLENDALPHA = 95,
	SVGA3D_RS_BLENDEQUATIONALPHA = 96,
	SVGA3D_RS_TRANSPARENCYANTIALIAS = 97,
	SVGA3D_RS_LINEWIDTH = 98,
	SVGA3D_RS_MAX
} SVGA3dRenderStateName;

typedef enum {
	SVGA3D_TRANSPARENCYANTIALIAS_NORMAL = 0,
	SVGA3D_TRANSPARENCYANTIALIAS_ALPHATOCOVERAGE = 1,
	SVGA3D_TRANSPARENCYANTIALIAS_SUPERSAMPLE = 2,
	SVGA3D_TRANSPARENCYANTIALIAS_MAX
} SVGA3dTransparencyAntialiasType;

typedef enum {
	SVGA3D_VERTEXMATERIAL_NONE = 0,
	SVGA3D_VERTEXMATERIAL_DIFFUSE = 1,
	SVGA3D_VERTEXMATERIAL_SPECULAR = 2,
	SVGA3D_VERTEXMATERIAL_MAX = 3,
} SVGA3dVertexMaterial;

typedef enum {
	SVGA3D_FILLMODE_INVALID = 0,
	SVGA3D_FILLMODE_MIN = 1,
	SVGA3D_FILLMODE_POINT = 1,
	SVGA3D_FILLMODE_LINE = 2,
	SVGA3D_FILLMODE_FILL = 3,
	SVGA3D_FILLMODE_MAX
} SVGA3dFillModeType;

#pragma pack(push, 1)
typedef union {
	struct {
		uint16 mode;
		uint16 face;
	};
	uint32 uintValue;
} SVGA3dFillMode;
#pragma pack(pop)

typedef enum {
	SVGA3D_SHADEMODE_INVALID = 0,
	SVGA3D_SHADEMODE_FLAT = 1,
	SVGA3D_SHADEMODE_SMOOTH = 2,
	SVGA3D_SHADEMODE_PHONG = 3,
	SVGA3D_SHADEMODE_MAX
} SVGA3dShadeMode;

#pragma pack(push, 1)
typedef union {
	struct {
		uint16 repeat;
		uint16 pattern;
	};
	uint32 uintValue;
} SVGA3dLinePattern;
#pragma pack(pop)

typedef enum {
	SVGA3D_BLENDOP_INVALID = 0,
	SVGA3D_BLENDOP_MIN = 1,
	SVGA3D_BLENDOP_ZERO = 1,
	SVGA3D_BLENDOP_ONE = 2,
	SVGA3D_BLENDOP_SRCCOLOR = 3,
	SVGA3D_BLENDOP_INVSRCCOLOR = 4,
	SVGA3D_BLENDOP_SRCALPHA = 5,
	SVGA3D_BLENDOP_INVSRCALPHA = 6,
	SVGA3D_BLENDOP_DESTALPHA = 7,
	SVGA3D_BLENDOP_INVDESTALPHA = 8,
	SVGA3D_BLENDOP_DESTCOLOR = 9,
	SVGA3D_BLENDOP_INVDESTCOLOR = 10,
	SVGA3D_BLENDOP_SRCALPHASAT = 11,
	SVGA3D_BLENDOP_BLENDFACTOR = 12,
	SVGA3D_BLENDOP_INVBLENDFACTOR = 13,
	SVGA3D_BLENDOP_SRC1COLOR = 14,
	SVGA3D_BLENDOP_INVSRC1COLOR = 15,
	SVGA3D_BLENDOP_SRC1ALPHA = 16,
	SVGA3D_BLENDOP_INVSRC1ALPHA = 17,
	SVGA3D_BLENDOP_BLENDFACTORALPHA = 18,
	SVGA3D_BLENDOP_INVBLENDFACTORALPHA = 19,
	SVGA3D_BLENDOP_MAX
} SVGA3dBlendOp;

typedef enum {
	SVGA3D_BLENDEQ_INVALID = 0,
	SVGA3D_BLENDEQ_MIN = 1,
	SVGA3D_BLENDEQ_ADD = 1,
	SVGA3D_BLENDEQ_SUBTRACT = 2,
	SVGA3D_BLENDEQ_REVSUBTRACT = 3,
	SVGA3D_BLENDEQ_MINIMUM = 4,
	SVGA3D_BLENDEQ_MAXIMUM = 5,
	SVGA3D_BLENDEQ_MAX
} SVGA3dBlendEquation;

typedef enum {
	SVGA3D_DX11_LOGICOP_MIN = 0,
	SVGA3D_DX11_LOGICOP_CLEAR = 0,
	SVGA3D_DX11_LOGICOP_SET = 1,
	SVGA3D_DX11_LOGICOP_COPY = 2,
	SVGA3D_DX11_LOGICOP_COPY_INVERTED = 3,
	SVGA3D_DX11_LOGICOP_NOOP = 4,
	SVGA3D_DX11_LOGICOP_INVERT = 5,
	SVGA3D_DX11_LOGICOP_AND = 6,
	SVGA3D_DX11_LOGICOP_NAND = 7,
	SVGA3D_DX11_LOGICOP_OR = 8,
	SVGA3D_DX11_LOGICOP_NOR = 9,
	SVGA3D_DX11_LOGICOP_XOR = 10,
	SVGA3D_DX11_LOGICOP_EQUIV = 11,
	SVGA3D_DX11_LOGICOP_AND_REVERSE = 12,
	SVGA3D_DX11_LOGICOP_AND_INVERTED = 13,
	SVGA3D_DX11_LOGICOP_OR_REVERSE = 14,
	SVGA3D_DX11_LOGICOP_OR_INVERTED = 15,
	SVGA3D_DX11_LOGICOP_MAX
} SVGA3dDX11LogicOp;

typedef enum {
	SVGA3D_FRONTWINDING_INVALID = 0,
	SVGA3D_FRONTWINDING_CW = 1,
	SVGA3D_FRONTWINDING_MIN = 1,
	SVGA3D_FRONTWINDING_CCW = 2,
	SVGA3D_FRONTWINDING_MAX
} SVGA3dFrontWinding;

typedef enum {
	SVGA3D_FACE_INVALID = 0,
	SVGA3D_FACE_NONE = 1,
	SVGA3D_FACE_MIN = 1,
	SVGA3D_FACE_FRONT = 2,
	SVGA3D_FACE_BACK = 3,
	SVGA3D_FACE_FRONT_BACK = 4,
	SVGA3D_FACE_MAX
} SVGA3dFace;

typedef enum {
	SVGA3D_CMP_INVALID = 0,
	SVGA3D_CMP_NEVER = 1,
	SVGA3D_CMP_LESS = 2,
	SVGA3D_CMP_EQUAL = 3,
	SVGA3D_CMP_LESSEQUAL = 4,
	SVGA3D_CMP_GREATER = 5,
	SVGA3D_CMP_NOTEQUAL = 6,
	SVGA3D_CMP_GREATEREQUAL = 7,
	SVGA3D_CMP_ALWAYS = 8,
	SVGA3D_CMP_MAX
} SVGA3dCmpFunc;

typedef enum {
	SVGA3D_FOGFUNC_INVALID = 0,
	SVGA3D_FOGFUNC_EXP = 1,
	SVGA3D_FOGFUNC_EXP2 = 2,
	SVGA3D_FOGFUNC_LINEAR = 3,
	SVGA3D_FOGFUNC_PER_VERTEX = 4
} SVGA3dFogFunction;

typedef enum {
	SVGA3D_FOGTYPE_INVALID = 0,
	SVGA3D_FOGTYPE_VERTEX = 1,
	SVGA3D_FOGTYPE_PIXEL = 2,
	SVGA3D_FOGTYPE_MAX = 3
} SVGA3dFogType;

typedef enum {
	SVGA3D_FOGBASE_INVALID = 0,
	SVGA3D_FOGBASE_DEPTHBASED = 1,
	SVGA3D_FOGBASE_RANGEBASED = 2,
	SVGA3D_FOGBASE_MAX = 3
} SVGA3dFogBase;

typedef enum {
	SVGA3D_STENCILOP_INVALID = 0,
	SVGA3D_STENCILOP_MIN = 1,
	SVGA3D_STENCILOP_KEEP = 1,
	SVGA3D_STENCILOP_ZERO = 2,
	SVGA3D_STENCILOP_REPLACE = 3,
	SVGA3D_STENCILOP_INCRSAT = 4,
	SVGA3D_STENCILOP_DECRSAT = 5,
	SVGA3D_STENCILOP_INVERT = 6,
	SVGA3D_STENCILOP_INCR = 7,
	SVGA3D_STENCILOP_DECR = 8,
	SVGA3D_STENCILOP_MAX
} SVGA3dStencilOp;

typedef enum {
	SVGA3D_CLIPPLANE_0 = (1 << 0),
	SVGA3D_CLIPPLANE_1 = (1 << 1),
	SVGA3D_CLIPPLANE_2 = (1 << 2),
	SVGA3D_CLIPPLANE_3 = (1 << 3),
	SVGA3D_CLIPPLANE_4 = (1 << 4),
	SVGA3D_CLIPPLANE_5 = (1 << 5),
} SVGA3dClipPlanes;

typedef enum {
	SVGA3D_CLEAR_COLOR = 0x1,
	SVGA3D_CLEAR_DEPTH = 0x2,
	SVGA3D_CLEAR_STENCIL = 0x4,

	SVGA3D_CLEAR_COLORFILL = 0x8
} SVGA3dClearFlag;

typedef enum {
	SVGA3D_RT_DEPTH = 0,
	SVGA3D_RT_MIN = 0,
	SVGA3D_RT_STENCIL = 1,
	SVGA3D_RT_COLOR0 = 2,
	SVGA3D_RT_COLOR1 = 3,
	SVGA3D_RT_COLOR2 = 4,
	SVGA3D_RT_COLOR3 = 5,
	SVGA3D_RT_COLOR4 = 6,
	SVGA3D_RT_COLOR5 = 7,
	SVGA3D_RT_COLOR6 = 8,
	SVGA3D_RT_COLOR7 = 9,
	SVGA3D_RT_MAX,
	SVGA3D_RT_INVALID = ((uint32)-1),
} SVGA3dRenderTargetType;

#define SVGA3D_MAX_RT_COLOR (SVGA3D_RT_COLOR7 - SVGA3D_RT_COLOR0 + 1)

#pragma pack(push, 1)
typedef union {
	struct {
		uint32 red : 1;
		uint32 green : 1;
		uint32 blue : 1;
		uint32 alpha : 1;
	};
	uint32 uintValue;
} SVGA3dColorMask;
#pragma pack(pop)

typedef enum {
	SVGA3D_VBLEND_DISABLE = 0,
	SVGA3D_VBLEND_1WEIGHT = 1,
	SVGA3D_VBLEND_2WEIGHT = 2,
	SVGA3D_VBLEND_3WEIGHT = 3,
	SVGA3D_VBLEND_MAX = 4,
} SVGA3dVertexBlendFlags;

typedef enum {
	SVGA3D_WRAPCOORD_0 = 1 << 0,
	SVGA3D_WRAPCOORD_1 = 1 << 1,
	SVGA3D_WRAPCOORD_2 = 1 << 2,
	SVGA3D_WRAPCOORD_3 = 1 << 3,
	SVGA3D_WRAPCOORD_ALL = 0xF,
} SVGA3dWrapFlags;

typedef enum {
	SVGA3D_TS_INVALID = 0,
	SVGA3D_TS_MIN = 1,
	SVGA3D_TS_BIND_TEXTURE = 1,
	SVGA3D_TS_COLOROP = 2,
	SVGA3D_TS_COLORARG1 = 3,
	SVGA3D_TS_COLORARG2 = 4,
	SVGA3D_TS_ALPHAOP = 5,
	SVGA3D_TS_ALPHAARG1 = 6,
	SVGA3D_TS_ALPHAARG2 = 7,
	SVGA3D_TS_ADDRESSU = 8,
	SVGA3D_TS_ADDRESSV = 9,
	SVGA3D_TS_MIPFILTER = 10,
	SVGA3D_TS_MAGFILTER = 11,
	SVGA3D_TS_MINFILTER = 12,
	SVGA3D_TS_BORDERCOLOR = 13,
	SVGA3D_TS_TEXCOORDINDEX = 14,
	SVGA3D_TS_TEXTURETRANSFORMFLAGS = 15,
	SVGA3D_TS_TEXCOORDGEN = 16,
	SVGA3D_TS_BUMPENVMAT00 = 17,
	SVGA3D_TS_BUMPENVMAT01 = 18,
	SVGA3D_TS_BUMPENVMAT10 = 19,
	SVGA3D_TS_BUMPENVMAT11 = 20,
	SVGA3D_TS_TEXTURE_MIPMAP_LEVEL = 21,
	SVGA3D_TS_TEXTURE_LOD_BIAS = 22,
	SVGA3D_TS_TEXTURE_ANISOTROPIC_LEVEL = 23,
	SVGA3D_TS_ADDRESSW = 24,

	SVGA3D_TS_GAMMA = 25,
	SVGA3D_TS_BUMPENVLSCALE = 26,
	SVGA3D_TS_BUMPENVLOFFSET = 27,
	SVGA3D_TS_COLORARG0 = 28,
	SVGA3D_TS_ALPHAARG0 = 29,
	SVGA3D_TS_PREGB_MAX = 30,
	SVGA3D_TS_CONSTANT = 30,
	SVGA3D_TS_COLOR_KEY_ENABLE = 31,
	SVGA3D_TS_COLOR_KEY = 32,
	SVGA3D_TS_MAX
} SVGA3dTextureStateName;

typedef enum {
	SVGA3D_TC_INVALID = 0,
	SVGA3D_TC_DISABLE = 1,
	SVGA3D_TC_SELECTARG1 = 2,
	SVGA3D_TC_SELECTARG2 = 3,
	SVGA3D_TC_MODULATE = 4,
	SVGA3D_TC_ADD = 5,
	SVGA3D_TC_ADDSIGNED = 6,
	SVGA3D_TC_SUBTRACT = 7,
	SVGA3D_TC_BLENDTEXTUREALPHA = 8,
	SVGA3D_TC_BLENDDIFFUSEALPHA = 9,
	SVGA3D_TC_BLENDCURRENTALPHA = 10,
	SVGA3D_TC_BLENDFACTORALPHA = 11,
	SVGA3D_TC_MODULATE2X = 12,
	SVGA3D_TC_MODULATE4X = 13,
	SVGA3D_TC_DSDT = 14,
	SVGA3D_TC_DOTPRODUCT3 = 15,
	SVGA3D_TC_BLENDTEXTUREALPHAPM = 16,
	SVGA3D_TC_ADDSIGNED2X = 17,
	SVGA3D_TC_ADDSMOOTH = 18,
	SVGA3D_TC_PREMODULATE = 19,
	SVGA3D_TC_MODULATEALPHA_ADDCOLOR = 20,
	SVGA3D_TC_MODULATECOLOR_ADDALPHA = 21,
	SVGA3D_TC_MODULATEINVALPHA_ADDCOLOR = 22,
	SVGA3D_TC_MODULATEINVCOLOR_ADDALPHA = 23,
	SVGA3D_TC_BUMPENVMAPLUMINANCE = 24,
	SVGA3D_TC_MULTIPLYADD = 25,
	SVGA3D_TC_LERP = 26,
	SVGA3D_TC_MAX
} SVGA3dTextureCombiner;

#define SVGA3D_TC_CAP_BIT(svga3d_tc_op)                                        \
	(svga3d_tc_op ? (1 << (svga3d_tc_op - 1)) : 0)

typedef enum {
	SVGA3D_TEX_ADDRESS_INVALID = 0,
	SVGA3D_TEX_ADDRESS_MIN = 1,
	SVGA3D_TEX_ADDRESS_WRAP = 1,
	SVGA3D_TEX_ADDRESS_MIRROR = 2,
	SVGA3D_TEX_ADDRESS_CLAMP = 3,
	SVGA3D_TEX_ADDRESS_BORDER = 4,
	SVGA3D_TEX_ADDRESS_MIRRORONCE = 5,
	SVGA3D_TEX_ADDRESS_EDGE = 6,
	SVGA3D_TEX_ADDRESS_MAX
} SVGA3dTextureAddress;

typedef enum {
	SVGA3D_TEX_FILTER_NONE = 0,
	SVGA3D_TEX_FILTER_MIN = 0,
	SVGA3D_TEX_FILTER_NEAREST = 1,
	SVGA3D_TEX_FILTER_LINEAR = 2,
	SVGA3D_TEX_FILTER_ANISOTROPIC = 3,
	SVGA3D_TEX_FILTER_FLATCUBIC = 4,
	SVGA3D_TEX_FILTER_GAUSSIANCUBIC = 5,
	SVGA3D_TEX_FILTER_PYRAMIDALQUAD = 6,
	SVGA3D_TEX_FILTER_GAUSSIANQUAD = 7,
	SVGA3D_TEX_FILTER_MAX
} SVGA3dTextureFilter;

typedef enum {
	SVGA3D_TEX_TRANSFORM_OFF = 0,
	SVGA3D_TEX_TRANSFORM_S = (1 << 0),
	SVGA3D_TEX_TRANSFORM_T = (1 << 1),
	SVGA3D_TEX_TRANSFORM_R = (1 << 2),
	SVGA3D_TEX_TRANSFORM_Q = (1 << 3),
	SVGA3D_TEX_PROJECTED = (1 << 15),
} SVGA3dTexTransformFlags;

typedef enum {
	SVGA3D_TEXCOORD_GEN_OFF = 0,
	SVGA3D_TEXCOORD_GEN_EYE_POSITION = 1,
	SVGA3D_TEXCOORD_GEN_EYE_NORMAL = 2,
	SVGA3D_TEXCOORD_GEN_REFLECTIONVECTOR = 3,
	SVGA3D_TEXCOORD_GEN_SPHERE = 4,
	SVGA3D_TEXCOORD_GEN_MAX
} SVGA3dTextureCoordGen;

typedef enum {
	SVGA3D_TA_INVALID = 0,
	SVGA3D_TA_TFACTOR = 1,
	SVGA3D_TA_PREVIOUS = 2,
	SVGA3D_TA_DIFFUSE = 3,
	SVGA3D_TA_TEXTURE = 4,
	SVGA3D_TA_SPECULAR = 5,
	SVGA3D_TA_CONSTANT = 6,
	SVGA3D_TA_MAX
} SVGA3dTextureArgData;

#define SVGA3D_TM_MASK_LEN 4

typedef enum {
	SVGA3D_TM_NONE = 0,
	SVGA3D_TM_ALPHA = (1 << SVGA3D_TM_MASK_LEN),
	SVGA3D_TM_ONE_MINUS = (2 << SVGA3D_TM_MASK_LEN),
} SVGA3dTextureArgModifier;

typedef enum {
	SVGA3D_DECLUSAGE_POSITION = 0,
	SVGA3D_DECLUSAGE_BLENDWEIGHT,
	SVGA3D_DECLUSAGE_BLENDINDICES,
	SVGA3D_DECLUSAGE_NORMAL,
	SVGA3D_DECLUSAGE_PSIZE,
	SVGA3D_DECLUSAGE_TEXCOORD,
	SVGA3D_DECLUSAGE_TANGENT,
	SVGA3D_DECLUSAGE_BINORMAL,
	SVGA3D_DECLUSAGE_TESSFACTOR,
	SVGA3D_DECLUSAGE_POSITIONT,
	SVGA3D_DECLUSAGE_COLOR,
	SVGA3D_DECLUSAGE_FOG,
	SVGA3D_DECLUSAGE_DEPTH,
	SVGA3D_DECLUSAGE_SAMPLE,
	SVGA3D_DECLUSAGE_MAX
} SVGA3dDeclUsage;

typedef enum {
	SVGA3D_DECLMETHOD_DEFAULT = 0,
	SVGA3D_DECLMETHOD_PARTIALU,
	SVGA3D_DECLMETHOD_PARTIALV,
	SVGA3D_DECLMETHOD_CROSSUV,
	SVGA3D_DECLMETHOD_UV,
	SVGA3D_DECLMETHOD_LOOKUP,
	SVGA3D_DECLMETHOD_LOOKUPPRESAMPLED,
} SVGA3dDeclMethod;

typedef enum {
	SVGA3D_DECLTYPE_FLOAT1 = 0,
	SVGA3D_DECLTYPE_FLOAT2 = 1,
	SVGA3D_DECLTYPE_FLOAT3 = 2,
	SVGA3D_DECLTYPE_FLOAT4 = 3,
	SVGA3D_DECLTYPE_D3DCOLOR = 4,
	SVGA3D_DECLTYPE_UBYTE4 = 5,
	SVGA3D_DECLTYPE_SHORT2 = 6,
	SVGA3D_DECLTYPE_SHORT4 = 7,
	SVGA3D_DECLTYPE_UBYTE4N = 8,
	SVGA3D_DECLTYPE_SHORT2N = 9,
	SVGA3D_DECLTYPE_SHORT4N = 10,
	SVGA3D_DECLTYPE_USHORT2N = 11,
	SVGA3D_DECLTYPE_USHORT4N = 12,
	SVGA3D_DECLTYPE_UDEC3 = 13,
	SVGA3D_DECLTYPE_DEC3N = 14,
	SVGA3D_DECLTYPE_FLOAT16_2 = 15,
	SVGA3D_DECLTYPE_FLOAT16_4 = 16,
	SVGA3D_DECLTYPE_MAX,
} SVGA3dDeclType;

typedef union {
	struct {
		uint32 count : 30;

		uint32 indexedData : 1;

		uint32 instanceData : 1;
	};

	uint32 value;
} SVGA3dVertexDivisor;

typedef enum {

	SVGA3D_PRIMITIVE_INVALID = 0,
	SVGA3D_PRIMITIVE_MIN = 0,
	SVGA3D_PRIMITIVE_TRIANGLELIST = 1,
	SVGA3D_PRIMITIVE_POINTLIST = 2,
	SVGA3D_PRIMITIVE_LINELIST = 3,
	SVGA3D_PRIMITIVE_LINESTRIP = 4,
	SVGA3D_PRIMITIVE_TRIANGLESTRIP = 5,
	SVGA3D_PRIMITIVE_TRIANGLEFAN = 6,
	SVGA3D_PRIMITIVE_LINELIST_ADJ = 7,
	SVGA3D_PRIMITIVE_PREDX_MAX = 7,
	SVGA3D_PRIMITIVE_LINESTRIP_ADJ = 8,
	SVGA3D_PRIMITIVE_TRIANGLELIST_ADJ = 9,
	SVGA3D_PRIMITIVE_TRIANGLESTRIP_ADJ = 10,
	SVGA3D_PRIMITIVE_DX10_MAX = 11,
	SVGA3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 11,
	SVGA3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 12,
	SVGA3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 13,
	SVGA3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 14,
	SVGA3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 15,
	SVGA3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 16,
	SVGA3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 17,
	SVGA3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 18,
	SVGA3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 19,
	SVGA3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 20,
	SVGA3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 21,
	SVGA3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 22,
	SVGA3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 23,
	SVGA3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 24,
	SVGA3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 25,
	SVGA3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 26,
	SVGA3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 27,
	SVGA3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 28,
	SVGA3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 29,
	SVGA3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 30,
	SVGA3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 31,
	SVGA3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 32,
	SVGA3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 33,
	SVGA3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 34,
	SVGA3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 35,
	SVGA3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 36,
	SVGA3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 37,
	SVGA3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 38,
	SVGA3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 39,
	SVGA3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 40,
	SVGA3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 41,
	SVGA3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 42,
	SVGA3D_PRIMITIVE_MAX = 43
} SVGA3dPrimitiveType;

typedef enum {
	SVGA3D_COORDINATE_INVALID = 0,
	SVGA3D_COORDINATE_LEFTHANDED = 1,
	SVGA3D_COORDINATE_RIGHTHANDED = 2,
	SVGA3D_COORDINATE_MAX
} SVGA3dCoordinateType;

typedef enum {
	SVGA3D_TRANSFORM_INVALID = 0,
	SVGA3D_TRANSFORM_WORLD = 1,
	SVGA3D_TRANSFORM_MIN = 1,
	SVGA3D_TRANSFORM_VIEW = 2,
	SVGA3D_TRANSFORM_PROJECTION = 3,
	SVGA3D_TRANSFORM_TEXTURE0 = 4,
	SVGA3D_TRANSFORM_TEXTURE1 = 5,
	SVGA3D_TRANSFORM_TEXTURE2 = 6,
	SVGA3D_TRANSFORM_TEXTURE3 = 7,
	SVGA3D_TRANSFORM_TEXTURE4 = 8,
	SVGA3D_TRANSFORM_TEXTURE5 = 9,
	SVGA3D_TRANSFORM_TEXTURE6 = 10,
	SVGA3D_TRANSFORM_TEXTURE7 = 11,
	SVGA3D_TRANSFORM_WORLD1 = 12,
	SVGA3D_TRANSFORM_WORLD2 = 13,
	SVGA3D_TRANSFORM_WORLD3 = 14,
	SVGA3D_TRANSFORM_MAX
} SVGA3dTransformType;

typedef enum {
	SVGA3D_LIGHTTYPE_INVALID = 0,
	SVGA3D_LIGHTTYPE_MIN = 1,
	SVGA3D_LIGHTTYPE_POINT = 1,
	SVGA3D_LIGHTTYPE_SPOT1 = 2,
	SVGA3D_LIGHTTYPE_SPOT2 = 3,
	SVGA3D_LIGHTTYPE_DIRECTIONAL = 4,
	SVGA3D_LIGHTTYPE_MAX
} SVGA3dLightType;

typedef enum {
	SVGA3D_CUBEFACE_POSX = 0,
	SVGA3D_CUBEFACE_NEGX = 1,
	SVGA3D_CUBEFACE_POSY = 2,
	SVGA3D_CUBEFACE_NEGY = 3,
	SVGA3D_CUBEFACE_POSZ = 4,
	SVGA3D_CUBEFACE_NEGZ = 5,
} SVGA3dCubeFace;

typedef enum {
	SVGA3D_SHADERTYPE_INVALID = 0,
	SVGA3D_SHADERTYPE_MIN = 1,
	SVGA3D_SHADERTYPE_VS = 1,
	SVGA3D_SHADERTYPE_PS = 2,
	SVGA3D_SHADERTYPE_PREDX_MAX = 3,
	SVGA3D_SHADERTYPE_GS = 3,
	SVGA3D_SHADERTYPE_DX10_MAX = 4,
	SVGA3D_SHADERTYPE_HS = 4,
	SVGA3D_SHADERTYPE_DS = 5,
	SVGA3D_SHADERTYPE_CS = 6,
	SVGA3D_SHADERTYPE_MAX = 7
} SVGA3dShaderType;

#define SVGA3D_NUM_SHADERTYPE_PREDX                                            \
	(SVGA3D_SHADERTYPE_PREDX_MAX - SVGA3D_SHADERTYPE_MIN)

#define SVGA3D_NUM_SHADERTYPE_DX10                                             \
	(SVGA3D_SHADERTYPE_DX10_MAX - SVGA3D_SHADERTYPE_MIN)

#define SVGA3D_NUM_SHADERTYPE (SVGA3D_SHADERTYPE_MAX - SVGA3D_SHADERTYPE_MIN)

typedef enum {
	SVGA3D_CONST_TYPE_MIN = 0,
	SVGA3D_CONST_TYPE_FLOAT = 0,
	SVGA3D_CONST_TYPE_INT = 1,
	SVGA3D_CONST_TYPE_BOOL = 2,
	SVGA3D_CONST_TYPE_MAX = 3,
} SVGA3dShaderConstType;

#define SVGA3D_CONSTREG_MAX 256
#define SVGA3D_CONSTINTREG_MAX 16
#define SVGA3D_CONSTBOOLREG_MAX 16

typedef enum {
	SVGA3D_STRETCH_BLT_POINT = 0,
	SVGA3D_STRETCH_BLT_LINEAR = 1,
	SVGA3D_STRETCH_BLT_MAX
} SVGA3dStretchBltMode;

typedef enum {
	SVGA3D_QUERYTYPE_INVALID = ((uint8)-1),
	SVGA3D_QUERYTYPE_MIN = 0,
	SVGA3D_QUERYTYPE_OCCLUSION = 0,
	SVGA3D_QUERYTYPE_TIMESTAMP = 1,
	SVGA3D_QUERYTYPE_TIMESTAMPDISJOINT = 2,
	SVGA3D_QUERYTYPE_PIPELINESTATS = 3,
	SVGA3D_QUERYTYPE_OCCLUSIONPREDICATE = 4,
	SVGA3D_QUERYTYPE_STREAMOUTPUTSTATS = 5,
	SVGA3D_QUERYTYPE_STREAMOVERFLOWPREDICATE = 6,
	SVGA3D_QUERYTYPE_OCCLUSION64 = 7,
	SVGA3D_QUERYTYPE_DX10_MAX = 8,
	SVGA3D_QUERYTYPE_SOSTATS_STREAM0 = 8,
	SVGA3D_QUERYTYPE_SOSTATS_STREAM1 = 9,
	SVGA3D_QUERYTYPE_SOSTATS_STREAM2 = 10,
	SVGA3D_QUERYTYPE_SOSTATS_STREAM3 = 11,
	SVGA3D_QUERYTYPE_SOP_STREAM0 = 12,
	SVGA3D_QUERYTYPE_SOP_STREAM1 = 13,
	SVGA3D_QUERYTYPE_SOP_STREAM2 = 14,
	SVGA3D_QUERYTYPE_SOP_STREAM3 = 15,
	SVGA3D_QUERYTYPE_MAX
} SVGA3dQueryType;

typedef uint8 SVGA3dQueryTypeUint8;

#define SVGA3D_NUM_QUERYTYPE (SVGA3D_QUERYTYPE_MAX - SVGA3D_QUERYTYPE_MIN)

#define SVGA3D_MAX_QUERY 64

#pragma pack(push, 1)
typedef struct {
	uint32 samplesRendered;
} SVGADXOcclusionQueryResult;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct {
	uint32 passed;
} SVGADXEventQueryResult;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct {
	uint64 timestamp;
} SVGADXTimestampQueryResult;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct {
	uint64 realFrequency;
	uint32 disjoint;
} SVGADXTimestampDisjointQueryResult;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct {
	uint64 inputAssemblyVertices;
	uint64 inputAssemblyPrimitives;
	uint64 vertexShaderInvocations;
	uint64 geometryShaderInvocations;
	uint64 geometryShaderPrimitives;
	uint64 clipperInvocations;
	uint64 clipperPrimitives;
	uint64 pixelShaderInvocations;
	uint64 hullShaderInvocations;
	uint64 domainShaderInvocations;
	uint64 computeShaderInvocations;
} SVGADXPipelineStatisticsQueryResult;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct {
	uint32 anySamplesRendered;
} SVGADXOcclusionPredicateQueryResult;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct {
	uint64 numPrimitivesWritten;
	uint64 numPrimitivesRequired;
} SVGADXStreamOutStatisticsQueryResult;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct {
	uint32 overflowed;
} SVGADXStreamOutPredicateQueryResult;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct {
	uint64 samplesRendered;
} SVGADXOcclusion64QueryResult;
#pragma pack(pop)

#pragma pack(push, 1)
typedef union SVGADXQueryResultUnion {
	SVGADXOcclusionQueryResult occ;
	SVGADXEventQueryResult event;
	SVGADXTimestampQueryResult ts;
	SVGADXTimestampDisjointQueryResult tsDisjoint;
	SVGADXPipelineStatisticsQueryResult pipelineStats;
	SVGADXOcclusionPredicateQueryResult occPred;
	SVGADXStreamOutStatisticsQueryResult soStats;
	SVGADXStreamOutPredicateQueryResult soPred;
	SVGADXOcclusion64QueryResult occ64;
} SVGADXQueryResultUnion;
#pragma pack(pop)

typedef enum {
	SVGA3D_QUERYSTATE_PENDING = 0,
	SVGA3D_QUERYSTATE_SUCCEEDED = 1,
	SVGA3D_QUERYSTATE_FAILED = 2,
	SVGA3D_QUERYSTATE_NEW = 3,
} SVGA3dQueryState;

typedef enum {
	SVGA3D_WRITE_HOST_VRAM = 1,
	SVGA3D_READ_HOST_VRAM = 2,
} SVGA3dTransferType;

#define SVGA3D_LOGICOP_INVALID 0
#define SVGA3D_LOGICOP_COPY 1

#define SVGA3D_LOGICOP_MIN 1
#define SVGA3D_LOGICOP_NOT 2
#define SVGA3D_LOGICOP_AND 3
#define SVGA3D_LOGICOP_OR 4
#define SVGA3D_LOGICOP_XOR 5
#define SVGA3D_LOGICOP_NXOR 6
#define SVGA3D_LOGICOP_ROP3 7

#define SVGA3D_LOGICOP_MAX 8

typedef uint16 SVGA3dLogicOp;

#define SVGA3D_LOGICOP_ROP3_INVALID ((uint16)-1)
#define SVGA3D_LOGICOP_ROP3_MIN 0
#define SVGA3D_LOGICOP_ROP3_MAX 256

typedef uint16 SVGA3dLogicOpRop3;

#pragma pack(push, 1)
typedef struct {
	union {
		struct {
			uint16 function;
			uint8 type;
			uint8 base;
		};
		uint32 uintValue;
	};
} SVGA3dFogMode;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct SVGA3dSurfaceImageId {
	uint32 sid;
	uint32 face;
	uint32 mipmap;
} SVGA3dSurfaceImageId;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct SVGA3dSubSurfaceId {
	uint32 sid;
	uint32 subResourceId;
} SVGA3dSubSurfaceId;
#pragma pack(pop)

#pragma pack(push, 1)
typedef struct {
	uint32 width;
	uint32 height;
	uint32 depth;
} SVGA3dSize;
#pragma pack(pop)

typedef enum {
	SVGA_OTABLE_MOB = 0,
	SVGA_OTABLE_MIN = 0,
	SVGA_OTABLE_SURFACE = 1,
	SVGA_OTABLE_CONTEXT = 2,
	SVGA_OTABLE_SHADER = 3,
	SVGA_OTABLE_SCREENTARGET = 4,

	SVGA_OTABLE_DX9_MAX = 5,

	SVGA_OTABLE_DXCONTEXT = 5,
	SVGA_OTABLE_DX_MAX = 6,

	SVGA_OTABLE_DEVEL_MAX = 6,
	SVGA_OTABLE_MAX = 6,

	SVGA_OTABLE_RESERVED1 = 6,
	SVGA_OTABLE_RESERVED2 = 7,
	SVGA_OTABLE_BUG_1952836_MAX = 8,
} SVGAOTableType;

typedef enum {
	SVGA_COTABLE_MIN = 0,
	SVGA_COTABLE_RTVIEW = 0,
	SVGA_COTABLE_DSVIEW = 1,
	SVGA_COTABLE_SRVIEW = 2,
	SVGA_COTABLE_ELEMENTLAYOUT = 3,
	SVGA_COTABLE_BLENDSTATE = 4,
	SVGA_COTABLE_DEPTHSTENCIL = 5,
	SVGA_COTABLE_RASTERIZERSTATE = 6,
	SVGA_COTABLE_SAMPLER = 7,
	SVGA_COTABLE_STREAMOUTPUT = 8,
	SVGA_COTABLE_DXQUERY = 9,
	SVGA_COTABLE_DXSHADER = 10,
	SVGA_COTABLE_DX10_MAX = 11,
	SVGA_COTABLE_UAVIEW = 11,
	SVGA_COTABLE_MAX = 12,
} SVGACOTableType;

#define SVGA_COTABLE_MAX_IDS (MAX_UINT16 - 2)

typedef enum SVGAMobFormat {
	SVGA3D_MOBFMT_INVALID = SVGA3D_INVALID_ID,
	SVGA3D_MOBFMT_PT_0 = 0,
	SVGA3D_MOBFMT_MIN = 0,
	SVGA3D_MOBFMT_PT_1 = 1,
	SVGA3D_MOBFMT_PT_2 = 2,
	SVGA3D_MOBFMT_RANGE = 3,
	SVGA3D_MOBFMT_PT64_0 = 4,
	SVGA3D_MOBFMT_PT64_1 = 5,
	SVGA3D_MOBFMT_PT64_2 = 6,
	SVGA3D_MOBFMT_PREDX_MAX = 7,
	SVGA3D_MOBFMT_EMPTY = 7,

	SVGA3D_MOBFMT_MAX,

	SVGA3D_MOBFMT_HB,
} SVGAMobFormat;

#define SVGA3D_MOB_EMPTY_BASE 1

typedef enum SVGA3dMSPattern {
	SVGA3D_MS_PATTERN_NONE = 0,
	SVGA3D_MS_PATTERN_MIN = 0,
	SVGA3D_MS_PATTERN_STANDARD = 1,
	SVGA3D_MS_PATTERN_CENTER = 2,
	SVGA3D_MS_PATTERN_MAX = 3,
} SVGA3dMSPattern;

typedef enum SVGA3dMSQualityLevel {
	SVGA3D_MS_QUALITY_NONE = 0,
	SVGA3D_MS_QUALITY_MIN = 0,
	SVGA3D_MS_QUALITY_FULL = 1,
	SVGA3D_MS_QUALITY_RESOLVED = 2,
	SVGA3D_MS_QUALITY_MAX = 3,
} SVGA3dMSQualityLevel;

typedef enum SVGA3dFrameUpdateType {
	SVGA3D_FRAME_END = 0,
	SVGA3D_FRAME_MIN = 0,
	SVGA3D_FRAME_PARTIAL = 1,
	SVGA3D_FRAME_UNKNOWN = 2,
	SVGA3D_FRAME_MAX = 3,
} SVGA3dFrameUpdateType;

#endif
