#ifdef VB_ONLY

#ifdef VB_ONLY
	
	#define D3DDEVICEINFO_TEXTURING_CDESC 		D3DDEVICEINFO_TEXTURING 
	#define D3DDEVICEINFO_TEXTURE_MANAGER_CDESC 	D3DDEVICEINFO_TEXTURE_MANAGER
	#define D3DCAPS8_CDESC 				D3DCAPS8 
	#define D3DPRIMCAPS8_CDESC 			D3DPRIMCAPS8
	#define D3DLINEPATTERN_CDESC 			D3DLINEPATTERN
	#define D3DRASTER_STATUS_CDESC			D3DRASTER_STATUS
	#define D3DADAPTER_IDENTIFIER8_CDESC		D3DADAPTER_IDENTIFIER8
	#define D3DRANGE_CDESC				D3DRANGE
	#define D3DLOCKED_BOX_CDESC			D3DLOCKED_BOX
	#define D3DBOX_CDESC				D3DBOX
	#define D3DLOCKED_RECT_CDESC			D3DLOCKED_RECT
	#define D3DVOLUME_DESC_CDESC			D3DVOLUME_DESC
	#define D3DSURFACE_DESC_CDESC			D3DSURFACE_DESC
	#define D3DINDEXBUFFER_DESC_CDESC		D3DINDEXBUFFER_DESC
	#define D3DVERTEXBUFFER_DESC_CDESC		D3DVERTEXBUFFER_DESC
	#define D3DLIGHT8_CDESC 			D3DLIGHT8
	#define D3DGAMMARAMP_CDESC			D3DGAMMARAMP
	#define D3DPRESENT_PARAMETERS_CDESC		D3DPRESENT_PARAMETERS
	#define D3DDISPLAYMODE_CDESC			D3DDISPLAYMODE
	#define D3DVERTEX_CDESC 			D3DVERTEX
	#define D3DLVERTEX_CDESC 			D3DLVERTEX
	#define D3DTLVERTEX_CDESC 			D3DTLVERTEX
	#define D3DHVERTEX_CDESC 			D3DHVERTEX
	#define D3DRECT_CDESC 				D3DRECT
	#define D3DPOINT_CDESC 				D3DPOINT
	#define D3DRASTER_STATUS_CDESC 			D3DRASTER_STATUS
	#define D3DCLIPSTATUS8_CDESC			D3DCLIPSTATUS8
	//#define D3DCOLORVALUE_CDESC 			D3DCOLORVALUE
	#define D3DVERTEX2_CDESC			D3DVERTEX2
	#define D3DTLVERTEX2_CDESC			D3DTLVERTEX2
	#define D3DLVERTEX2_CDESC			D3DLVERTEX2
	#define D3DTRIPATCH_INFO_CDESC			D3DTRIPATCH_INFO
	#define D3DRECTPATCH_INFO_CDESC			D3DRECTPATCH_INFO
	//#define D3DCLIPPLANE_CDESC			D3DCLIPPLANE
#endif

#ifdef C_ONLY
	//DEFINED in COMMON.IDL
	//DXGUID 
	//RECT
	//D3DVECTOR


	#define CONST_D3DLIGHTTYPE		LONG
	#define CONST_D3DSHADEMODE		LONG
	#define CONST_D3DFILLMODE		LONG
	#define CONST_D3DBLEND		LONG
	#define CONST_D3DTEXTUREADDRESS	LONG
	#define CONST_D3DCULL			LONG
	#define CONST_D3DCMPFUNC		LONG
	#define CONST_D3DSTENCILOP		LONG
	#define CONST_D3DFOGMODE		LONG
	#define CONST_D3DZBUFFERTYPE		LONG
	#define CONST_D3DPRIMITIVETYPE	LONG
	#define CONST_D3DTRANSFORMSTATETYPE	LONG
	#define CONST_D3DRENDERSTATETYPE	LONG
	#define CONST_D3DMATERIALCOLORSOURCE		LONG
	#define CONST_D3DTEXTURESTAGESTATETYPE	LONG
	#define CONST_D3DTEXTUREOP			LONG
	#define CONST_D3DTEXTUREMAGFILTER		LONG
	#define CONST_D3DTEXTUREMINFILTER		LONG
	#define CONST_D3DTEXTUREMIPFILTER		LONG
	#define CONST_D3DDEVICETYPE			LONG
	#define CONST_D3DTYPE			LONG
	#define CONST_D3DMULTISAMPLETYPE		LONG
	#define CONST_D3DSWAPEFFECT			LONG
	#define CONST_D3DPOOL			LONG
	#define CONST_D3DFORMAT			LONG
	#define CONST_D3DRESOURCETYPE		LONG
#endif

#ifdef VB_ONLY

	#define	IDirect3D8 		Direct3D8
	#define	IDirect3DDevice8 	Direct3DDevice8 
	#define	IDirect3DResource8 	Direct3DResource8 
	#define IDirect3DSwapChain8 	Direct3DSwapChain8 
	#define	IDirect3DBaseTexture8 	Direct3DBaseTexture8 
	#define IDirect3DTexture8 	Direct3DTexture8 
	#define IDirect3DVolumeTexture8 Direct3DVolumeTexture8 
	#define IDirect3DCubeTexture8 	Direct3DCubeTexture8 
	#define IDirect3DVertexBuffer8 	Direct3DVertexBuffer8 
	#define IDirect3DIndexBuffer8 	Direct3DIndexBuffer8 
	#define IDirect3DSurface8 	Direct3DSurface8 
	#define IDirect3DVolume8 	Direct3DVolume8 



#endif 



	#undef  DWORD
	#undef  LPDWORD
	#undef  BOOL 
	#undef  LPBOOL
	#undef  UINT

	#define WORD				SHORT
	#define DWORD				LONG
	#define LPDWORD				LONG*
	#define BOOL				LONG
	#define LPBOOL				LONG*
	#define UINT				INT
	#define HWND				LONG
	#define HANDLE				LONG
	#define HDC				LONG
	#define BYTE				BYTE
	#define LPUINT				INT*
	#define VOID				void
	#define WINAPI 			_stdcall
	#define REFGUID			DXGUID_CDESC*
	#define GUID 			DXGUID_CDESC
	#define LPVOID			void*
	#define LPRECT			RECT_CDESC*
	#define HMONITOR			LONG
	#define THIS
	#define THIS_

	#define D3DCOLOR			LONG
	#define D3DMATERIALHANDLE		LONG
	#define D3DTEXTUREHANDLE		LONG
	#define D3DMATRIXHANDLE			LONG
	#define D3DCOLORMODEL			LONG
	#define D3DVALUE			FLOAT


	
	#define LPDIRECT3D8		IDirect3D8 *
	#define	LPDIRECTDRAWPALETTE	LONG *
	#define LPDIRECT3DDEVICE8	IDirect3DDevice8*
	#define LPDIRECT3DSURFACE8	IDirect3DSurface8 *
	#define LPDIRECT3DBASETEXTURE8	IDirect3DBaseTexture8 *
	#define LPD3DVERTEXBUFFER8	IDirect3DVertexBuffer8 *
	#define LPD3DINDEXBUFFER8	IDirect3DIndexBuffer8 *
	#define LPDIRECT3DVERTEXBUFFER8	IDirect3DVertexBuffer8 *
	#define LPDIRECT3DINDEXBUFFER8	IDirect3DIndexBuffer8 *
	#define LPDIRECT3DVOLUME8	IDirect3DVolume8 *
	#define LPDIRECT3DTEXTURE8	IDirect3DTexture8 *
	#define LPDIRECT3DCUBETEXTURE8	IDirect3DCubeTexture8 *
	#define LPD3DRECT		D3DRECT_CDESC *
	#define LPD3DMATRIX		D3DMATRIX_CDESC *
	#define LPD3DVIEWPORT8		D3DVIEWPORT8_CDESC *
	#define LPD3DMATERIAL8		D3DMATERIAL8_CDESC *
	#define LPD3DLIGHT8		D3DLIGHT8_CDESC *
	#define	LPD3DVECTOR		D3DVECTOR_CDESC *
	#define LPD3D_BOX		D3D_BOX_CDESC *
	#define	LPD3DVALUE		FLOAT *

	//BUGBUG
	#define LPD3DCLIPSTATUS8	D3DCLIPSTATUS8_CDESC *




/************************************* Interface List **********************************************/

	interface IDirect3D8;
	interface IDirect3DDevice8;
	interface IDirect3DBaseTexture8;
	interface IDirect3DTexture8;
	interface IDirect3DVolumeTexture8;
	interface IDirect3DCubeTexture8;
	interface ID3DVertexBuffer8;
	interface ID3DIndexBuffer8;
	interface IDirect3DSurface8;
	interface IDirect3DVolume8;
	interface IDirect3DVertexBuffer8;
	interface IDirect3DIndexBuffer8;
	interface IDirect3DSwapChain8;
	interface IDirect3DResource8;
	interface IDirect3DSwapChain8;

#ifdef VB_ONLY




/******************************************* ENUMS **********************************************/
//From D3D8Caps.h



[helpcontext(83272)]
typedef enum CONST_D3DPMISCCAPSFLAGS 
{
	D3DPMISCCAPS_MASKZ              =0x00000002,
	D3DPMISCCAPS_LINEPATTERNREP     =0x00000004,
	D3DPMISCCAPS_CULLNONE           =0x00000010,
	D3DPMISCCAPS_CULLCW             =0x00000020,
	D3DPMISCCAPS_CULLCCW            =0x00000040,
	D3DPMISCCAPS_COLORWRITEENABLE   =0x00000080,
	D3DPMISCCAPS_CLIPPLANESCALEDPOINTS =0x00000100, /* Device correctly clips scaled points to clip planes */
	D3DPMISCCAPS_CLIPTLVERTS        =0x00000200, /* device will clip post-transformed vertex primitives */
	D3DPMISCCAPS_TSSARGTEMP         =0x00000400, /* device supports D3DTA_TEMP for temporary register */
	D3DPMISCCAPS_BLENDOP            =0x00000800, /* device supports D3DRS_BLENDOP */
} CONST_D3DPMISCCAPSFLAGS;


 [helpcontext(83264)]
typedef enum CONST_D3DLINECAPS
{
	D3DLINECAPS_TEXTURE             =0x00000001,
	D3DLINECAPS_ZTEST               =0x00000002,
	D3DLINECAPS_BLEND               =0x00000004,
	D3DLINECAPS_ALPHACMP            =0x00000008,
	D3DLINECAPS_FOG                 =0x00000010,
} CONST_D3DLINECAPS;

/* D3DPRIMCAPS dwRasterCaps */
 [helpcontext(83274)]
typedef enum CONST_D3DPRASTERCAPSFLAGS 
{
	D3DPRASTERCAPS_DITHER           =0x00000001,
	D3DPRASTERCAPS_ROP2             =0x00000002,
	D3DPRASTERCAPS_XOR              =0x00000004,
	D3DPRASTERCAPS_PAT              =0x00000008,
	D3DPRASTERCAPS_ZTEST            =0x00000010,
	D3DPRASTERCAPS_FOGVERTEX        =0x00000080,
	D3DPRASTERCAPS_FOGTABLE         =0x00000100,
	D3DPRASTERCAPS_ANTIALIASEDGES   =0x00001000,
	D3DPRASTERCAPS_MIPMAPLODBIAS    =0x00002000,
	D3DPRASTERCAPS_ZBIAS            =0x00004000,
	D3DPRASTERCAPS_ZBUFFERLESSHSR   =0x00008000,
	D3DPRASTERCAPS_FOGRANGE         =0x00010000,
	D3DPRASTERCAPS_ANISOTROPY       =0x00020000,
	D3DPRASTERCAPS_WBUFFER          =0x00040000,
	D3DPRASTERCAPS_WFOG             =0x00100000,
	D3DPRASTERCAPS_ZFOG             =0x00200000,
	D3DPRASTERCAPS_COLORPERSPECTIVE =0x00400000, /* Device iterates colors perspective correct */
	D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE  =0x00800000,

} CONST_D3DPRASTERCAPSFLAGS ;

/* D3DPRIMCAPS dwZCmpCaps, dwAlphaCmpCaps */
 [helpcontext(83271)]
typedef enum CONST_D3DPCMPCAPSFLAGS {
	D3DPCMPCAPS_NEVER              = 0x00000001,
	D3DPCMPCAPS_LESS               = 0x00000002,
	D3DPCMPCAPS_EQUAL              = 0x00000004,
	D3DPCMPCAPS_LESSEQUAL          = 0x00000008,
	D3DPCMPCAPS_GREATER            = 0x00000010,
	D3DPCMPCAPS_NOTEQUAL           = 0x00000020,
	D3DPCMPCAPS_GREATEREQUAL       = 0x00000040,
	D3DPCMPCAPS_ALWAYS             = 0x00000080,
} CONST_D3DPCMPCAPSFLAGS;


/* D3DPRIMCAPS dwSourceBlendCaps, dwDestBlendCaps */
 [helpcontext(83269)]
typedef enum CONST_D3DPBLENDCAPSFLAGS {
	D3DPBLENDCAPS_ZERO             = 0x00000001,
	D3DPBLENDCAPS_ONE              = 0x00000002,
	D3DPBLENDCAPS_SRCCOLOR         = 0x00000004,
	D3DPBLENDCAPS_INVSRCCOLOR      = 0x00000008,
	D3DPBLENDCAPS_SRCALPHA         = 0x00000010,
	D3DPBLENDCAPS_INVSRCALPHA      = 0x00000020,
	D3DPBLENDCAPS_DESTALPHA        = 0x00000040,
	D3DPBLENDCAPS_INVDESTALPHA     = 0x00000080,
	D3DPBLENDCAPS_DESTCOLOR        = 0x00000100,
	D3DPBLENDCAPS_INVDESTCOLOR     = 0x00000200,
	D3DPBLENDCAPS_SRCALPHASAT      = 0x00000400,
	D3DPBLENDCAPS_BOTHSRCALPHA     = 0x00000800,
	D3DPBLENDCAPS_BOTHINVSRCALPHA  = 0x00001000,
} CONST_D3DPBLENDCAPSFLAGS;

/* D3DPRIMCAPS dwShadeCaps */
 [helpcontext(83278)]
typedef enum CONST_D3DPSHADECAPSFLAGS {
	D3DPSHADECAPS_COLORGOURAUDRGB      = 0x00000008,
	D3DPSHADECAPS_SPECULARGOURAUDRGB   = 0x00000200,
	D3DPSHADECAPS_ALPHAGOURAUDBLEND    = 0x00004000,
	D3DPSHADECAPS_FOGGOURAUD           = 0x00080000,

} CONST_D3DPSHADECAPSFLAGS;

/* D3DPRIMCAPS dwTextureCaps */
 [helpcontext(83280)]
typedef enum CONST_D3DPTEXTURECAPSFLAGS {

	D3DPTEXTURECAPS_PERSPECTIVE         =0x00000001, /* Perspective-correct texturing is supported */
	D3DPTEXTURECAPS_POW2                =0x00000002, /* Power-of-2 texture dimensions are required - applies to non-Cube/Volume textures only. */
	D3DPTEXTURECAPS_ALPHA               =0x00000004, /* Alpha in texture pixels is supported */
	D3DPTEXTURECAPS_SQUAREONLY          =0x00000020, /* Only square textures are supported */
	D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE =0x00000040, /* Texture indices are not scaled by the texture size prior to interpolation */
	D3DPTEXTURECAPS_ALPHAPALETTE        =0x00000080, /* Device can draw alpha from texture palettes */

	// Device can use non-POW2 textures if:
	//  1) D3DTEXTURE_ADDRESS is set to CLAMP for this texture's stage
	//  2) D3DRS_WRAP(N) is zero for this texture's coordinates
	//  3) mip mapping is not enabled (use magnification filter only)
	D3DPTEXTURECAPS_NONPOW2CONDITIONAL  =0x00000100,
	D3DPTEXTURECAPS_PROJECTED           =0x00000400, /* Device can do D3DTTFF_PROJECTED */
	D3DPTEXTURECAPS_CUBEMAP             =0x00000800, /* Device can do cubemap textures */
	D3DPTEXTURECAPS_VOLUMEMAP           =0x00002000, /* Device can do volume textures */
	D3DPTEXTURECAPS_MIPMAP              =0x00004000, /* Device can do mipmapped textures */
	D3DPTEXTURECAPS_MIPVOLUMEMAP        =0x00008000, /* Device can do mipmapped volume textures */
	D3DPTEXTURECAPS_MIPCUBEMAP          =0x00010000, /* Device can do mipmapped cube maps */
	D3DPTEXTURECAPS_CUBEMAP_POW2        =0x00020000, /* Device requires that cubemaps be power-of-2 dimension */
	D3DPTEXTURECAPS_VOLUMEMAP_POW2      =0x00040000, /* Device requires that volume maps be power-of-2 dimension */

} CONST_D3DPTEXTURECAPSFLAGS;

