d3dhal.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589
  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 St, Fifth Floor, Boston, MA 02110-1301, USA
  20. */
  21. #ifndef __WINE_D3DHAL_H
  22. #define __WINE_D3DHAL_H
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26. #include <d3d.h>
  27. /*****************************************************************************
  28. * device info structures
  29. */
  30. typedef struct _D3DDeviceDesc_V1 {
  31. DWORD dwSize;
  32. DWORD dwFlags;
  33. D3DCOLORMODEL dcmColorModel;
  34. DWORD dwDevCaps;
  35. D3DTRANSFORMCAPS dtcTransformCaps;
  36. WINBOOL bClipping;
  37. D3DLIGHTINGCAPS dlcLightingCaps;
  38. D3DPRIMCAPS dpcLineCaps;
  39. D3DPRIMCAPS dpcTriCaps;
  40. DWORD dwDeviceRenderBitDepth;
  41. DWORD dwDeviceZBufferBitDepth;
  42. DWORD dwMaxBufferSize;
  43. DWORD dwMaxVertexCount;
  44. } D3DDEVICEDESC_V1,*LPD3DDEVICEDESC_V1;
  45. typedef struct _D3DDeviceDesc_V2
  46. {
  47. DWORD dwSize;
  48. DWORD dwFlags;
  49. D3DCOLORMODEL dcmColorModel;
  50. DWORD dwDevCaps;
  51. D3DTRANSFORMCAPS dtcTransformCaps;
  52. WINBOOL bClipping;
  53. D3DLIGHTINGCAPS dlcLightingCaps;
  54. D3DPRIMCAPS dpcLineCaps;
  55. D3DPRIMCAPS dpcTriCaps;
  56. DWORD dwDeviceRenderBitDepth;
  57. DWORD dwDeviceZBufferBitDepth;
  58. DWORD dwMaxBufferSize;
  59. DWORD dwMaxVertexCount;
  60. /* DirectX 5 */
  61. DWORD dwMinTextureWidth;
  62. DWORD dwMinTextureHeight;
  63. DWORD dwMaxTextureWidth;
  64. DWORD dwMaxTextureHeight;
  65. DWORD dwMinStippleWidth;
  66. DWORD dwMaxStippleWidth;
  67. DWORD dwMinStippleHeight;
  68. DWORD dwMaxStippleHeight;
  69. } D3DDEVICEDESC_V2, *LPD3DDEVICEDESC_V2;
  70. typedef struct _D3DDeviceDesc_V3
  71. {
  72. DWORD dwSize;
  73. DWORD dwFlags;
  74. D3DCOLORMODEL dcmColorModel;
  75. DWORD dwDevCaps;
  76. D3DTRANSFORMCAPS dtcTransformCaps;
  77. WINBOOL bClipping;
  78. D3DLIGHTINGCAPS dlcLightingCaps;
  79. D3DPRIMCAPS dpcLineCaps;
  80. D3DPRIMCAPS dpcTriCaps;
  81. DWORD dwDeviceRenderBitDepth;
  82. DWORD dwDeviceZBufferBitDepth;
  83. DWORD dwMaxBufferSize;
  84. DWORD dwMaxVertexCount;
  85. /* DirectX 5 */
  86. DWORD dwMinTextureWidth;
  87. DWORD dwMinTextureHeight;
  88. DWORD dwMaxTextureWidth;
  89. DWORD dwMaxTextureHeight;
  90. DWORD dwMinStippleWidth;
  91. DWORD dwMaxStippleWidth;
  92. DWORD dwMinStippleHeight;
  93. DWORD 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. } D3DDEVICEDESC_V3, *LPD3DDEVICEDESC_V3;
  109. typedef struct _D3DHAL_GLOBALDRIVERDATA {
  110. DWORD dwSize;
  111. D3DDEVICEDESC_V1 hwCaps;
  112. DWORD dwNumVertices;
  113. DWORD dwNumClipVertices;
  114. DWORD dwNumTextureFormats;
  115. LPDDSURFACEDESC lpTextureFormats;
  116. } D3DHAL_GLOBALDRIVERDATA,*LPD3DHAL_GLOBALDRIVERDATA;
  117. typedef struct _D3DHAL_D3DEXTENDEDCAPS {
  118. DWORD dwSize;
  119. /* DirectX 5 */
  120. DWORD dwMinTextureWidth, dwMaxTextureWidth;
  121. DWORD dwMinTextureHeight, dwMaxTextureHeight;
  122. DWORD dwMinStippleWidth, dwMaxStippleWidth;
  123. DWORD dwMinStippleHeight, dwMaxStippleHeight;
  124. /* DirectX 6 */
  125. DWORD dwMaxTextureRepeat;
  126. DWORD dwMaxTextureAspectRatio;
  127. DWORD dwMaxAnisotropy;
  128. D3DVALUE dvGuardBandLeft;
  129. D3DVALUE dvGuardBandTop;
  130. D3DVALUE dvGuardBandRight;
  131. D3DVALUE dvGuardBandBottom;
  132. D3DVALUE dvExtentsAdjust;
  133. DWORD dwStencilCaps;
  134. DWORD dwFVFCaps;
  135. DWORD dwTextureOpCaps;
  136. WORD wMaxTextureBlendStages;
  137. WORD wMaxSimultaneousTextures;
  138. /* DirectX 7 */
  139. DWORD dwMaxActiveLights;
  140. D3DVALUE dvMaxVertexW;
  141. WORD wMaxUserClipPlanes;
  142. WORD wMaxVertexBlendMatrices;
  143. DWORD dwVertexProcessingCaps;
  144. DWORD dwReserved1;
  145. DWORD dwReserved2;
  146. DWORD dwReserved3;
  147. DWORD dwReserved4;
  148. } D3DHAL_D3DEXTENDEDCAPS,*LPD3DHAL_D3DEXTENDEDCAPS;
  149. /*****************************************************************************
  150. * d3d->driver callbacks
  151. */
  152. typedef struct _D3DHAL_CONTEXTCREATEDATA *LPD3DHAL_CONTEXTCREATEDATA;
  153. typedef struct _D3DHAL_CONTEXTDESTROYDATA *LPD3DHAL_CONTEXTDESTROYDATA;
  154. typedef struct _D3DHAL_CONTEXTDESTROYALLDATA *LPD3DHAL_CONTEXTDESTROYALLDATA;
  155. typedef struct _D3DHAL_SCENECAPTUREDATA *LPD3DHAL_SCENECAPTUREDATA;
  156. typedef struct _D3DHAL_RENDERSTATEDATA *LPD3DHAL_RENDERSTATEDATA;
  157. typedef struct _D3DHAL_RENDERPRIMITIVEDATA *LPD3DHAL_RENDERPRIMITIVEDATA;
  158. typedef struct _D3DHAL_TEXTURECREATEDATA *LPD3DHAL_TEXTURECREATEDATA;
  159. typedef struct _D3DHAL_TEXTUREDESTROYDATA *LPD3DHAL_TEXTUREDESTROYDATA;
  160. typedef struct _D3DHAL_TEXTURESWAPDATA *LPD3DHAL_TEXTURESWAPDATA;
  161. typedef struct _D3DHAL_TEXTUREGETSURFDATA *LPD3DHAL_TEXTUREGETSURFDATA;
  162. typedef struct _D3DHAL_GETSTATEDATA *LPD3DHAL_GETSTATEDATA;
  163. typedef DWORD (PASCAL *LPD3DHAL_CONTEXTCREATECB) (LPD3DHAL_CONTEXTCREATEDATA);
  164. typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYCB) (LPD3DHAL_CONTEXTDESTROYDATA);
  165. typedef DWORD (PASCAL *LPD3DHAL_CONTEXTDESTROYALLCB)(LPD3DHAL_CONTEXTDESTROYALLDATA);
  166. typedef DWORD (PASCAL *LPD3DHAL_SCENECAPTURECB) (LPD3DHAL_SCENECAPTUREDATA);
  167. typedef DWORD (PASCAL *LPD3DHAL_RENDERSTATECB) (LPD3DHAL_RENDERSTATEDATA);
  168. typedef DWORD (PASCAL *LPD3DHAL_RENDERPRIMITIVECB) (LPD3DHAL_RENDERPRIMITIVEDATA);
  169. typedef DWORD (PASCAL *LPD3DHAL_TEXTURECREATECB) (LPD3DHAL_TEXTURECREATEDATA);
  170. typedef DWORD (PASCAL *LPD3DHAL_TEXTUREDESTROYCB) (LPD3DHAL_TEXTUREDESTROYDATA);
  171. typedef DWORD (PASCAL *LPD3DHAL_TEXTURESWAPCB) (LPD3DHAL_TEXTURESWAPDATA);
  172. typedef DWORD (PASCAL *LPD3DHAL_TEXTUREGETSURFCB) (LPD3DHAL_TEXTUREGETSURFDATA);
  173. typedef DWORD (PASCAL *LPD3DHAL_GETSTATECB) (LPD3DHAL_GETSTATEDATA);
  174. typedef struct _D3DHAL_CALLBACKS {
  175. DWORD dwSize;
  176. LPD3DHAL_CONTEXTCREATECB ContextCreate;
  177. LPD3DHAL_CONTEXTDESTROYCB ContextDestroy;
  178. LPD3DHAL_CONTEXTDESTROYALLCB ContextDestroyAll;
  179. LPD3DHAL_SCENECAPTURECB SceneCapture;
  180. LPVOID lpReserved10;
  181. LPVOID lpReserved11;
  182. LPD3DHAL_RENDERSTATECB RenderState;
  183. LPD3DHAL_RENDERPRIMITIVECB RenderPrimitive;
  184. DWORD dwReserved;
  185. LPD3DHAL_TEXTURECREATECB TextureCreate;
  186. LPD3DHAL_TEXTUREDESTROYCB TextureDestroy;
  187. LPD3DHAL_TEXTURESWAPCB TextureSwap;
  188. LPD3DHAL_TEXTUREGETSURFCB TextureGetSurf;
  189. /* now why did MS create CALLBACKS2 and CALLBACKS3 structures if
  190. * all these reserved fields were available? we may never know */
  191. LPVOID lpReserved12;
  192. LPVOID lpReserved13;
  193. LPVOID lpReserved14;
  194. LPVOID lpReserved15;
  195. LPVOID lpReserved16;
  196. LPVOID lpReserved17;
  197. LPVOID lpReserved18;
  198. LPVOID lpReserved19;
  199. LPVOID lpReserved20;
  200. LPVOID lpReserved21;
  201. LPD3DHAL_GETSTATECB GetState;
  202. DWORD dwReserved0;
  203. DWORD dwReserved1;
  204. DWORD dwReserved2;
  205. DWORD dwReserved3;
  206. DWORD dwReserved4;
  207. DWORD dwReserved5;
  208. DWORD dwReserved6;
  209. DWORD dwReserved7;
  210. DWORD dwReserved8;
  211. DWORD dwReserved9;
  212. } D3DHAL_CALLBACKS,*LPD3DHAL_CALLBACKS;
  213. typedef struct _D3DHAL_SETRENDERTARGETDATA *LPD3DHAL_SETRENDERTARGETDATA;
  214. typedef struct _D3DHAL_CLEARDATA *LPD3DHAL_CLEARDATA;
  215. typedef struct _D3DHAL_DRAWONEPRIMITIVEDATA *LPD3DHAL_DRAWONEPRIMITIVEDATA;
  216. typedef struct _D3DHAL_DRAWONEINDEXEDPRIMITIVEDATA *LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA;
  217. typedef struct _D3DHAL_DRAWPRIMITIVESDATA *LPD3DHAL_DRAWPRIMITIVESDATA;
  218. typedef DWORD (PASCAL *LPD3DHAL_SETRENDERTARGETCB) (LPD3DHAL_SETRENDERTARGETDATA);
  219. typedef DWORD (PASCAL *LPD3DHAL_CLEARCB) (LPD3DHAL_CLEARDATA);
  220. typedef DWORD (PASCAL *LPD3DHAL_DRAWONEPRIMITIVECB) (LPD3DHAL_DRAWONEPRIMITIVEDATA);
  221. typedef DWORD (PASCAL *LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB)(LPD3DHAL_DRAWONEINDEXEDPRIMITIVEDATA);
  222. typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVESCB) (LPD3DHAL_DRAWPRIMITIVESDATA);
  223. typedef struct _D3DHAL_CALLBACKS2 {
  224. DWORD dwSize;
  225. DWORD dwFlags;
  226. LPD3DHAL_SETRENDERTARGETCB SetRenderTarget;
  227. LPD3DHAL_CLEARCB Clear;
  228. LPD3DHAL_DRAWONEPRIMITIVECB DrawOnePrimitive;
  229. LPD3DHAL_DRAWONEINDEXEDPRIMITIVECB DrawOneIndexedPrimitive;
  230. LPD3DHAL_DRAWPRIMITIVESCB DrawPrimitives;
  231. } D3DHAL_CALLBACKS2,*LPD3DHAL_CALLBACKS2;
  232. typedef struct _D3DHAL_CLEAR2DATA *LPD3DHAL_CLEAR2DATA;
  233. typedef struct _D3DHAL_VALIDATETEXTURESTAGESTATEDATA *LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA;
  234. typedef struct _D3DHAL_DRAWPRIMITIVES2DATA *LPD3DHAL_DRAWPRIMITIVES2DATA;
  235. typedef DWORD (PASCAL *LPD3DHAL_CLEAR2CB) (LPD3DHAL_CLEAR2DATA);
  236. typedef DWORD (PASCAL *LPD3DHAL_VALIDATETEXTURESTAGESTATECB)(LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA);
  237. typedef DWORD (PASCAL *LPD3DHAL_DRAWPRIMITIVES2CB) (LPD3DHAL_DRAWPRIMITIVES2DATA);
  238. typedef struct _D3DHAL_CALLBACKS3 {
  239. DWORD dwSize;
  240. DWORD dwFlags;
  241. LPD3DHAL_CLEAR2CB Clear2;
  242. LPVOID lpvReserved;
  243. LPD3DHAL_VALIDATETEXTURESTAGESTATECB ValidateTextureStageState;
  244. LPD3DHAL_DRAWPRIMITIVES2CB DrawPrimitives2;
  245. } D3DHAL_CALLBACKS3,*LPD3DHAL_CALLBACKS3;
  246. /*****************************************************************************
  247. * parameter structures
  248. */
  249. typedef struct _D3DHAL_CONTEXTCREATEDATA {
  250. union {
  251. LPDDRAWI_DIRECTDRAW_GBL lpDDGbl; /* pre-DirectX 7 */
  252. LPDDRAWI_DIRECTDRAW_LCL lpDDLcl; /* DirectX 7 */
  253. } DUMMYUNIONNAME1;
  254. union {
  255. LPDIRECTDRAWSURFACE lpDDS;
  256. LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl; /* DirectX 7 */
  257. } DUMMYUNIONNAME2;
  258. union {
  259. LPDIRECTDRAWSURFACE lpDDSZ;
  260. LPDDRAWI_DDRAWSURFACE_LCL lpDDSZLcl; /* DirectX 7 */
  261. } DUMMYUNIONNAME3;
  262. union {
  263. DWORD dwPID;
  264. ULONG_PTR dwrstates;
  265. } DUMMYUNIONNAME4;
  266. ULONG_PTR dwhContext;
  267. HRESULT ddrval;
  268. } D3DHAL_CONTEXTCREATEDATA;
  269. typedef struct _D3DHAL_CONTEXTDESTROYDATA {
  270. ULONG_PTR dwhContext;
  271. HRESULT ddrval;
  272. } D3DHAL_CONTEXTDESTROYDATA;
  273. typedef struct _D3DHAL_CONTEXTDESTROYALLDATA {
  274. DWORD dwPID;
  275. HRESULT ddrval;
  276. } D3DHAL_CONTEXTDESTROYALLDATA;
  277. typedef struct _D3DHAL_SCENECAPTUREDATA {
  278. ULONG_PTR dwhContext;
  279. DWORD dwFlag;
  280. HRESULT ddrval;
  281. } D3DHAL_SCENECAPTUREDATA;
  282. #define D3DHAL_SCENE_CAPTURE_START 0x00000000
  283. #define D3DHAL_SCENE_CAPTURE_END 0x00000001
  284. typedef struct _D3DHAL_SETRENDERTARGETDATA {
  285. ULONG_PTR dwhContext;
  286. union {
  287. LPDIRECTDRAWSURFACE lpDDS;
  288. LPDDRAWI_DDRAWSURFACE_LCL lpDDSLcl;
  289. } DUMMYUNIONNAME1;
  290. union {
  291. LPDIRECTDRAWSURFACE lpDDSZ;
  292. LPDDRAWI_DDRAWSURFACE_LCL lpDDSZLcl;
  293. } DUMMYUNIONNAME2;
  294. HRESULT ddrval;
  295. } D3DHAL_SETRENDERTARGETDATA;
  296. typedef struct _D3DHAL_DRAWPRIMITIVES2DATA {
  297. ULONG_PTR dwhContext;
  298. DWORD dwFlags;
  299. DWORD dwVertexType;
  300. LPDDRAWI_DDRAWSURFACE_LCL lpDDCommands;
  301. DWORD dwCommandOffset;
  302. DWORD dwCommandLength;
  303. union {
  304. LPDDRAWI_DDRAWSURFACE_LCL lpDDVertex;
  305. LPVOID lpVertices;
  306. } DUMMYUNIONNAME1;
  307. DWORD dwVertexOffset;
  308. DWORD dwVertexLength;
  309. DWORD dwReqVertexBufSize;
  310. DWORD dwReqCommandBufSize;
  311. LPDWORD lpdwRStates;
  312. union {
  313. DWORD dwVertexSize;
  314. HRESULT ddrval;
  315. } DUMMYUNIONNAME2;
  316. DWORD dwErrorOffset;
  317. } D3DHAL_DRAWPRIMITIVES2DATA;
  318. #define D3DHALDP2_USERMEMVERTICES 0x00000001
  319. #define D3DHALDP2_EXECUTEBUFFER 0x00000002
  320. #define D3DHALDP2_SWAPVERTEXBUFFER 0x00000004
  321. #define D3DHALDP2_SWAPCOMMANDBUFFER 0x00000008
  322. #define D3DHALDP2_REQVERTEXBUFSIZE 0x00000010
  323. #define D3DHALDP2_REQCOMMANDBUFSIZE 0x00000020
  324. #define D3DHALDP2_VIDMEMVERTEXBUF 0x00000040
  325. #define D3DHALDP2_VIDMEMCOMMANDBUF 0x00000080
  326. /*****************************************************************************
  327. * DrawPrimitives2 command structures
  328. */
  329. typedef struct _D3DHAL_DP2COMMAND {
  330. BYTE bCommand;
  331. BYTE bReserved;
  332. union {
  333. WORD wPrimitiveCount;
  334. WORD wStateCount;
  335. } DUMMYUNIONNAME;
  336. } D3DHAL_DP2COMMAND,*LPD3DHAL_DP2COMMAND;
  337. typedef enum _D3DHAL_DP2OPERATION {
  338. D3DDP2OP_POINTS = 1,
  339. D3DDP2OP_INDEXEDLINELIST = 2,
  340. D3DDP2OP_INDEXEDTRIANGLELIST = 3,
  341. D3DDP2OP_RENDERSTATE = 8,
  342. D3DDP2OP_LINELIST = 15,
  343. D3DDP2OP_LINESTRIP = 16,
  344. D3DDP2OP_INDEXEDLINESTRIP = 17,
  345. D3DDP2OP_TRIANGLELIST = 18,
  346. D3DDP2OP_TRIANGLESTRIP = 19,
  347. D3DDP2OP_INDEXEDTRIANGLESTRIP = 20,
  348. D3DDP2OP_TRIANGLEFAN = 21,
  349. D3DDP2OP_INDEXEDTRIANGLEFAN = 22,
  350. D3DDP2OP_TRIANGLEFAN_IMM = 23,
  351. D3DDP2OP_LINELIST_IMM = 24,
  352. D3DDP2OP_TEXTURESTAGESTATE = 25,
  353. D3DDP2OP_INDEXEDTRIANGLELIST2 = 26,
  354. D3DDP2OP_INDEXEDLINELIST2 = 27,
  355. D3DDP2OP_VIEWPORTINFO = 28,
  356. D3DDP2OP_WINFO = 29,
  357. /* pre-DirectX 7 interfaces */
  358. D3DDP2OP_SETPALETTE = 30,
  359. D3DDP2OP_UPDATEPALETTE = 31,
  360. /* DirectX 7 interfaces */
  361. D3DDP2OP_ZRANGE = 32,
  362. D3DDP2OP_SETMATERIAL = 33,
  363. D3DDP2OP_SETLIGHT = 34,
  364. D3DDP2OP_CREATELIGHT = 35,
  365. D3DDP2OP_SETTRANSFORM = 36,
  366. D3DDP2OP_TEXBLT = 38,
  367. D3DDP2OP_STATESET = 39,
  368. D3DDP2OP_SETPRIORITY = 40,
  369. /* all interfaces */
  370. D3DDP2OP_SETRENDERTARGET = 41,
  371. D3DDP2OP_CLEAR = 42,
  372. /* DirectX 7 interfaces */
  373. D3DDP2OP_SETTEXLOD = 43,
  374. D3DPP2OP_SETCLIPPLANE = 44
  375. } D3DHAL_DP2OPERATION;
  376. /* point primitives */
  377. typedef struct _D3DHAL_POINTS {
  378. WORD wCount;
  379. WORD wVStart;
  380. } D3DHAL_DP2POINTS,*LPD3DHAL_DP2POINTS;
  381. /* line primitives */
  382. typedef struct _D3DHAL_DP2STARTVERTEX {
  383. WORD wVStart;
  384. } D3DHAL_DP2STARTVERTEX,*LPD3DHAL_DP2STARTVERTEX;
  385. typedef struct _D3DHAL_DP2LINELIST {
  386. WORD wVStart;
  387. } D3DHAL_DP2LINELIST,*LPD3DHAL_DP2LINELIST;
  388. typedef struct _D3DHAL_DP2INDEXEDLINELIST {
  389. WORD wV1;
  390. WORD wV2;
  391. } D3DHAL_DP2INDEXEDLINELIST,*LPD3DHAL_DP2INDEXEDLINELIST;
  392. typedef struct _D3DHAL_DP2LINESTRIP {
  393. WORD wVStart;
  394. } D3DHAL_DP2LINESTRIP,*LPD3DHAL_DP2LINESTRIP;
  395. typedef struct _D3DHAL_DP2INDEXEDLINESTRIP {
  396. WORD wV[2];
  397. } D3DHAL_DP2INDEXEDLINESTRIP,*LPD3DHAL_DP2INDEXEDLINESTRIP;
  398. /* triangle primitives */
  399. typedef struct _D3DHAL_DP2TRIANGLELIST {
  400. WORD wVStart;
  401. } D3DHAL_DP2TRIANGLELIST,*LPD3DHAL_DP2TRIANGLELIST;
  402. typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST {
  403. WORD wV1;
  404. WORD wV2;
  405. WORD wV3;
  406. WORD wFlags;
  407. } D3DHAL_DP2INDEXEDTRIANGLELIST,*LPD3DHAL_DP2INDEXEDTRIANGLELIST;
  408. typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST2 {
  409. WORD wV1;
  410. WORD wV2;
  411. WORD wV3;
  412. } D3DHAL_DP2INDEXEDTRIANGLELIST2,*LPD3DHAL_DP2INDEXEDTRIANGLELIST2;
  413. typedef struct _D3DHAL_DP2TRIANGLESTRIP {
  414. WORD wVStart;
  415. } D3DHAL_DP2TRIANGLESTRIP,*LPD3DHAL_DP2TRIANGLESTRIP;
  416. typedef struct _D3DHAL_DP2INDEXEDTRIANGLESTRIP {
  417. WORD wV[3];
  418. } D3DHAL_DP2INDEXEDTRIANGLESTRIP,*LPD3DHAL_DP2INDEXEDTRIANGLESTRIP;
  419. typedef struct _D3DHAL_DP2TRIANGLEFAN {
  420. WORD wVStart;
  421. } D3DHAL_DP2TRIANGLEFAN,*LPD3DHAL_DP2TRIANGLEFAN;
  422. typedef struct _D3DHAL_DP2INDEXEDTRIANGLEFAN {
  423. WORD wV[3];
  424. } D3DHAL_DP2INDEXEDTRIANGLEFAN,*LPD3DHAL_DP2INDEXEDTRIANGLEFAN;
  425. typedef struct _D3DHAL_DP2TRIANGLEFAN_IMM {
  426. DWORD dwEdgeFlags;
  427. } D3DHAL_DP2TRIANGLEFAN_IMM,*LPD3DHAL_DP2TRIANGLEFAN_IMM;
  428. /* render states */
  429. typedef struct _D3DHAL_DP2RENDERSTATE {
  430. D3DRENDERSTATETYPE RenderState;
  431. union {
  432. D3DVALUE dvState;
  433. DWORD dwState;
  434. } DUMMYUNIONNAME;
  435. } D3DHAL_DP2RENDERSTATE,*LPD3DHAL_DP2RENDERSTATE;
  436. typedef struct _D3DHAL_DP2TEXTURESTAGESTATE {
  437. WORD wStage;
  438. WORD TSState;
  439. DWORD dwValue;
  440. } D3DHAL_DP2TEXTURESTAGESTATE,*LPD3DHAL_DP2TEXTURESTAGESTATE;
  441. #define D3DTSS_TEXTUREMAP 0
  442. typedef struct _D3DHAL_DP2VIEWPORTINFO {
  443. DWORD dwX;
  444. DWORD dwY;
  445. DWORD dwWidth;
  446. DWORD dwHeight;
  447. } D3DHAL_DP2VIEWPORTINFO,*LPD3DHAL_DP2VIEWPORTINFO;
  448. typedef struct _D3DHAL_DP2WINFO {
  449. D3DVALUE dwWNear;
  450. D3DVALUE dwWFar;
  451. } D3DHAL_DP2WINFO,*LPD3DHAL_DP2WINFO;
  452. typedef struct _D3DHAL_DP2SETPALETTE {
  453. DWORD dwPaletteHandle;
  454. DWORD dwPaletteFlags;
  455. DWORD dwSurfaceHandle;
  456. } D3DHAL_DP2SETPALETTE,*LPD3DHAL_DP2SETPALETTE;
  457. typedef struct _D3DHAL_DP2UPDATEPALETTE {
  458. DWORD dwPaletteHandle;
  459. WORD wStartIndex;
  460. WORD wNumEntries;
  461. } D3DHAL_DP2UPDATEPALETTE,*LPD3DHAL_DP2UPDATEPALETTE;
  462. typedef struct _D3DHAL_DP2ZRANGE {
  463. D3DVALUE dvMinZ;
  464. D3DVALUE dvMaxZ;
  465. } D3DHAL_DP2ZRANGE,*LPD3DHAL_DP2ZRANGE;
  466. typedef D3DMATERIAL7 D3DHAL_DP2SETMATERIAL,*LPD3DHAL_DP2SETMATERIAL;
  467. typedef struct _D3DHAL_DP2SETLIGHT {
  468. DWORD dwIndex;
  469. DWORD dwDataType;
  470. } D3DHAL_DP2SETLIGHT,*LPD3DHAL_DP2SETLIGHT;
  471. #define D3DHAL_SETLIGHT_ENABLE 0
  472. #define D3DHAL_SETLIGHT_DISABLE 1
  473. #define D3DHAL_SETLIGHT_DATA 2
  474. typedef struct _D3DHAL_DP2CREATELIGHT {
  475. DWORD dwIndex;
  476. } D3DHAL_DP2CREATELIGHT,*LPD3DHAL_DP2CREATELIGHT;
  477. typedef struct _D3DHAL_DP2SETTRANSFORM {
  478. D3DTRANSFORMSTATETYPE xfrmType;
  479. D3DMATRIX matrix;
  480. } D3DHAL_DP2SETTRANSFORM,*LPD3DHAL_DP2SETTRANSFORM;
  481. typedef struct _D3DHAL_DP2TEXBLT {
  482. DWORD dwDDDestSurface;
  483. DWORD dwDDSrcSurface;
  484. POINT pDest;
  485. RECTL rSrc;
  486. DWORD dwFlags;
  487. } D3DHAL_DP2TEXBLT,*LPD3DHAL_DP2TEXBLT;
  488. typedef struct _D3DHAL_DP2STATESET {
  489. DWORD dwOperation;
  490. DWORD dwParam;
  491. D3DSTATEBLOCKTYPE sbType;
  492. } D3DHAL_DP2STATESET,*LPD3DHAL_DP2STATESET;
  493. #define D3DHAL_STATESETBEGIN 0
  494. #define D3DHAL_STATESETEND 1
  495. #define D3DHAL_STATESETDELETE 2
  496. #define D3DHAL_STATESETEXECUTE 3
  497. #define D3DHAL_STATESETCAPTURE 4
  498. typedef struct _D3DHAL_DP2SETPRIORITY {
  499. DWORD dwDDSurface;
  500. DWORD dwPriority;
  501. } D3DHAL_DP2SETPRIORITY,*LPD3DHAL_DP2SETPRIORITY;
  502. typedef struct _D3DHAL_DP2SETRENDERTARGET {
  503. DWORD hRenderTarget;
  504. DWORD hZBuffer;
  505. } D3DHAL_DP2SETRENDERTARGET,*LPD3DHAL_DP2SETRENDERTARGET;
  506. typedef struct _D3DHAL_DP2CLEAR {
  507. DWORD dwFlags;
  508. DWORD dwFillColor;
  509. D3DVALUE dvFillDepth;
  510. DWORD dwFillStencil;
  511. RECT Rects[1];
  512. } D3DHAL_DP2CLEAR,*LPD3DHAL_DP2CLEAR;
  513. typedef struct _D3DHAL_DP2SETTEXLOD {
  514. DWORD dwDDSurface;
  515. DWORD dwLOD;
  516. } D3DHAL_DP2SETTEXLOD,*LPD3DHAL_DP2SETTEXLOD;
  517. #ifdef __cplusplus
  518. } /* extern "C" */
  519. #endif
  520. #endif /* __WINE_D3DHAL_H */