d3dhal.h 23 KB

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