/* D3DPRIMCAPS dwTextureFilterCaps */
 [helpcontext(83281)]
typedef enum CONST_D3DPTFILTERCAPSFLAGS { 
	D3DPTFILTERCAPS_MINFPOINT           =0x00000100, /* Min Filter */
	D3DPTFILTERCAPS_MINFLINEAR          =0x00000200,
	D3DPTFILTERCAPS_MINFANISOTROPIC     =0x00000400,
	D3DPTFILTERCAPS_MIPFPOINT           =0x00010000, /* Mip Filter */
	D3DPTFILTERCAPS_MIPFLINEAR          =0x00020000,
	D3DPTFILTERCAPS_MAGFPOINT           =0x01000000, /* Mag Filter */
	D3DPTFILTERCAPS_MAGFLINEAR          =0x02000000,
	D3DPTFILTERCAPS_MAGFANISOTROPIC     =0x04000000,
	D3DPTFILTERCAPS_MAGFAFLATCUBIC      =0x08000000,
	D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC   =0x10000000,

} CONST_D3DPTFILTERCAPSFLAGS;

/* D3DPRIMCAPS dwTextureBlendCaps */
 [helpcontext(87060)]
typedef enum CONST_D3DPTBLENDCAPSFLAGS { 
	D3DPTBLENDCAPS_DECAL            =0x00000001,
	D3DPTBLENDCAPS_MODULATE         =0x00000002,
	D3DPTBLENDCAPS_DECALALPHA       =0x00000004,
	D3DPTBLENDCAPS_MODULATEALPHA    =0x00000008,
	D3DPTBLENDCAPS_DECALMASK        =0x00000010,
	D3DPTBLENDCAPS_MODULATEMASK     =0x00000020,
	D3DPTBLENDCAPS_COPY             =0x00000040,
	D3DPTBLENDCAPS_ADD              =0x00000080,
} CONST_D3DPTBLENDCAPSFLAGS;

/* D3DPRIMCAPS dwTextureAddressCaps */
 [helpcontext(83279)]
typedef enum CONST_D3DPTADDRESSCAPSFLAGS { 
	D3DPTADDRESSCAPS_WRAP           =0x00000001,
	D3DPTADDRESSCAPS_MIRROR         =0x00000002,
	D3DPTADDRESSCAPS_CLAMP          =0x00000004,
	D3DPTADDRESSCAPS_BORDER         =0x00000008,
	D3DPTADDRESSCAPS_INDEPENDENTUV  =0x00000010,
	D3DPTADDRESSCAPS_MIRRORONCE     =0x00000020,
} CONST_D3DPTADDRESSCAPSFLAGS;


/* D3DDEVICEDESC dwStencilCaps */
 [helpcontext(83889)]
typedef enum CONST_D3DSTENCILCAPFLAGS { 
	D3DSTENCILCAPS_KEEP     =0x00000001,
	D3DSTENCILCAPS_ZERO     =0x00000002,
	D3DSTENCILCAPS_REPLACE  =0x00000004,
	D3DSTENCILCAPS_INCRSAT  =0x00000008,
	D3DSTENCILCAPS_DECRSAT  =0x00000010,
	D3DSTENCILCAPS_INVERT   =0x00000020,
	D3DSTENCILCAPS_INCR     =0x00000040,
	D3DSTENCILCAPS_DECR     =0x00000080,
} CONST_D3DSTENCILCAPFLAGS;


/* D3DDEVICEDESC dwTextureOpCaps */
 [helpcontext(83294)]
typedef enum CONST_D3DTEXOPCAPSFLAGS { 
	D3DTEXOPCAPS_DISABLE                    =0x00000001,
	D3DTEXOPCAPS_SELECTARG1                 =0x00000002,
	D3DTEXOPCAPS_SELECTARG2                 =0x00000004,
	D3DTEXOPCAPS_MODULATE                   =0x00000008,
	D3DTEXOPCAPS_MODULATE2X                 =0x00000010,
	D3DTEXOPCAPS_MODULATE4X                 =0x00000020,
	D3DTEXOPCAPS_ADD                        =0x00000040,
	D3DTEXOPCAPS_ADDSIGNED                  =0x00000080,
	D3DTEXOPCAPS_ADDSIGNED2X                =0x00000100,
	D3DTEXOPCAPS_SUBTRACT                   =0x00000200,
	D3DTEXOPCAPS_ADDSMOOTH                  =0x00000400,
	D3DTEXOPCAPS_BLENDDIFFUSEALPHA          =0x00000800,
	D3DTEXOPCAPS_BLENDTEXTUREALPHA          =0x00001000,
	D3DTEXOPCAPS_BLENDFACTORALPHA           =0x00002000,
	D3DTEXOPCAPS_BLENDTEXTUREALPHAPM        =0x00004000,
	D3DTEXOPCAPS_BLENDCURRENTALPHA          =0x00008000,
	D3DTEXOPCAPS_PREMODULATE                =0x00010000,
	D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR     =0x00020000,
	D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA     =0x00040000,
	D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR  =0x00080000,
	D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA  =0x00100000,
	D3DTEXOPCAPS_BUMPENVMAP                 =0x00200000,
	D3DTEXOPCAPS_BUMPENVMAPLUMINANCE        =0x00400000,
	D3DTEXOPCAPS_DOTPRODUCT3                =0x00800000,
	D3DTEXOPCAPS_MULTIPLYADD                =0x01000000,
	D3DTEXOPCAPS_LERP                       =0x02000000,

} CONST_D3DTEXOPCAPSFLAGS;


/* D3DDEVICEDESC dwFVFCaps flags */
 [helpcontext(83259)]
typedef enum CONST_D3DFVFCAPSFLAGS { 
	D3DFVFCAPS_TEXCOORDCOUNTMASK   = 0x0000ffff, /* mask for texture coordinate count field */
	D3DFVFCAPS_DONOTSTRIPELEMENTS  = 0x00080000, /* Device prefers that vertex elements not be stripped */
	D3DFVFCAPS_PSIZE               = 0x00100000, /* Device can receive point size */
} CONST_D3DFVFCAPSFLAGS;


/* D3DCAPS8 dwCaps flags */
 [helpcontext(83242)]
typedef enum CONST_D3DCAPSFLAGS{
	D3DCAPS_READ_SCANLINE               =  0x00020000,
} CONST_D3DCAPSFLAGS;

/* D3DCAPS8 dwCaps2 flags */
 [helpcontext(83241)]
typedef enum CONST_D3DCAPS2FLAGS{
	D3DCAPS2_NO2DDURING3DSCENE       = 0x00000002,
	D3DCAPS2_FULLSCREENGAMMA            = 0x00020000,
	D3DCAPS2_CANRENDERWINDOWED         = 0x00080000,
	D3DCAPS2_CANCALIBRATEGAMMA         = 0x00100000,
	D3DCAPS2_RESERVED                  = 0x02000000,
} CONST_D3DCAPS2FLAGS;

/* D3DCAPS8 flags */
 [helpcontext(87061)]
typedef enum CONST_D3DCAPS3FLAGS
{
	//DDSVCAPS_STEREOSEQUENTIAL      =       0x00000010,
	D3DCAPS3_RESERVED =0x8000001F
} CONST_D3DCAPS3FLAGS;

/* D3DCAPS8 Presentation Interval */
 [helpcontext(83275)]
typedef enum CONST_D3DPRESENT_INTERVAL_FLAGS{
	D3DPRESENT_INTERVAL_DEFAULT     =      0x00000000,
	D3DPRESENT_INTERVAL_ONE         =      0x00000001,
	D3DPRESENT_INTERVAL_TWO         =      0x00000002,
	D3DPRESENT_INTERVAL_THREE       =      0x00000004,
	D3DPRESENT_INTERVAL_FOUR        =      0x00000008,
	D3DPRESENT_INTERVAL_IMMEDIATE   =      0x80000000,
} CONST_D3DPRESENT_INTERVAL_FLAGS;

/* D3DCAPS8 CursorCaps */
 [helpcontext(83252)]
typedef enum CONST_D3DCURSORCAPSFLAGS {
	D3DCURSORCAPS_COLOR                 =  0x00000001,
	D3DCURSORCAPS_LOWRES                =  0x00000002,
} CONST_D3DCURSORCAPSFLAGS;

/* D3DCAPS8 dwDevCaps flags */
 [helpcontext(83253)]
typedef enum CONST_D3DDEVCAPSFLAGS {


	D3DDEVCAPS_EXECUTESYSTEMMEMORY  =0x00000010, /* Device can use execute buffers from system memory */
	D3DDEVCAPS_EXECUTEVIDEOMEMORY   =0x00000020, /* Device can use execute buffers from video memory */
	D3DDEVCAPS_TLVERTEXSYSTEMMEMORY =0x00000040, /* Device can use TL buffers from system memory */
	D3DDEVCAPS_TLVERTEXVIDEOMEMORY  =0x00000080, /* Device can use TL buffers from video memory */
	D3DDEVCAPS_TEXTURESYSTEMMEMORY  =0x00000100, /* Device can texture from system memory */
	D3DDEVCAPS_TEXTUREVIDEOMEMORY   =0x00000200, /* Device can texture from device memory */
	D3DDEVCAPS_DRAWPRIMTLVERTEX     =0x00000400, /* Device can draw TLVERTEX primitives */
	D3DDEVCAPS_CANRENDERAFTERFLIP   =0x00000800, /* Device can render without waiting for flip to complete */
	D3DDEVCAPS_TEXTURENONLOCALVIDMEM =0x00001000, /* Device can texture from nonlocal video memory */
	D3DDEVCAPS_DRAWPRIMITIVES2       =0x00002000, /* Device can support DrawPrimitives2 */
	D3DDEVCAPS_SEPARATETEXTUREMEMORIES =0x00004000, /* Device is texturing from separate memory pools */
	D3DDEVCAPS_DRAWPRIMITIVES2EX    =0x00008000, /* Device can support Extended DrawPrimitives2 i.e. DX7 compliant driver*/
	D3DDEVCAPS_HWTRANSFORMANDLIGHT  =0x00010000, /* Device can support transformation and lighting in hardware and DRAWPRIMITIVES2EX must be also */
	D3DDEVCAPS_CANBLTSYSTONONLOCAL  =0x00020000, /* Device supports a Tex Blt from system memory to non-local vidmem */
	D3DDEVCAPS_HWRASTERIZATION      =0x00080000, /* Device has HW acceleration for rasterization */
	D3DDEVCAPS_PUREDEVICE           =0x00100000, /* Device supports D3DCREATE_PUREDEVICE */
	D3DDEVCAPS_QUINTICRTPATCHES     =0x00200000, /* Device supports quintic Beziers and BSplines */
	D3DDEVCAPS_RTPATCHES            =0x00400000, /* Device supports Rect and Tri patches */
	D3DDEVCAPS_RTPATCHHANDLEZERO    =0x00800000, /* Indicates that RT Patches may be drawn efficiently using handle 0 */
	D3DDEVCAPS_NPATCHES             =0x01000000, /* Device supports N-Patches */

}  CONST_D3DDEVCAPSFLAGS;


/*
 * These are the flags in the D3DCAPS8.dwVertexProcessingCaps field
 */
[helpcontext(83304)]
typedef enum CONST_D3DVTXPCAPSFLAGS {
	/* device can do texgen */
	D3DVTXPCAPS_TEXGEN              =0x00000001,
	/* device can do IDirect3DDevice8 colormaterialsource ops */
	D3DVTXPCAPS_MATERIALSOURCE7     =0x00000002,
	/* device can do directional lights */
	D3DVTXPCAPS_DIRECTIONALLIGHTS   =0x00000008,
	/* device can do positional lights (includes point and spot) */
	D3DVTXPCAPS_POSITIONALLIGHTS    =0x00000010,
	/* device can do local viewer */
	D3DVTXPCAPS_LOCALVIEWER         =0x00000020,
	/* device can do vertex tweening */
	D3DVTXPCAPS_TWEENING            =0x00000040, 
	D3DVTXPCAPS_NO_VSDT_UBYTE4 	=0x00000080,

} CONST_D3DVTXPCAPSFLAGS;

/******************************************* MORE ENUMS **********************************************/
//From D3DTYPES.h



// These bits could be ORed together to use with D3DRS_CLIPPLANEENABLE
//
 [helpcontext(83245)]
typedef enum CONST_D3DCLIPPLANEFLAGS {
	D3DCLIPPLANE0 =1,
	D3DCLIPPLANE1 =2,
	D3DCLIPPLANE2 =4,
	D3DCLIPPLANE3 =8,
	D3DCLIPPLANE4 =16,
	D3DCLIPPLANE5 =32,
} CONST_D3DCLIPPLANEFLAGS;

 [helpcontext(83244)]
typedef enum CONST_D3DCLIPFLAGS {
	D3DCS_LEFT        =0x00000001,
	D3DCS_RIGHT       =0x00000002,
	D3DCS_TOP         =0x00000004,
	D3DCS_BOTTOM      =0x00000008,
	D3DCS_FRONT       =0x00000010,
	D3DCS_BACK        =0x00000020,
	D3DCS_PLANE0      =0x00000040,
	D3DCS_PLANE1      =0x00000080,
	D3DCS_PLANE2      =0x00000100,
	D3DCS_PLANE3      =0x00000200,
	D3DCS_PLANE4      =0x00000400,
	D3DCS_PLANE5      =0x00000800,
	D3DCS_ALL	  =0x00000FFF,
} CONST_D3DCLIPFLAGS;

 [helpcontext(87063)]
typedef enum CONST_D3DCSFLAGS {
	D3DCS_STATUS       = 0x00000001,
	D3DCS_EXTENTS2     = 0x00000002,
	D3DCS_EXTENTS3     = 0x00000004,
} CONST_D3DCSFLAGS ;

 [helpcontext(83263)]
typedef enum CONST_D3DLIGHTTYPE {
    D3DLIGHT_POINT          = 1,
    D3DLIGHT_SPOT           = 2,
    D3DLIGHT_DIRECTIONAL    = 3,
[hidden]    D3DLIGHT_FORCE_DWORD    = 0x7fffffff, /* force 32-bit size enum */
} CONST_D3DLIGHTTYPE;

 [helpcontext(83243)]
typedef enum CONST_D3DCLEARFLAGS {
	D3DCLEAR_TARGET            =0x00000001,  /* Clear target surface */
	D3DCLEAR_ZBUFFER           =0x00000002,  /* Clear target z buffer */
	D3DCLEAR_STENCIL           =0x00000004,  /* Clear stencil planes */
[hidden]	D3DCLEAR_FORCE_DWORD        =0x7FFFFFFF,
} CONST_D3DCLEARFLAGS;


 [helpcontext(83286)]
typedef enum CONST_D3DSHADEMODE {
    D3DSHADE_FLAT              = 1,
    D3DSHADE_GOURAUD           = 2,
    D3DSHADE_PHONG             = 3,
[hidden]    D3DSHADE_FORCE_DWORD       = 0x7fffffff, /* force 32-bit size enum */
} CONST_D3DSHADEMODE;

 [helpcontext(83256)]
typedef enum CONST_D3DFILLMODE {
    D3DFILL_POINT          = 1,
    D3DFILL_WIREFRAME      = 2,
    D3DFILL_SOLID          = 3,
[hidden]    D3DFILL_FORCE_DWORD        = 0x7fffffff, /* force 32-bit size enum */
} CONST_D3DFILLMODE;

 [helpcontext(83240)]
typedef enum CONST_D3DBLEND {
    D3DBLEND_ZERO              = 1,
    D3DBLEND_ONE               = 2,
    D3DBLEND_SRCCOLOR          = 3,
    D3DBLEND_INVSRCCOLOR       = 4,
    D3DBLEND_SRCALPHA          = 5,
    D3DBLEND_INVSRCALPHA       = 6,
    D3DBLEND_DESTALPHA         = 7,
    D3DBLEND_INVDESTALPHA      = 8,
    D3DBLEND_DESTCOLOR         = 9,
    D3DBLEND_INVDESTCOLOR      = 10,
    D3DBLEND_SRCALPHASAT       = 11,
    D3DBLEND_BOTHSRCALPHA      = 12,
    D3DBLEND_BOTHINVSRCALPHA   = 13,
[hidden]    D3DBLEND_FORCE_DWORD       = 0x7fffffff, /* force 32-bit size enum */
} CONST_D3DBLEND;


 [helpcontext(83295)]
typedef enum CONST_D3DTEXTUREADDRESS {
    D3DTADDRESS_WRAP           = 1,
    D3DTADDRESS_MIRROR         = 2,
    D3DTADDRESS_CLAMP          = 3,
    D3DTADDRESS_BORDER         = 4,
    D3DTADDRESS_MIRRORONCE     = 5,
[hidden]    D3DTADDRESS_FORCE_DWORD    = 0x7fffffff, /* force 32-bit size enum */
} CONST_D3DTEXTUREADDRESS;



 [helpcontext(83251)]
