Added a stubbed out version of query to d3d9 and wined3d.
[wine] / include / wine / wined3d_types.h
1 /*
2  * Direct3D wine types include file
3  *
4  * Copyright 2002-2003 The wine-d3d team
5  * Copyright 2002-2003 Jason Edmeades
6  *                     Raphael Junqueira
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  */
22
23 #ifndef __WINE_WINED3D_TYPES_H
24 #define __WINE_WINED3D_TYPES_H
25
26 /* TODO: remove the dependency on d3d9 or d3d8 */
27 #if !defined( __WINE_D3D8_H ) && !defined( __WINE_D3D9_H )
28 # error You must include d3d8.h or d3d9.h header to use this header
29 #endif
30
31 #define WINED3D_VSHADER_MAX_CONSTANTS 96
32 #define WINED3D_PSHADER_MAX_CONSTANTS 32
33
34 typedef struct _WINED3DVECTOR_3 {
35     float x;
36     float y;
37     float z;
38 } WINED3DVECTOR_3;
39
40 typedef struct _WINED3DVECTOR_4 {
41     float x;
42     float y;
43     float z;
44     float w;
45 } WINED3DVECTOR_4;
46
47 typedef struct WINED3DSHADERVECTOR {
48   float x;
49   float y;
50   float z;
51   float w;
52 } WINED3DSHADERVECTOR;
53
54 typedef struct WINED3DSHADERSCALAR {
55   float x;
56 } WINED3DSHADERSCALAR;
57
58 typedef WINED3DSHADERVECTOR WINEVSHADERCONSTANTS8[WINED3D_VSHADER_MAX_CONSTANTS];
59
60 typedef struct VSHADERDATA {
61   /** Run Time Shader Function Constants */
62   /*D3DXBUFFER* constants;*/
63   WINEVSHADERCONSTANTS8 C;
64   /** Shader Code as char ... */
65   CONST DWORD* code;
66   UINT codeLength;
67 } VSHADERDATA;
68
69 /** temporary here waiting for buffer code */
70 typedef struct VSHADERINPUTDATA {
71   WINED3DSHADERVECTOR V[17];
72 } WINEVSHADERINPUTDATA;
73
74 /** temporary here waiting for buffer code */
75 typedef struct VSHADEROUTPUTDATA {
76   WINED3DSHADERVECTOR oPos;
77   WINED3DSHADERVECTOR oD[2];
78   WINED3DSHADERVECTOR oT[8];
79   WINED3DSHADERVECTOR oFog;
80   WINED3DSHADERVECTOR oPts;
81 } WINEVSHADEROUTPUTDATA;
82
83 typedef WINED3DSHADERVECTOR WINEPSHADERCONSTANTS8[WINED3D_PSHADER_MAX_CONSTANTS];
84
85 typedef struct PSHADERDATA {
86   /** Run Time Shader Function Constants */
87   /*D3DXBUFFER* constants;*/
88   WINEPSHADERCONSTANTS8 C;
89   /** Shader Code as char ... */
90   CONST DWORD* code;
91   UINT codeLength;
92 } PSHADERDATA;
93
94 /** temporary here waiting for buffer code */
95 typedef struct PSHADERINPUTDATA {
96   WINED3DSHADERVECTOR V[2];
97   WINED3DSHADERVECTOR T[8];
98   WINED3DSHADERVECTOR S[16];
99   /*D3DSHADERVECTOR R[12];*/
100 } WINEPSHADERINPUTDATA;
101
102 /** temporary here waiting for buffer code */
103 typedef struct PSHADEROUTPUTDATA {
104   WINED3DSHADERVECTOR oC[4];
105   WINED3DSHADERVECTOR oDepth;
106 } WINEPSHADEROUTPUTDATA;
107
108 /*****************************************************************************
109  * WineD3D Structures to be used when d3d8 and d3d9 are incompatible
110  */
111
112 typedef enum _WINED3DDEGREETYPE {
113     WINED3DDEGREE_LINEAR      = 1,
114     WINED3DDEGREE_QUADRATIC   = 2,
115     WINED3DDEGREE_CUBIC       = 3,
116     WINED3DDEGREE_QUINTIC     = 5,
117     
118     WINED3DDEGREE_FORCE_DWORD   = 0x7fffffff
119 } WINED3DDEGREETYPE;
120
121
122 typedef enum _WINED3DFORMAT {
123     WINED3DFMT_UNKNOWN              =   0,
124
125     WINED3DFMT_R8G8B8               =  20,
126     WINED3DFMT_A8R8G8B8             =  21,
127     WINED3DFMT_X8R8G8B8             =  22,
128     WINED3DFMT_R5G6B5               =  23,
129     WINED3DFMT_X1R5G5B5             =  24,
130     WINED3DFMT_A1R5G5B5             =  25,
131     WINED3DFMT_A4R4G4B4             =  26,
132     WINED3DFMT_R3G3B2               =  27,
133     WINED3DFMT_A8                   =  28,
134     WINED3DFMT_A8R3G3B2             =  29,
135     WINED3DFMT_X4R4G4B4             =  30,
136     WINED3DFMT_A2B10G10R10          =  31,
137     WINED3DFMT_A8B8G8R8             =  32,
138     WINED3DFMT_X8B8G8R8             =  33,
139     WINED3DFMT_G16R16               =  34,
140     WINED3DFMT_A2R10G10B10          =  35,
141     WINED3DFMT_A16B16G16R16         =  36,
142   
143
144     WINED3DFMT_A8P8                 =  40,
145     WINED3DFMT_P8                   =  41,
146
147     WINED3DFMT_L8                   =  50,
148     WINED3DFMT_A8L8                 =  51,
149     WINED3DFMT_A4L4                 =  52,
150
151     WINED3DFMT_V8U8                 =  60,
152     WINED3DFMT_L6V5U5               =  61,
153     WINED3DFMT_X8L8V8U8             =  62,
154     WINED3DFMT_Q8W8V8U8             =  63,
155     WINED3DFMT_V16U16               =  64,
156     WINED3DFMT_W11V11U10            =  65,
157     WINED3DFMT_A2W10V10U10          =  67,
158
159     WINED3DFMT_UYVY                 =  MAKEFOURCC('U', 'Y', 'V', 'Y'),
160     WINED3DFMT_YUY2                 =  MAKEFOURCC('Y', 'U', 'Y', '2'),
161     WINED3DFMT_DXT1                 =  MAKEFOURCC('D', 'X', 'T', '1'),
162     WINED3DFMT_DXT2                 =  MAKEFOURCC('D', 'X', 'T', '2'),
163     WINED3DFMT_DXT3                 =  MAKEFOURCC('D', 'X', 'T', '3'),
164     WINED3DFMT_DXT4                 =  MAKEFOURCC('D', 'X', 'T', '4'),
165     WINED3DFMT_DXT5                 =  MAKEFOURCC('D', 'X', 'T', '5'),
166     WINED3DFMT_MULTI2_ARGB          =  MAKEFOURCC('M', 'E', 'T', '1'),
167     WINED3DFMT_G8R8_G8B8            =  MAKEFOURCC('G', 'R', 'G', 'B'),
168     WINED3DFMT_R8G8_B8G8            =  MAKEFOURCC('R', 'G', 'B', 'G'),
169
170     WINED3DFMT_D16_LOCKABLE         =  70,
171     WINED3DFMT_D32                  =  71,
172     WINED3DFMT_D15S1                =  73,
173     WINED3DFMT_D24S8                =  75,
174     WINED3DFMT_D24X8                =  77,
175     WINED3DFMT_D24X4S4              =  79,
176     WINED3DFMT_D16                  =  80,
177     WINED3DFMT_D32F_LOCKABLE        =  82,
178     WINED3DFMT_D24FS8               =  83,
179
180     WINED3DFMT_VERTEXDATA           = 100,
181     WINED3DFMT_INDEX16              = 101,
182     WINED3DFMT_INDEX32              = 102,
183     WINED3DFMT_Q16W16V16U16         = 110,
184     /* Flaoting point formats */
185     WINED3DFMT_R16F                 = 111,
186     WINED3DFMT_G16R16F              = 112,
187     WINED3DFMT_A16B16G16R16F        = 113,
188     
189     /* IEEE formats */
190     WINED3DFMT_R32F                 = 114,
191     WINED3DFMT_G32R32F              = 115,
192     WINED3DFMT_A32B32G32R32F        = 116,
193     
194     WINED3DFMT_CxV8U8               = 117,
195
196
197     WINED3DFMT_FORCE_DWORD          = 0xFFFFFFFF
198 } WINED3DFORMAT;
199
200
201
202
203 typedef enum _WINED3DRENDERSTATETYPE {
204     WINED3DRS_ZENABLE                   =   7,
205     WINED3DRS_FILLMODE                  =   8,
206     WINED3DRS_SHADEMODE                 =   9,
207     WINED3DRS_LINEPATTERN               =  10,
208     WINED3DRS_ZWRITEENABLE              =  14,
209     WINED3DRS_ALPHATESTENABLE           =  15,
210     WINED3DRS_LASTPIXEL                 =  16,
211     WINED3DRS_SRCBLEND                  =  19,
212     WINED3DRS_DESTBLEND                 =  20,
213     WINED3DRS_CULLMODE                  =  22,
214     WINED3DRS_ZFUNC                     =  23,
215     WINED3DRS_ALPHAREF                  =  24,
216     WINED3DRS_ALPHAFUNC                 =  25,
217     WINED3DRS_DITHERENABLE              =  26,
218     WINED3DRS_ALPHABLENDENABLE          =  27,
219     WINED3DRS_FOGENABLE                 =  28,
220     WINED3DRS_SPECULARENABLE            =  29,
221     WINED3DRS_ZVISIBLE                  =  30,
222     WINED3DRS_FOGCOLOR                  =  34,
223     WINED3DRS_FOGTABLEMODE              =  35,
224     WINED3DRS_FOGSTART                  =  36,
225     WINED3DRS_FOGEND                    =  37,
226     WINED3DRS_FOGDENSITY                =  38,
227     WINED3DRS_EDGEANTIALIAS             =  40,
228     WINED3DRS_ZBIAS                     =  47,
229     WINED3DRS_RANGEFOGENABLE            =  48,
230     WINED3DRS_STENCILENABLE             =  52,
231     WINED3DRS_STENCILFAIL               =  53,
232     WINED3DRS_STENCILZFAIL              =  54,
233     WINED3DRS_STENCILPASS               =  55,
234     WINED3DRS_STENCILFUNC               =  56,
235     WINED3DRS_STENCILREF                =  57,
236     WINED3DRS_STENCILMASK               =  58,
237     WINED3DRS_STENCILWRITEMASK          =  59,
238     WINED3DRS_TEXTUREFACTOR             =  60,
239     WINED3DRS_WRAP0                     = 128,
240     WINED3DRS_WRAP1                     = 129,
241     WINED3DRS_WRAP2                     = 130,
242     WINED3DRS_WRAP3                     = 131,
243     WINED3DRS_WRAP4                     = 132,
244     WINED3DRS_WRAP5                     = 133,
245     WINED3DRS_WRAP6                     = 134,
246     WINED3DRS_WRAP7                     = 135,
247     WINED3DRS_CLIPPING                  = 136,
248     WINED3DRS_LIGHTING                  = 137,
249     WINED3DRS_AMBIENT                   = 139,
250     WINED3DRS_FOGVERTEXMODE             = 140,
251     WINED3DRS_COLORVERTEX               = 141,
252     WINED3DRS_LOCALVIEWER               = 142,
253     WINED3DRS_NORMALIZENORMALS          = 143,
254     WINED3DRS_DIFFUSEMATERIALSOURCE     = 145,
255     WINED3DRS_SPECULARMATERIALSOURCE    = 146,
256     WINED3DRS_AMBIENTMATERIALSOURCE     = 147,
257     WINED3DRS_EMISSIVEMATERIALSOURCE    = 148,
258     WINED3DRS_VERTEXBLEND               = 151,
259     WINED3DRS_CLIPPLANEENABLE           = 152,  
260     WINED3DRS_SOFTWAREVERTEXPROCESSING  = 153,
261     WINED3DRS_POINTSIZE                 = 154,
262     WINED3DRS_POINTSIZE_MIN             = 155,
263     WINED3DRS_POINTSPRITEENABLE         = 156,
264     WINED3DRS_POINTSCALEENABLE          = 157,
265     WINED3DRS_POINTSCALE_A              = 158,
266     WINED3DRS_POINTSCALE_B              = 159,
267     WINED3DRS_POINTSCALE_C              = 160,
268     WINED3DRS_MULTISAMPLEANTIALIAS      = 161,
269     WINED3DRS_MULTISAMPLEMASK           = 162,
270     WINED3DRS_PATCHEDGESTYLE            = 163,
271     WINED3DRS_PATCHSEGMENTS             = 164,
272     WINED3DRS_DEBUGMONITORTOKEN         = 165,
273     WINED3DRS_POINTSIZE_MAX             = 166,
274     WINED3DRS_INDEXEDVERTEXBLENDENABLE  = 167,
275     WINED3DRS_COLORWRITEENABLE          = 168,
276     WINED3DRS_TWEENFACTOR               = 170,
277     WINED3DRS_BLENDOP                   = 171,
278     WINED3DRS_POSITIONORDER             = 172,
279     WINED3DRS_NORMALORDER               = 173,
280     WINED3DRS_POSITIONDEGREE            = 172,
281     WINED3DRS_NORMALDEGREE              = 173,
282     WINED3DRS_SCISSORTESTENABLE         = 174,
283     WINED3DRS_SLOPESCALEDEPTHBIAS       = 175,
284     WINED3DRS_ANTIALIASEDLINEENABLE     = 176,
285     WINED3DRS_MINTESSELLATIONLEVEL      = 178,
286     WINED3DRS_MAXTESSELLATIONLEVEL      = 179,
287     WINED3DRS_ADAPTIVETESS_X            = 180,
288     WINED3DRS_ADAPTIVETESS_Y            = 181,
289     WINED3DRS_ADAPTIVETESS_Z            = 182,
290     WINED3DRS_ADAPTIVETESS_W            = 183,
291     WINED3DRS_ENABLEADAPTIVETESSELLATION= 184,
292     WINED3DRS_TWOSIDEDSTENCILMODE       = 185,
293     WINED3DRS_CCW_STENCILFAIL           = 186,
294     WINED3DRS_CCW_STENCILZFAIL          = 187,
295     WINED3DRS_CCW_STENCILPASS           = 188,
296     WINED3DRS_CCW_STENCILFUNC           = 189,
297     WINED3DRS_COLORWRITEENABLE1         = 190,
298     WINED3DRS_COLORWRITEENABLE2         = 191,
299     WINED3DRS_COLORWRITEENABLE3         = 192,
300     WINED3DRS_BLENDFACTOR               = 193,
301     WINED3DRS_SRGBWRITEENABLE           = 194,
302     WINED3DRS_DEPTHBIAS                 = 195,
303     WINED3DRS_WRAP8                     = 198,
304     WINED3DRS_WRAP9                     = 199,
305     WINED3DRS_WRAP10                    = 200,
306     WINED3DRS_WRAP11                    = 201,
307     WINED3DRS_WRAP12                    = 202,
308     WINED3DRS_WRAP13                    = 203,
309     WINED3DRS_WRAP14                    = 204,
310     WINED3DRS_WRAP15                    = 205,
311     WINED3DRS_SEPARATEALPHABLENDENABLE  = 206,
312     WINED3DRS_SRCBLENDALPHA             = 207,
313     WINED3DRS_DESTBLENDALPHA            = 208,
314     WINED3DRS_BLENDOPALPHA              = 209,
315
316     WINED3DRS_FORCE_DWORD               = 0x7fffffff
317 } WINED3DRENDERSTATETYPE;
318
319 #define WINEHIGHEST_RENDER_STATE   WINED3DRS_BLENDOPALPHA
320         /* Highest D3DRS_ value   */
321
322 typedef enum _WINED3DSWAPEFFECT {
323     WINED3DSWAPEFFECT_DISCARD         = 1,
324     WINED3DSWAPEFFECT_FLIP            = 2,
325     WINED3DSWAPEFFECT_COPY            = 3,
326     WINED3DSWAPEFFECT_COPY_VSYNC      = 4,
327     WINED3DSWAPEFFECT_FORCE_DWORD     = 0xFFFFFFFF
328 } WINED3DSWAPEFFECT;
329
330
331 typedef enum _WINED3DSAMPLERSTATETYPE {
332     WINED3DSAMP_ADDRESSU       = 1,
333     WINED3DSAMP_ADDRESSV       = 2,
334     WINED3DSAMP_ADDRESSW       = 3,
335     WINED3DSAMP_BORDERCOLOR    = 4,
336     WINED3DSAMP_MAGFILTER      = 5,
337     WINED3DSAMP_MINFILTER      = 6,
338     WINED3DSAMP_MIPFILTER      = 7,
339     WINED3DSAMP_MIPMAPLODBIAS  = 8,
340     WINED3DSAMP_MAXMIPLEVEL    = 9,
341     WINED3DSAMP_MAXANISOTROPY  = 10,
342     WINED3DSAMP_SRGBTEXTURE    = 11,
343     WINED3DSAMP_ELEMENTINDEX   = 12,
344     WINED3DSAMP_DMAPOFFSET     = 13,
345                                 
346     WINED3DSAMP_FORCE_DWORD   = 0x7fffffff,
347 } WINED3DSAMPLERSTATETYPE;
348
349 typedef struct _WINEDD3DRECTPATCH_INFO {
350     UINT                StartVertexOffsetWidth;
351     UINT                StartVertexOffsetHeight;
352     UINT                Width;
353     UINT                Height;
354     UINT                Stride;
355     D3DBASISTYPE        Basis;
356     WINED3DDEGREETYPE   Degree;
357 } WINED3DRECTPATCH_INFO;
358
359
360 typedef struct _WINED3DADAPTER_IDENTIFIER {
361     char           *Driver;
362     char           *Description;
363     char           *DeviceName;
364     LARGE_INTEGER  *DriverVersion; 
365     DWORD          *VendorId;
366     DWORD          *DeviceId;
367     DWORD          *SubSysId;
368     DWORD          *Revision;
369     GUID           *DeviceIdentifier;
370     DWORD          *WHQLLevel;
371 } WINED3DADAPTER_IDENTIFIER;
372
373 typedef struct _WINED3DPRESENT_PARAMETERS {
374     UINT                *BackBufferWidth;
375     UINT                *BackBufferHeight;
376     D3DFORMAT           *BackBufferFormat;
377     UINT                *BackBufferCount;
378     D3DMULTISAMPLE_TYPE *MultiSampleType;
379     DWORD               *MultiSampleQuality;
380     D3DSWAPEFFECT       *SwapEffect;
381     HWND                *hDeviceWindow;
382     BOOL                *Windowed;
383     BOOL                *EnableAutoDepthStencil;
384     D3DFORMAT           *AutoDepthStencilFormat;
385     DWORD               *Flags;
386     UINT                *FullScreen_RefreshRateInHz;
387     UINT                *PresentationInterval;
388 } WINED3DPRESENT_PARAMETERS;
389
390 typedef struct _WINED3DSURFACE_DESC
391 {
392     D3DFORMAT           *Format;
393     D3DRESOURCETYPE     *Type;
394     DWORD               *Usage;
395     D3DPOOL             *Pool;
396     UINT                *Size;
397                         
398     D3DMULTISAMPLE_TYPE *MultiSampleType;
399     DWORD               *MultiSampleQuality;
400     UINT                *Width;
401     UINT                *Height;
402 } WINED3DSURFACE_DESC;
403
404 typedef struct _WINED3DVOLUME_DESC
405 {
406     D3DFORMAT           *Format;
407     D3DRESOURCETYPE     *Type;
408     DWORD               *Usage;
409     D3DPOOL             *Pool;
410     UINT                *Size;
411                         
412     UINT                *Width;
413     UINT                *Height;
414     UINT                *Depth;
415 } WINED3DVOLUME_DESC;
416
417 typedef struct _WINED3DVERTEXELEMENT {
418   WORD    Stream;
419   WORD    Offset;
420   BYTE    Type;
421   BYTE    Method;
422   BYTE    Usage;
423   BYTE    UsageIndex;
424 } WINED3DVERTEXELEMENT, *LPWINED3DVERTEXELEMENT;
425
426
427 typedef enum _WINED3DQUERYTYPE {
428     WINED3DQUERYTYPE_VCACHE             = 4,
429     WINED3DQUERYTYPE_RESOURCEMANAGER    = 5,
430     WINED3DQUERYTYPE_VERTEXSTATS        = 6,
431     WINED3DQUERYTYPE_EVENT              = 8,
432     WINED3DQUERYTYPE_OCCLUSION          = 9,
433     WINED3DQUERYTYPE_TIMESTAMP          = 10,
434     WINED3DQUERYTYPE_TIMESTAMPDISJOINT  = 11,
435     WINED3DQUERYTYPE_TIMESTAMPFREQ      = 12,
436     WINED3DQUERYTYPE_PIPELINETIMINGS    = 13,
437     WINED3DQUERYTYPE_INTERFACETIMINGS   = 14,
438     WINED3DQUERYTYPE_VERTEXTIMINGS      = 15,
439     WINED3DQUERYTYPE_PIXELTIMINGS       = 16,
440     WINED3DQUERYTYPE_BANDWIDTHTIMINGS   = 17,
441     WINED3DQUERYTYPE_CACHEUTILIZATION   = 18
442 } WINED3DQUERYTYPE;
443
444 #define WINED3DISSUE_BEGIN   (1 << 1)
445 #define WINED3DISSUE_END     (1 << 0)
446 #define WINED3DGETDATA_FLUSH (1 << 0)
447
448 typedef struct _WINED3DDEVICE_CREATION_PARAMETERS {
449     UINT          AdapterOrdinal;
450     D3DDEVTYPE    DeviceType;
451     HWND          hFocusWindow;
452     DWORD         BehaviorFlags;
453 } WINED3DDEVICE_CREATION_PARAMETERS;
454
455 typedef struct _WINED3DDEVINFO_BANDWIDTHTIMINGS {
456     float         MaxBandwidthUtilized;
457     float         FrontEndUploadMemoryUtilizedPercent;
458     float         VertexRateUtilizedPercent;
459     float         TriangleSetupRateUtilizedPercent;
460     float         FillRateUtilizedPercent;
461 } WINED3DDEVINFO_BANDWIDTHTIMINGS;
462
463 typedef struct _WINED3DDEVINFO_CACHEUTILIZATION {
464     float         TextureCacheHitRate;
465     float         PostTransformVertexCacheHitRate;
466 } WINED3DDEVINFO_CACHEUTILIZATION;
467
468 typedef struct _WINED3DDEVINFO_INTERFACETIMINGS {
469     float         WaitingForGPUToUseApplicationResourceTimePercent;
470     float         WaitingForGPUToAcceptMoreCommandsTimePercent;
471     float         WaitingForGPUToStayWithinLatencyTimePercent;
472     float         WaitingForGPUExclusiveResourceTimePercent;
473     float         WaitingForGPUOtherTimePercent;
474 } WINED3DDEVINFO_INTERFACETIMINGS;
475
476 typedef struct _WINED3DDEVINFO_PIPELINETIMINGS {
477     float         VertexProcessingTimePercent;
478     float         PixelProcessingTimePercent;
479     float         OtherGPUProcessingTimePercent;
480     float         GPUIdleTimePercent;
481 } WINED3DDEVINFO_PIPELINETIMINGS;
482
483 typedef struct _WINED3DDEVINFO_STAGETIMINGS {
484     float         MemoryProcessingPercent;
485     float         ComputationProcessingPercent;
486 } WINED3DDEVINFO_STAGETIMINGS;
487
488
489 typedef struct WINED3DRESOURCESTATS {
490     BOOL                bThrashing;
491     DWORD               ApproxBytesDownloaded;
492     DWORD               NumEvicts;
493     DWORD               NumVidCreates;
494     DWORD               LastPri;
495     DWORD               NumUsed;
496     DWORD               NumUsedInVidMem;
497     DWORD               WorkingSet;
498     DWORD               WorkingSetBytes;
499     DWORD               TotalManaged;
500     DWORD               TotalBytes;
501 } WINED3DRESOURCESTATS;
502
503 typedef enum _WINED3DRESOURCETYPE {
504     WINED3DRTYPE_SURFACE                =  1,
505     WINED3DRTYPE_VOLUME                 =  2,
506     WINED3DRTYPE_TEXTURE                =  3,
507     WINED3DRTYPE_VOLUMETEXTURE          =  4,
508     WINED3DRTYPE_CUBETEXTURE            =  5,
509     WINED3DRTYPE_VERTEXBUFFER           =  6,
510     WINED3DRTYPE_INDEXBUFFER            =  7,
511
512     WINED3DRTYPE_FORCE_DWORD            = 0x7fffffff
513 } WINED3DRESOURCETYPE;
514
515 #define WINED3DRTYPECOUNT (WINED3DRTYPE_INDEXBUFFER+1)
516
517 typedef struct _WINED3DDEVINFO_RESOURCEMANAGER {
518     WINED3DRESOURCESTATS stats[WINED3DRTYPECOUNT];
519 } WINED3DDEVINFO_RESOURCEMANAGER;
520
521 typedef struct _WINED3DDEVINFO_VERTEXSTATS {
522     DWORD NumRenderedTriangles;
523     DWORD NumExtraClippingTriangles;
524 } WINED3DDEVINFO_VERTEXSTATS;
525
526
527 /*Vertex cache optimization hints.*/
528 typedef struct WINED3DDEVINFO_VCACHE {
529     /*Must be a 4 char code FOURCC (e.g. CACH)*/
530     DWORD         Pattern; 
531     /*0 to get the longest  strips, 1 vertex cache*/
532     DWORD         OptMethod; 
533      /*Cache size to use (only valid if OptMethod==1) */
534     DWORD         CacheSize;
535     /*internal for deciding when to restart strips, non user modifyable (only valid if OptMethod==1)*/
536     DWORD         MagicNumber; 
537 } WINED3DDEVINFO_VCACHE;
538
539
540
541 #endif