1/* 2 * Direct3D driver interface 3 * (DirectX 7 version) 4 * 5 * Copyright (C) 2001 Ove Kaaven 6 * 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. 11 * 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. 16 * 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 20 */ 21 22#ifndef _D3DHAL_H_ 23#define _D3DHAL_H_ 24 25#ifdef __cplusplus 26extern "C" { 27#endif 28 29#include <ddraw.h> 30#include <d3dtypes.h> 31#include <d3dcaps.h> 32#include <d3d.h> 33 34#if (DIRECT3D_VERSION >= 0x0900) 35#include <d3d9.h> 36#endif 37 38#ifndef DDRAWI_DIRECTDRAW_DEFINED 39typedef struct _DDRAWI_DIRECTDRAW_GBL FAR *LPDDRAWI_DIRECTDRAW_GBL; 40typedef struct _DDRAWI_DIRECTDRAW_LCL FAR *LPDDRAWI_DIRECTDRAW_LCL; 41#define DDRAWI_DIRECTDRAW_DEFINED 42#endif 43 44#ifndef DDRAWI_DDRAWSURFACE_DEFINED 45typedef struct _DDRAWI_DDRAWSURFACE_LCL FAR *LPDDRAWI_DDRAWSURFACE_LCL; 46#define DDRAWI_DDRAWSURFACE_DEFINED 47#endif 48 49#define D3DERR_COMMAND_UNPARSED 0x88760BB8; 50 51/***************************************************************************** 52 * device info structures 53 */ 54typedef struct _D3DDeviceDesc_V1 { 55 DWORD dwSize; 56 DWORD dwFlags; 57 D3DCOLORMODEL dcmColorModel; 58 DWORD dwDevCaps; 59 D3DTRANSFORMCAPS dtcTransformCaps; 60 BOOL bClipping; 61 D3DLIGHTINGCAPS dlcLightingCaps; 62 D3DPRIMCAPS dpcLineCaps; 63 D3DPRIMCAPS dpcTriCaps; 64 DWORD dwDeviceRenderBitDepth; 65 DWORD dwDeviceZBufferBitDepth; 66 DWORD dwMaxBufferSize; 67 DWORD dwMaxVertexCount; 68} D3DDEVICEDESC_V1,*LPD3DDEVICEDESC_V1; 69 70/* this is to allow keeping the bulk of our OpenGL code out of x11drv */ 71#define D3DDD_WINE_OPENGL_DEVICE 0x00008000 72 73typedef struct _D3DHAL_GLOBALDRIVERDATA { 74 DWORD dwSize; 75 D3DDEVICEDESC_V1 hwCaps; 76 DWORD dwNumVertices; 77 DWORD dwNumClipVertices; 78 DWORD dwNumTextureFormats; 79 LPDDSURFACEDESC lpTextureFormats; 80} D3DHAL_GLOBALDRIVERDATA; 81 82#ifndef D3DHAL_GLOBALDRIVERDATA_DEFINED 83typedef D3DHAL_GLOBALDRIVERDATA *LPD3DHAL_GLOBALDRIVERDATA; 84#define D3DHAL_GLOBALDRIVERDATA_DEFINED 85#endif 86 87typedef struct _D3DHAL_D3DEXTENDEDCAPS { 88 DWORD dwSize; 89 /* DirectX 5 */ 90 DWORD dwMinTextureWidth, dwMaxTextureWidth; 91 DWORD dwMinTextureHeight, dwMaxTextureHeight; 92 DWORD dwMinStippleWidth, dwMaxStippleWidth; 93 DWORD dwMinStippleHeight, dwMaxStippleHeight; 94 /* DirectX 6 */ 95 DWORD dwMaxTextureRepeat; 96 DWORD dwMaxTextureAspectRatio; 97 DWORD dwMaxAnisotropy; 98 D3DVALUE dvGuardBandLeft; 99 D3DVALUE dvGuardBandTop; 100 D3DVALUE dvGuardBandRight; 101 D3DVALUE dvGuardBandBottom; 102 D3DVALUE dvExtentsAdjust; 103 DWORD dwStencilCaps; 104 DWORD dwFVFCaps; 105 DWORD dwTextureOpCaps; 106 WORD wMaxTextureBlendStages; 107 WORD wMaxSimultaneousTextures; 108 /* DirectX 7 */ 109 DWORD dwMaxActiveLights; 110 D3DVALUE dvMaxVertexW; 111 WORD wMaxUserClipPlanes; 112 WORD wMaxVertexBlendMatrices; 113 DWORD dwVertexProcessingCaps; 114 DWORD dwReserved1; 115 DWORD dwReserved2; 116 DWORD dwReserved3; 117 DWORD dwReserved4; 118} D3DHAL_D3DEXTENDEDCAPS,*LPD3DHAL_D3DEXTENDEDCAPS; 119 120/***************************************************************************** 121 * d3d->driver callbacks 122 */ 123typedef struct _D3DHAL_CONTEXTCREATEDATA *LPD3DHAL_CONTEXTCREATEDATA; 124typedef struct _D3DHAL_CONTEXTDESTROYDATA *LPD3DHAL_CONTEXTDESTROYDATA; 125typedef struct _D3DHAL_CONTEXTDESTROYALLDATA *LPD3DHAL_CONTEXTDESTROYALLDATA; 126typedef struct _D3DHAL_SCENECAPTUREDATA *LPD3DHAL_SCENECAPTUREDATA; 127typedef struct _D3DHAL_RENDERSTATEDATA *LPD3DHAL_RENDERSTATEDATA; 128typedef struct _D3DHAL_RENDERPRIMITIVEDATA *LPD3DHAL_RENDERPRIMITIVEDATA; 129typedef struct _D3DHAL_TEXTURECREATEDATA *LPD3DHAL_TEXTURECREATEDATA; 130typedef struct _D3DHAL_TEXTUREDESTROYDATA *LPD3DHAL_TEXTUREDESTROYDATA; 131typedef struct _D3DHAL_TEXTURESWAPDATA *LPD3DHAL_TEXTURESWAPDATA; 132typedef struct _D3DHAL_TEXTUREGETSURFDATA *LPD3DHAL_TEXTUREGETSURFDATA; 133typedef struct _D3DHAL_GETSTATEDATA *LPD3DHAL_GETSTATEDATA; 134 135typedef DWORD (PASCAL *LPD3DHAL_CONTEXTCREATECB) (LPD3DHAL_CONTEXTCREATEDATA); 136typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYCB) (LPD3DHAL_CONTEXTDESTROYDATA); 137typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYALLCB)(LPD3DHAL_CONTEXTDESTROYALLDATA); 138typedef DWORD (PASCAL *LPD3DHAL_SCENECAPTURECB) (LPD3DHAL_SCENECAPTUREDATA); 139typedef DWORD (PASCAL *LPD3DHAL_RENDERSTATECB) (LPD3DHAL_RENDERSTATEDATA); 140typedef DWORD (PASCAL *LPD3DHAL_RENDERPRIMITIVECB) (LPD3DHAL_RENDERPRIMITIVEDATA); 141typedef DWORD (PASCAL *LPD3DHAL_TEXTURECREATECB) (LPD3DHAL_TEXTURECREATEDATA); 142typedef DWORD (PASCAL *LPD3DHAL_TEXTUREDESTROYCB) (LPD3DHAL_TEXTUREDESTROYDATA); 143typedef DWORD (PASCAL *LPD3DHAL_TEXTURESWAPCB) (LPD3DHAL_TEXTURESWAPDATA); 144typedef DWORD (PASCAL *LPD3DHAL_TEXTUREGETSURFCB) (LPD3DHAL_TEXTUREGETSURFDATA); 145typedef DWORD (PASCAL *LPD3DHAL_GETSTATECB) (LPD3DHAL_GETSTATEDATA); 146 147typedef struct _D3DHAL_CALLBACKS { 148 DWORD dwSize; 149 LPD3DHAL_CONTEXTCREATECB ContextCreate; 150 LPD3DHAL_CONTEXTDESTROYCB ContextDestroy; 151 LPD3DHAL_CONTEXTDESTROYALLCB ContextDestroyAll; 152 LPD3DHAL_SCENECAPTURECB SceneCapture; 153 LPVOID lpReserved10; 154 LPVOID lpReserved11; 155 LPD3DHAL_RENDERSTATECB RenderState; 156 LPD3DHAL_RENDERPRIMITIVECB RenderPrimitive; 157 DWORD dwReserved; 158 LPD3DHAL_TEXTURECREATECB TextureCreate; 159 LPD3DHAL_TEXTUREDESTROYCB TextureDestroy; 160 LPD3DHAL_TEXTURESWAPCB TextureSwap; 161 LPD3DHAL_TEXTUREGETSURFCB TextureGetSurf; 162 /* now why did MS create CALLBACKS2 and CALLBACKS3 structures if 163 * all these reserved fields were available? we may never know */ 164 LPVOID lpReserved12; 165 LPVOID lpReserved13; 166 LPVOID lpReserved14; 167 LPVOID lpReserved15; 168 LPVOID lpReserved16; 169 LPVOID lpReserved17; 170 LPVOID lpReserved18; 171 LPVOID lpReserved19; 172 LPVOID lpReserved20; 173 LPVOID lpReserved21; 174 LPD3DHAL_GETSTATECB GetState; 175 DWORD dwReserved0; 176 DWORD dwReserved1; 177 DWORD dwReserved2; 178 DWORD dwReserved3; 179 DWORD dwReserved4; 180 DWORD dwReserved5; 181 DWORD dwReserved6; 182 DWORD dwReserved7; 183 DWORD dwReserved8; 184 DWORD dwReserved9; 185} D3DHAL_CALLBACKS; 186 187#ifndef D3DHAL_CALLBACKS_DEFINED 188typedef D3DHAL_CALLBACKS *LPD3DHAL_CALLBACKS; 189#define D3DHAL_CALLBACKS_DEFINED 190#endif 191 192typedef struct _D3DHAL_SETRENDERTARGETDATA *LPD3DHAL_SETRENDERTARGETDATA; 193typedef struct _D3DHAL_CLEARDATA *LPD3DHAL_CLEARDATA; 194typedef struct _D3DHAL_DRAWONEPRIMITIVEDATA *LPD3DHAL_DRAWONEPRIMITIVEDATA; 195typedef struct _D3DHAL_DRAWONEINDEXEDPRIMITIVEDATA *LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA; 196typedef struct _D3DHAL_DRAWPRIMITIVESDATA *LPD3DHAL_DRAWPRIMITIVESDATA; 197 198typedef DWORD (PASCAL *LPD3DHAL_SETRENDERTARGETCB) (LPD3DHAL_SETRENDERTARGETDATA); 199typedef DWORD (PASCAL *LPD3DHAL_CLEARCB) (LPD3DHAL_CLEARDATA); 200typedef DWORD (PASCAL *LPD3DHAL_DRAWONEPRIMITIVECB) (LPD3DHAL_DRAWONEPRIMITIVEDATA); 201typedef DWORD (PASCAL *LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB)(LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA); 202typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVESCB) (LPD3DHAL_DRAWPRIMITIVESDATA); 203 204typedef struct _D3DHAL_CALLBACKS2 { 205 DWORD dwSize; 206 DWORD dwFlags; 207 LPD3DHAL_SETRENDERTARGETCB SetRenderTarget; 208 LPD3DHAL_CLEARCB Clear; 209 LPD3DHAL_DRAWONEPRIMITIVECB DrawOnePrimitive; 210 LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB DrawOneIndexedPrimitive; 211 LPD3DHAL_DRAWPRIMITIVESCB DrawPrimitives; 212} D3DHAL_CALLBACKS2,*LPD3DHAL_CALLBACKS2; 213 214typedef struct _D3DHAL_CLEAR2DATA *LPD3DHAL_CLEAR2DATA; 215typedef struct _D3DHAL_VALIDATETEXTURESTAGESTATEDATA *LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA; 216typedef struct _D3DHAL_DRAWPRIMITIVES2DATA *LPD3DHAL_DRAWPRIMITIVES2DATA; 217 218typedef DWORD (PASCAL *LPD3DHAL_CLEAR2CB) (LPD3DHAL_CLEAR2DATA); 219typedef DWORD (PASCAL *LPD3DHAL_VALIDATETEXTURESTAGESTATECB)(LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA); 220typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVES2CB) (LPD3DHAL_DRAWPRIMITIVES2DATA); 221 222typedef struct _D3DHAL_CALLBACKS3 { 223 DWORD dwSize; 224 DWORD dwFlags; 225 LPD3DHAL_CLEAR2CB Clear2; 226 LPVOID lpvReserved; 227 LPD3DHAL_VALIDATETEXTURESTAGESTATECB ValidateTextureStageState; 228 LPD3DHAL_DRAWPRIMITIVES2CB DrawPrimitives2; 229} D3DHAL_CALLBACKS3,*LPD3DHAL_CALLBACKS3; 230 231/***************************************************************************** 232 * parameter structures 233 */ 234typedef struct _D3DHAL_CONTEXTCREATEDATA { 235 _ANONYMOUS_UNION union { 236 LPDDRAWI_DIRECTDRAW_GBL lpDDGbl; /* pre-DirectX 7 */ 237 LPDDRAWI_DIRECTDRAW_LCL lpDDLcl; /* DirectX 7 */ 238 } DUMMYUNIONNAME1; 239 _ANONYMOUS_UNION union { 240 LPDIRECTDRAWSURFACE lpDDS; 241 LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl; /* DirectX 7 */ 242 } DUMMYUNIONNAME2; 243 _ANONYMOUS_UNION union { 244 LPDIRECTDRAWSURFACE lpDDSZ; 245 LPDDRAWI_DDRAWSURFACE_LCL lpDDSZLcl; /* DirectX 7 */ 246 } DUMMYUNIONNAME3; 247 _ANONYMOUS_UNION union { 248 DWORD dwPID; 249 ULONG_PTR dwrstates; 250 } DUMMYUNIONNAME4; 251 ULONG_PTR dwhContext; 252 HRESULT ddrval; 253} D3DHAL_CONTEXTCREATEDATA; 254 255typedef struct _D3DHAL_CONTEXTDESTROYDATA { 256 ULONG_PTR dwhContext; 257 HRESULT ddrval; 258} D3DHAL_CONTEXTDESTROYDATA; 259 260typedef struct _D3DHAL_CONTEXTDESTROYALLDATA { 261 DWORD dwPID; 262 HRESULT ddrval; 263} D3DHAL_CONTEXTDESTROYALLDATA; 264 265typedef struct _D3DHAL_SCENECAPTUREDATA { 266 ULONG_PTR dwhContext; 267 DWORD dwFlag; 268 HRESULT ddrval; 269} D3DHAL_SCENECAPTUREDATA; 270 271#define D3DHAL_SCENE_CAPTURE_START 0x00000000 272#define D3DHAL_SCENE_CAPTURE_END 0x00000001 273 274typedef struct _D3DHAL_SETRENDERTARGETDATA { 275 ULONG_PTR dwhContext; 276 _ANONYMOUS_UNION union { 277 LPDIRECTDRAWSURFACE lpDDS; 278 LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl; 279 } DUMMYUNIONNAME1; 280 _ANONYMOUS_UNION union { 281 LPDIRECTDRAWSURFACE lpDDSZ; 282 LPDDRAWI_DDRAWSURFACE_LCL lpDDSZLcl; 283 } DUMMYUNIONNAME2; 284 HRESULT ddrval; 285} D3DHAL_SETRENDERTARGETDATA; 286 287typedef struct _D3DHAL_DRAWPRIMITIVES2DATA { 288 ULONG_PTR dwhContext; 289 DWORD dwFlags; 290 DWORD dwVertexType; 291 LPDDRAWI_DDRAWSURFACE_LCL lpDDCommands; 292 DWORD dwCommandOffset; 293 DWORD dwCommandLength; 294 _ANONYMOUS_UNION union { 295 LPDDRAWI_DDRAWSURFACE_LCL lpDDVertex; 296 LPVOID lpVertices; 297 } DUMMYUNIONNAME1; 298 DWORD dwVertexOffset; 299 DWORD dwVertexLength; 300 DWORD dwReqVertexBufSize; 301 DWORD dwReqCommandBufSize; 302 LPDWORD lpdwRStates; 303 _ANONYMOUS_UNION union { 304 DWORD dwVertexSize; 305 HRESULT ddrval; 306 } DUMMYUNIONNAME2; 307 DWORD dwErrorOffset; 308} D3DHAL_DRAWPRIMITIVES2DATA; 309 310#define D3DHALDP2_USERMEMVERTICES 0x00000001 311#define D3DHALDP2_EXECUTEBUFFER 0x00000002 312#define D3DHALDP2_SWAPVERTEXBUFFER 0x00000004 313#define D3DHALDP2_SWAPCOMMANDBUFFER 0x00000008 314#define D3DHALDP2_REQVERTEXBUFSIZE 0x00000010 315#define D3DHALDP2_REQCOMMANDBUFSIZE 0x00000020 316#define D3DHALDP2_VIDMEMVERTEXBUF 0x00000040 317#define D3DHALDP2_VIDMEMCOMMANDBUF 0x00000080 318 319/***************************************************************************** 320 * DrawPrimitives2 command structures 321 */ 322typedef struct _D3DHAL_DP2COMMAND { 323 BYTE bCommand; 324 BYTE bReserved; 325 _ANONYMOUS_UNION union { 326 WORD wPrimitiveCount; 327 WORD wStateCount; 328 } DUMMYUNIONNAME; 329} D3DHAL_DP2COMMAND,*LPD3DHAL_DP2COMMAND; 330 331typedef enum _D3DHAL_DP2OPERATION { 332 D3DDP2OP_POINTS = 1, 333 D3DDP2OP_INDEXEDLINELIST = 2, 334 D3DDP2OP_INDEXEDTRIANGLELIST = 3, 335 D3DDP2OP_RENDERSTATE = 8, 336 D3DDP2OP_LINELIST = 15, 337 D3DDP2OP_LINESTRIP = 16, 338 D3DDP2OP_INDEXEDLINESTRIP = 17, 339 D3DDP2OP_TRIANGLELIST = 18, 340 D3DDP2OP_TRIANGLESTRIP = 19, 341 D3DDP2OP_INDEXEDTRIANGLESTRIP = 20, 342 D3DDP2OP_TRIANGLEFAN = 21, 343 D3DDP2OP_INDEXEDTRIANGLEFAN = 22, 344 D3DDP2OP_TRIANGLEFAN_IMM = 23, 345 D3DDP2OP_LINELIST_IMM = 24, 346 D3DDP2OP_TEXTURESTAGESTATE = 25, 347 D3DDP2OP_INDEXEDTRIANGLELIST2 = 26, 348 D3DDP2OP_INDEXEDLINELIST2 = 27, 349 D3DDP2OP_VIEWPORTINFO = 28, 350 D3DDP2OP_WINFO = 29, 351 /* pre-DirectX 7 interfaces */ 352 D3DDP2OP_SETPALETTE = 30, 353 D3DDP2OP_UPDATEPALETTE = 31, 354 /* DirectX 7 interfaces */ 355 D3DDP2OP_ZRANGE = 32, 356 D3DDP2OP_SETMATERIAL = 33, 357 D3DDP2OP_SETLIGHT = 34, 358 D3DDP2OP_CREATELIGHT = 35, 359 D3DDP2OP_SETTRANSFORM = 36, 360 D3DDP2OP_TEXBLT = 38, 361 D3DDP2OP_STATESET = 39, 362 D3DDP2OP_SETPRIORITY = 40, 363 /* all interfaces */ 364 D3DDP2OP_SETRENDERTARGET = 41, 365 D3DDP2OP_CLEAR = 42, 366 /* DirectX 7 interfaces */ 367 D3DDP2OP_SETTEXLOD = 43, 368 D3DPP2OP_SETCLIPPLANE = 44, 369#if(DIRECT3D_VERSION >= 0x0800) 370 D3DDP2OP_CREATEVERTEXSHADER = 45, 371 D3DDP2OP_DELETEVERTEXSHADER = 46, 372 D3DDP2OP_SETVERTEXSHADER = 47, 373 D3DDP2OP_SETVERTEXSHADERCONST = 48, 374 D3DDP2OP_SETSTREAMSOURCE = 49, 375 D3DDP2OP_SETSTREAMSOURCEUM = 50, 376 D3DDP2OP_SETINDICES = 51, 377 D3DDP2OP_DRAWPRIMITIVE = 52, 378 D3DDP2OP_DRAWINDEXEDPRIMITIVE = 53, 379 D3DDP2OP_CREATEPIXELSHADER = 54, 380 D3DDP2OP_DELETEPIXELSHADER = 55, 381 D3DDP2OP_SETPIXELSHADER = 56, 382 D3DDP2OP_SETPIXELSHADERCONST = 57, 383 D3DDP2OP_CLIPPEDTRIANGLEFAN = 58, 384 D3DDP2OP_DRAWPRIMITIVE2 = 59, 385 D3DDP2OP_DRAWINDEXEDPRIMITIVE2= 60, 386 D3DDP2OP_DRAWRECTPATCH = 61, 387 D3DDP2OP_DRAWTRIPATCH = 62, 388 D3DDP2OP_VOLUMEBLT = 63, 389 D3DDP2OP_BUFFERBLT = 64, 390 D3DDP2OP_MULTIPLYTRANSFORM = 65, 391 D3DDP2OP_ADDDIRTYRECT = 66, 392 D3DDP2OP_ADDDIRTYBOX = 67, 393#endif 394#if(DIRECT3D_VERSION >= 0x0900) 395 D3DDP2OP_CREATEVERTEXSHADERDECL = 71, 396 D3DDP2OP_DELETEVERTEXSHADERDECL = 72, 397 D3DDP2OP_SETVERTEXSHADERDECL = 73, 398 D3DDP2OP_CREATEVERTEXSHADERFUNC = 74, 399 D3DDP2OP_DELETEVERTEXSHADERFUNC = 75, 400 D3DDP2OP_SETVERTEXSHADERFUNC = 76, 401 D3DDP2OP_SETVERTEXSHADERCONSTI= 77, 402 D3DDP2OP_SETSCISSORRECT = 79, 403 D3DDP2OP_SETSTREAMSOURCE2 = 80, 404 D3DDP2OP_BLT = 81, 405 D3DDP2OP_COLORFILL = 82, 406 D3DDP2OP_SETVERTEXSHADERCONSTB= 83, 407 D3DDP2OP_CREATEQUERY = 84, 408 D3DDP2OP_SETRENDERTARGET2 = 85, 409 D3DDP2OP_SETDEPTHSTENCIL = 86, 410 D3DDP2OP_RESPONSECONTINUE = 87, 411 D3DDP2OP_RESPONSEQUERY = 88, 412 D3DDP2OP_GENERATEMIPSUBLEVELS = 89, 413 D3DDP2OP_DELETEQUERY = 90, 414 D3DDP2OP_ISSUEQUERY = 91, 415 D3DDP2OP_SETPIXELSHADERCONSTI = 93, 416 D3DDP2OP_SETPIXELSHADERCONSTB = 94, 417 D3DDP2OP_SETSTREAMSOURCEFREQ = 95, 418 D3DDP2OP_SURFACEBLT = 96 419#endif 420} D3DHAL_DP2OPERATION; 421 422/* point primitives */ 423 424typedef struct _D3DHAL_POINTS { 425 WORD wCount; 426 WORD wVStart; 427} D3DHAL_DP2POINTS,*LPD3DHAL_DP2POINTS; 428 429/* line primitives */ 430 431typedef struct _D3DHAL_DP2STARTVERTEX { 432 WORD wVStart; 433} D3DHAL_DP2STARTVERTEX,*LPD3DHAL_DP2STARTVERTEX; 434 435typedef struct _D3DHAL_DP2LINELIST { 436 WORD wVStart; 437} D3DHAL_DP2LINELIST,*LPD3DHAL_DP2LINELIST; 438 439typedef struct _D3DHAL_DP2INDEXEDLINELIST { 440 WORD wV1; 441 WORD wV2; 442} D3DHAL_DP2INDEXEDLINELIST,*LPD3DHAL_DP2INDEXEDLINELIST; 443 444typedef struct _D3DHAL_DP2LINESTRIP { 445 WORD wVStart; 446} D3DHAL_DP2LINESTRIP,*LPD3DHAL_DP2LINESTRIP; 447 448typedef struct _D3DHAL_DP2INDEXEDLINESTRIP { 449 WORD wV[2]; 450} D3DHAL_DP2INDEXEDLINESTRIP,*LPD3DHAL_DP2INDEXEDLINESTRIP; 451 452/* triangle primitives */ 453 454typedef struct _D3DHAL_DP2TRIANGLELIST { 455 WORD wVStart; 456} D3DHAL_DP2TRIANGLELIST,*LPD3DHAL_DP2TRIANGLELIST; 457 458typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST { 459 WORD wV1; 460 WORD wV2; 461 WORD wV3; 462 WORD wFlags; 463} D3DHAL_DP2INDEXEDTRIANGLELIST,*LPD3DHAL_DP2INDEXEDTRIANGLELIST; 464 465typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST2 { 466 WORD wV1; 467 WORD wV2; 468 WORD wV3; 469} D3DHAL_DP2INDEXEDTRIANGLELIST2,*LPD3DHAL_DP2INDEXEDTRIANGLELIST2; 470 471typedef struct _D3DHAL_DP2TRIANGLESTRIP { 472 WORD wVStart; 473} D3DHAL_DP2TRIANGLESTRIP,*LPD3DHAL_DP2TRIANGLESTRIP; 474 475typedef struct _D3DHAL_DP2INDEXEDTRIANGLESTRIP { 476 WORD wV[3]; 477} D3DHAL_DP2INDEXEDTRIANGLESTRIP,*LPD3DHAL_DP2INDEXEDTRIANGLESTRIP; 478 479typedef struct _D3DHAL_DP2TRIANGLEFAN { 480 WORD wVStart; 481} D3DHAL_DP2TRIANGLEFAN,*LPD3DHAL_DP2TRIANGLEFAN; 482 483typedef struct _D3DHAL_DP2INDEXEDTRIANGLEFAN { 484 WORD wV[3]; 485} D3DHAL_DP2INDEXEDTRIANGLEFAN,*LPD3DHAL_DP2INDEXEDTRIANGLEFAN; 486 487typedef struct _D3DHAL_DP2TRIANGLEFAN_IMM { 488 DWORD dwEdgeFlags; 489} D3DHAL_DP2TRIANGLEFAN_IMM,*LPD3DHAL_DP2TRIANGLEFAN_IMM; 490 491/* render states */ 492typedef struct _D3DHAL_DP2RENDERSTATE { 493 D3DRENDERSTATETYPE RenderState; 494 _ANONYMOUS_UNION union { 495 D3DVALUE dvState; 496 DWORD dwState; 497 } DUMMYUNIONNAME; 498} D3DHAL_DP2RENDERSTATE,*LPD3DHAL_DP2RENDERSTATE; 499 500typedef struct _D3DHAL_DP2TEXTURESTAGESTATE { 501 WORD wStage; 502 WORD TSState; 503 DWORD dwValue; 504} D3DHAL_DP2TEXTURESTAGESTATE,*LPD3DHAL_DP2TEXTURESTAGESTATE; 505 506#define D3DTSS_TEXTUREMAP 0 507 508typedef struct _D3DHAL_DP2VIEWPORTINFO { 509 DWORD dwX; 510 DWORD dwY; 511 DWORD dwWidth; 512 DWORD dwHeight; 513} D3DHAL_DP2VIEWPORTINFO,*LPD3DHAL_DP2VIEWPORTINFO; 514 515typedef struct _D3DHAL_DP2WINFO { 516 D3DVALUE dwWNear; 517 D3DVALUE dwWFar; 518} D3DHAL_DP2WINFO,*LPD3DHAL_DP2WINFO; 519 520typedef struct _D3DHAL_DP2SETPALETTE { 521 DWORD dwPaletteHandle; 522 DWORD dwPaletteFlags; 523 DWORD dwSurfaceHandle; 524} D3DHAL_DP2SETPALETTE,*LPD3DHAL_DP2SETPALETTE; 525 526typedef struct _D3DHAL_DP2UPDATEPALETTE { 527 DWORD dwPaletteHandle; 528 WORD wStartIndex; 529 WORD wNumEntries; 530} D3DHAL_DP2UPDATEPALETTE,*LPD3DHAL_DP2UPDATEPALETTE; 531 532typedef struct _D3DHAL_DP2ZRANGE { 533 D3DVALUE dvMinZ; 534 D3DVALUE dvMaxZ; 535} D3DHAL_DP2ZRANGE,*LPD3DHAL_DP2ZRANGE; 536 537typedef D3DMATERIAL7 D3DHAL_DP2SETMATERIAL,*LPD3DHAL_DP2SETMATERIAL; 538 539typedef struct _D3DHAL_DP2SETLIGHT { 540 DWORD dwIndex; 541 DWORD dwDataType; 542} D3DHAL_DP2SETLIGHT,*LPD3DHAL_DP2SETLIGHT; 543 544#define D3DHAL_SETLIGHT_ENABLE 0 545#define D3DHAL_SETLIGHT_DISABLE 1 546#define D3DHAL_SETLIGHT_DATA 2 547 548typedef struct _D3DHAL_DP2CREATELIGHT { 549 DWORD dwIndex; 550} D3DHAL_DP2CREATELIGHT,*LPD3DHAL_DP2CREATELIGHT; 551 552typedef struct _D3DHAL_DP2SETTRANSFORM { 553 D3DTRANSFORMSTATETYPE xfrmType; 554 D3DMATRIX matrix; 555} D3DHAL_DP2SETTRANSFORM,*LPD3DHAL_DP2SETTRANSFORM; 556 557typedef struct _D3DHAL_DP2TEXBLT { 558 DWORD dwDDDestSurface; 559 DWORD dwDDSrcSurface; 560 POINT pDest; 561 RECTL rSrc; 562 DWORD dwFlags; 563} D3DHAL_DP2TEXBLT,*LPD3DHAL_DP2TEXBLT; 564 565typedef struct _D3DHAL_DP2STATESET { 566 DWORD dwOperation; 567 DWORD dwParam; 568 D3DSTATEBLOCKTYPE sbType; 569} D3DHAL_DP2STATESET,*LPD3DHAL_DP2STATESET; 570 571#define D3DHAL_STATESETBEGIN 0 572#define D3DHAL_STATESETEND 1 573#define D3DHAL_STATESETDELETE 2 574#define D3DHAL_STATESETEXECUTE 3 575#define D3DHAL_STATESETCAPTURE 4 576 577typedef struct _D3DHAL_DP2SETPRIORITY { 578 DWORD dwDDSurface; 579 DWORD dwPriority; 580} D3DHAL_DP2SETPRIORITY,*LPD3DHAL_DP2SETPRIORITY; 581 582typedef struct _D3DHAL_DP2SETRENDERTARGET { 583 DWORD hRenderTarget; 584 DWORD hZBuffer; 585} D3DHAL_DP2SETRENDERTARGET,*LPD3DHAL_DP2SETRENDERTARGET; 586 587typedef struct _D3DHAL_DP2CLEAR { 588 DWORD dwFlags; 589 DWORD dwFillColor; 590 D3DVALUE dvFillDepth; 591 DWORD dwFillStencil; 592 RECT Rects[1]; 593} D3DHAL_DP2CLEAR,*LPD3DHAL_DP2CLEAR; 594 595typedef struct _D3DHAL_DP2SETTEXLOD { 596 DWORD dwDDSurface; 597 DWORD dwLOD; 598} D3DHAL_DP2SETTEXLOD,*LPD3DHAL_DP2SETTEXLOD; 599 600 601#if (DIRECT3D_VERSION >= 0x0900) 602 603#define DX9_DDI_VERSION 4 604 605#ifndef D3DVTXPCAPS_NO_VSDT_UBYTE4 606#define D3DVTXPCAPS_NO_VSDT_UBYTE4 0x00000080 607#endif 608 609#ifndef D3DPMISCCAPS_LINEPATTERNREP 610#define D3DPMISCCAPS_LINEPATTERNREP 0x00000004 611#endif 612 613#define D3DDEVCAPS_HWVERTEXBUFFER 0x02000000 614#define D3DDEVCAPS_HWINDEXBUFFER 0x04000000 615#define D3DDEVCAPS_SUBVOLUMELOCK 0x08000000 616 617#ifndef D3DPMISCCAPS_FOGINFVF 618#define D3DPMISCCAPS_FOGINFVF 0x00002000 619#endif 620 621#ifndef D3DFVF_FOG 622#define D3DFVF_FOG 0x00002000 623#endif 624 625typedef struct _DD_GETDRIVERINFO2DATA { 626 DWORD dwReserved; 627 DWORD dwMagic; 628 DWORD dwType; 629 DWORD dwExpectedSize; 630} DD_GETDRIVERINFO2DATA; 631 632/** 633 * A driver must check DD_GETDRIVERINFO2DATA.dwHeight for 634 * D3DGDI2_MAGIC to see if the passed GUID is GUID_GetDriverInfo2 635 * or a GUID_DDStereoMode. 636 */ 637#define GUID_GetDriverInfo2 GUID_DDStereoMode 638 639/** 640 * Magic number used in DD_GETDRIVERINFO2DATA.dwHeight when 641 * GUID_GetDriverInfo2/GUID_DDStereoMode is specified in a 642 * GetDriverInfo call. 643 */ 644#define D3DGDI2_MAGIC 0xFFFFFFFF 645 646#define D3DGDI2_TYPE_GETD3DCAPS8 0x00000001 647#define D3DGDI2_TYPE_GETFORMATCOUNT 0x00000002 648#define D3DGDI2_TYPE_GETFORMAT 0x00000003 649#define D3DGDI2_TYPE_DXVERSION 0x00000004 /* Make driver aware of currently used DirectX version */ 650#define D3DGDI2_TYPE_GETD3DCAPS9 0x00000010 651#define D3DGDI2_TYPE_GETEXTENDEDMODECOUNT 0x00000011 652#define D3DGDI2_TYPE_GETEXTENDEDMODE 0x00000012 653#define D3DGDI2_TYPE_GETADAPTERGROUP 0x00000013 654#define D3DGDI2_TYPE_GETMULTISAMPLEQUALITYLEVELS 0x00000016 655#define D3DGDI2_TYPE_DEFERRED_AGP_AWARE 0x00000018 656#define D3DGDI2_TYPE_FREE_DEFERRED_AGP 0x00000019 657#define D3DGDI2_TYPE_DEFER_AGP_FREES 0x00000020 658#define D3DGDI2_TYPE_GETD3DQUERYCOUNT 0x00000021 659#define D3DGDI2_TYPE_GETD3DQUERY 0x00000022 660#define D3DGDI2_TYPE_GETDDIVERSION 0x00000023 /* Returns DX9_DDI_VERSION, used to check which DDK version the driver is compiled against */ 661 662typedef struct _D3DCAPS8 { 663 D3DDEVTYPE DeviceType; 664 UINT AdapterOrdinal; 665 DWORD Caps; 666 DWORD Caps2; 667 DWORD Caps3; 668 DWORD PresentationIntervals; 669 DWORD CursorCaps; 670 DWORD DevCaps; 671 DWORD PrimitiveMiscCaps; 672 DWORD RasterCaps; 673 DWORD ZCmpCaps; 674 DWORD SrcBlendCaps; 675 DWORD DestBlendCaps; 676 DWORD AlphaCmpCaps; 677 DWORD ShadeCaps; 678 DWORD TextureCaps; 679 DWORD TextureFilterCaps; 680 DWORD CubeTextureFilterCaps; 681 DWORD VolumeTextureFilterCaps; 682 DWORD TextureAddressCaps; 683 DWORD VolumeTextureAddressCaps; 684 DWORD LineCaps; 685 DWORD MaxTextureWidth; 686 DWORD MaxTextureHeight; 687 DWORD MaxVolumeExtent; 688 DWORD MaxTextureRepeat; 689 DWORD MaxTextureAspectRatio; 690 DWORD MaxAnisotropy; 691 float MaxVertexW; 692 float GuardBandLeft; 693 float GuardBandTop; 694 float GuardBandRight; 695 float GuardBandBottom; 696 float ExtentsAdjust; 697 DWORD StencilCaps; 698 DWORD FVFCaps; 699 DWORD TextureOpCaps; 700 DWORD MaxTextureBlendStages; 701 DWORD MaxSimultaneousTextures; 702 DWORD VertexProcessingCaps; 703 DWORD MaxActiveLights; 704 DWORD MaxUserClipPlanes; 705 DWORD MaxVertexBlendMatrices; 706 DWORD MaxVertexBlendMatrixIndex; 707 float MaxPointSize; 708 DWORD MaxPrimitiveCount; 709 DWORD MaxVertexIndex; 710 DWORD MaxStreams; 711 DWORD MaxStreamStride; 712 DWORD VertexShaderVersion; 713 DWORD MaxVertexShaderConst; 714 DWORD PixelShaderVersion; 715 float MaxPixelShaderValue; 716} D3DCAPS8; 717 718typedef struct _DD_GETFORMATCOUNTDATA { 719 DD_GETDRIVERINFO2DATA gdi2; 720 DWORD dwFormatCount; 721 DWORD dwReserved; 722} DD_GETFORMATCOUNTDATA; 723 724typedef struct _DD_GETFORMATDATA { 725 DD_GETDRIVERINFO2DATA gdi2; 726 DWORD dwFormatIndex; 727 DDPIXELFORMAT format; 728} DD_GETFORMATDATA; 729 730typedef struct _DD_DXVERSION { 731 DD_GETDRIVERINFO2DATA gdi2; 732 DWORD dwDXVersion; 733 DWORD dwReserved; 734} DD_DXVERSION; 735 736typedef struct _DD_DEFERRED_AGP_AWARE_DATA { 737 DD_GETDRIVERINFO2DATA gdi2; 738} DD_DEFERRED_AGP_AWARE_DATA; 739 740typedef struct _DD_FREE_DEFERRED_AGP_DATA { 741 DD_GETDRIVERINFO2DATA gdi2; 742 DWORD dwProcessId; 743} DD_FREE_DEFERRED_AGP_DATA; 744 745typedef struct _DD_GETEXTENDEDMODECOUNTDATA { 746 DD_GETDRIVERINFO2DATA gdi2; 747 DWORD dwModeCount; 748 DWORD dwReserved; 749} DD_GETEXTENDEDMODECOUNTDATA; 750 751typedef struct _DD_GETEXTENDEDMODEDATA { 752 DD_GETDRIVERINFO2DATA gdi2; 753 DWORD dwModeIndex; 754 D3DDISPLAYMODE mode; 755} DD_GETEXTENDEDMODEDATA; 756 757typedef struct _DD_GETADAPTERGROUPDATA { 758 DD_GETDRIVERINFO2DATA gdi2; 759 ULONG_PTR ulUniqueAdapterGroupId; 760 DWORD dwReserved1; 761 DWORD dwReserved2; 762} DD_GETADAPTERGROUPDATA; 763 764typedef struct _DD_MULTISAMPLEQUALITYLEVELSDATA { 765 DD_GETDRIVERINFO2DATA gdi2; 766 D3DFORMAT Format; 767 BOOL bFlip : 1; 768 D3DMULTISAMPLE_TYPE MSType : 31; 769 DWORD QualityLevels; 770} DD_MULTISAMPLEQUALITYLEVELSDATA; 771 772typedef struct _DD_GETD3DQUERYCOUNTDATA { 773 DD_GETDRIVERINFO2DATA gdi2; 774 DWORD dwNumQueries; 775} DD_GETD3DQUERYCOUNTDATA; 776 777typedef struct _DD_GETD3DQUERYDATA { 778 DD_GETDRIVERINFO2DATA gdi2; 779 __GNU_EXTENSION union { 780 DWORD dwQueryIndex; 781 D3DQUERYTYPE QueryType; 782 }; 783} DD_GETD3DQUERYDATA; 784 785typedef struct _DD_GETDDIVERSIONDATA { 786 DD_GETDRIVERINFO2DATA gdi2; 787 DWORD dwDXVersion; 788 DWORD dwDDIVersion; 789} DD_GETDDIVERSIONDATA; 790 791#endif /* (DIRECT3D_VERSION >= 0x0900) */ 792 793#ifdef __cplusplus 794} /* extern "C" */ 795#endif 796 797#endif /* _D3DHAL_H_ */ 798