typedef enum CONST_D3DCULL {
    D3DCULL_NONE               = 1,
    D3DCULL_CW                 = 2,
    D3DCULL_CCW                = 3,
[hidden]    D3DCULL_FORCE_DWORD        = 0x7fffffff, /* force 32-bit size enum */
} CONST_D3DCULL;

 [helpcontext(83246)]
typedef enum CONST_D3DCMPFUNC {
    D3DCMP_NEVER               = 1,
    D3DCMP_LESS                = 2,
    D3DCMP_EQUAL               = 3,
    D3DCMP_LESSEQUAL           = 4,
    D3DCMP_GREATER             = 5,
    D3DCMP_NOTEQUAL            = 6,
    D3DCMP_GREATEREQUAL        = 7,
    D3DCMP_ALWAYS              = 8,
[hidden]    D3DCMP_FORCE_DWORD         = 0x7fffffff, /* force 32-bit size enum */
} CONST_D3DCMPFUNC;

 [helpcontext(83290)]
typedef enum CONST_D3DSTENCILOP {
    D3DSTENCILOP_KEEP           = 1,
    D3DSTENCILOP_ZERO           = 2,
    D3DSTENCILOP_REPLACE        = 3,
    D3DSTENCILOP_INCRSAT        = 4,
    D3DSTENCILOP_DECRSAT        = 5,
    D3DSTENCILOP_INVERT         = 6,
    D3DSTENCILOP_INCR           = 7,
    D3DSTENCILOP_DECR           = 8,
[hidden]    D3DSTENCILOP_FORCE_DWORD    = 0x7fffffff, /* force 32-bit size enum */
} CONST_D3DSTENCILOP;

 [helpcontext(83857)]
typedef enum CONST_D3DFOGMODE {
    D3DFOG_NONE                = 0,
    D3DFOG_EXP                 = 1,
    D3DFOG_EXP2                = 2,
    D3DFOG_LINEAR              = 3,
[hidden]    D3DFOG_FORCE_DWORD         = 0x7fffffff, /* force 32-bit size enum */
} CONST_D3DFOGMODE;

 [helpcontext(83307)]
typedef enum CONST_D3DZBUFFERTYPE {
    D3DZB_FALSE                 = 0,
    D3DZB_TRUE                  = 1, // Z buffering
    D3DZB_USEW                  = 2, // W buffering
[hidden]  D3DZB_FORCE_DWORD           = 0x7fffffff, /* force 32-bit size enum */
} CONST_D3DZBUFFERTYPE;


// Primitives supported by draw-primitive API
 [helpcontext(83277)]
typedef enum CONST_D3DPRIMITIVETYPE {
    D3DPT_POINTLIST     = 1,
    D3DPT_LINELIST      = 2,
    D3DPT_LINESTRIP     = 3,
    D3DPT_TRIANGLELIST  = 4,
    D3DPT_TRIANGLESTRIP = 5,
    D3DPT_TRIANGLEFAN   = 6,
[hidden]    D3DPT_FORCE_DWORD   = 0x7fffffff, /* force 32-bit size enum */
} CONST_D3DPRIMITIVETYPE;

 [helpcontext(83300)]
typedef enum CONST_D3DTRANSFORMSTATETYPE {
    D3DTS_WORLD         = 256,
    D3DTS_VIEW          = 2,
    D3DTS_PROJECTION    = 3,
    D3DTS_WORLD1        = 257,  // 2nd matrix to blend
    D3DTS_WORLD2        = 258,  // 3rd matrix to blend
    D3DTS_WORLD3        = 259,  // 4th matrix to blend
    D3DTS_TEXTURE0      = 16,
    D3DTS_TEXTURE1      = 17,
    D3DTS_TEXTURE2      = 18,
    D3DTS_TEXTURE3      = 19,
    D3DTS_TEXTURE4      = 20,
    D3DTS_TEXTURE5      = 21,
    D3DTS_TEXTURE6      = 22,
    D3DTS_TEXTURE7      = 23,
[hidden]    D3DTS_FORCE_DWORD     = 0x7fffffff, /* force 32-bit size enum */
} CONST_D3DTRANSFORMSTATETYPE;

 [helpcontext(83282)]
typedef enum CONST_D3DRENDERSTATETYPE {
    D3DRS_ZENABLE            = 7,    /* D3DZBUFFERTYPE (or TRUE/FALSE for legacy) */
    D3DRS_FILLMODE           = 8,    /* D3DFILL_MODE        */
    D3DRS_SHADEMODE          = 9,    /* D3DSHADEMODE */
    D3DRS_LINEPATTERN        = 10,   /* D3DLINEPATTERN */
    D3DRS_ZWRITEENABLE       = 14,   /* TRUE to enable z writes */
    D3DRS_ALPHATESTENABLE    = 15,   /* TRUE to enable alpha tests */
    D3DRS_LASTPIXEL          = 16,   /* TRUE for last-pixel on lines */
    D3DRS_SRCBLEND           = 19,   /* D3DBLEND */
    D3DRS_DESTBLEND          = 20,   /* D3DBLEND */
    D3DRS_CULLMODE           = 22,   /* D3DCULL */
    D3DRS_ZFUNC              = 23,   /* D3DCMPFUNC */
    D3DRS_ALPHAREF           = 24,   /* D3DFIXED */
    D3DRS_ALPHAFUNC          = 25,   /* D3DCMPFUNC */
    D3DRS_DITHERENABLE       = 26,   /* TRUE to enable dithering */
    D3DRS_ALPHABLENDENABLE   = 27,   /* TRUE to enable alpha blending */
    D3DRS_FOGENABLE          = 28,   /* TRUE to enable fog blending */
    D3DRS_SPECULARENABLE     = 29,   /* TRUE to enable specular */
    D3DRS_ZVISIBLE           = 30,   /* TRUE to enable z checking */
    D3DRS_FOGCOLOR           = 34,   /* D3DCOLOR */
    D3DRS_FOGTABLEMODE       = 35,   /* D3DFOGMODE */
    D3DRS_FOGSTART           = 36,   /* Fog start (for both vertex and pixel fog) */
    D3DRS_FOGEND             = 37,   /* Fog end      */
    D3DRS_FOGDENSITY         = 38,   /* Fog density  */
    D3DRS_EDGEANTIALIAS      = 40,   /* TRUE to enable edge antialiasing */
    //D3DRS_COLORKEYENABLE     = 41,   /* TRUE to enable source colorkeyed textures */
    D3DRS_ZBIAS              = 47,   /* LONG Z bias */
    D3DRS_RANGEFOGENABLE     = 48,   /* Enables range-based fog */

    D3DRS_STENCILENABLE      = 52,   /* BOOL enable/disable stenciling */
    D3DRS_STENCILFAIL        = 53,   /* D3DSTENCILOP to do if stencil test fails */
    D3DRS_STENCILZFAIL       = 54,   /* D3DSTENCILOP to do if stencil test passes and Z test fails */
    D3DRS_STENCILPASS        = 55,   /* D3DSTENCILOP to do if both stencil and Z tests pass */
    D3DRS_STENCILFUNC        = 56,   /* D3DCMPFUNC fn.  Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true */
    D3DRS_STENCILREF         = 57,   /* Reference value used in stencil test */
    D3DRS_STENCILMASK        = 58,   /* Mask value used in stencil test */
    D3DRS_STENCILWRITEMASK   = 59,   /* Write mask applied to values written to stencil buffer */
    D3DRS_TEXTUREFACTOR      = 60,   /* D3DCOLOR used for multi-texture blend */

    /*
     * 128 values [128, 255] are reserved for texture coordinate wrap flags.
     * These are constructed with the D3DWRAP_U and D3DWRAP_V macros. Using
     * a flags word preserves forward compatibility with texture coordinates
     * that are >2D.
     */
    D3DRS_WRAP0              = 128,  /* wrap for 1st texture coord. set */
    D3DRS_WRAP1              = 129,  /* wrap for 2nd texture coord. set */
    D3DRS_WRAP2              = 130,  /* wrap for 3rd texture coord. set */
    D3DRS_WRAP3              = 131,  /* wrap for 4th texture coord. set */
    D3DRS_WRAP4              = 132,  /* wrap for 5th texture coord. set */
    D3DRS_WRAP5              = 133,  /* wrap for 6th texture coord. set */
    D3DRS_WRAP6              = 134,  /* wrap for 7th texture coord. set */
    D3DRS_WRAP7              = 135,  /* wrap for 8th texture coord. set */
    D3DRS_CLIPPING            = 136,
    D3DRS_LIGHTING            = 137,
//  D3DRS_EXTENTS             = 138,
    D3DRS_AMBIENT             = 139,
    D3DRS_FOGVERTEXMODE       = 140,
    D3DRS_COLORVERTEX         = 141,
    D3DRS_LOCALVIEWER         = 142,
    D3DRS_NORMALIZENORMALS    = 143,
//  D3DRS_COLORKEYBLENDENABLE = 144,
    D3DRS_DIFFUSEMATERIALSOURCE    = 145,
    D3DRS_SPECULARMATERIALSOURCE   = 146,
    D3DRS_AMBIENTMATERIALSOURCE    = 147,
    D3DRS_EMISSIVEMATERIALSOURCE   = 148,
    D3DRS_VERTEXBLEND              = 151,
    D3DRS_CLIPPLANEENABLE          = 152,

    D3DRS_SOFTWAREVERTEXPROCESSING  = 153,

    D3DRS_POINTSIZE                = 154,   /* FLOAT point size */
    D3DRS_POINTSIZE_MIN            = 155,   /* FLOAT point size min threshold */
    D3DRS_POINTSPRITE_ENABLE       = 156,   /* BOOL point texture coord control */

    D3DRS_POINTSCALE_ENABLE        = 157,   /* BOOL point size scale enable */
    D3DRS_POINTSCALE_A             = 158,   /* FLOAT point attenuation A value */
    D3DRS_POINTSCALE_B             = 159,   /* FLOAT point attenuation B value */
    D3DRS_POINTSCALE_C             = 160,   /* FLOAT point attenuation C value */

    D3DRS_MULTISAMPLE_ANTIALIAS     = 161,  // BOOL - set to do FSAA with multisample buffer
    D3DRS_MULTISAMPLE_MASK          = 162,  // DWORD - per-sample enable/disable
    D3DRS_PATCHEDGESTYLE            = 163,  // Sets whether patch edges will use FLOAT style tessellation
    D3DRS_PATCHSEGMENTS             = 164,  // Number of segments per edge when drawing patches
    D3DRS_DEBUGMONITORTOKEN	    = 165,
    D3DRS_POINT_SIZE_MAX	    = 166,
    D3DRS_INDEXVERTEXBLENDENABLE    = 167,
    D3DRS_COLORWRITEENABLE          = 168,
    D3DRS_TWEENFACTOR               = 170,   // FLOAT tween factor /?
    D3DRS_BLENDOP                   = 171,   // D3DBLENDOP setting
	
[hidden]    D3DRS_FORCE_DWORD               = 0x7fffffff, /* force 32-bit size enum */
} CONST_D3DRENDERSTATETYPE;

// Values for material source
 [helpcontext(83266)]
typedef enum CONST_D3DMATERIALCOLORSOURCE
{
    D3DMCS_MATERIAL = 0,                // Color from material is used
    D3DMCS_COLOR1   = 1,                // Diffuse vertex color is used
    D3DMCS_COLOR2   = 2,                // Specular vertex color is used
[hidden]    D3DMCS_FORCE_DWORD = 0x7fffffff,    // force 32-bit size enum
} CONST_D3DMATERIALCOLORSOURCE;


// Values for material source
 [helpcontext(83247)]
typedef enum CONST_D3DCOLORWRITEENABLEFLAGS 
{
	D3DCOLORWRITEENABLE_RED= 1,
	D3DCOLORWRITEENABLE_GREEN= 2,
	D3DCOLORWRITEENABLE_BLUE= 4,
	D3DCOLORWRITEENABLE_ALPHA= 8,
} CONST_D3DCOLORWRITEENABLEFLAGS;



 [helpcontext(83305)]
typedef enum CONST_D3DWRAPBIAS {
	D3DRENDERSTATE_WRAPBIAS                = 128
} CONST_D3DWRAPBIAS;

 [helpcontext(83306)]
typedef enum CONST_D3DWRAPFLAGS {
	D3DWRAP_U =  0x00000001,
	D3DWRAP_V =  0x00000002,
	D3DWRAP_W =  0x00000004,
	D3DWRAPCOORD_0 =  0x00000001,    // same as D3DWRAP_U
	D3DWRAPCOORD_1 =  0x00000002,    // same as D3DWRAP_V
	D3DWRAPCOORD_2 =  0x00000004,
	D3DWRAPCOORD_3 =  0x00000008,
} CONST_D3DWRAPFLAGS;


 [helpcontext(83298)]
typedef enum CONST_D3DTEXTURESTAGESTATETYPE
{
  D3DTSS_COLOROP        =  1, /* D3DTEXTUREOP - per-stage blending controls for color channels */
    D3DTSS_COLORARG1      =  2, /* D3DTA_* (texture arg) */
    D3DTSS_COLORARG2      =  3, /* D3DTA_* (texture arg) */
    D3DTSS_ALPHAOP        =  4, /* D3DTEXTUREOP - per-stage blending controls for alpha channel */
    D3DTSS_ALPHAARG1      =  5, /* D3DTA_* (texture arg) */
    D3DTSS_ALPHAARG2      =  6, /* D3DTA_* (texture arg) */
    D3DTSS_BUMPENVMAT00   =  7, /* FLOAT (bump mapping matrix) */
    D3DTSS_BUMPENVMAT01   =  8, /* FLOAT (bump mapping matrix) */
    D3DTSS_BUMPENVMAT10   =  9, /* FLOAT (bump mapping matrix) */
    D3DTSS_BUMPENVMAT11   = 10, /* FLOAT (bump mapping matrix) */
    D3DTSS_TEXCOORDINDEX  = 11, /* identifies which set of texture coordinates index this texture */
    D3DTSS_ADDRESSU       = 13, /* D3DTEXTUREADDRESS for U coordinate */
    D3DTSS_ADDRESSV       = 14, /* D3DTEXTUREADDRESS for V coordinate */
    D3DTSS_BORDERCOLOR    = 15, /* D3DCOLOR */
    D3DTSS_MAGFILTER      = 16, /* D3DTEXTUREFILTER filter to use for magnification */
    D3DTSS_MINFILTER      = 17, /* D3DTEXTUREFILTER filter to use for minification */
    D3DTSS_MIPFILTER      = 18, /* D3DTEXTUREFILTER filter to use between mipmaps during minification */
    D3DTSS_MIPMAPLODBIAS  = 19, /* FLOAT Mipmap LOD bias */
    D3DTSS_MAXMIPLEVEL    = 20, /* DWORD 0..(n-1) LOD index of largest map to use (0 == largest) */
    D3DTSS_MAXANISOTROPY  = 21, /* DWORD maximum anisotropy */
    D3DTSS_BUMPENVLSCALE  = 22, /* FLOAT scale for bump map luminance */
    D3DTSS_BUMPENVLOFFSET = 23, /* FLOAT offset for bump map luminance */
    D3DTSS_TEXTURETRANSFORMFLAGS = 24, /* D3DTEXTURETRANSFORMFLAGS controls texture transform */
    D3DTSS_ADDRESSW       = 25, /* D3DTEXTUREADDRESS for W coordinate */
    D3DTSS_COLORARG0      = 26, /* D3DTA_* third arg for triadic ops */
    D3DTSS_ALPHAARG0      = 27, /* D3DTA_* third arg for triadic ops */
    D3DTSS_RESULTARG      = 28, /* D3DTA_* arg for result (CURRENT or TEMP) */
[hidden]    D3DTSS_FORCE_DWORD   = 0x7fffffff, /* force 32-bit size enum */
} CONST_D3DTEXTURESTAGESTATETYPE;

 [helpcontext(83301)]
typedef enum CONST_D3DTSS_TCI_FLAGS {
	D3DTSS_TCI_PASSTHRU                             =0x00000000,
	D3DTSS_TCI_CAMERASPACENORMAL                    =0x00010000,
	D3DTSS_TCI_CAMERASPACEPOSITION                  =0x00020000,
	D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR          =0x00030000,
} CONST_D3DTSS_TCI_FLAGS ;

 [helpcontext(83297)]
