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 26 extern "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 39 typedef struct _DDRAWI_DIRECTDRAW_GBL FAR *LPDDRAWI_DIRECTDRAW_GBL; 40 typedef struct _DDRAWI_DIRECTDRAW_LCL FAR *LPDDRAWI_DIRECTDRAW_LCL; 41 #define DDRAWI_DIRECTDRAW_DEFINED 42 #endif 43 44 #ifndef DDRAWI_DDRAWSURFACE_DEFINED 45 typedef 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 */ 54 typedef 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 73 typedef 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 83 typedef D3DHAL_GLOBALDRIVERDATA *LPD3DHAL_GLOBALDRIVERDATA; 84 #define D3DHAL_GLOBALDRIVERDATA_DEFINED 85 #endif 86 87 typedef 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 */ 123 typedef struct _D3DHAL_CONTEXTCREATEDATA *LPD3DHAL_CONTEXTCREATEDATA; 124 typedef struct _D3DHAL_CONTEXTDESTROYDATA *LPD3DHAL_CONTEXTDESTROYDATA; 125 typedef struct _D3DHAL_CONTEXTDESTROYALLDATA *LPD3DHAL_CONTEXTDESTROYALLDATA; 126 typedef struct _D3DHAL_SCENECAPTUREDATA *LPD3DHAL_SCENECAPTUREDATA; 127 typedef struct _D3DHAL_RENDERSTATEDATA *LPD3DHAL_RENDERSTATEDATA; 128 typedef struct _D3DHAL_RENDERPRIMITIVEDATA *LPD3DHAL_RENDERPRIMITIVEDATA; 129 typedef struct _D3DHAL_TEXTURECREATEDATA *LPD3DHAL_TEXTURECREATEDATA; 130 typedef struct _D3DHAL_TEXTUREDESTROYDATA *LPD3DHAL_TEXTUREDESTROYDATA; 131 typedef struct _D3DHAL_TEXTURESWAPDATA *LPD3DHAL_TEXTURESWAPDATA; 132 typedef struct _D3DHAL_TEXTUREGETSURFDATA *LPD3DHAL_TEXTUREGETSURFDATA; 133 typedef struct _D3DHAL_GETSTATEDATA *LPD3DHAL_GETSTATEDATA; 134 135 typedef DWORD (PASCAL *LPD3DHAL_CONTEXTCREATECB) (LPD3DHAL_CONTEXTCREATEDATA); 136 typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYCB) (LPD3DHAL_CONTEXTDESTROYDATA); 137 typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYALLCB)(LPD3DHAL_CONTEXTDESTROYALLDATA); 138 typedef DWORD (PASCAL *LPD3DHAL_SCENECAPTURECB) (LPD3DHAL_SCENECAPTUREDATA); 139 typedef DWORD (PASCAL *LPD3DHAL_RENDERSTATECB) (LPD3DHAL_RENDERSTATEDATA); 140 typedef DWORD (PASCAL *LPD3DHAL_RENDERPRIMITIVECB) (LPD3DHAL_RENDERPRIMITIVEDATA); 141 typedef DWORD (PASCAL *LPD3DHAL_TEXTURECREATECB) (LPD3DHAL_TEXTURECREATEDATA); 142 typedef DWORD (PASCAL *LPD3DHAL_TEXTUREDESTROYCB) (LPD3DHAL_TEXTUREDESTROYDATA); 143 typedef DWORD (PASCAL *LPD3DHAL_TEXTURESWAPCB) (LPD3DHAL_TEXTURESWAPDATA); 144 typedef DWORD (PASCAL *LPD3DHAL_TEXTUREGETSURFCB) (LPD3DHAL_TEXTUREGETSURFDATA); 145 typedef DWORD (PASCAL *LPD3DHAL_GETSTATECB) (LPD3DHAL_GETSTATEDATA); 146 147 typedef 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 188 typedef D3DHAL_CALLBACKS *LPD3DHAL_CALLBACKS; 189 #define D3DHAL_CALLBACKS_DEFINED 190 #endif 191 192 typedef struct _D3DHAL_SETRENDERTARGETDATA *LPD3DHAL_SETRENDERTARGETDATA; 193 typedef struct _D3DHAL_CLEARDATA *LPD3DHAL_CLEARDATA; 194 typedef struct _D3DHAL_DRAWONEPRIMITIVEDATA *LPD3DHAL_DRAWONEPRIMITIVEDATA; 195 typedef struct _D3DHAL_DRAWONEINDEXEDPRIMITIVEDATA *LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA; 196 typedef struct _D3DHAL_DRAWPRIMITIVESDATA *LPD3DHAL_DRAWPRIMITIVESDATA; 197 198 typedef DWORD (PASCAL *LPD3DHAL_SETRENDERTARGETCB) (LPD3DHAL_SETRENDERTARGETDATA); 199 typedef DWORD (PASCAL *LPD3DHAL_CLEARCB) (LPD3DHAL_CLEARDATA); 200 typedef DWORD (PASCAL *LPD3DHAL_DRAWONEPRIMITIVECB) (LPD3DHAL_DRAWONEPRIMITIVEDATA); 201 typedef DWORD (PASCAL *LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB)(LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA); 202 typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVESCB) (LPD3DHAL_DRAWPRIMITIVESDATA); 203 204 typedef 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 214 typedef struct _D3DHAL_CLEAR2DATA *LPD3DHAL_CLEAR2DATA; 215 typedef struct _D3DHAL_VALIDATETEXTURESTAGESTATEDATA *LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA; 216 typedef struct _D3DHAL_DRAWPRIMITIVES2DATA *LPD3DHAL_DRAWPRIMITIVES2DATA; 217 218 typedef DWORD (PASCAL *LPD3DHAL_CLEAR2CB) (LPD3DHAL_CLEAR2DATA); 219 typedef DWORD (PASCAL *LPD3DHAL_VALIDATETEXTURESTAGESTATECB)(LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA); 220 typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVES2CB) (LPD3DHAL_DRAWPRIMITIVES2DATA); 221 222 typedef 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 */ 234 typedef 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 255 typedef struct _D3DHAL_CONTEXTDESTROYDATA { 256 ULONG_PTR dwhContext; 257 HRESULT ddrval; 258 } D3DHAL_CONTEXTDESTROYDATA; 259 260 typedef struct _D3DHAL_CONTEXTDESTROYALLDATA { 261 DWORD dwPID; 262 HRESULT ddrval; 263 } D3DHAL_CONTEXTDESTROYALLDATA; 264 265 typedef 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 274 typedef 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 287 typedef 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 */ 322 typedef 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 331 typedef 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 424 typedef struct _D3DHAL_POINTS { 425 WORD wCount; 426 WORD wVStart; 427 } D3DHAL_DP2POINTS,*LPD3DHAL_DP2POINTS; 428 429 /* line primitives */ 430 431 typedef struct _D3DHAL_DP2STARTVERTEX { 432 WORD wVStart; 433 } D3DHAL_DP2STARTVERTEX,*LPD3DHAL_DP2STARTVERTEX; 434 435 typedef struct _D3DHAL_DP2LINELIST { 436 WORD wVStart; 437 } D3DHAL_DP2LINELIST,*LPD3DHAL_DP2LINELIST; 438 439 typedef struct _D3DHAL_DP2INDEXEDLINELIST { 440 WORD wV1; 441 WORD wV2; 442 } D3DHAL_DP2INDEXEDLINELIST,*LPD3DHAL_DP2INDEXEDLINELIST; 443 444 typedef struct _D3DHAL_DP2LINESTRIP { 445 WORD wVStart; 446 } D3DHAL_DP2LINESTRIP,*LPD3DHAL_DP2LINESTRIP; 447 448 typedef struct _D3DHAL_DP2INDEXEDLINESTRIP { 449 WORD wV[2]; 450 } D3DHAL_DP2INDEXEDLINESTRIP,*LPD3DHAL_DP2INDEXEDLINESTRIP; 451 452 /* triangle primitives */ 453 454 typedef struct _D3DHAL_DP2TRIANGLELIST { 455 WORD wVStart; 456 } D3DHAL_DP2TRIANGLELIST,*LPD3DHAL_DP2TRIANGLELIST; 457 458 typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST { 459 WORD wV1; 460 WORD wV2; 461 WORD wV3; 462 WORD wFlags; 463 } D3DHAL_DP2INDEXEDTRIANGLELIST,*LPD3DHAL_DP2INDEXEDTRIANGLELIST; 464 465 typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST2 { 466 WORD wV1; 467 WORD wV2; 468 WORD wV3; 469 } D3DHAL_DP2INDEXEDTRIANGLELIST2,*LPD3DHAL_DP2INDEXEDTRIANGLELIST2; 470 471 typedef struct _D3DHAL_DP2TRIANGLESTRIP { 472 WORD wVStart; 473 } D3DHAL_DP2TRIANGLESTRIP,*LPD3DHAL_DP2TRIANGLESTRIP; 474 475 typedef struct _D3DHAL_DP2INDEXEDTRIANGLESTRIP { 476 WORD wV[3]; 477 } D3DHAL_DP2INDEXEDTRIANGLESTRIP,*LPD3DHAL_DP2INDEXEDTRIANGLESTRIP; 478 479 typedef struct _D3DHAL_DP2TRIANGLEFAN { 480 WORD wVStart; 481 } D3DHAL_DP2TRIANGLEFAN,*LPD3DHAL_DP2TRIANGLEFAN; 482 483 typedef struct _D3DHAL_DP2INDEXEDTRIANGLEFAN { 484 WORD wV[3]; 485 } D3DHAL_DP2INDEXEDTRIANGLEFAN,*LPD3DHAL_DP2INDEXEDTRIANGLEFAN; 486 487 typedef struct _D3DHAL_DP2TRIANGLEFAN_IMM { 488 DWORD dwEdgeFlags; 489 } D3DHAL_DP2TRIANGLEFAN_IMM,*LPD3DHAL_DP2TRIANGLEFAN_IMM; 490 491 /* render states */ 492 typedef struct _D3DHAL_DP2RENDERSTATE { 493 D3DRENDERSTATETYPE RenderState; 494 _ANONYMOUS_UNION union { 495 D3DVALUE dvState; 496 DWORD dwState; 497 } DUMMYUNIONNAME; 498 } D3DHAL_DP2RENDERSTATE,*LPD3DHAL_DP2RENDERSTATE; 499 500 typedef struct _D3DHAL_DP2TEXTURESTAGESTATE { 501 WORD wStage; 502 WORD TSState; 503 DWORD dwValue; 504 } D3DHAL_DP2TEXTURESTAGESTATE,*LPD3DHAL_DP2TEXTURESTAGESTATE; 505 506 #define D3DTSS_TEXTUREMAP 0 507 508 typedef struct _D3DHAL_DP2VIEWPORTINFO { 509 DWORD dwX; 510 DWORD dwY; 511 DWORD dwWidth; 512 DWORD dwHeight; 513 } D3DHAL_DP2VIEWPORTINFO,*LPD3DHAL_DP2VIEWPORTINFO; 514 515 typedef struct _D3DHAL_DP2WINFO { 516 D3DVALUE dwWNear; 517 D3DVALUE dwWFar; 518 } D3DHAL_DP2WINFO,*LPD3DHAL_DP2WINFO; 519 520 typedef struct _D3DHAL_DP2SETPALETTE { 521 DWORD dwPaletteHandle; 522 DWORD dwPaletteFlags; 523 DWORD dwSurfaceHandle; 524 } D3DHAL_DP2SETPALETTE,*LPD3DHAL_DP2SETPALETTE; 525 526 typedef struct _D3DHAL_DP2UPDATEPALETTE { 527 DWORD dwPaletteHandle; 528 WORD wStartIndex; 529 WORD wNumEntries; 530 } D3DHAL_DP2UPDATEPALETTE,*LPD3DHAL_DP2UPDATEPALETTE; 531 532 typedef struct _D3DHAL_DP2ZRANGE { 533 D3DVALUE dvMinZ; 534 D3DVALUE dvMaxZ; 535 } D3DHAL_DP2ZRANGE,*LPD3DHAL_DP2ZRANGE; 536 537 typedef D3DMATERIAL7 D3DHAL_DP2SETMATERIAL,*LPD3DHAL_DP2SETMATERIAL; 538 539 typedef 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 548 typedef struct _D3DHAL_DP2CREATELIGHT { 549 DWORD dwIndex; 550 } D3DHAL_DP2CREATELIGHT,*LPD3DHAL_DP2CREATELIGHT; 551 552 typedef struct _D3DHAL_DP2SETTRANSFORM { 553 D3DTRANSFORMSTATETYPE xfrmType; 554 D3DMATRIX matrix; 555 } D3DHAL_DP2SETTRANSFORM,*LPD3DHAL_DP2SETTRANSFORM; 556 557 typedef struct _D3DHAL_DP2TEXBLT { 558 DWORD dwDDDestSurface; 559 DWORD dwDDSrcSurface; 560 POINT pDest; 561 RECTL rSrc; 562 DWORD dwFlags; 563 } D3DHAL_DP2TEXBLT,*LPD3DHAL_DP2TEXBLT; 564 565 typedef 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 577 typedef struct _D3DHAL_DP2SETPRIORITY { 578 DWORD dwDDSurface; 579 DWORD dwPriority; 580 } D3DHAL_DP2SETPRIORITY,*LPD3DHAL_DP2SETPRIORITY; 581 582 typedef struct _D3DHAL_DP2SETRENDERTARGET { 583 DWORD hRenderTarget; 584 DWORD hZBuffer; 585 } D3DHAL_DP2SETRENDERTARGET,*LPD3DHAL_DP2SETRENDERTARGET; 586 587 typedef 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 595 typedef 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 625 typedef 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 662 typedef 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 718 typedef struct _DD_GETFORMATCOUNTDATA { 719 DD_GETDRIVERINFO2DATA gdi2; 720 DWORD dwFormatCount; 721 DWORD dwReserved; 722 } DD_GETFORMATCOUNTDATA; 723 724 typedef struct _DD_GETFORMATDATA { 725 DD_GETDRIVERINFO2DATA gdi2; 726 DWORD dwFormatIndex; 727 DDPIXELFORMAT format; 728 } DD_GETFORMATDATA; 729 730 typedef struct _DD_DXVERSION { 731 DD_GETDRIVERINFO2DATA gdi2; 732 DWORD dwDXVersion; 733 DWORD dwReserved; 734 } DD_DXVERSION; 735 736 typedef struct _DD_DEFERRED_AGP_AWARE_DATA { 737 DD_GETDRIVERINFO2DATA gdi2; 738 } DD_DEFERRED_AGP_AWARE_DATA; 739 740 typedef struct _DD_FREE_DEFERRED_AGP_DATA { 741 DD_GETDRIVERINFO2DATA gdi2; 742 DWORD dwProcessId; 743 } DD_FREE_DEFERRED_AGP_DATA; 744 745 typedef struct _DD_GETEXTENDEDMODECOUNTDATA { 746 DD_GETDRIVERINFO2DATA gdi2; 747 DWORD dwModeCount; 748 DWORD dwReserved; 749 } DD_GETEXTENDEDMODECOUNTDATA; 750 751 typedef struct _DD_GETEXTENDEDMODEDATA { 752 DD_GETDRIVERINFO2DATA gdi2; 753 DWORD dwModeIndex; 754 D3DDISPLAYMODE mode; 755 } DD_GETEXTENDEDMODEDATA; 756 757 typedef struct _DD_GETADAPTERGROUPDATA { 758 DD_GETDRIVERINFO2DATA gdi2; 759 ULONG_PTR ulUniqueAdapterGroupId; 760 DWORD dwReserved1; 761 DWORD dwReserved2; 762 } DD_GETADAPTERGROUPDATA; 763 764 typedef 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 772 typedef struct _DD_GETD3DQUERYCOUNTDATA { 773 DD_GETDRIVERINFO2DATA gdi2; 774 DWORD dwNumQueries; 775 } DD_GETD3DQUERYCOUNTDATA; 776 777 typedef struct _DD_GETD3DQUERYDATA { 778 DD_GETDRIVERINFO2DATA gdi2; 779 __GNU_EXTENSION union { 780 DWORD dwQueryIndex; 781 D3DQUERYTYPE QueryType; 782 }; 783 } DD_GETD3DQUERYDATA; 784 785 typedef 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