Path: blob/master/libmupen64plus/D3D8Interceptor/D3D8Base/d3d8caps.h
2 views
/*==========================================================================;1*2* Copyright (C) Microsoft Corporation. All Rights Reserved.3*4* File: d3d8caps.h5* Content: Direct3D capabilities include file6*7***************************************************************************/89#ifndef _D3D8CAPS_H10#define _D3D8CAPS_H1112#ifndef DIRECT3D_VERSION13#define DIRECT3D_VERSION 0x080014#endif //DIRECT3D_VERSION1516// include this file content only if compiling for DX8 interfaces17#if(DIRECT3D_VERSION >= 0x0800)1819#if defined(_X86_) || defined(_IA64_)20#pragma pack(4)21#endif2223typedef struct _D3DCAPS824{25/* Device Info */26D3DDEVTYPE DeviceType;27UINT AdapterOrdinal;2829/* Caps from DX7 Draw */30DWORD Caps;31DWORD Caps2;32DWORD Caps3;33DWORD PresentationIntervals;3435/* Cursor Caps */36DWORD CursorCaps;3738/* 3D Device Caps */39DWORD DevCaps;4041DWORD PrimitiveMiscCaps;42DWORD RasterCaps;43DWORD ZCmpCaps;44DWORD SrcBlendCaps;45DWORD DestBlendCaps;46DWORD AlphaCmpCaps;47DWORD ShadeCaps;48DWORD TextureCaps;49DWORD TextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DTexture8's50DWORD CubeTextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DCubeTexture8's51DWORD VolumeTextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DVolumeTexture8's52DWORD TextureAddressCaps; // D3DPTADDRESSCAPS for IDirect3DTexture8's53DWORD VolumeTextureAddressCaps; // D3DPTADDRESSCAPS for IDirect3DVolumeTexture8's5455DWORD LineCaps; // D3DLINECAPS5657DWORD MaxTextureWidth, MaxTextureHeight;58DWORD MaxVolumeExtent;5960DWORD MaxTextureRepeat;61DWORD MaxTextureAspectRatio;62DWORD MaxAnisotropy;63float MaxVertexW;6465float GuardBandLeft;66float GuardBandTop;67float GuardBandRight;68float GuardBandBottom;6970float ExtentsAdjust;71DWORD StencilCaps;7273DWORD FVFCaps;74DWORD TextureOpCaps;75DWORD MaxTextureBlendStages;76DWORD MaxSimultaneousTextures;7778DWORD VertexProcessingCaps;79DWORD MaxActiveLights;80DWORD MaxUserClipPlanes;81DWORD MaxVertexBlendMatrices;82DWORD MaxVertexBlendMatrixIndex;8384float MaxPointSize;8586DWORD MaxPrimitiveCount; // max number of primitives per DrawPrimitive call87DWORD MaxVertexIndex;88DWORD MaxStreams;89DWORD MaxStreamStride; // max stride for SetStreamSource9091DWORD VertexShaderVersion;92DWORD MaxVertexShaderConst; // number of vertex shader constant registers9394DWORD PixelShaderVersion;95float MaxPixelShaderValue; // max value of pixel shader arithmetic component9697} D3DCAPS8;9899//100// BIT DEFINES FOR D3DCAPS8 DWORD MEMBERS101//102103//104// Caps105//106#define D3DCAPS_READ_SCANLINE 0x00020000L107108//109// Caps2110//111#define D3DCAPS2_NO2DDURING3DSCENE 0x00000002L112#define D3DCAPS2_FULLSCREENGAMMA 0x00020000L113#define D3DCAPS2_CANRENDERWINDOWED 0x00080000L114#define D3DCAPS2_CANCALIBRATEGAMMA 0x00100000L115#define D3DCAPS2_RESERVED 0x02000000L116#define D3DCAPS2_CANMANAGERESOURCE 0x10000000L117#define D3DCAPS2_DYNAMICTEXTURES 0x20000000L118119//120// Caps3121//122#define D3DCAPS3_RESERVED 0x8000001fL123124// Indicates that the device can respect the ALPHABLENDENABLE render state125// when fullscreen while using the FLIP or DISCARD swap effect.126// COPY and COPYVSYNC swap effects work whether or not this flag is set.127#define D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD 0x00000020L128129//130// PresentationIntervals131//132#define D3DPRESENT_INTERVAL_DEFAULT 0x00000000L133#define D3DPRESENT_INTERVAL_ONE 0x00000001L134#define D3DPRESENT_INTERVAL_TWO 0x00000002L135#define D3DPRESENT_INTERVAL_THREE 0x00000004L136#define D3DPRESENT_INTERVAL_FOUR 0x00000008L137#define D3DPRESENT_INTERVAL_IMMEDIATE 0x80000000L138139//140// CursorCaps141//142// Driver supports HW color cursor in at least hi-res modes(height >=400)143#define D3DCURSORCAPS_COLOR 0x00000001L144// Driver supports HW cursor also in low-res modes(height < 400)145#define D3DCURSORCAPS_LOWRES 0x00000002L146147//148// DevCaps149//150#define D3DDEVCAPS_EXECUTESYSTEMMEMORY 0x00000010L /* Device can use execute buffers from system memory */151#define D3DDEVCAPS_EXECUTEVIDEOMEMORY 0x00000020L /* Device can use execute buffers from video memory */152#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY 0x00000040L /* Device can use TL buffers from system memory */153#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY 0x00000080L /* Device can use TL buffers from video memory */154#define D3DDEVCAPS_TEXTURESYSTEMMEMORY 0x00000100L /* Device can texture from system memory */155#define D3DDEVCAPS_TEXTUREVIDEOMEMORY 0x00000200L /* Device can texture from device memory */156#define D3DDEVCAPS_DRAWPRIMTLVERTEX 0x00000400L /* Device can draw TLVERTEX primitives */157#define D3DDEVCAPS_CANRENDERAFTERFLIP 0x00000800L /* Device can render without waiting for flip to complete */158#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM 0x00001000L /* Device can texture from nonlocal video memory */159#define D3DDEVCAPS_DRAWPRIMITIVES2 0x00002000L /* Device can support DrawPrimitives2 */160#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x00004000L /* Device is texturing from separate memory pools */161#define D3DDEVCAPS_DRAWPRIMITIVES2EX 0x00008000L /* Device can support Extended DrawPrimitives2 i.e. DX7 compliant driver*/162#define D3DDEVCAPS_HWTRANSFORMANDLIGHT 0x00010000L /* Device can support transformation and lighting in hardware and DRAWPRIMITIVES2EX must be also */163#define D3DDEVCAPS_CANBLTSYSTONONLOCAL 0x00020000L /* Device supports a Tex Blt from system memory to non-local vidmem */164#define D3DDEVCAPS_HWRASTERIZATION 0x00080000L /* Device has HW acceleration for rasterization */165#define D3DDEVCAPS_PUREDEVICE 0x00100000L /* Device supports D3DCREATE_PUREDEVICE */166#define D3DDEVCAPS_QUINTICRTPATCHES 0x00200000L /* Device supports quintic Beziers and BSplines */167#define D3DDEVCAPS_RTPATCHES 0x00400000L /* Device supports Rect and Tri patches */168#define D3DDEVCAPS_RTPATCHHANDLEZERO 0x00800000L /* Indicates that RT Patches may be drawn efficiently using handle 0 */169#define D3DDEVCAPS_NPATCHES 0x01000000L /* Device supports N-Patches */170171//172// PrimitiveMiscCaps173//174#define D3DPMISCCAPS_MASKZ 0x00000002L175#define D3DPMISCCAPS_LINEPATTERNREP 0x00000004L176#define D3DPMISCCAPS_CULLNONE 0x00000010L177#define D3DPMISCCAPS_CULLCW 0x00000020L178#define D3DPMISCCAPS_CULLCCW 0x00000040L179#define D3DPMISCCAPS_COLORWRITEENABLE 0x00000080L180#define D3DPMISCCAPS_CLIPPLANESCALEDPOINTS 0x00000100L /* Device correctly clips scaled points to clip planes */181#define D3DPMISCCAPS_CLIPTLVERTS 0x00000200L /* device will clip post-transformed vertex primitives */182#define D3DPMISCCAPS_TSSARGTEMP 0x00000400L /* device supports D3DTA_TEMP for temporary register */183#define D3DPMISCCAPS_BLENDOP 0x00000800L /* device supports D3DRS_BLENDOP */184#define D3DPMISCCAPS_NULLREFERENCE 0x00001000L /* Reference Device that doesnt render */185186//187// LineCaps188//189#define D3DLINECAPS_TEXTURE 0x00000001L190#define D3DLINECAPS_ZTEST 0x00000002L191#define D3DLINECAPS_BLEND 0x00000004L192#define D3DLINECAPS_ALPHACMP 0x00000008L193#define D3DLINECAPS_FOG 0x00000010L194195//196// RasterCaps197//198#define D3DPRASTERCAPS_DITHER 0x00000001L199#define D3DPRASTERCAPS_PAT 0x00000008L200#define D3DPRASTERCAPS_ZTEST 0x00000010L201#define D3DPRASTERCAPS_FOGVERTEX 0x00000080L202#define D3DPRASTERCAPS_FOGTABLE 0x00000100L203#define D3DPRASTERCAPS_ANTIALIASEDGES 0x00001000L204#define D3DPRASTERCAPS_MIPMAPLODBIAS 0x00002000L205#define D3DPRASTERCAPS_ZBIAS 0x00004000L206#define D3DPRASTERCAPS_ZBUFFERLESSHSR 0x00008000L207#define D3DPRASTERCAPS_FOGRANGE 0x00010000L208#define D3DPRASTERCAPS_ANISOTROPY 0x00020000L209#define D3DPRASTERCAPS_WBUFFER 0x00040000L210#define D3DPRASTERCAPS_WFOG 0x00100000L211#define D3DPRASTERCAPS_ZFOG 0x00200000L212#define D3DPRASTERCAPS_COLORPERSPECTIVE 0x00400000L /* Device iterates colors perspective correct */213#define D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE 0x00800000L214215//216// ZCmpCaps, AlphaCmpCaps217//218#define D3DPCMPCAPS_NEVER 0x00000001L219#define D3DPCMPCAPS_LESS 0x00000002L220#define D3DPCMPCAPS_EQUAL 0x00000004L221#define D3DPCMPCAPS_LESSEQUAL 0x00000008L222#define D3DPCMPCAPS_GREATER 0x00000010L223#define D3DPCMPCAPS_NOTEQUAL 0x00000020L224#define D3DPCMPCAPS_GREATEREQUAL 0x00000040L225#define D3DPCMPCAPS_ALWAYS 0x00000080L226227//228// SourceBlendCaps, DestBlendCaps229//230#define D3DPBLENDCAPS_ZERO 0x00000001L231#define D3DPBLENDCAPS_ONE 0x00000002L232#define D3DPBLENDCAPS_SRCCOLOR 0x00000004L233#define D3DPBLENDCAPS_INVSRCCOLOR 0x00000008L234#define D3DPBLENDCAPS_SRCALPHA 0x00000010L235#define D3DPBLENDCAPS_INVSRCALPHA 0x00000020L236#define D3DPBLENDCAPS_DESTALPHA 0x00000040L237#define D3DPBLENDCAPS_INVDESTALPHA 0x00000080L238#define D3DPBLENDCAPS_DESTCOLOR 0x00000100L239#define D3DPBLENDCAPS_INVDESTCOLOR 0x00000200L240#define D3DPBLENDCAPS_SRCALPHASAT 0x00000400L241#define D3DPBLENDCAPS_BOTHSRCALPHA 0x00000800L242#define D3DPBLENDCAPS_BOTHINVSRCALPHA 0x00001000L243244//245// ShadeCaps246//247#define D3DPSHADECAPS_COLORGOURAUDRGB 0x00000008L248#define D3DPSHADECAPS_SPECULARGOURAUDRGB 0x00000200L249#define D3DPSHADECAPS_ALPHAGOURAUDBLEND 0x00004000L250#define D3DPSHADECAPS_FOGGOURAUD 0x00080000L251252//253// TextureCaps254//255#define D3DPTEXTURECAPS_PERSPECTIVE 0x00000001L /* Perspective-correct texturing is supported */256#define D3DPTEXTURECAPS_POW2 0x00000002L /* Power-of-2 texture dimensions are required - applies to non-Cube/Volume textures only. */257#define D3DPTEXTURECAPS_ALPHA 0x00000004L /* Alpha in texture pixels is supported */258#define D3DPTEXTURECAPS_SQUAREONLY 0x00000020L /* Only square textures are supported */259#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00000040L /* Texture indices are not scaled by the texture size prior to interpolation */260#define D3DPTEXTURECAPS_ALPHAPALETTE 0x00000080L /* Device can draw alpha from texture palettes */261// Device can use non-POW2 textures if:262// 1) D3DTEXTURE_ADDRESS is set to CLAMP for this texture's stage263// 2) D3DRS_WRAP(N) is zero for this texture's coordinates264// 3) mip mapping is not enabled (use magnification filter only)265#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL 0x00000100L266#define D3DPTEXTURECAPS_PROJECTED 0x00000400L /* Device can do D3DTTFF_PROJECTED */267#define D3DPTEXTURECAPS_CUBEMAP 0x00000800L /* Device can do cubemap textures */268#define D3DPTEXTURECAPS_VOLUMEMAP 0x00002000L /* Device can do volume textures */269#define D3DPTEXTURECAPS_MIPMAP 0x00004000L /* Device can do mipmapped textures */270#define D3DPTEXTURECAPS_MIPVOLUMEMAP 0x00008000L /* Device can do mipmapped volume textures */271#define D3DPTEXTURECAPS_MIPCUBEMAP 0x00010000L /* Device can do mipmapped cube maps */272#define D3DPTEXTURECAPS_CUBEMAP_POW2 0x00020000L /* Device requires that cubemaps be power-of-2 dimension */273#define D3DPTEXTURECAPS_VOLUMEMAP_POW2 0x00040000L /* Device requires that volume maps be power-of-2 dimension */274275//276// TextureFilterCaps277//278#define D3DPTFILTERCAPS_MINFPOINT 0x00000100L /* Min Filter */279#define D3DPTFILTERCAPS_MINFLINEAR 0x00000200L280#define D3DPTFILTERCAPS_MINFANISOTROPIC 0x00000400L281#define D3DPTFILTERCAPS_MIPFPOINT 0x00010000L /* Mip Filter */282#define D3DPTFILTERCAPS_MIPFLINEAR 0x00020000L283#define D3DPTFILTERCAPS_MAGFPOINT 0x01000000L /* Mag Filter */284#define D3DPTFILTERCAPS_MAGFLINEAR 0x02000000L285#define D3DPTFILTERCAPS_MAGFANISOTROPIC 0x04000000L286#define D3DPTFILTERCAPS_MAGFAFLATCUBIC 0x08000000L287#define D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC 0x10000000L288289//290// TextureAddressCaps291//292#define D3DPTADDRESSCAPS_WRAP 0x00000001L293#define D3DPTADDRESSCAPS_MIRROR 0x00000002L294#define D3DPTADDRESSCAPS_CLAMP 0x00000004L295#define D3DPTADDRESSCAPS_BORDER 0x00000008L296#define D3DPTADDRESSCAPS_INDEPENDENTUV 0x00000010L297#define D3DPTADDRESSCAPS_MIRRORONCE 0x00000020L298299//300// StencilCaps301//302#define D3DSTENCILCAPS_KEEP 0x00000001L303#define D3DSTENCILCAPS_ZERO 0x00000002L304#define D3DSTENCILCAPS_REPLACE 0x00000004L305#define D3DSTENCILCAPS_INCRSAT 0x00000008L306#define D3DSTENCILCAPS_DECRSAT 0x00000010L307#define D3DSTENCILCAPS_INVERT 0x00000020L308#define D3DSTENCILCAPS_INCR 0x00000040L309#define D3DSTENCILCAPS_DECR 0x00000080L310311//312// TextureOpCaps313//314#define D3DTEXOPCAPS_DISABLE 0x00000001L315#define D3DTEXOPCAPS_SELECTARG1 0x00000002L316#define D3DTEXOPCAPS_SELECTARG2 0x00000004L317#define D3DTEXOPCAPS_MODULATE 0x00000008L318#define D3DTEXOPCAPS_MODULATE2X 0x00000010L319#define D3DTEXOPCAPS_MODULATE4X 0x00000020L320#define D3DTEXOPCAPS_ADD 0x00000040L321#define D3DTEXOPCAPS_ADDSIGNED 0x00000080L322#define D3DTEXOPCAPS_ADDSIGNED2X 0x00000100L323#define D3DTEXOPCAPS_SUBTRACT 0x00000200L324#define D3DTEXOPCAPS_ADDSMOOTH 0x00000400L325#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA 0x00000800L326#define D3DTEXOPCAPS_BLENDTEXTUREALPHA 0x00001000L327#define D3DTEXOPCAPS_BLENDFACTORALPHA 0x00002000L328#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM 0x00004000L329#define D3DTEXOPCAPS_BLENDCURRENTALPHA 0x00008000L330#define D3DTEXOPCAPS_PREMODULATE 0x00010000L331#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR 0x00020000L332#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA 0x00040000L333#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR 0x00080000L334#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA 0x00100000L335#define D3DTEXOPCAPS_BUMPENVMAP 0x00200000L336#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE 0x00400000L337#define D3DTEXOPCAPS_DOTPRODUCT3 0x00800000L338#define D3DTEXOPCAPS_MULTIPLYADD 0x01000000L339#define D3DTEXOPCAPS_LERP 0x02000000L340341//342// FVFCaps343//344#define D3DFVFCAPS_TEXCOORDCOUNTMASK 0x0000ffffL /* mask for texture coordinate count field */345#define D3DFVFCAPS_DONOTSTRIPELEMENTS 0x00080000L /* Device prefers that vertex elements not be stripped */346#define D3DFVFCAPS_PSIZE 0x00100000L /* Device can receive point size */347348//349// VertexProcessingCaps350//351#define D3DVTXPCAPS_TEXGEN 0x00000001L /* device can do texgen */352#define D3DVTXPCAPS_MATERIALSOURCE7 0x00000002L /* device can do DX7-level colormaterialsource ops */353#define D3DVTXPCAPS_DIRECTIONALLIGHTS 0x00000008L /* device can do directional lights */354#define D3DVTXPCAPS_POSITIONALLIGHTS 0x00000010L /* device can do positional lights (includes point and spot) */355#define D3DVTXPCAPS_LOCALVIEWER 0x00000020L /* device can do local viewer */356#define D3DVTXPCAPS_TWEENING 0x00000040L /* device can do vertex tweening */357#define D3DVTXPCAPS_NO_VSDT_UBYTE4 0x00000080L /* device does not support D3DVSDT_UBYTE4 */358359#pragma pack()360361#endif /* (DIRECT3D_VERSION >= 0x0800) */362#endif /* _D3D8CAPS_H_ */363364365366