typedef enum CONST_D3DTEXTUREOP
{
    // Control
    D3DTOP_DISABLE              = 1,      // disables stage
    D3DTOP_SELECTARG1           = 2,      // the default
    D3DTOP_SELECTARG2           = 3,

    // Modulate
    D3DTOP_MODULATE             = 4,      // multiply args together
    D3DTOP_MODULATE2X           = 5,      // multiply and  1 bit
    D3DTOP_MODULATE4X           = 6,      // multiply and  2 bits

    // Add
    D3DTOP_ADD                  =  7,   // add arguments together
    D3DTOP_ADDSIGNED            =  8,   // add with -0.5 bias
    D3DTOP_ADDSIGNED2X          =  9,   // as above but left  1 bit
    D3DTOP_SUBTRACT             = 10,   // Arg1 - Arg2, with no saturation
    D3DTOP_ADDSMOOTH            = 11,   // add 2 args, subtract product
                                        // Arg1 + Arg2 - Arg1*Arg2
                                        // = Arg1 + (1-Arg1)*Arg2

    // Linear alpha blend: Arg1*(Alpha) + Arg2*(1-Alpha)
    D3DTOP_BLENDDIFFUSEALPHA    = 12, // iterated alpha
    D3DTOP_BLENDTEXTUREALPHA    = 13, // texture alpha
    D3DTOP_BLENDFACTORALPHA     = 14, // alpha from D3DRENDERSTATE_TEXTUREFACTOR

    // Linear alpha blend with pre-multiplied arg1 input: Arg1 + Arg2*(1-Alpha)
    D3DTOP_BLENDTEXTUREALPHAPM  = 15, // texture alpha
    D3DTOP_BLENDCURRENTALPHA    = 16, // by alpha of current color

    // Specular mapping
    D3DTOP_PREMODULATE            = 17,     // modulate with next texture before use
    D3DTOP_MODULATEALPHA_ADDCOLOR = 18,     // Arg1.RGB + Arg1.A*Arg2.RGB
                                            // COLOROP only
    D3DTOP_MODULATECOLOR_ADDALPHA = 19,     // Arg1.RGB*Arg2.RGB + Arg1.A
                                            // COLOROP only
    D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,  // (1-Arg1.A)*Arg2.RGB + Arg1.RGB
                                            // COLOROP only
    D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,  // (1-Arg1.RGB)*Arg2.RGB + Arg1.A
                                            // COLOROP only

    // Bump mapping
    D3DTOP_BUMPENVMAP           = 22, // per pixel env map perturbation
    D3DTOP_BUMPENVMAPLUMINANCE  = 23, // with luminance channel

    // This can do either diffuse or specular bump mapping with correct input.
    // Performs the function (Arg1.R*Arg2.R + Arg1.G*Arg2.G + Arg1.B*Arg2.B)
    // where each component has been scaled and offset to make it signed.
    // The result is replicated into all four (including alpha) channels.
    // This is a valid COLOROP only.
    D3DTOP_DOTPRODUCT3          = 24,

    // Triadic ops
    D3DTOP_MULTIPLYADD          = 25, // Arg0 + Arg1*Arg2
    D3DTOP_LERP                 = 26, // (Arg0)*Arg1 + (1-Arg0)*Arg2

    [hidden]D3DTOP_FORCE_DWORD = 0x7fffffff,
} CONST_D3DTEXTUREOP;


 [helpcontext(83293)]
typedef enum CONST_D3DTAFLAGS 
{
	D3DTA_SELECTMASK      =  0x0000000f,  // mask for arg selector
	D3DTA_DIFFUSE         =  0x00000000,  // select diffuse color
	D3DTA_CURRENT         =  0x00000001,  // select result of previous stage
	D3DTA_TEXTURE         =  0x00000002,  // select texture color
	D3DTA_TFACTOR         =  0x00000003,  // select RENDERSTATE_TEXTUREFACTOR
	D3DTA_SPECULAR        =  0x00000004,  // select specular color
	D3DTA_TEMP            =  0x00000005,  // select temporary register color (read/write)
	D3DTA_COMPLEMENT      =  0x00000010,  // take 1.0 - x
	D3DTA_ALPHAREPLICATE  =  0x00000020,  // replicate alpha to color components

} CONST_D3DTAFLAGS;

 [helpcontext(83296)]
typedef enum CONST_D3DTEXTUREFILTERTYPE
{
	D3DTEXF_NONE         = 0,
	D3DTEXF_POINT        = 1,    // nearest
	D3DTEXF_LINEAR       = 2,    // linear interpolation
	D3DTEXF_ANISOTROPIC  = 3,    //
	D3DTEXF_FLATCUBIC    = 4,    // cubic
	D3DTEXF_GAUSSIANCUBIC = 5,   // different cubic kernel

[hidden]    D3DTFG_FORCE_DWORD  = 0x7fffffff,   // force 32-bit size enum
} CONST_D3DTEXTUREFILTERTYPE;



// These flags are only for dx7 apps and are in dx7vb.dll
//
///* Vertex Operations for ProcessVertices */
// [helpcontext(83065)]
//typedef enum CONST_D3DVOPFLAGS {
//	D3DVOP_LIGHT       = 0x0A00,//   (1 << 10)
//	D3DVOP_TRANSFORM   =2,
//	D3DVOP_CLIP        =4,
//	D3DVOP_EXTENTS     =8,
//} CONST_D3DVOPFLAGS;


//-------------------------------------------------------------------

// Flexible vertex format bits
//
 [helpcontext(83260)]
typedef enum CONST_D3DFVFFLAGS {
	D3DFVF_VERTEX		=0x112,
	D3DFVF_RESERVED0        =0x001,
	D3DFVF_POSITION_MASK    =0x00E,
	D3DFVF_XYZ              =0x002,
	D3DFVF_XYZRHW           =0x004,
	D3DFVF_XYZB1            =0x006,
	D3DFVF_XYZB2            =0x008,
	D3DFVF_XYZB3            =0x00a,
	D3DFVF_XYZB4            =0x00c,
	D3DFVF_XYZB5            =0x00e,

	D3DFVF_NORMAL           =0x010,
	D3DFVF_PSIZE            =0x020,
	D3DFVF_DIFFUSE          =0x040,
	D3DFVF_SPECULAR         =0x080,

	D3DFVF_TEXCOUNT_MASK    =0xf00,
	D3DFVF_TEXCOUNT_SHIFT   =8,
	D3DFVF_TEX0             =0x000,
	D3DFVF_TEX1             =0x100,
	D3DFVF_TEX2             =0x200,
	D3DFVF_TEX3             =0x300,
	D3DFVF_TEX4             =0x400,
	D3DFVF_TEX5             =0x500,
	D3DFVF_TEX6             =0x600,
	D3DFVF_TEX7             =0x700,
	D3DFVF_TEX8             =0x800,

	D3DFVF_LASTBETA_UBYTE4  =0x1000,

	D3DFVF_RESERVED2        =0xE000,  // 4 reserved bits



} CONST_D3DFVFFLAGS;



// High order surfaces
//
 [helpcontext(83262)]
typedef enum CONST_D3DBASISTYPE
{
   D3DBASIS_BEZIER        = 0,
   D3DBASIS_BSPLINE       = 1,
   D3DBASIS_INTERPOLATE   = 2,
} CONST_D3DBASISTYPE;

 [helpcontext(83268)]
typedef enum CONST_D3DORDERTYPE
{
   D3DORDER_LINEAR      = 1,
   D3DORDER_CUBIC       = 3,
   D3DORDER_QUINTIC     = 5,
} CONST_D3DORDERTYPE;


 [helpcontext(83067)]
typedef enum CONST_D3DPATCHEDGESTYLE
{
   D3DPATCHEDGE_DISCRETE    = 0,
   D3DPATCHEDGE_CONTINUOUS  = 1,
} CONST_D3DPATCHEDGESTYLE;




// To be used with GetInfo()
 [helpcontext(83257)]
typedef enum CONST_D3DDEVINFOIDFLAGS {
	D3DDEVINFOID_TEXTUREMANAGER    =1,
	D3DDEVINFOID_D3DTEXTUREMANAGER =2,
	D3DDEVINFOID_TEXTURING         =3,
} CONST_D3DDEVINFOIDFLAGS;

 [helpcontext(83288)]
typedef enum CONST_D3DSTATEBLOCKTYPE
{
    D3DSBT_ALL           = 1, // capture all state
    D3DSBT_PIXELSTATE    = 2, // capture pixel state
    D3DSBT_VERTEXSTATE   = 3, // capture vertex state
[hidden]    D3DSBT_FORCE_DWORD   = 0xffffffff
} CONST_D3DSTATEBLOCKTYPE;

// The D3DVERTEXBLENDFLAGS type is used with D3DRS_VERTEXBLEND state.
//
 [helpcontext(83303)]
typedef enum CONST_D3DVERTEXBLENDFLAGS
{
     D3DVBF_DISABLE  = 0, // Disable vertex blending
     D3DVBF_1WEIGHT  = 1, // blend between 2 matrices
     D3DVBF_2WEIGHTS = 2, // blend between 3 matrices
     D3DVBF = 3, // blend between 4 matrices
     D3DVBF_TWEENING = 255,   // blending using D3DRS_TWEENFACTOR
     D3DVBF_0WEIGHT  = 256,
} CONST_D3DVERTEXBLENDFLAGS;

 [helpcontext(83299)]
typedef enum CONST_D3DTEXTURETRANSFORMFLAGS {
    D3DTTFF_DISABLE         = 0,    // texture coordinates are passed directly
    D3DTTFF_COUNT1          = 1,    // rasterizer should expect 1-D texture coords
    D3DTTFF_COUNT2          = 2,    // rasterizer should expect 2-D texture coords
    D3DTTFF_COUNT3          = 3,    // rasterizer should expect 3-D texture coords
    D3DTTFF_COUNT4          = 4,    // rasterizer should expect 4-D texture coords
    D3DTTFF_PROJECTED       = 256,  // texcoords to be divided by COUNTth element
[hidden]    D3DTTFF_FORCE_DWORD     = 0x7fffffff,
} CONST_D3DTEXTURETRANSFORMFLAGS;

// Macros to set texture coordinate format bits in the FVF id
//
//#define D3DFVF_TEXTUREFORMAT2 0         // Two floating point values
//#define D3DFVF_TEXTUREFORMAT1 3         // One floating point value
//#define D3DFVF_TEXTUREFORMAT3 1         // Three floating point values
//#define D3DFVF_TEXTUREFORMAT4 2         // Four floating point values
//#define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
//#define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
//#define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
//#define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
 [helpcontext(83261)]
typedef enum CONST_D3DFVFTEXTUREFORMATS
{
	D3DFVF_TEXTUREFORMAT2 = 0,         // Two floating point values
	D3DFVF_TEXTUREFORMAT1 = 3,         // One floating point value
	D3DFVF_TEXTUREFORMAT3 = 1,         // Three floating point values
	D3DFVF_TEXTUREFORMAT4 = 2,         // Four floating point values


	D3DFVF_TEXCOORDSIZE1_0 = 0x00030000,	//3 << 16
	D3DFVF_TEXCOORDSIZE1_1 = 0x000C0000,	//3 << 18
	D3DFVF_TEXCOORDSIZE1_2 = 0x00300000,	//3 << 20
	D3DFVF_TEXCOORDSIZE1_3 = 0x00C00000,	//3 << 22


	D3DFVF_TEXCOORDSIZE2_0 = 0,
	D3DFVF_TEXCOORDSIZE2_1 = 0,
	D3DFVF_TEXCOORDSIZE2_2 = 0,
	D3DFVF_TEXCOORDSIZE2_3 = 0,

	D3DFVF_TEXCOORDSIZE3_0 = 0x00010000,	//1 << 16
	D3DFVF_TEXCOORDSIZE3_1 = 0x00040000,	//1 << 18
	D3DFVF_TEXCOORDSIZE3_2 = 0x00100000,	//1 << 20
	D3DFVF_TEXCOORDSIZE3_3 = 0x00400000,	//1 << 22


	D3DFVF_TEXCOORDSIZE4_0 = 0x00020000,	//2 << 16
	D3DFVF_TEXCOORDSIZE4_1 = 0x00080000,	//2 << 18
	D3DFVF_TEXCOORDSIZE4_2 = 0x00200000,	//2 << 20
	D3DFVF_TEXCOORDSIZE4_3 = 0x00800000,	//2 << 22
} CONST_D3DFVFTEXTUREFORMATS;


/* Direct3D8 Device types */
 [helpcontext(83254)]
typedef enum CONST_D3DDEVTYPE
{
    D3DDEVTYPE_HAL         = 1,
    D3DDEVTYPE_REF         = 2,
    D3DDEVTYPE_SW          = 3,

 [hidden]   D3DDEVTYPE_FORCE_DWORD  = 0x7fffffff
} CONST_D3DDEVTYPE;

/* Multi-Sample buffer types */
 [helpcontext(83267)]
typedef enum CONST_D3DMULTISAMPLE_TYPE
{
    D3DMULTISAMPLE_NONE            =  0,
    D3DMULTISAMPLE_2_SAMPLES       =  2,
    D3DMULTISAMPLE_3_SAMPLES       =  3,
    D3DMULTISAMPLE_4_SAMPLES       =  4,
    D3DMULTISAMPLE_5_SAMPLES       =  5,
    D3DMULTISAMPLE_6_SAMPLES       =  6,
    D3DMULTISAMPLE_7_SAMPLES       =  7,
    D3DMULTISAMPLE_8_SAMPLES       =  8,
    D3DMULTISAMPLE_9_SAMPLES       =  9,
    D3DMULTISAMPLE_10_SAMPLES      = 10,
    D3DMULTISAMPLE_11_SAMPLES      = 11,
    D3DMULTISAMPLE_12_SAMPLES      = 12,
    D3DMULTISAMPLE_13_SAMPLES      = 13,
    D3DMULTISAMPLE_14_SAMPLES      = 14,
    D3DMULTISAMPLE_15_SAMPLES      = 15,
    D3DMULTISAMPLE_16_SAMPLES      = 16,

   [hidden] D3DMULTISAMPLE_FORCE_DWORD     = 0xffffffff
} CONST_D3DMULTISAMPLE_TYPE;


/* Pool types */
 [helpcontext(83068)]
typedef enum CONST_D3D_POOL {
    D3D_POOL_LOCALVIDMEM     = 1,
    D3D_POOL_NONLOCALVIDMEM  = 2,
    D3D_POOL_SYSTEMMEM       = 3,
    D3D_POOL_USERALLOCATED   = 4,
    D3D_POOL_D3DMANAGED      = 5,
    D3D_POOL_MANAGED         = 6,

    D3D_POOL_FORCE_DWORD                = 0xffffffff
} CONST_D3D_POOL;

/* Formats
 * Most of these names have the following convention:
 *      A = Alpha
 *      R = Red
 *      G = Green
 *      B = Blue
 *      X = Unused Bits
 *      P = Palette
 *      L = Luminance
 *      U = dU coordinate for BumpMap
 *      V = dV coordinate for BumpMap
 *      S = Stencil
 *      Z = Depth (e.g. Z or W buffer)
 *
 *      Further, the order of the pieces are from MSB first; hence
 *      D3DFMT_A8L8 indicates that the high byte of this two byte
 *      format is alpha.
 *
 *      For opaque formats (i.e. _UNKNOWN_), the following are used
 *      A = Alpha i.e. minimum number of bits per alpha channel
 *      C = Color i.e. minimum number of bits per color channel.
 *      S = Stencil i.e. minimum number of bit for stencil channel
 *      D = Integer Depth i.e. minimum number of bits for depth channel using an integer value
 *      F = Floating-point Depth i.e. minimum number of bits for depth channel using a floating point value
 *
 *      _UNKNOWN_ formats do not indicate bit ordering per pixel and
 *      are not lockable formats. Also the actual number of bits per
 *      channel may be larger than that asked for.
 */


 [helpcontext(83258)]
typedef enum CONST_D3DFORMAT
{
    D3DFMT_UNKNOWN              =  0,

    D3DFMT_R8G8B8               = 20,
    D3DFMT_A8R8G8B8             = 21,
    D3DFMT_X8R8G8B8             = 22,
    D3DFMT_R5G6B5               = 23,
    D3DFMT_X1R5G5B5             = 24,
    D3DFMT_A1R5G5B5             = 25,
    D3DFMT_A4R4G4B4             = 26,
    D3DFMT_R3G3B2               = 27,
    D3DFMT_A8                   = 28,
    D3DFMT_A8R3G3B2             = 29,
    D3DFMT_X4R4G4B4             = 30,

    D3DFMT_A8P8                 = 40,
    D3DFMT_P8                   = 41,

    D3DFMT_L8                   = 50,
    D3DFMT_A8L8                 = 51,
    D3DFMT_A4L4                 = 52,

    D3DFMT_V8U8                 = 60,
    D3DFMT_L6V5U5               = 61,
    D3DFMT_X8L8V8U8             = 62,
    D3DFMT_Q8W8V8U8             = 63,
    D3DFMT_V16U16               = 64,
    D3DFMT_W11V11U10            = 65,


    D3DFMT_UYVY                 = 0x59565955,	//MAKEFOURCC('U', 'Y', 'V', 'Y')
    D3DFMT_YUY2                 = 0x32595559,	//MAKEFOURCC('Y', 'U', 'Y', '2'),
    D3DFMT_DXT1                 = 0x31545844,	//MAKEFOURCC('D', 'X', 'T', '1'),
    D3DFMT_DXT2                 = 0x32545844,	//MAKEFOURCC('D', 'X', 'T', '2'),
    D3DFMT_DXT3                 = 0x33545844,	//MAKEFOURCC('D', 'X', 'T', '3'),
    D3DFMT_DXT4                 = 0x34545844,	//MAKEFOURCC('D', 'X', 'T', '4'),
    D3DFMT_DXT5                 = 0x35545844,	//MAKEFOURCC('D', 'X', 'T', '5'),

    D3DFMT_D16_LOCKABLE         = 70,
    D3DFMT_D32			= 71,	
    D3DFMT_D15S1		= 73,
    D3DFMT_D24S8		= 75,
    D3DFMT_D24X8		= 77,
    D3DFMT_D24X4S4		= 79,
    D3DFMT_D16			= 80,


    D3DFMT_VERTEXDATA           =100,
    D3DFMT_INDEX16             =101,
    D3DFMT_INDEX32             =102,

[hidden]    D3DFMT_FORCE_DWORD          =0x7FFFFFFF
} CONST_D3DFORMAT;


