2 * Direct3D driver interface
5 * Copyright (C) 2001 Ove Kaaven
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 /* Helper macro to enable gcc's extension. */
26 #ifndef __GNU_EXTENSION
28 #define __GNU_EXTENSION __extension__
30 #define __GNU_EXTENSION
43 #if (DIRECT3D_VERSION >= 0x0900)
47 #ifndef DDRAWI_DIRECTDRAW_DEFINED
48 typedef struct _DDRAWI_DIRECTDRAW_GBL FAR
*LPDDRAWI_DIRECTDRAW_GBL
;
49 typedef struct _DDRAWI_DIRECTDRAW_LCL FAR
*LPDDRAWI_DIRECTDRAW_LCL
;
50 #define DDRAWI_DIRECTDRAW_DEFINED
53 #ifndef DDRAWI_DDRAWSURFACE_DEFINED
54 typedef struct _DDRAWI_DDRAWSURFACE_LCL FAR
*LPDDRAWI_DDRAWSURFACE_LCL
;
55 #define DDRAWI_DDRAWSURFACE_DEFINED
58 #define D3DERR_COMMAND_UNPARSED 0x88760BB8;
60 /*****************************************************************************
61 * device info structures
63 typedef struct _D3DDeviceDesc_V1
{
66 D3DCOLORMODEL dcmColorModel
;
68 D3DTRANSFORMCAPS dtcTransformCaps
;
70 D3DLIGHTINGCAPS dlcLightingCaps
;
71 D3DPRIMCAPS dpcLineCaps
;
72 D3DPRIMCAPS dpcTriCaps
;
73 DWORD dwDeviceRenderBitDepth
;
74 DWORD dwDeviceZBufferBitDepth
;
75 DWORD dwMaxBufferSize
;
76 DWORD dwMaxVertexCount
;
77 } D3DDEVICEDESC_V1
,*LPD3DDEVICEDESC_V1
;
79 /* this is to allow keeping the bulk of our OpenGL code out of x11drv */
80 #define D3DDD_WINE_OPENGL_DEVICE 0x00008000
82 typedef struct _D3DHAL_GLOBALDRIVERDATA
{
84 D3DDEVICEDESC_V1 hwCaps
;
86 DWORD dwNumClipVertices
;
87 DWORD dwNumTextureFormats
;
88 LPDDSURFACEDESC lpTextureFormats
;
89 } D3DHAL_GLOBALDRIVERDATA
;
91 #ifndef D3DHAL_GLOBALDRIVERDATA_DEFINED
92 typedef D3DHAL_GLOBALDRIVERDATA
*LPD3DHAL_GLOBALDRIVERDATA
;
93 #define D3DHAL_GLOBALDRIVERDATA_DEFINED
96 typedef struct _D3DHAL_D3DEXTENDEDCAPS
{
99 DWORD dwMinTextureWidth
, dwMaxTextureWidth
;
100 DWORD dwMinTextureHeight
, dwMaxTextureHeight
;
101 DWORD dwMinStippleWidth
, dwMaxStippleWidth
;
102 DWORD dwMinStippleHeight
, dwMaxStippleHeight
;
104 DWORD dwMaxTextureRepeat
;
105 DWORD dwMaxTextureAspectRatio
;
106 DWORD dwMaxAnisotropy
;
107 D3DVALUE dvGuardBandLeft
;
108 D3DVALUE dvGuardBandTop
;
109 D3DVALUE dvGuardBandRight
;
110 D3DVALUE dvGuardBandBottom
;
111 D3DVALUE dvExtentsAdjust
;
114 DWORD dwTextureOpCaps
;
115 WORD wMaxTextureBlendStages
;
116 WORD wMaxSimultaneousTextures
;
118 DWORD dwMaxActiveLights
;
119 D3DVALUE dvMaxVertexW
;
120 WORD wMaxUserClipPlanes
;
121 WORD wMaxVertexBlendMatrices
;
122 DWORD dwVertexProcessingCaps
;
127 } D3DHAL_D3DEXTENDEDCAPS
,*LPD3DHAL_D3DEXTENDEDCAPS
;
129 /*****************************************************************************
130 * d3d->driver callbacks
132 typedef struct _D3DHAL_CONTEXTCREATEDATA
*LPD3DHAL_CONTEXTCREATEDATA
;
133 typedef struct _D3DHAL_CONTEXTDESTROYDATA
*LPD3DHAL_CONTEXTDESTROYDATA
;
134 typedef struct _D3DHAL_CONTEXTDESTROYALLDATA
*LPD3DHAL_CONTEXTDESTROYALLDATA
;
135 typedef struct _D3DHAL_SCENECAPTUREDATA
*LPD3DHAL_SCENECAPTUREDATA
;
136 typedef struct _D3DHAL_RENDERSTATEDATA
*LPD3DHAL_RENDERSTATEDATA
;
137 typedef struct _D3DHAL_RENDERPRIMITIVEDATA
*LPD3DHAL_RENDERPRIMITIVEDATA
;
138 typedef struct _D3DHAL_TEXTURECREATEDATA
*LPD3DHAL_TEXTURECREATEDATA
;
139 typedef struct _D3DHAL_TEXTUREDESTROYDATA
*LPD3DHAL_TEXTUREDESTROYDATA
;
140 typedef struct _D3DHAL_TEXTURESWAPDATA
*LPD3DHAL_TEXTURESWAPDATA
;
141 typedef struct _D3DHAL_TEXTUREGETSURFDATA
*LPD3DHAL_TEXTUREGETSURFDATA
;
142 typedef struct _D3DHAL_GETSTATEDATA
*LPD3DHAL_GETSTATEDATA
;
144 typedef DWORD (PASCAL
*LPD3DHAL_CONTEXTCREATECB
) (LPD3DHAL_CONTEXTCREATEDATA
);
145 typedef DWORD (PASCAL
*LPD3DHAL_CONTEXTDESTROYCB
) (LPD3DHAL_CONTEXTDESTROYDATA
);
146 typedef DWORD (PASCAL
*LPD3DHAL_CONTEXTDESTROYALLCB
)(LPD3DHAL_CONTEXTDESTROYALLDATA
);
147 typedef DWORD (PASCAL
*LPD3DHAL_SCENECAPTURECB
) (LPD3DHAL_SCENECAPTUREDATA
);
148 typedef DWORD (PASCAL
*LPD3DHAL_RENDERSTATECB
) (LPD3DHAL_RENDERSTATEDATA
);
149 typedef DWORD (PASCAL
*LPD3DHAL_RENDERPRIMITIVECB
) (LPD3DHAL_RENDERPRIMITIVEDATA
);
150 typedef DWORD (PASCAL
*LPD3DHAL_TEXTURECREATECB
) (LPD3DHAL_TEXTURECREATEDATA
);
151 typedef DWORD (PASCAL
*LPD3DHAL_TEXTUREDESTROYCB
) (LPD3DHAL_TEXTUREDESTROYDATA
);
152 typedef DWORD (PASCAL
*LPD3DHAL_TEXTURESWAPCB
) (LPD3DHAL_TEXTURESWAPDATA
);
153 typedef DWORD (PASCAL
*LPD3DHAL_TEXTUREGETSURFCB
) (LPD3DHAL_TEXTUREGETSURFDATA
);
154 typedef DWORD (PASCAL
*LPD3DHAL_GETSTATECB
) (LPD3DHAL_GETSTATEDATA
);
156 typedef struct _D3DHAL_CALLBACKS
{
158 LPD3DHAL_CONTEXTCREATECB ContextCreate
;
159 LPD3DHAL_CONTEXTDESTROYCB ContextDestroy
;
160 LPD3DHAL_CONTEXTDESTROYALLCB ContextDestroyAll
;
161 LPD3DHAL_SCENECAPTURECB SceneCapture
;
164 LPD3DHAL_RENDERSTATECB RenderState
;
165 LPD3DHAL_RENDERPRIMITIVECB RenderPrimitive
;
167 LPD3DHAL_TEXTURECREATECB TextureCreate
;
168 LPD3DHAL_TEXTUREDESTROYCB TextureDestroy
;
169 LPD3DHAL_TEXTURESWAPCB TextureSwap
;
170 LPD3DHAL_TEXTUREGETSURFCB TextureGetSurf
;
171 /* now why did MS create CALLBACKS2 and CALLBACKS3 structures if
172 * all these reserved fields were available? we may never know */
183 LPD3DHAL_GETSTATECB GetState
;
196 #ifndef D3DHAL_CALLBACKS_DEFINED
197 typedef D3DHAL_CALLBACKS
*LPD3DHAL_CALLBACKS
;
198 #define D3DHAL_CALLBACKS_DEFINED
201 typedef struct _D3DHAL_SETRENDERTARGETDATA
*LPD3DHAL_SETRENDERTARGETDATA
;
202 typedef struct _D3DHAL_CLEARDATA
*LPD3DHAL_CLEARDATA
;
203 typedef struct _D3DHAL_DRAWONEPRIMITIVEDATA
*LPD3DHAL_DRAWONEPRIMITIVEDATA
;
204 typedef struct _D3DHAL_DRAWONEINDEXEDPRIMITIVEDATA
*LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA
;
205 typedef struct _D3DHAL_DRAWPRIMITIVESDATA
*LPD3DHAL_DRAWPRIMITIVESDATA
;
207 typedef DWORD (PASCAL
*LPD3DHAL_SETRENDERTARGETCB
) (LPD3DHAL_SETRENDERTARGETDATA
);
208 typedef DWORD (PASCAL
*LPD3DHAL_CLEARCB
) (LPD3DHAL_CLEARDATA
);
209 typedef DWORD (PASCAL
*LPD3DHAL_DRAWONEPRIMITIVECB
) (LPD3DHAL_DRAWONEPRIMITIVEDATA
);
210 typedef DWORD (PASCAL
*LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB
)(LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA
);
211 typedef DWORD (PASCAL
*LPD3DHAL_DRAWPRIMITIVESCB
) (LPD3DHAL_DRAWPRIMITIVESDATA
);
213 typedef struct _D3DHAL_CALLBACKS2
{
216 LPD3DHAL_SETRENDERTARGETCB SetRenderTarget
;
217 LPD3DHAL_CLEARCB Clear
;
218 LPD3DHAL_DRAWONEPRIMITIVECB DrawOnePrimitive
;
219 LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB DrawOneIndexedPrimitive
;
220 LPD3DHAL_DRAWPRIMITIVESCB DrawPrimitives
;
221 } D3DHAL_CALLBACKS2
,*LPD3DHAL_CALLBACKS2
;
223 typedef struct _D3DHAL_CLEAR2DATA
*LPD3DHAL_CLEAR2DATA
;
224 typedef struct _D3DHAL_VALIDATETEXTURESTAGESTATEDATA
*LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA
;
225 typedef struct _D3DHAL_DRAWPRIMITIVES2DATA
*LPD3DHAL_DRAWPRIMITIVES2DATA
;
227 typedef DWORD (PASCAL
*LPD3DHAL_CLEAR2CB
) (LPD3DHAL_CLEAR2DATA
);
228 typedef DWORD (PASCAL
*LPD3DHAL_VALIDATETEXTURESTAGESTATECB
)(LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA
);
229 typedef DWORD (PASCAL
*LPD3DHAL_DRAWPRIMITIVES2CB
) (LPD3DHAL_DRAWPRIMITIVES2DATA
);
231 typedef struct _D3DHAL_CALLBACKS3
{
234 LPD3DHAL_CLEAR2CB Clear2
;
236 LPD3DHAL_VALIDATETEXTURESTAGESTATECB ValidateTextureStageState
;
237 LPD3DHAL_DRAWPRIMITIVES2CB DrawPrimitives2
;
238 } D3DHAL_CALLBACKS3
,*LPD3DHAL_CALLBACKS3
;
240 /*****************************************************************************
241 * parameter structures
243 typedef struct _D3DHAL_CONTEXTCREATEDATA
{
245 LPDDRAWI_DIRECTDRAW_GBL lpDDGbl
; /* pre-DirectX 7 */
246 LPDDRAWI_DIRECTDRAW_LCL lpDDLcl
; /* DirectX 7 */
249 LPDIRECTDRAWSURFACE lpDDS
;
250 LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl
; /* DirectX 7 */
253 LPDIRECTDRAWSURFACE lpDDSZ
;
254 LPDDRAWI_DDRAWSURFACE_LCL lpDDSZLcl
; /* DirectX 7 */
260 ULONG_PTR dwhContext
;
262 } D3DHAL_CONTEXTCREATEDATA
;
264 typedef struct _D3DHAL_CONTEXTDESTROYDATA
{
265 ULONG_PTR dwhContext
;
267 } D3DHAL_CONTEXTDESTROYDATA
;
269 typedef struct _D3DHAL_CONTEXTDESTROYALLDATA
{
272 } D3DHAL_CONTEXTDESTROYALLDATA
;
274 typedef struct _D3DHAL_SCENECAPTUREDATA
{
275 ULONG_PTR dwhContext
;
278 } D3DHAL_SCENECAPTUREDATA
;
280 #define D3DHAL_SCENE_CAPTURE_START 0x00000000
281 #define D3DHAL_SCENE_CAPTURE_END 0x00000001
283 typedef struct _D3DHAL_SETRENDERTARGETDATA
{
284 ULONG_PTR dwhContext
;
286 LPDIRECTDRAWSURFACE lpDDS
;
287 LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl
;
290 LPDIRECTDRAWSURFACE lpDDSZ
;
291 LPDDRAWI_DDRAWSURFACE_LCL lpDDSZLcl
;
294 } D3DHAL_SETRENDERTARGETDATA
;
296 typedef struct _D3DHAL_DRAWPRIMITIVES2DATA
{
297 ULONG_PTR dwhContext
;
300 LPDDRAWI_DDRAWSURFACE_LCL lpDDCommands
;
301 DWORD dwCommandOffset
;
302 DWORD dwCommandLength
;
304 LPDDRAWI_DDRAWSURFACE_LCL lpDDVertex
;
307 DWORD dwVertexOffset
;
308 DWORD dwVertexLength
;
309 DWORD dwReqVertexBufSize
;
310 DWORD dwReqCommandBufSize
;
317 } D3DHAL_DRAWPRIMITIVES2DATA
;
319 #define D3DHALDP2_USERMEMVERTICES 0x00000001
320 #define D3DHALDP2_EXECUTEBUFFER 0x00000002
321 #define D3DHALDP2_SWAPVERTEXBUFFER 0x00000004
322 #define D3DHALDP2_SWAPCOMMANDBUFFER 0x00000008
323 #define D3DHALDP2_REQVERTEXBUFSIZE 0x00000010
324 #define D3DHALDP2_REQCOMMANDBUFSIZE 0x00000020
325 #define D3DHALDP2_VIDMEMVERTEXBUF 0x00000040
326 #define D3DHALDP2_VIDMEMCOMMANDBUF 0x00000080
328 /*****************************************************************************
329 * DrawPrimitives2 command structures
331 typedef struct _D3DHAL_DP2COMMAND
{
335 WORD wPrimitiveCount
;
338 } D3DHAL_DP2COMMAND
,*LPD3DHAL_DP2COMMAND
;
340 typedef enum _D3DHAL_DP2OPERATION
{
342 D3DDP2OP_INDEXEDLINELIST
= 2,
343 D3DDP2OP_INDEXEDTRIANGLELIST
= 3,
344 D3DDP2OP_RENDERSTATE
= 8,
345 D3DDP2OP_LINELIST
= 15,
346 D3DDP2OP_LINESTRIP
= 16,
347 D3DDP2OP_INDEXEDLINESTRIP
= 17,
348 D3DDP2OP_TRIANGLELIST
= 18,
349 D3DDP2OP_TRIANGLESTRIP
= 19,
350 D3DDP2OP_INDEXEDTRIANGLESTRIP
= 20,
351 D3DDP2OP_TRIANGLEFAN
= 21,
352 D3DDP2OP_INDEXEDTRIANGLEFAN
= 22,
353 D3DDP2OP_TRIANGLEFAN_IMM
= 23,
354 D3DDP2OP_LINELIST_IMM
= 24,
355 D3DDP2OP_TEXTURESTAGESTATE
= 25,
356 D3DDP2OP_INDEXEDTRIANGLELIST2
= 26,
357 D3DDP2OP_INDEXEDLINELIST2
= 27,
358 D3DDP2OP_VIEWPORTINFO
= 28,
360 /* pre-DirectX 7 interfaces */
361 D3DDP2OP_SETPALETTE
= 30,
362 D3DDP2OP_UPDATEPALETTE
= 31,
363 /* DirectX 7 interfaces */
364 D3DDP2OP_ZRANGE
= 32,
365 D3DDP2OP_SETMATERIAL
= 33,
366 D3DDP2OP_SETLIGHT
= 34,
367 D3DDP2OP_CREATELIGHT
= 35,
368 D3DDP2OP_SETTRANSFORM
= 36,
369 D3DDP2OP_TEXBLT
= 38,
370 D3DDP2OP_STATESET
= 39,
371 D3DDP2OP_SETPRIORITY
= 40,
373 D3DDP2OP_SETRENDERTARGET
= 41,
375 /* DirectX 7 interfaces */
376 D3DDP2OP_SETTEXLOD
= 43,
377 D3DPP2OP_SETCLIPPLANE
= 44,
378 #if(DIRECT3D_VERSION >= 0x0800)
379 D3DDP2OP_CREATEVERTEXSHADER
= 45,
380 D3DDP2OP_DELETEVERTEXSHADER
= 46,
381 D3DDP2OP_SETVERTEXSHADER
= 47,
382 D3DDP2OP_SETVERTEXSHADERCONST
= 48,
383 D3DDP2OP_SETSTREAMSOURCE
= 49,
384 D3DDP2OP_SETSTREAMSOURCEUM
= 50,
385 D3DDP2OP_SETINDICES
= 51,
386 D3DDP2OP_DRAWPRIMITIVE
= 52,
387 D3DDP2OP_DRAWINDEXEDPRIMITIVE
= 53,
388 D3DDP2OP_CREATEPIXELSHADER
= 54,
389 D3DDP2OP_DELETEPIXELSHADER
= 55,
390 D3DDP2OP_SETPIXELSHADER
= 56,
391 D3DDP2OP_SETPIXELSHADERCONST
= 57,
392 D3DDP2OP_CLIPPEDTRIANGLEFAN
= 58,
393 D3DDP2OP_DRAWPRIMITIVE2
= 59,
394 D3DDP2OP_DRAWINDEXEDPRIMITIVE2
= 60,
395 D3DDP2OP_DRAWRECTPATCH
= 61,
396 D3DDP2OP_DRAWTRIPATCH
= 62,
397 D3DDP2OP_VOLUMEBLT
= 63,
398 D3DDP2OP_BUFFERBLT
= 64,
399 D3DDP2OP_MULTIPLYTRANSFORM
= 65,
400 D3DDP2OP_ADDDIRTYRECT
= 66,
401 D3DDP2OP_ADDDIRTYBOX
= 67,
403 #if(DIRECT3D_VERSION >= 0x0900)
404 D3DDP2OP_CREATEVERTEXSHADERDECL
= 71,
405 D3DDP2OP_DELETEVERTEXSHADERDECL
= 72,
406 D3DDP2OP_SETVERTEXSHADERDECL
= 73,
407 D3DDP2OP_CREATEVERTEXSHADERFUNC
= 74,
408 D3DDP2OP_DELETEVERTEXSHADERFUNC
= 75,
409 D3DDP2OP_SETVERTEXSHADERFUNC
= 76,
410 D3DDP2OP_SETVERTEXSHADERCONSTI
= 77,
411 D3DDP2OP_SETSCISSORRECT
= 79,
412 D3DDP2OP_SETSTREAMSOURCE2
= 80,
414 D3DDP2OP_COLORFILL
= 82,
415 D3DDP2OP_SETVERTEXSHADERCONSTB
= 83,
416 D3DDP2OP_CREATEQUERY
= 84,
417 D3DDP2OP_SETRENDERTARGET2
= 85,
418 D3DDP2OP_SETDEPTHSTENCIL
= 86,
419 D3DDP2OP_RESPONSECONTINUE
= 87,
420 D3DDP2OP_RESPONSEQUERY
= 88,
421 D3DDP2OP_GENERATEMIPSUBLEVELS
= 89,
422 D3DDP2OP_DELETEQUERY
= 90,
423 D3DDP2OP_ISSUEQUERY
= 91,
424 D3DDP2OP_SETPIXELSHADERCONSTI
= 93,
425 D3DDP2OP_SETPIXELSHADERCONSTB
= 94,
426 D3DDP2OP_SETSTREAMSOURCEFREQ
= 95,
427 D3DDP2OP_SURFACEBLT
= 96
429 } D3DHAL_DP2OPERATION
;
431 /* point primitives */
433 typedef struct _D3DHAL_POINTS
{
436 } D3DHAL_DP2POINTS
,*LPD3DHAL_DP2POINTS
;
438 /* line primitives */
440 typedef struct _D3DHAL_DP2STARTVERTEX
{
442 } D3DHAL_DP2STARTVERTEX
,*LPD3DHAL_DP2STARTVERTEX
;
444 typedef struct _D3DHAL_DP2LINELIST
{
446 } D3DHAL_DP2LINELIST
,*LPD3DHAL_DP2LINELIST
;
448 typedef struct _D3DHAL_DP2INDEXEDLINELIST
{
451 } D3DHAL_DP2INDEXEDLINELIST
,*LPD3DHAL_DP2INDEXEDLINELIST
;
453 typedef struct _D3DHAL_DP2LINESTRIP
{
455 } D3DHAL_DP2LINESTRIP
,*LPD3DHAL_DP2LINESTRIP
;
457 typedef struct _D3DHAL_DP2INDEXEDLINESTRIP
{
459 } D3DHAL_DP2INDEXEDLINESTRIP
,*LPD3DHAL_DP2INDEXEDLINESTRIP
;
461 /* triangle primitives */
463 typedef struct _D3DHAL_DP2TRIANGLELIST
{
465 } D3DHAL_DP2TRIANGLELIST
,*LPD3DHAL_DP2TRIANGLELIST
;
467 typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST
{
472 } D3DHAL_DP2INDEXEDTRIANGLELIST
,*LPD3DHAL_DP2INDEXEDTRIANGLELIST
;
474 typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST2
{
478 } D3DHAL_DP2INDEXEDTRIANGLELIST2
,*LPD3DHAL_DP2INDEXEDTRIANGLELIST2
;
480 typedef struct _D3DHAL_DP2TRIANGLESTRIP
{
482 } D3DHAL_DP2TRIANGLESTRIP
,*LPD3DHAL_DP2TRIANGLESTRIP
;
484 typedef struct _D3DHAL_DP2INDEXEDTRIANGLESTRIP
{
486 } D3DHAL_DP2INDEXEDTRIANGLESTRIP
,*LPD3DHAL_DP2INDEXEDTRIANGLESTRIP
;
488 typedef struct _D3DHAL_DP2TRIANGLEFAN
{
490 } D3DHAL_DP2TRIANGLEFAN
,*LPD3DHAL_DP2TRIANGLEFAN
;
492 typedef struct _D3DHAL_DP2INDEXEDTRIANGLEFAN
{
494 } D3DHAL_DP2INDEXEDTRIANGLEFAN
,*LPD3DHAL_DP2INDEXEDTRIANGLEFAN
;
496 typedef struct _D3DHAL_DP2TRIANGLEFAN_IMM
{
498 } D3DHAL_DP2TRIANGLEFAN_IMM
,*LPD3DHAL_DP2TRIANGLEFAN_IMM
;
501 typedef struct _D3DHAL_DP2RENDERSTATE
{
502 D3DRENDERSTATETYPE RenderState
;
507 } D3DHAL_DP2RENDERSTATE
,*LPD3DHAL_DP2RENDERSTATE
;
509 typedef struct _D3DHAL_DP2TEXTURESTAGESTATE
{
513 } D3DHAL_DP2TEXTURESTAGESTATE
,*LPD3DHAL_DP2TEXTURESTAGESTATE
;
515 #define D3DTSS_TEXTUREMAP 0
517 typedef struct _D3DHAL_DP2VIEWPORTINFO
{
522 } D3DHAL_DP2VIEWPORTINFO
,*LPD3DHAL_DP2VIEWPORTINFO
;
524 typedef struct _D3DHAL_DP2WINFO
{
527 } D3DHAL_DP2WINFO
,*LPD3DHAL_DP2WINFO
;
529 typedef struct _D3DHAL_DP2SETPALETTE
{
530 DWORD dwPaletteHandle
;
531 DWORD dwPaletteFlags
;
532 DWORD dwSurfaceHandle
;
533 } D3DHAL_DP2SETPALETTE
,*LPD3DHAL_DP2SETPALETTE
;
535 typedef struct _D3DHAL_DP2UPDATEPALETTE
{
536 DWORD dwPaletteHandle
;
539 } D3DHAL_DP2UPDATEPALETTE
,*LPD3DHAL_DP2UPDATEPALETTE
;
541 typedef struct _D3DHAL_DP2ZRANGE
{
544 } D3DHAL_DP2ZRANGE
,*LPD3DHAL_DP2ZRANGE
;
546 typedef D3DMATERIAL7 D3DHAL_DP2SETMATERIAL
,*LPD3DHAL_DP2SETMATERIAL
;
548 typedef struct _D3DHAL_DP2SETLIGHT
{
551 } D3DHAL_DP2SETLIGHT
,*LPD3DHAL_DP2SETLIGHT
;
553 #define D3DHAL_SETLIGHT_ENABLE 0
554 #define D3DHAL_SETLIGHT_DISABLE 1
555 #define D3DHAL_SETLIGHT_DATA 2
557 typedef struct _D3DHAL_DP2CREATELIGHT
{
559 } D3DHAL_DP2CREATELIGHT
,*LPD3DHAL_DP2CREATELIGHT
;
561 typedef struct _D3DHAL_DP2SETTRANSFORM
{
562 D3DTRANSFORMSTATETYPE xfrmType
;
564 } D3DHAL_DP2SETTRANSFORM
,*LPD3DHAL_DP2SETTRANSFORM
;
566 typedef struct _D3DHAL_DP2TEXBLT
{
567 DWORD dwDDDestSurface
;
568 DWORD dwDDSrcSurface
;
572 } D3DHAL_DP2TEXBLT
,*LPD3DHAL_DP2TEXBLT
;
574 typedef struct _D3DHAL_DP2STATESET
{
577 D3DSTATEBLOCKTYPE sbType
;
578 } D3DHAL_DP2STATESET
,*LPD3DHAL_DP2STATESET
;
580 #define D3DHAL_STATESETBEGIN 0
581 #define D3DHAL_STATESETEND 1
582 #define D3DHAL_STATESETDELETE 2
583 #define D3DHAL_STATESETEXECUTE 3
584 #define D3DHAL_STATESETCAPTURE 4
586 typedef struct _D3DHAL_DP2SETPRIORITY
{
589 } D3DHAL_DP2SETPRIORITY
,*LPD3DHAL_DP2SETPRIORITY
;
591 typedef struct _D3DHAL_DP2SETRENDERTARGET
{
594 } D3DHAL_DP2SETRENDERTARGET
,*LPD3DHAL_DP2SETRENDERTARGET
;
596 typedef struct _D3DHAL_DP2CLEAR
{
599 D3DVALUE dvFillDepth
;
602 } D3DHAL_DP2CLEAR
,*LPD3DHAL_DP2CLEAR
;
604 typedef struct _D3DHAL_DP2SETTEXLOD
{
607 } D3DHAL_DP2SETTEXLOD
,*LPD3DHAL_DP2SETTEXLOD
;
610 #if (DIRECT3D_VERSION >= 0x0900)
612 #define DX9_DDI_VERSION 4
614 #ifndef D3DVTXPCAPS_NO_VSDT_UBYTE4
615 #define D3DVTXPCAPS_NO_VSDT_UBYTE4 0x00000080
618 #define D3DPMISCCAPS_LINEPATTERNREP 0x00000004
620 #define D3DDEVCAPS_HWVERTEXBUFFER 0x02000000
621 #define D3DDEVCAPS_HWINDEXBUFFER 0x04000000
622 #define D3DDEVCAPS_SUBVOLUMELOCK 0x08000000
624 #ifndef D3DPMISCCAPS_FOGINFVF
625 #define D3DPMISCCAPS_FOGINFVF 0x00002000
629 #define D3DFVF_FOG 0x00002000
632 typedef struct _DD_GETDRIVERINFO2DATA
637 DWORD dwExpectedSize
;
638 } DD_GETDRIVERINFO2DATA
;
641 * A driver must check DD_GETDRIVERINFO2DATA.dwHeight for
642 * D3DGDI2_MAGIC to see if the passed GUID is GUID_GetDriverInfo2
643 * or a GUID_DDStereoMode.
645 #define GUID_GetDriverInfo2 GUID_DDStereoMode
648 * Magic number used in DD_GETDRIVERINFO2DATA.dwHeight when
649 * GUID_GetDriverInfo2/GUID_DDStereoMode is specified in a
650 * GetDriverInfo call.
652 #define D3DGDI2_MAGIC 0xFFFFFFFF
654 #define D3DGDI2_TYPE_GETD3DCAPS8 0x00000001
655 #define D3DGDI2_TYPE_GETFORMATCOUNT 0x00000002
656 #define D3DGDI2_TYPE_GETFORMAT 0x00000003
657 #define D3DGDI2_TYPE_DXVERSION 0x00000004 /* Make driver aware of currently used DirectX version */
658 #define D3DGDI2_TYPE_GETD3DCAPS9 0x00000010
659 #define D3DGDI2_TYPE_GETEXTENDEDMODECOUNT 0x00000011
660 #define D3DGDI2_TYPE_GETEXTENDEDMODE 0x00000012
661 #define D3DGDI2_TYPE_GETADAPTERGROUP 0x00000013
662 #define D3DGDI2_TYPE_GETMULTISAMPLEQUALITYLEVELS 0x00000016
663 #define D3DGDI2_TYPE_DEFERRED_AGP_AWARE 0x00000018
664 #define D3DGDI2_TYPE_FREE_DEFERRED_AGP 0x00000019
665 #define D3DGDI2_TYPE_DEFER_AGP_FREES 0x00000020
666 #define D3DGDI2_TYPE_GETD3DQUERYCOUNT 0x00000021
667 #define D3DGDI2_TYPE_GETD3DQUERY 0x00000022
668 #define D3DGDI2_TYPE_GETDDIVERSION 0x00000023 /* Returns DX9_DDI_VERSION, used to check which DDK version the driver is compiled against */
670 typedef struct _D3DCAPS8
672 D3DDEVTYPE DeviceType
;
677 DWORD PresentationIntervals
;
680 DWORD PrimitiveMiscCaps
;
688 DWORD TextureFilterCaps
;
689 DWORD CubeTextureFilterCaps
;
690 DWORD VolumeTextureFilterCaps
;
691 DWORD TextureAddressCaps
;
692 DWORD VolumeTextureAddressCaps
;
694 DWORD MaxTextureWidth
;
695 DWORD MaxTextureHeight
;
696 DWORD MaxVolumeExtent
;
697 DWORD MaxTextureRepeat
;
698 DWORD MaxTextureAspectRatio
;
703 float GuardBandRight
;
704 float GuardBandBottom
;
709 DWORD MaxTextureBlendStages
;
710 DWORD MaxSimultaneousTextures
;
711 DWORD VertexProcessingCaps
;
712 DWORD MaxActiveLights
;
713 DWORD MaxUserClipPlanes
;
714 DWORD MaxVertexBlendMatrices
;
715 DWORD MaxVertexBlendMatrixIndex
;
717 DWORD MaxPrimitiveCount
;
718 DWORD MaxVertexIndex
;
720 DWORD MaxStreamStride
;
721 DWORD VertexShaderVersion
;
722 DWORD MaxVertexShaderConst
;
723 DWORD PixelShaderVersion
;
724 float MaxPixelShaderValue
;
727 typedef struct _DD_GETFORMATCOUNTDATA
729 DD_GETDRIVERINFO2DATA gdi2
;
732 } DD_GETFORMATCOUNTDATA
;
734 typedef struct _DD_GETFORMATDATA
736 DD_GETDRIVERINFO2DATA gdi2
;
738 DDPIXELFORMAT format
;
741 typedef struct _DD_DXVERSION
743 DD_GETDRIVERINFO2DATA gdi2
;
748 typedef struct _DD_DEFERRED_AGP_AWARE_DATA
750 DD_GETDRIVERINFO2DATA gdi2
;
751 } DD_DEFERRED_AGP_AWARE_DATA
;
753 typedef struct _DD_FREE_DEFERRED_AGP_DATA
755 DD_GETDRIVERINFO2DATA gdi2
;
757 } DD_FREE_DEFERRED_AGP_DATA
;
759 typedef struct _DD_GETEXTENDEDMODECOUNTDATA
761 DD_GETDRIVERINFO2DATA gdi2
;
764 } DD_GETEXTENDEDMODECOUNTDATA
;
766 typedef struct _DD_GETEXTENDEDMODEDATA
768 DD_GETDRIVERINFO2DATA gdi2
;
771 } DD_GETEXTENDEDMODEDATA
;
773 typedef struct _DD_GETADAPTERGROUPDATA
775 DD_GETDRIVERINFO2DATA gdi2
;
776 ULONG_PTR ulUniqueAdapterGroupId
;
779 } DD_GETADAPTERGROUPDATA
;
781 typedef struct _DD_MULTISAMPLEQUALITYLEVELSDATA
783 DD_GETDRIVERINFO2DATA gdi2
;
786 D3DMULTISAMPLE_TYPE MSType
: 31;
788 } DD_MULTISAMPLEQUALITYLEVELSDATA
;
790 typedef struct _DD_GETD3DQUERYCOUNTDATA
792 DD_GETDRIVERINFO2DATA gdi2
;
794 } DD_GETD3DQUERYCOUNTDATA
;
796 typedef struct _DD_GETD3DQUERYDATA
798 DD_GETDRIVERINFO2DATA gdi2
;
799 __GNU_EXTENSION
union
802 D3DQUERYTYPE QueryType
;
804 } DD_GETD3DQUERYDATA
;
806 typedef struct _DD_GETDDIVERSIONDATA
808 DD_GETDRIVERINFO2DATA gdi2
;
811 } DD_GETDDIVERSIONDATA
;
813 #endif /* (DIRECT3D_VERSION >= 0x0900) */
819 #endif /* _D3DHAL_H_ */