/* SwapEffects */
 [helpcontext(83292)]
typedef enum CONST_D3DSWAPEFFECT
{
    D3DSWAPEFFECT_DISCARD         = 1,
    D3DSWAPEFFECT_FLIP            = 2,
    D3DSWAPEFFECT_COPY            = 3,
    D3DSWAPEFFECT_COPY_VSYNC      = 4,

    D3DSWAPEFFECT_FORCE_DWORD     = 0x7FFFFFFF
} CONST_D3DSWAPEFFECT;

/* Pool types */
 [helpcontext(83273)]
typedef enum CONST_D3DPOOL {
    D3DPOOL_DEFAULT            = 0,
    D3DPOOL_MANAGED            = 1,
    D3DPOOL_SYSTEMMEM          = 2,
[hidden]    D3DPOOL_FORCE_DWORD        = 0x7fffffff
} CONST_D3DPOOL;

 [helpcontext(83239)]
typedef enum CONST_D3DBACKBUFFERTYPE {
    D3DBACKBUFFER_TYPE_MONO    = 0,
    D3DBACKBUFFER_TYPE_LEFT    = 1,
    D3DBACKBUFFER_TYPE_RIGHT   = 2,
[hidden]   D3DBACKBUFFER_TYPE_FORCE_DWORD  = 0x7fffffff
} CONST_D3DBACKBUFFERTYPE;

 [helpcontext(83276)]
typedef enum CONST_D3DPRESENT_RATE_FLAGS 
{
/* RefreshRate pre-defines */
	D3DPRESENT_RATE_DEFAULT     =    0x00000000,
	D3DPRESENT_RATE_UNLIMITED   =    0x7FFFFFFF,
} CONST_D3DPRESENT_RATE_FLAGS ;



/* Types */
 [helpcontext(83283)]
typedef enum CONST_D3DRESOURCETYPE {
    D3DRTYPE_SURFACE                    =  1,
    D3DRTYPE_VOLUME                     =  2,
    D3DRTYPE_TEXTURE                    =  3,
    D3DRTYPE_VOLUMETEXTURE              =  4,
    D3DRTYPE_CUBETEXTURE                =  5,
    D3DRTYPE_VERTEXBUFFER               =  6,
    D3DRTYPE_INDEXBUFFER                =  7,


[hidden]    D3DRTYPE_FORCE_DWORD                = 0x7fffffff
} CONST_D3DRESOURCETYPE;

/* Usages */
 [helpcontext(83302)]
typedef enum CONST_D3DUSAGEFLAGS {
	D3DUSAGE_RENDERTARGET      = 1,
	D3DUSAGE_DEPTHSTENCIL      = 2,	

	/* Usages for Vertex/Index buffers */
	D3DUSAGE_WRITEONLY         = 8,
	D3DUSAGE_SOFTWAREPROCESSING= 0x10,
	D3DUSAGE_DONOTCLIP         = 0x20,
	D3DUSAGE_POINTS		   = 0x40,
	D3DUSAGE_RTPATCHES	   = 0x80,
	D3DUSAGE_NPATCHES	   = 0x0100,
	D3DUSAGE_DYNAMIC	   = 0x0200,
[hidden]D3DUSAGE_FORCE_DWORD	   = 0x7FFFFFFF,
} CONST_D3DUSAGEFLAGS;



/* CubeMap Face identifiers */
 [helpcontext(83250)]
typedef enum CONST_D3DCUBEMAP_FACES
{
    D3DCUBEMAP_FACE_POSITIVE_X     = 0,
    D3DCUBEMAP_FACE_NEGATIVE_X     = 1,
    D3DCUBEMAP_FACE_POSITIVE_Y     = 2,
    D3DCUBEMAP_FACE_NEGATIVE_Y     = 3,
    D3DCUBEMAP_FACE_POSITIVE_Z     = 4,
    D3DCUBEMAP_FACE_NEGATIVE_Z     = 5,

[hidden]    D3DCUBEMAP_FACE_FORCE_DWORD    = 0x7fffffff
} CONST_D3DCUBEMAP_FACES;

 [helpcontext(83265)]
typedef enum CONST_D3DLOCKFLAGS {
/* Lock flags */
	D3DLOCK_READONLY        =   0x00000010,
	D3DLOCK_DISCARD          =  0x00002000,
	D3DLOCK_NOOVERWRITE     =  0x00001000,
	D3DLOCK_NOSYSLOCK       =  0x00000800,
	D3DLOCK_NO_DIRTY_UPDATE  =  0x00008000,
} CONST_D3DLOCKFLAGS;



/*********************************************************************/

//#define _FACDD  0x876
//#define MAKE_DDHRESULT( code )  MAKE_HRESULT( 1, _FACDD, code )

 [helpcontext(83255)]
typedef enum CONST_D3DERR {
	D3DERR_WRONGTEXTUREFORMAT             =0x88760818,  //MAKE_DDHRESULT(2072)
	D3DERR_UNSUPPORTEDCOLOROPERATION      =0x88760819,  //MAKE_DDHRESULT(2073)
	D3DERR_UNSUPPORTEDCOLORARG            =0x8876081A,  //MAKE_DDHRESULT(2074)
	D3DERR_UNSUPPORTEDALPHAOPERATION      =0x8876081B,  //MAKE_DDHRESULT(2075)
	D3DERR_UNSUPPORTEDALPHAARG            =0x8876081C,  //MAKE_DDHRESULT(2076)
	D3DERR_TOOMANYOPERATIONS              =0x8876081D,  //MAKE_DDHRESULT(2077)
	D3DERR_CONFLICTINGTEXTUREFILTER       =0x8876081E,  //MAKE_DDHRESULT(2078)
	D3DERR_UNSUPPORTEDFACTORVALUE         =0x8876081F,  //MAKE_DDHRESULT(2079)
	D3DERR_CONFLICTINGRENDERSTATE         =0x88760821,  //MAKE_DDHRESULT(2081)
	D3DERR_UNSUPPORTEDTEXTUREFILTER       =0x88760822,  //MAKE_DDHRESULT(2082)
	D3DERR_CONFLICTINGTEXTUREPALETTE      =0x88760826,  //MAKE_DDHRESULT(2086)
	D3DERR_DRIVERINTERNALERROR            =0x88760827,  //MAKE_DDHRESULT(2087)

	D3DERR_NOTFOUND                     =0x88760866,  //MAKE_DDHRESULT(2150)
	D3DERR_MOREDATA                     =0x88760867,  //MAKE_DDHRESULT(2151)
	D3DERR_DEVICELOST                   =0x88760868,  //MAKE_DDHRESULT(2152)
	D3DERR_DEVICENOTRESET               =0x88760869,  //MAKE_DDHRESULT(2153)
	D3DERR_NOTAVAILABLE                 =0x8876086A,  //MAKE_DDHRESULT(2154)
	D3DERR_OUTOFVIDEOMEMORY             =0x8876017C,  //MAKE_DDHRESULT(380)
	D3DERR_INVALIDDEVICE                =0x8876086B,  //MAKE_DDHRESULT(2155)
	D3DERR_INVALIDCALL                  =0x8876086C,  //MAKE_DDHRESULT(2156)
	D3DERR_DRIVERINVALIDCALL            =0x8876086D,  //MAKE_DDHRESULT(2157)

} CONST_D3DERR;



 [helpcontext(83287)]
 typedef enum CONST_D3DSPDFLAGS 
{
	D3DSPD_IUNKNOWN=                  0x00000001
} CONST_D3DSPDFLAGS ;

 [helpcontext(83248)]
typedef enum CONST_D3DCONST {
	D3DCURRENT_DISPLAY_MODE              =   0x00EFFFFF,
//	D3DENUM_HOST_ADAPTER                 =   0x00000001,
	D3DENUM_NO_WHQL_LEVEL                =   0x00000002,
	D3DADAPTER_DEFAULT                   =   0,
	D3DPRESENT_BACK_BUFFERS_MAX          =   3,
	//D3DDP_WAIT                           =   0x00000001,
	D3DMAXNUMVERTICES    		     =	 0x0000FFFF,
	D3DMAXNUMPRIMITIVES  		     =	 0x0000FFFF,
	D3DPV_DONOTCOPYDATA                  =   1,
	VALID_D3DENUM_FLAGS		     =   3,
        D3DCURSOR_IMMEDIATE_UPDATE           =   0x00000001,
	D3DPRESENTFLAG_LOCKABLE_BACKBUFFER   =   0x00000001,
        D3D_OK				     =   0,
	D3DMAXUSERCLIPPLANES                 =   32,

} CONST_D3DCONST;

 [helpcontext(83405)]
typedef enum CONST_D3DBLENDOP {
    D3DBLENDOP_ADD              = 1,
    D3DBLENDOP_SUBTRACT         = 2,
    D3DBLENDOP_REVSUBTRACT      = 3,
    D3DBLENDOP_MIN              = 4,
    D3DBLENDOP_MAX              = 5,
[hidden]    D3DBLENDOP_FORCE_DWORD      = 0x7fffffff, /* force 32-bit size enum */
} CONST_D3DBLENDOP;


 [helpcontext(83249)]
typedef enum CONST_D3DCREATEFLAGS {

	D3DCREATE_FPU_PRESERVE        =         0x00000002,
	D3DCREATE_MULTITHREADED       =         0x00000004,

	D3DCREATE_PUREDEVICE	      =		0x00000010,
	D3DCREATE_SOFTWARE_VERTEXPROCESSING   =	0x00000020,
	D3DCREATE_HARDWARE_VERTEXPROCESSING   =	0x00000040,
	D3DCREATE_MIXED_VERTEXPROCESSING =	0x00000080,
} CONST_D3DCREATEFLAGS;




 [helpcontext(83285)]
typedef enum CONST_D3DSGRFLAGS {
	D3DSGR_NO_CALIBRATION         =         0x00000000,	
	D3DSGR_CALIBRATE              =         0x00000001,
 } CONST_D3DSGRFLAGS;


 [helpcontext(83069)]
typedef enum CONST_D3D_TYPE {
    D3D_TYPE_SURFACE                    =  1,
    D3D_TYPE_VOLUME                     =  2,
    D3D_TYPE_MIPMAP                     =  3,
    D3D_TYPE_MIPVOLUME                  =  4,
    D3D_TYPE_CUBEMAP                    =  5,
    D3D_TYPE_VERTEXBUFFER               =  6,
    D3D_TYPE_OPTIMIZEDVERTEXBUFFER      =  7,
    D3D_TYPE_INDEXBUFFER                =  8,

    D3D_TYPE_FORCE_DWORD                = 0x7fffffff
} CONST_D3D_TYPE;

 [helpcontext(83284)]
typedef enum CONST_D3DSCPFLAGS {
	D3DUCURSOR_DEFAULT =0,
	D3DUCURSOR_IMMEDIATE_UPDATE=1,
} CONST_D3DSCPFLAGS;

//BUGBUG TODO
//D3DERROR CODE ENUM

 [helpcontext(83070)]
typedef enum CONST_D3DDEBUGMONITORTOKENS 
{
 	 D3DDMT_ENABLE=0,
 	 D3DDMT_DISABLE=1,
[hidden] D3DDMT_FORCEDWORD=0x7fffffff,
} CONST_D3DDEBUGMONITORTOKENS ;





#endif

/************************************** STRUCTS ********************************************/

 [helpcontext(83071)]
typedef struct D3DDEVICE_CREATION_PARAMETERS
{
            UINT             AdapterOrdinal;
            CONST_D3DDEVTYPE DeviceType;
            HWND             hFocusWindow;
            DWORD            BehaviorFlags;

} D3DDEVICE_CREATION_PARAMETERS;

 [helpcontext(83206)]
typedef struct D3DCLIPSTATUS8_CDESC 
{
  	DWORD ClipUnion;
	DWORD ClipIntersection;
} D3DCLIPSTATUS8_CDESC;

 [helpcontext(83225)]
typedef struct D3DRECT_CDESC {
	    LONG x1;
	    LONG y1;
	    LONG x2;
	    LONG y2;
} D3DRECT_CDESC;


//[helpcontext(89225)]
//typedef struct D3DPOINT_CDESC {
//	    LONG x;
//	    LONG y;
//} D3DPOINT_CDESC;


//[helpcontext(89226)]
//typedef struct D3DHVERTEX_CDESC {
//    DWORD       dwFlags;        /* Homogeneous clipping flags */
//    D3DVALUE    hx;
//    D3DVALUE    hy;
//    D3DVALUE    hz;
//} D3DHVERTEX_CDESC;

 [helpcontext(83228)]
typedef struct D3DTLVERTEX_CDESC {
    D3DVALUE    sx;             /* Screen coordinates */
    D3DVALUE    sy;
    D3DVALUE    sz;
    D3DVALUE    rhw;        	/* Reciprocal of homogeneous w */
    D3DCOLOR    color;          /* Vertex color */
    D3DCOLOR    specular;       /* Specular component of vertex */
    D3DVALUE    tu;             /* Texture coordinates */
    D3DVALUE    tv;

} D3DTLVERTEX_CDESC;


 [helpcontext(83216)]
typedef struct D3DLVERTEX_CDESC {
    D3DVALUE     x;             
    D3DVALUE     y;
    D3DVALUE     z;
    D3DCOLOR     color;         /* Vertex color */
    D3DCOLOR     specular;      /* Specular component of vertex */
    D3DVALUE     tu;            /* Texture coordinates */
    D3DVALUE     tv;
} D3DLVERTEX_CDESC;


 [helpcontext(83231)]
typedef struct D3DVERTEX_CDESC {
    D3DVALUE     x;             
    D3DVALUE     y;
    D3DVALUE     z;
    D3DVALUE     nx;            /* Normal */
    D3DVALUE     ny;
    D3DVALUE     nz;
    D3DVALUE     tu;            /* Texture coordinates */
    D3DVALUE     tv;
} D3DVERTEX_CDESC;




 [helpcontext(83229)]
typedef struct D3DTLVERTEX2_CDESC {
    D3DVALUE    sx;             /* Screen coordinates */
    D3DVALUE    sy;
    D3DVALUE    sz;
    D3DVALUE    rhw;        	/* Reciprocal of homogeneous w */
    D3DCOLOR    color;          /* Vertex color */
    D3DCOLOR    specular;       /* Specular component of vertex */
    D3DVALUE    tu1;             /* Texture coordinates */
    D3DVALUE    tv1;
    D3DVALUE    tu2;             /* Texture coordinates */
    D3DVALUE    tv2;

} D3DTLVERTEX2_CDESC;


 [helpcontext(83217)]
typedef struct D3DLVERTEX2_CDESC {
    D3DVALUE     x;             
    D3DVALUE     y;
    D3DVALUE     z;
    D3DCOLOR     color;         /* Vertex color */
    D3DCOLOR     specular;      /* Specular component of vertex */
    D3DVALUE     tu1;            /* Texture coordinates */
    D3DVALUE     tv1;
    D3DVALUE     tu2;            /* Texture coordinates */
    D3DVALUE     tv2;

} D3DLVERTEX2_CDESC;

 [helpcontext(83235)]
typedef struct D3DVERTEX2_CDESC {
    D3DVALUE     x;             
    D3DVALUE     y;
    D3DVALUE     z;
    D3DVALUE     nx;            /* Normal */
    D3DVALUE     ny;
    D3DVALUE     nz;
    D3DVALUE     tu1;            /* Texture coordinates */
    D3DVALUE     tv1;
    D3DVALUE     tu2;            /* Texture coordinates */
    D3DVALUE     tv2;

} D3DVERTEX2_CDESC;




/* Display Modes */
 [helpcontext(83289)]
typedef struct D3DDISPLAYMODE_CDESC
{
    UINT            Width;
    UINT            Height;
    UINT            RefreshRate;
    CONST_D3DFORMAT       Format;
} D3DDISPLAYMODE_CDESC;


 [helpcontext(83224)]
typedef struct D3DRASTER_STATUS_CDESC
{
    BOOL            InVBLANK;
    UINT            ScanLine;
} D3DRASTER_STATUS_CDESC;



/* Resize Optional Parameters */
 [helpcontext(83221)]
typedef struct D3DPRESENT_PARAMETERS_CDESC
{
    UINT                BackBufferWidth;
    UINT                BackBufferHeight;
    CONST_D3DFORMAT           BackBufferFormat;
    UINT                BackBufferCount;

    CONST_D3DMULTISAMPLE_TYPE MultiSampleType;

    CONST_D3DSWAPEFFECT SwapEffect;
    HWND                hDeviceWindow;
    BOOL                Windowed;
    BOOL                EnableAutoDepthStencil;
    CONST_D3DFORMAT     AutoDepthStencilFormat;
    DWORD		Flags;

    /* Following elements must be zero for Windowed mode */
    UINT                FullScreen_RefreshRateInHz;
    UINT                FullScreen_PresentationInterval;    

} D3DPRESENT_PARAMETERS_CDESC;

 [helpcontext(83210)]
typedef struct D3DGAMMARAMP_CDESC
{
    WORD                red  [256];
    WORD                green[256];
    WORD                blue [256];

} D3DGAMMARAMP_CDESC;



/*
 *  structures and definitions.
 */




 [helpcontext(83212)]
typedef struct D3DLIGHT8_CDESC {
    CONST_D3DLIGHTTYPE    Type;            /* Type of light source */
    D3DCOLORVALUE_CDESC   Diffuse;         /* Diffuse color of light */
    D3DCOLORVALUE_CDESC   Specular;        /* Specular color of light */
    D3DCOLORVALUE_CDESC   Ambient;         /* Ambient color of light */
    D3DVECTOR_CDESC Position;         /* Position in world space */
    D3DVECTOR_CDESC Direction;        /* Direction in world space */
    D3DVALUE        Range;            /* Cutoff range */
    D3DVALUE        Falloff;          /* Falloff */
    D3DVALUE        Attenuation0;     /* Constant attenuation */
    D3DVALUE        Attenuation1;     /* Linear attenuation */
    D3DVALUE        Attenuation2;     /* Quadratic attenuation */
    D3DVALUE        Theta;            /* Inner angle of spotlight cone */
    D3DVALUE        Phi;              /* Outer angle of spotlight cone */
} D3DLIGHT8_CDESC;

/* Vertex Buffer Description */
 [helpcontext(83236)]
typedef struct D3DVERTEXBUFFER_DESC_CDESC
{
    CONST_D3DFORMAT           Format;
    CONST_D3DRESOURCETYPE     Type;
    DWORD               Usage;
    CONST_D3DPOOL             Pool;
    UINT                Size;

    DWORD               FVF;

} D3DVERTEXBUFFER_DESC_CDESC;

/* Index Buffer Description */
 [helpcontext(83211)]
typedef struct D3DINDEXBUFFER_DESC_CDESC
{
    CONST_D3DFORMAT           Format;
    CONST_D3DRESOURCETYPE     Type;
    DWORD               Usage;
    CONST_D3DPOOL             Pool;
    UINT                Size;
} D3DINDEXBUFFER_DESC_CDESC;


/* Surface Description */
 [helpcontext(83227)]
typedef struct D3DSURFACE_DESC_CDESC
{
    CONST_D3DFORMAT           Format;
    CONST_D3DRESOURCETYPE     Type;
    DWORD               Usage;
    CONST_D3DPOOL             Pool;
    UINT                Size;
    CONST_D3DMULTISAMPLE_TYPE MultiSampleType;
    UINT                Width;
    UINT                Height;
} D3DSURFACE_DESC_CDESC;

 [helpcontext(83238)]
typedef struct D3DVOLUME_DESC_CDESC
{
    CONST_D3DFORMAT           Format;
    CONST_D3DRESOURCETYPE     Type;
    DWORD               Usage;
    CONST_D3DPOOL             Pool;
    UINT                Size;

    UINT                Width;
    UINT                Height;
    UINT                Depth;
} D3DVOLUME_DESC_CDESC;



/* Structure for LockRect */
 [helpcontext(83215)]
typedef struct D3DLOCKED_RECT_CDESC
{
    INT                 Pitch;
    LONG                pBits;
} D3DLOCKED_RECT_CDESC;

/* Structures for LockBox */
 [helpcontext(83204)]
typedef struct D3DBOX_CDESC
{
    UINT                left;
    UINT                top;
    UINT                right;
    UINT                bottom;
    UINT                front;
    UINT                back;
} D3DBOX_CDESC;

 [helpcontext(83214)]
typedef struct D3DLOCKED_BOX_CDESC
{
    INT                 RowPitch;
    INT                 SlicePitch;
    LONG                pBits;
} D3DLOCKED_BOX_CDESC;

/* Structures for LockRange */
 [helpcontext(83223)]
typedef struct D3DRANGE_CDESC
{
    UINT                Offset;
    UINT                Size;
} D3DRANGE_CDESC;


#define MAX_DEVICE_IDENTIFIER_STRING        512

 [helpcontext(83203)]
typedef struct D3DADAPTER_IDENTIFIER8_CDESC
{
    CHAR            Driver[MAX_DEVICE_IDENTIFIER_STRING];
    CHAR            Description[MAX_DEVICE_IDENTIFIER_STRING];
    DWORD           DriverVersionLowPart; 
    DWORD           DriverVersionHighPart;
    DWORD           VendorId;
    DWORD           DeviceId;
    DWORD           SubSysId;
    DWORD           Revision;
    GUID            DeviceIdentifier;
    DWORD           WHQLLevel;

} D3DADAPTER_IDENTIFIER8_CDESC;


 [helpcontext(83226)]
typedef struct D3DRECTPATCH_INFO_CDESC 
{
	LONG StartVertexOffsetWidth;
	LONG StartVertexOffsetHeight;
	LONG Width;
	LONG Height;
	LONG Stride;
	CONST_D3DBASISTYPE	Basis;
	CONST_D3DORDERTYPE    Order;
} D3DRECTPATCH_INFO_CDESC;


 [helpcontext(83230)]
typedef struct D3DTRIPATCH_INFO_CDESC 
{
	LONG StartVertexOffsetWidth;
	LONG NumVertices;
	CONST_D3DBASISTYPE	Basis;
	CONST_D3DORDERTYPE    Order;
} D3DTRIPATCH_INFO_CDESC;

/**************************************************************************************/

 [helpcontext(83213)]
typedef struct D3DLINEPATTERN_CDESC {
    WORD    RepeatFactor;
    WORD    LinePattern;
} D3DLINEPATTERN_CDESC;


// [helpcontext(83344)]
//typedef struct D3DPRIMCAPS8_CDESC {
//    DWORD SizeOfType;
//    DWORD MiscCaps;                 /* Capability flags */
//    DWORD RasterCaps;
//    DWORD ZCmpCaps;
//    DWORD SrcBlendCaps;
//    DWORD DestBlendCaps;
//    DWORD AlphaCmpCaps;    DWORD ShadeCaps;
//    DWORD TextureCaps;
//  DWORD TextureFilterCaps;
//   DWORD TextureBlendCaps;
//    DWORD TextureAddressCaps;
//    DWORD StippleWidth;             /* maximum width and height of */
//    DWORD StippleHeight;            /* of supported stipple (up to 32x32) */
//} D3DPRIMCAPS8_CDESC;


 [helpcontext(83205)]
typedef struct D3DCAPS8_CDESC {
    /* Caps from DX7 Draw */
    DWORD		DeviceType;
    UINT		AdapterOrdinal;

    DWORD               Caps;
    DWORD               Caps2;
    DWORD               Caps3;
    DWORD               PresentationIntervals;

    /* Cursor Caps */
    DWORD               CursorCaps;



    /* 3D Device Caps */
    DWORD              DevCaps;

    DWORD              PrimitiveMiscCaps;                 /* Capability flags */
    DWORD              RasterCaps;
    DWORD              ZCmpCaps;
    DWORD              SrcBlendCaps;
    DWORD              DestBlendCaps;
    DWORD              AlphaCmpCaps;
    DWORD              ShadeCaps;
    DWORD              TextureCaps;
    DWORD              TextureFilterCaps;
    DWORD              CubeTextureFilterCaps;
    DWORD              VolumeTextureFilterCaps;
    DWORD 	       TextureAddressCaps;
    DWORD 	       VolumeTextureAddressCaps;

    DWORD  	       LineCaps;

    DWORD               MaxTextureWidth, MaxTextureHeight;
    DWORD               MaxVolumeExtent;

    DWORD               MaxTextureRepeat;
    DWORD               MaxTextureAspectRatio;
    DWORD               MaxAnisotropy;
    FLOAT   		MaxVertexW;	

    FLOAT             	GuardBandLeft;
    FLOAT		GuardBandTop;
    FLOAT		GuardBandRight;
    FLOAT		GuardBandBottom;

    FLOAT               ExtentsAdjust;
    DWORD               StencilCaps;

    DWORD               FVFCaps;
    DWORD               TextureOpCaps;
    DWORD               MaxTextureBlendStages;
    DWORD               MaxSimultaneousTextures;

    DWORD               VertexProcessingCaps;
    DWORD               MaxActiveLights;

    DWORD               MaxUserClipPlanes;
    DWORD               MaxVertexBlendMatrices;
    DWORD               MaxVertexBlendMatrixIndex;

    FLOAT		MaxPointSize;
   
    DWORD   MaxPrimitiveCount;          // max number of primitives per DrawPrimitive call
    DWORD   MaxVertexIndex;
    DWORD   MaxStreams;
    DWORD   MaxStreamStride;            // max stride for SetStreamSource

    DWORD   VertexShaderVersion;
    DWORD   MaxVertexShaderConst;       // number of vertex shader constant registers

    DWORD   PixelShaderVersion;
    FLOAT   MaxPixelShaderValue;        // max value of pixel shader arithmetic component

} D3DCAPS8_CDESC;

// Removed from CORE
//
// [helpcontext(83209)]
//typedef struct D3DDEVICEINFO_TEXTURE_MANAGER_CDESC {
//    BOOL    bThrashing;                 /* indicates if thrashing */
//    DWORD   ApproxBytesDownloaded;    /* Approximate number of bytes downloaded by texture manager */
//    DWORD   NumEvicts;                /* number of textures evicted */
//    DWORD   NumVidCreates;            /* number of textures created in video memory */
//    DWORD   NumTexturesUsed;          /* number of textures used */
//    DWORD   NumUsedTexInVid;          /* number of used textures present in video memory */
//    DWORD   WorkingSet;               /* number of textures in video memory */
//    DWORD   WorkingSetBytes;          /* number of bytes in video memory */
//    DWORD   TotalManaged;             /* total number of managed textures */
//    DWORD   TotalBytes;               /* total number of bytes of managed textures */
//    DWORD   LastPri;                  /* priority of last texture evicted */
//} D3DDEVICEINFO_TEXTURE_MANAGER_CDESC;
//
// [helpcontext(83819)]
//typedef struct D3DDEVICEINFO_TEXTURING_CDESC {
//    DWORD   NumLoads;                 /* counts Load() API calls */
//    DWORD   ApproxBytesLoaded;        /* Approximate number bytes loaded via Load() */
//    DWORD   NumPreLoads;              /* counts PreLoad() API calls */
//    DWORD   NumSet;                   /* counts SetTexture() API calls */
//    DWORD   NumCreates;               /* counts texture creates */
//    DWORD   NumDestroys;              /* counts texture destroys */
//    DWORD   NumSetPriorities;         /* counts SetPriority() API calls */
//    DWORD   NumSetLODs;               /* counts SetLOD() API calls */
//    DWORD   NumLocks;                 /* counts number of texture locks */
//    DWORD   NumGetDCs;                /* counts number of GetDCs to textures */
//} D3DDEVICEINFO_TEXTURING_CDESC;


/************************************** OBJECTS ***********************************************/


//UPDATED 3/28/99
[
 object,
 uuid(1DD9E8DA-1C77-4d40-B0CF-98FEFDFF9512),
 pointer_default(unique),
 helpcontext(83027),
 local
]
interface IDirect3D8 : IUnknown
{
    /*** IDirect3D8 methods ***/
   [helpcontext(83040)]    HRESULT RegisterSoftwareDevice([in] void *InitializeFunction); 
   [helpcontext(83034)]    UINT    GetAdapterCount();
   [helpcontext(83036)]    HRESULT GetAdapterIdentifier([in]UINT Adapter, [in]DWORD Flags, [in,out] D3DADAPTER_IDENTIFIER8 *Identifier);
   [helpcontext(83037)]    UINT    GetAdapterModeCount([in]UINT Adapter) ;
   [helpcontext(83033)]    HRESULT EnumAdapterModes   ([in]   UINT Adapter, [in] UINT Mode, [in,out] D3DDISPLAYMODE* DisplayMode);
   [helpcontext(83035)]    HRESULT GetAdapterDisplayMode([in] UINT Adapter, [in,out] D3DDISPLAYMODE* DisplayMode);
   [helpcontext(83031)]    LONG    CheckDeviceType    ([in] UINT Adapter,[in] CONST_D3DDEVTYPE CheckType,[in] CONST_D3DFORMAT DisplayFormat,[in] CONST_D3DFORMAT BackBufferFormat,[in] LONG bWindowed);
   [helpcontext(83029)]    LONG    CheckDeviceFormat  ([in] UINT Adapter,[in] CONST_D3DDEVTYPE DeviceType, [in] CONST_D3DFORMAT AdapterFormat,[in] DWORD Usage,[in] CONST_D3DRESOURCETYPE RType, [in] CONST_D3DFORMAT CheckFormat);
   [helpcontext(83030)]    LONG    CheckDeviceMultiSampleType ([in] UINT Adapter,[in] CONST_D3DDEVTYPE DeviceType,[in] CONST_D3DFORMAT RenderTargetFormat,[in] BOOL Windowed,[in] CONST_D3DMULTISAMPLE_TYPE MultiSampleType);
   [helpcontext(83028)]    LONG    CheckDepthStencilMatch     ([in] UINT Adapter,[in] CONST_D3DDEVTYPE DeviceType, [in] CONST_D3DFORMAT AdapterFormat,[in] CONST_D3DFORMAT RenderTargetFormat,[in] CONST_D3DFORMAT DepthStencilFormat);
   [helpcontext(83039)]    HRESULT GetDeviceCaps      ([in] UINT Adapter,[in] CONST_D3DDEVTYPE DeviceType,[in,out] D3DCAPS8 *Caps) ;
   [helpcontext(83038)]    LONG    GetAdapterMonitor  ([in] UINT Adapter) ;
   [helpcontext(83051)]    HRESULT CreateDevice       ([in] UINT Adapter,[in] CONST_D3DDEVTYPE DeviceType,[in] HWND hFocusWindow,[in] CONST_D3DCREATEFLAGS BehaviorFlags,[in] D3DPRESENT_PARAMETERS *PresentationParameters,[out,retval] IDirect3DDevice8 **ppReturnedDeviceInterface);

};



[
 object,
 uuid(7385E5DF-8FE8-41D5-86B6-D7B48547B6CF),
 pointer_default(unique),
 helpcontext(83450),
 local
]
interface IDirect3DDevice8 : IUnknown
{
    /*** IDirect3DDevice8 methods ***/
   [helpcontext(83142)]  LONG    TestCooperativeLevel() ;
   [helpcontext(83082)]  UINT GetAvailableTextureMem([in] CONST_D3DPOOL Pool) ;
   [helpcontext(83119)]  HRESULT ResourceManagerDiscardBytes([in] DWORD NumberOfBytes) ;
   [helpcontext(83090)]  HRESULT GetDirect3D([out,retval] LPDIRECT3D8 *pD3D8) ;
   [helpcontext(83089)]  HRESULT GetDeviceCaps([out] D3DCAPS8_CDESC *Caps) ;
   [helpcontext(83091)]  HRESULT GetDisplayMode([out] D3DDISPLAYMODE_CDESC *pMode) ;
   [helpcontext(83208)]  HRESULT GetCreationParameters([out] D3DDEVICE_CREATION_PARAMETERS *pCreationParams);
   [helpcontext(83158)]  HRESULT SetCursorProperties([in] UINT xHotSpot,[in] UINT yHotSpot,[in] IDirect3DSurface8 *CursorSurface) ;
   [helpcontext(83123)]  void    SetCursorPosition([in] UINT xScreenSpace,[in] UINT yScreenSpace, [in] CONST_D3DSCPFLAGS flags) ;
   [helpcontext(83141)]  BOOL    ShowCursor([in] BOOL bShow);
   [helpcontext(83167)]  HRESULT CreateAdditionalSwapChain([in] D3DPRESENT_PARAMETERS_CDESC *PresentationParameters,[out,retval] IDirect3DSwapChain8 **ppSwapChain) ;
   [helpcontext(83118)]    HRESULT Reset([in] D3DPRESENT_PARAMETERS_CDESC *PresentationParameters) ;
   [helpcontext(83116)]  HRESULT Present([in] void *pSourceRect,[in] void *pDestRect,[in] LONG hWndDestWindowOverride,[in] void *pDirtyRegion) ;	
   [helpcontext(83083)]  HRESULT GetBackBuffer([in] LONG BackBuffer,[in] CONST_D3DBACKBUFFERTYPE BufferType, [out,retval] IDirect3DSurface8 **ppBackBuffer);
   [helpcontext(83102)]  D3DRASTER_STATUS_CDESC  GetRasterStatus();
   [helpcontext(83125)]  void    SetGammaRamp([in] DWORD dwFlags,[in] D3DGAMMARAMP_CDESC *pRamp) ;
   [helpcontext(83092)]  void    GetGammaRamp([in,out] D3DGAMMARAMP_CDESC *pRamp) ;
   [helpcontext(83170)]  HRESULT CreateTexture([in] UINT Width,[in] UINT Height, [in] UINT Levels,[in] DWORD Usage,[in] CONST_D3DFORMAT Format,[in] CONST_D3DPOOL Pool,[out,retval] IDirect3DTexture8 **ppMipMap) ;
   [helpcontext(83189)]  HRESULT CreateVolumeTexture([in]  UINT Width,[in] UINT Height,[in] UINT Depth,[in] UINT Levels,[in] DWORD Usage,[in] CONST_D3DFORMAT Format,[in] CONST_D3DPOOL Pool,[out,retval] IDirect3DVolumeTexture8 **ppMipMap) ;
   [helpcontext(83059)]  HRESULT CreateCubeTexture([in] UINT EdgeLength,[in] UINT Levels,[in] DWORD Usage,[in] CONST_D3DFORMAT Format,[in] CONST_D3DPOOL Pool,[out,retval] IDirect3DCubeTexture8 **ppCubeMap) ;
   [helpcontext(83176)]  HRESULT CreateVertexBuffer([in] UINT LengthInBytes,[in] DWORD Usage,[in] DWORD FVF, [in] CONST_D3DPOOL Pool,[out,retval] IDirect3DVertexBuffer8 **ppVertexBuffer) ;
   [helpcontext(83145)]  HRESULT CreateIndexBuffer([in] UINT LengthInBytes,[in] DWORD Usage,[in] CONST_D3DFORMAT Format,[in] CONST_D3DPOOL Pool,[out,retval] IDirect3DIndexBuffer8 **ppIndexBuffer) ;
   [helpcontext(83064)]  HRESULT CreateRenderTarget([in] UINT Width,[in] UINT Height,[in] CONST_D3DFORMAT Format,[in] CONST_D3DMULTISAMPLE_TYPE MultiSample,[in] LONG Lockable,[out,retval] IDirect3DSurface8 **ppSurface) ;
   [helpcontext(83060)]  HRESULT CreateDepthStencilSurface([in] UINT Width,[in] UINT Height,[in] CONST_D3DFORMAT Format,[in] CONST_D3DMULTISAMPLE_TYPE MultiSample, [out,retval] IDirect3DSurface8 **ppSurface) ;
   [helpcontext(83061)]  HRESULT CreateImageSurface([in] UINT Width,[in] UINT Height,[in] CONST_D3DFORMAT Format,[out,retval] IDirect3DSurface8 **ppSurface) ;
   [helpcontext(83057)]  HRESULT CopyRects([in]  IDirect3DSurface8 *SourceSurface,[in] void *FirstElementOfSourceRectsArray,[in] UINT NumberOfRects,[in] IDirect3DSurface8 *DestinationSurface,[in] void *FirstElementofDestPointArray) ;   
   [helpcontext(83143)]  HRESULT UpdateTexture([in] IDirect3DBaseTexture8 *SourceTexture,IDirect3DBaseTexture8 pDestinationTexture); 
   [helpcontext(83892)]  HRESULT GetFrontBuffer([in] IDirect3DSurface8 *pDestSurface);
   [helpcontext(83133)]  HRESULT SetRenderTarget([in] IDirect3DSurface8 *RenderTarget,[in] IDirect3DSurface8 *NewZStencil,[in] DWORD Flags) ;
   [helpcontext(83104)]  HRESULT GetRenderTarget([out,retval] IDirect3DSurface8 **ppRenderTarget) ;
   [helpcontext(83088)]  HRESULT GetDepthStencilSurface([out,retval] IDirect3DSurface8 **ZStencilSurface);
   [helpcontext(83053)]  HRESULT BeginScene() ;
   [helpcontext(83080)]  HRESULT EndScene() ;

   [helpcontext(83056)]  HRESULT Clear([in] DWORD ClearRectCount,[in] void *clearD3DRect,[in] CONST_D3DCLEARFLAGS flags,[in] D3DCOLOR color,[in] FLOAT z,[in] DWORD stencil) ;

   [helpcontext(83137)]  HRESULT SetTransform([in] CONST_D3DTRANSFORMSTATETYPE transformType,[in]  LPD3DMATRIX matrix) ;
   [helpcontext(83108)]  HRESULT GetTransform([in] CONST_D3DTRANSFORMSTATETYPE transformType,[out] LPD3DMATRIX matrix) ;

   [helpcontext(83115)]  HRESULT MultiplyTransform([in] CONST_D3DTRANSFORMSTATETYPE transformType,[in] LPD3DMATRIX matrix) ;
    
   [helpcontext(83140)]  HRESULT SetViewport([in]  LPD3DVIEWPORT8 viewport) ;
   [helpcontext(83113)]  HRESULT GetViewport([out] LPD3DVIEWPORT8 viewport) ;
    
   [helpcontext(83128)]  HRESULT SetMaterial([in]  LPD3DMATERIAL8 material) ;
   [helpcontext(83097)]  HRESULT GetMaterial([out] LPD3DMATERIAL8 material) ;

   [helpcontext(83127)]  HRESULT SetLight([in] DWORD index,[in] LPD3DLIGHT8 light) ;
   [helpcontext(83095)]  HRESULT GetLight([in] DWORD index,[out] LPD3DLIGHT8 light) ;

   [helpcontext(83114)]  HRESULT LightEnable([in] DWORD index,[in] BOOL enabled) ;

   [helpcontext(83096)]  HRESULT GetLightEnable([in] DWORD index,[out,retval] BOOL* enabled) ;

   [helpcontext(83120)]  HRESULT SetClipPlane([in] DWORD index, [in] D3DPLANE_CDESC * plane) ;
   [helpcontext(83084)]  HRESULT GetClipPlane([in] DWORD index,[out] D3DPLANE_CDESC * plane) ;

   [helpcontext(83132)]  HRESULT SetRenderState([in] CONST_D3DRENDERSTATETYPE stateType,[in] DWORD value) ;
   [helpcontext(83103)]  HRESULT GetRenderState([in] CONST_D3DRENDERSTATETYPE stateType,[out,retval] LPDWORD value) ;

   [helpcontext(83054)]  HRESULT BeginStateBlock() ;
   [helpcontext(83081)]  HRESULT EndStateBlock([out,retval] LPDWORD blockid) ;
   [helpcontext(83052)]  HRESULT ApplyStateBlock([in] DWORD blockid) ;
   [helpcontext(83055)]  HRESULT CaptureStateBlock([in] DWORD blockid) ;
   [helpcontext(83072)]  HRESULT DeleteStateBlock([in] DWORD blockid) ;
   [helpcontext(83165)]  HRESULT CreateStateBlock([in] CONST_D3DSTATEBLOCKTYPE blocktype,[out,retval] DWORD *blockid) ;
   [helpcontext(83121)]  HRESULT SetClipStatus([in]  LPD3DCLIPSTATUS8 clipstatus) ;
   [helpcontext(83085)]  HRESULT GetClipStatus([out] LPD3DCLIPSTATUS8 clipstatus) ;

   
   [helpcontext(83106)]  HRESULT GetTexture([in] DWORD stage,[out,retval] LPDIRECT3DBASETEXTURE8 *texture) ;
   [helpcontext(83135)]  HRESULT SetTexture([in] DWORD stage,[in] LPDIRECT3DBASETEXTURE8 texture) ;

   [helpcontext(83107)]  HRESULT GetTextureStageState([in] DWORD stage,[in] CONST_D3DTEXTURESTAGESTATETYPE stateType,[out,retval] LPDWORD state) ;
   [helpcontext(83136)]  HRESULT SetTextureStageState([in] DWORD stage,[in] CONST_D3DTEXTURESTAGESTATETYPE stateType,[in] DWORD state) ;
   [helpcontext(83144)]  HRESULT ValidateDevice([out,retval] LPDWORD ret) ;

   //GetInfo([in] DWORD flags,[in,out] LPVOID info,[in] DWORD size) ;
   [helpcontext(83094)]  HRESULT GetInfo([in] DWORD flags,[in,out] LPVOID info,[in] DWORD size) ;

    //BUGBUG verify that we really want to pass in an array of dwords
   [helpcontext(83129)]  HRESULT SetPaletteEntries([in] UINT PaletteNumber,[in] void * ArrayOfEntries) ;
   [helpcontext(83098)]  HRESULT GetPaletteEntries([in] UINT PaletteNumber,[in,out] void * ArrayOfEntries) ;
   [helpcontext(83122)]  HRESULT SetCurrentTexturePalette([in] UINT PaletteNumber);
   [helpcontext(83087)]  HRESULT GetCurrentTexturePalette([out,retval] UINT *PaletteNumber);


   [helpcontext(83076)]  HRESULT DrawPrimitive([in] CONST_D3DPRIMITIVETYPE PrimitiveType,[in] UINT StartVertex,[in] UINT PrimitiveCount) ;

   [helpcontext(83074)]  HRESULT DrawIndexedPrimitive([in] CONST_D3DPRIMITIVETYPE PrimitiveType,[in] UINT minIndex,[in] UINT NumIndices,[in] UINT startIndex,[in] UINT primitiveCount) ;
   
   [helpcontext(83077)]  HRESULT DrawPrimitiveUP([in] CONST_D3DPRIMITIVETYPE PrimitiveType,[in] UINT PrimitiveCount,[in] void *VertexStreamZeroDataArray ,[in] UINT VertexStreamZeroStride) ;

   [helpcontext(83075)]  HRESULT DrawIndexedPrimitiveUP([in] CONST_D3DPRIMITIVETYPE PrimitiveType,[in] UINT minVertexIndex, 
				   [in] UINT NumVertexIndices,
				   [in] UINT PrimitiveCount,[in] void *IndexDataArray ,
				   [in] CONST_D3DFORMAT IndexDataFormat, [in] void *VertexStreamZeroDataArray ,
				   [in] UINT VertexStreamZeroStride) ;


   [helpcontext(83117)]  HRESULT ProcessVertices( [in] UINT SrcStartIndex,[in] UINT DestIndex,[in] UINT VertexCount,[in] LPD3DVERTEXBUFFER8 DestBuffer,[in] DWORD Flags) ;

    //TALK TO D3D about reversing params
   [helpcontext(83868)]  HRESULT CreateVertexShader([in] LPDWORD DeclarationTokenArray,[in,out] void *FunctionTokenArray,[in,out] LPDWORD retHandle,[in] DWORD usage) ;

   [helpcontext(83138)]  HRESULT SetVertexShader([in] DWORD VertexShaderHandle) ;
   [helpcontext(83109)]  HRESULT GetVertexShader([out,retval] LPDWORD pdwHandle) ;
   [helpcontext(83073)]  HRESULT DeleteVertexShader([in] DWORD VertexShaderHandle) ;

   [helpcontext(83139)]  HRESULT SetVertexShaderConstant( [in] DWORD Register,[in] LPVOID pConstantData,[in] DWORD ConstantCount) ;
   [helpcontext(83110)]  HRESULT GetVertexShaderConstant( [in] DWORD Register,[in,out] LPVOID pConstantData,[in] DWORD ConstantCount) ;

   [helpcontext(83111)]  HRESULT GetVertexShaderDeclaration([in] DWORD Handle,[in] void *Data,[in,out] DWORD *SizeOfData);
   [helpcontext(83112)]  HRESULT GetVertexShaderFunction([in] DWORD Handle,[in] void *pData,[in,out] DWORD *SizeOfData);

   [helpcontext(83134)]  HRESULT SetStreamSource([in] UINT StreamNumber,[in] LPD3DVERTEXBUFFER8 StreamData,[in] UINT Stride) ;
   [helpcontext(83105)]  HRESULT GetStreamSource([in] UINT StreamNumber, [in,out] LPD3DVERTEXBUFFER8 *RetStreamData,[in,out]UINT *RetStride) ;


 [helpcontext(83126)]    HRESULT SetIndices  ([in] LPD3DINDEXBUFFER8 IndexData,[in] UINT BaseVertexIndex) ;
 [helpcontext(83093)]    HRESULT GetIndices  ([out] LPD3DINDEXBUFFER8 *RetIndexData,[out] UINT *RetBaseVertexIndex);

   [helpcontext(83063)]  HRESULT CreatePixelShader([in] LPDWORD FunctionTokenArray,[out,retval]DWORD* pdwHandle) ;
   [helpcontext(83130)]  HRESULT SetPixelShader([in] DWORD PixelShaderHandle) ;
   [helpcontext(83099)]  HRESULT GetPixelShader([out,retval] DWORD* pdwHandle);
   [helpcontext(83171)]  HRESULT DeletePixelShader([in] DWORD PixelShaderHandle);
   [helpcontext(83131)]  HRESULT SetPixelShaderConstant([in] DWORD Register,[in] VOID* pConstantData,[in] DWORD ConstantCount);
   [helpcontext(83100)]  HRESULT GetPixelShaderConstant([in] DWORD Register,[in,out] VOID* pConstantData,[in] DWORD ConstantCount);
   [helpcontext(83101)]  HRESULT GetPixelShaderFunction([in] DWORD Handle,[in] void *pData,[in,out] DWORD *SizeOfData);

   [helpcontext(83078)]  HRESULT DrawRectPatch([in] LONG Handle,[in,out] FLOAT *NumSegments,void *surf);
   [helpcontext(83079)]  HRESULT DrawTriPatch([in] LONG Handle,[in,out] FLOAT *NumSegments,void *surf);
   [helpcontext(83870)]  HRESULT DeletePatch([in] LONG Handle);

};



[ 
 object,
 uuid(928C088B-76B9-4C6B-A536-A590853876CD),		
 pointer_default(unique),
 helpcontext(83967),
 local
]
interface  IDirect3DSwapChain8 : IUnknown
{
  
    /*** ID3DSwapChain8 methods ***/
   [helpcontext(83169)]  HRESULT Present([in] void *SourceRect,[in] void *DestRect,[in] HWND hDestWindowOverride, [in] void *DirtyRegion) ;
   [helpcontext(83168)]  HRESULT GetBackBuffer([in] UINT BackBuffer,[in] CONST_D3DBACKBUFFERTYPE BufferType, [out,retval] IDirect3DSurface8 **ppBackBuffer) ;

};


[
 object,
 uuid(1B36BB7B-09B7-410a-B445-7D1430D7B33F),
 pointer_default(unique),
 helpcontext(83149),
 local
]
interface IDirect3DResource8 : IUnknown
{
    /*** IDirect3DResource8 methods ***/

   [helpcontext(83151)]  HRESULT GetDevice( [out,retval] LPDIRECT3DDEVICE8 *ppDevice) ;
   [helpcontext(83157)]  HRESULT SetPrivateData( [in] REFGUID refguid,[in] void *Data,[in] DWORD SizeOfData,[in] DWORD Flags) ;
   [helpcontext(83153)]  HRESULT GetPrivateData( [in] REFGUID refguid,[in] void *Data,[in,out] DWORD *SizeOfData) ;
   [helpcontext(83150)]  HRESULT FreePrivateData( [in] REFGUID refguid) ;
   [helpcontext(83156)]  DWORD  SetPriority([in] DWORD PriorityNew) ;
   [helpcontext(83152)]  DWORD  GetPriority() ;
   [helpcontext(83155)]  void   PreLoad();
   [helpcontext(83154)]  CONST_D3DRESOURCETYPE GetType();

};

[ 
 object,
 uuid(B4211CFA-51B9-4a9f-AB78-DB99B2BB678E),		
 pointer_default(unique),
 helpcontext(83540),
 local
]
interface IDirect3DBaseTexture8 : IUnknown
{
   [helpcontext(89044)]      HRESULT GetDevice( [out,retval] LPDIRECT3DDEVICE8 *ppDevice) ;
   [helpcontext(89045)]      HRESULT SetPrivateData( [in] REFGUID refguid,[in] void *Data,[in] DWORD SizeOfData,[in] DWORD Flags) ;
   [helpcontext(89046)]      HRESULT GetPrivateData( [in] REFGUID refguid,[in] void *Data,[in,out] DWORD *SizeOfData) ;
   [helpcontext(89047)]      HRESULT FreePrivateData( [in] REFGUID refguid) ;
   [helpcontext(89048)]      DWORD  SetPriority([in] DWORD PriorityNew) ;
   [helpcontext(89049)]      DWORD  GetPriority() ;
   [helpcontext(89050)]      void   PreLoad();
   [helpcontext(89051)]      CONST_D3DRESOURCETYPE GetType();

   [helpcontext(83044)]  DWORD  SetLOD([in] DWORD LODNew) ;
   [helpcontext(83043)]  DWORD  GetLOD() ;
   [helpcontext(83042)]  DWORD  GetLevelCount() ;
};



[ 
 object,
 uuid(E4CDD575-2866-4f01-B12E-7EECE1EC9358),		
 pointer_default(unique),
 helpcontext(83970),
 local
]
interface IDirect3DTexture8 : IUnknown
{
   [helpcontext(89052)]      HRESULT GetDevice( [out,retval] LPDIRECT3DDEVICE8 *ppDevice) ;
   [helpcontext(89053)]      HRESULT SetPrivateData( [in] REFGUID refguid,[in] void *Data,[in] DWORD SizeOfData,[in] DWORD Flags) ;
   [helpcontext(89054)]      HRESULT GetPrivateData( [in] REFGUID refguid,[in] void *Data,[in,out] DWORD *SizeOfData) ;
   [helpcontext(89055)]      HRESULT FreePrivateData( [in] REFGUID refguid) ;
   [helpcontext(89056)]      DWORD  SetPriority([in] DWORD PriorityNew) ;
   [helpcontext(89057)]      DWORD  GetPriority() ;
   [helpcontext(89058)]      void   PreLoad();
   [helpcontext(89059)]      CONST_D3DRESOURCETYPE GetType();

   [helpcontext(89060)]      DWORD  SetLOD([in] DWORD dwLODNew) ;
   [helpcontext(89061)]      DWORD  GetLOD() ;
   [helpcontext(89062)]      DWORD  GetLevelCount() ;

   [helpcontext(83172)]  HRESULT GetLevelDesc([in] UINT Level, [out] D3DSURFACE_DESC_CDESC *pDesc) ;
   [helpcontext(83173)]  HRESULT GetSurfaceLevel([in] UINT Level,[out,retval] IDirect3DSurface8 **ppSurfaceLevel) ;

   [helpcontext(83174)]  HRESULT LockRect([in] UINT Level,[in] D3DLOCKED_RECT_CDESC *LockedRect,[in] void *Rect, [in] DWORD Flags) ;

   [helpcontext(83175)]  HRESULT UnlockRect([in] UINT Level) ;
   [helpcontext(83671)]  HRESULT AddDirtyRect([in] void *DirtyRect) ;

};

[ 
 object,
 uuid(4B8AAAFA-140F-42ba-9131-597EAFAA2EAD),		
 pointer_default(unique),
 helpcontext(83789),
 local
]
interface IDirect3DVolumeTexture8 : IUnknown
{
   [helpcontext(83183)]  HRESULT GetDevice( [out,retval] LPDIRECT3DDEVICE8 *ppDevice) ;
   [helpcontext(83187)]  HRESULT SetPrivateData( [in] REFGUID refguid,[in] void *Data,[in] DWORD SizeOfData,[in] DWORD Flags) ;
   [helpcontext(83184)]  HRESULT GetPrivateData( [in] REFGUID refguid,[in] void *Data,[in,out] DWORD *SizeOfData) ;
   [helpcontext(83181)]  HRESULT FreePrivateData( [in] REFGUID refguid) ;
   [helpcontext(89063)]      DWORD  SetPriority([in] DWORD PriorityNew) ;
   [helpcontext(89064)]      DWORD  GetPriority() ;
   [helpcontext(89065)]      void   PreLoad();
   [helpcontext(89066)]      CONST_D3DRESOURCETYPE GetType();

   [helpcontext(89067)]      DWORD  SetLOD([in] DWORD dwLODNew) ;
   [helpcontext(89068)]      DWORD  GetLOD() ;
   [helpcontext(89069)]      DWORD  GetLevelCount() ;

   [helpcontext(83191)]  HRESULT GetLevelDesc([in] UINT Level, [out] D3DVOLUME_DESC_CDESC *pDesc);
   [helpcontext(83192)]  HRESULT GetVolumeLevel([in] UINT Level,[out,retval] IDirect3DVolume8 **ppVolumeLevel) ;
//   [helpcontext(63193)]  HRESULT LockBox([in] UINT iLevel,[in] D3DLOCKED_BOX_CDESC *pLockedVolume,[in,out] D3DBOX_CDESC *Box,[in] DWORD Flags) ;
   [helpcontext(83193)]  HRESULT LockBox([in] UINT iLevel,[in] D3DLOCKED_BOX_CDESC *pLockedVolume,[in,out] void *Box,[in] DWORD Flags) ;
   [helpcontext(83194)]  HRESULT UnlockBox([in] UINT Level) ;
   [helpcontext(83190)]  HRESULT AddDirtyBox([in] D3DBOX_CDESC *DirtyBox) ;
};



[ 
		object,
		uuid(3EE5B968-2ACA-4c34-8BB5-7E0C3D19B750),		
		pointer_default(unique),
		helpcontext(89200),
		local
]
interface IDirect3DCubeTexture8 : IUnknown
{
   [helpcontext(89105)]       HRESULT GetDevice( [out,retval] LPDIRECT3DDEVICE8 *ppDevice) ;
   [helpcontext(89070)]      HRESULT SetPrivateData( [in] REFGUID refguid,[in] void *Data,[in] DWORD SizeOfData,[in] DWORD Flags) ;
   [helpcontext(89071)]      HRESULT GetPrivateData( [in] REFGUID refguid,[in] void *Data,[in,out] DWORD *SizeOfData) ;
   [helpcontext(89072)]      HRESULT FreePrivateData( [in] REFGUID refguid) ;
   [helpcontext(89073)]      DWORD  SetPriority([in] DWORD PriorityNew) ;
   [helpcontext(89074)]      DWORD  GetPriority() ;
   [helpcontext(89075)]      void   PreLoad();
   [helpcontext(89076)]      CONST_D3DRESOURCETYPE GetType();

   [helpcontext(89077)]      DWORD  SetLOD([in] DWORD dwLODNew) ;
   [helpcontext(89078)]      DWORD  GetLOD() ;
   [helpcontext(89079)]      DWORD  GetLevelCount() ;

   [helpcontext(83048)]  HRESULT GetLevelDesc([in] UINT Level, [out] D3DSURFACE_DESC_CDESC *pDesc) ;
   [helpcontext(83047)]  HRESULT GetCubeMapSurface([in] CONST_D3DCUBEMAP_FACES FaceType,[in] UINT Level,[out,retval] IDirect3DSurface8 **ppCubeMapSurface) ;

   [helpcontext(83049)]  HRESULT LockRect([in] CONST_D3DCUBEMAP_FACES FaceType, [in] UINT Level,[in] D3DLOCKED_RECT_CDESC *LockedRect,[in] void *Rect, [in] DWORD Flags) ;
   [helpcontext(83050)]  HRESULT UnlockRect([in] CONST_D3DCUBEMAP_FACES FaceType, [in] UINT iLevel) ;
   [helpcontext(83046)]  HRESULT AddDirtyRect([in] CONST_D3DCUBEMAP_FACES FaceType, [in] void *DirtyRect) ;

};



[ 
 object,
 uuid(8AEEEAC7-05F9-44d4-B591-000B0DF1CB95),		
 pointer_default(unique),
 helpcontext(89201),
 local
]
interface IDirect3DVertexBuffer8 : IUnknown
{
   [helpcontext(89080)]      HRESULT GetDevice( [out,retval] LPDIRECT3DDEVICE8 *ppDevice) ;
   [helpcontext(89081)]      HRESULT SetPrivateData( [in] REFGUID refguid,[in] void *Data,[in] DWORD SizeOfData,[in] DWORD Flags) ;
   [helpcontext(89082)]      HRESULT GetPrivateData( [in] REFGUID refguid,[in] void *Data,[in,out] DWORD *SizeOfData) ;
   [helpcontext(89083)]      HRESULT FreePrivateData( [in] REFGUID refguid) ;
   [helpcontext(89084)]      DWORD  SetPriority([in] DWORD PriorityNew) ;
   [helpcontext(89085)]      DWORD  GetPriority() ;
   [helpcontext(89086)]      void   PreLoad() ;
   [helpcontext(89087)]      CONST_D3DRESOURCETYPE GetType(THIS);

   [helpcontext(83178)]  HRESULT Lock([in] UINT ByteOffsetToLock,[in] UINT ByteSizeToLock,[out] LONG *pData,[in] DWORD Flags);
   [helpcontext(83179)]  HRESULT Unlock();
 [helpcontext(83177)]    HRESULT GetDesc([out] D3DVERTEXBUFFER_DESC_CDESC *pDesc);

};



[ 
 object,
 uuid(0E689C9A-053D-44a0-9D92-DB0E3D750F86),		
 pointer_default(unique),
 helpcontext(83645),
 local
]
interface IDirect3DIndexBuffer8 : IUnknown
{
   [helpcontext(89088)]      HRESULT GetDevice(  [out,retval] LPDIRECT3DDEVICE8 *ppDevice) ;
   [helpcontext(89089)]      HRESULT SetPrivateData( [in] REFGUID refguid,[in] void *Data,[in] DWORD SizeOfData,[in] DWORD Flags) ;
   [helpcontext(89090)]      HRESULT GetPrivateData( [in] REFGUID refguid,[in,out] void *Data,[in,out] DWORD *SizeOfDataa) ;
   [helpcontext(89091)]      HRESULT FreePrivateData( [in] REFGUID refguid) ;
   [helpcontext(89092)]      DWORD   SetPriority([in] DWORD PriorityNew) ;
   [helpcontext(89093)]      DWORD   GetPriority() ;
   [helpcontext(89094)]      void    PreLoad();
   [helpcontext(89095)]      CONST_D3DRESOURCETYPE GetType(THIS);

   [helpcontext(83147)]  HRESULT Lock([in] UINT cbOffsetToLock,[in] UINT cbSizeToLock,[out] LONG *pData,[in] DWORD Flags);
   [helpcontext(83148)]  HRESULT Unlock();

 [helpcontext(83146)]    HRESULT GetDesc([out] D3DINDEXBUFFER_DESC_CDESC *pDesc);

};


[ 
 object,
 uuid(B96EEBCA-B326-4ea5-882F-2FF5BAE021DD),		
 pointer_default(unique),
 helpcontext(83958),
 local
]
interface IDirect3DSurface8 : IUnknown
{
   [helpcontext(83162)]  HRESULT GetDevice( [out,retval] LPDIRECT3DDEVICE8 *ppDevice) ;
   [helpcontext(83665)]  HRESULT SetPrivateData( [in] REFGUID refguid,[in] void *Data,[in] DWORD SizeOfData,[in] DWORD Flags) ;
   [helpcontext(83163)]  HRESULT GetPrivateData( [in] REFGUID refguid,[in,out] void *Data,[in,out] DWORD *SizeOfDataa) ;
   [helpcontext(83159)]  HRESULT FreePrivateData( [in] REFGUID refguid) ;
   [helpcontext(83160)]  HRESULT GetContainer(DXGUID_CDESC *riid,[out,retval] IUnknown **ppContainer);
   [helpcontext(83161)]  HRESULT GetDesc([out] D3DSURFACE_DESC_CDESC *pDesc);
   [helpcontext(83164)]  HRESULT LockRect([in] D3DLOCKED_RECT_CDESC *LockedRect,[in] void *Rect, [in] DWORD Flags) ;
   [helpcontext(83166)]  HRESULT UnlockRect() ;
};





[ 
 object,
 uuid(BD7349F5-14F1-42e4-9C79-972380DB40C0),		
 pointer_default(unique),
 helpcontext(83180),
 local
]

interface IDirect3DVolume8 : IUnknown
{
   [helpcontext(89096)]      HRESULT GetDevice(  [out,retval]  LPDIRECT3DDEVICE8 *ppDevice) ;
   [helpcontext(89097)]      HRESULT SetPrivateData( [in] REFGUID refguid,[in] void *Data,[in] DWORD SizeOfData,[in] DWORD Flags) ;
   [helpcontext(89098)]      HRESULT GetPrivateData( [in] REFGUID refguid,[in,out] void *Data,[in,out] DWORD *SizeOfDataa) ;
   [helpcontext(89099)]      HRESULT FreePrivateData( [in] REFGUID refguid) ;
   [helpcontext(83182)]  HRESULT GetContainer(DXGUID_CDESC *riid,[out,retval] IUnknown **ppContainer);
 [helpcontext(83185)]    HRESULT GetDesc([out] D3DVOLUME_DESC_CDESC *pDesc);
 //   [helpcontext(99044)]     HRESULT LockBox([in] D3DLOCKED_BOX_CDESC *LockedVolume,[in,out] D3DBOX_CDESC *box, [in] DWORD Flags) ;
   [helpcontext(89100)]     HRESULT LockBox([in] D3DLOCKED_BOX_CDESC *LockedVolume,[in] void  *box, [in] DWORD Flags) ;
   [helpcontext(89101)]     HRESULT UnlockBox();
};


	

    [
        dllname("dx8vb.dll")
    ]
    module D3DAUX
    {
	[entry(114) ,helpcontext(83202)] LONG _stdcall D3DVertexBuffer8SetData (IDirect3DVertexBuffer8 *VBuffer,int offset,int size,LONG flags, void *data);
	[entry(115) ,helpcontext(83200)] LONG _stdcall D3DVertexBuffer8GetData (IDirect3DVertexBuffer8 *VBuffer,int offset,int size,LONG flags, void *data);
	[entry(116) ,helpcontext(83201)] LONG _stdcall D3DIndexBuffer8SetData (IDirect3DIndexBuffer8 *IBuffer,int offset,int size,LONG flags, void *data);
	[entry(117) ,helpcontext(83199)] LONG _stdcall D3DIndexBuffer8GetData (IDirect3DIndexBuffer8 *IBuffer,int offset,int size,LONG flags, void *data);

	[entry(135) ,helpcontext(87080)] LONG _stdcall D3DXMeshVertexBuffer8SetData (IUnknown *d3dxmeshobj,int offset,int size,LONG flags, void *data);
	[entry(136) ,helpcontext(87081)] LONG _stdcall D3DXMeshVertexBuffer8GetData (IUnknown *d3dxmeshobj,int offset,int size,LONG flags, void *data);
	[entry(137) ,helpcontext(87082)] LONG _stdcall D3DXMeshIndexBuffer8SetData (IUnknown *d3dxmeshobj,int offset,int size,LONG flags, void *data);
	[entry(138) ,helpcontext(87083)] LONG _stdcall D3DXMeshIndexBuffer8GetData (IUnknown *d3dxmeshobj,int offset,int size,LONG flags, void *data);

	[entry(139) ,helpcontext(92123)] LONG _stdcall DXCopyMemory (void *dest, void *src, LONG size);

    };


#endif


///////////////////////////
//DEAD ENUMS ????
///////////////////////////

#if 0

 [helpcontext(89000)]
typedef enum CONST_D3DTEXTUREFILTER {
    D3DFILTER_NEAREST          = 1,
    D3DFILTER_LINEAR           = 2,
    D3DFILTER_MIPNEAREST       = 3,
    D3DFILTER_MIPLINEAR        = 4,
    D3DFILTER_LINEARMIPNEAREST = 5,
    D3DFILTER_LINEARMIPLINEAR  = 6,
    D3DFILTER_FORCE_DWORD      = 0x7fffffff, /* force 32-bit size enum */
} D3DTEXTUREFILTER;

 [helpcontext(89001)]
typedef enum CONST_D3DTEXTUREBLEND {
    D3DTBLEND_DECAL            = 1,
    D3DTBLEND_MODULATE         = 2,
    D3DTBLEND_DECALALPHA       = 3,
    D3DTBLEND_MODULATEALPHA    = 4,
    D3DTBLEND_DECALMASK        = 5,
    D3DTBLEND_MODULATEMASK     = 6,
    D3DTBLEND_COPY             = 7,
    D3DTBLEND_ADD              = 8,
    D3DTBLEND_FORCE_DWORD      = 0x7fffffff, /* force 32-bit size enum */
} D3DTEXTUREBLEND;

 [helpcontext(89002)]
typedef enum CONST_D3DANTIALIASMODE {
    D3DANTIALIAS_NONE          = 0,
    D3DANTIALIAS_SORTDEPENDENT = 1,
    D3DANTIALIAS_SORTINDEPENDENT = 2,
    D3DANTIALIAS_FORCE_DWORD   = 0x7fffffff, /* force 32-bit size enum */
} D3DANTIALIASMODE;



#endif
