Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

585 lines
17 KiB

  1. /*==========================================================================;
  2. *
  3. * Copyright (C) 1995-1996 Microsoft Corporation. All Rights Reserved.
  4. *
  5. * File: d3di.h
  6. * Content: Direct3D internal include file
  7. *@@BEGIN_MSINTERNAL
  8. *
  9. * $Id: d3di.h,v 1.26 1995/12/04 11:29:44 sjl Exp $
  10. *
  11. * History:
  12. * Date By Reason
  13. * ==== == ======
  14. * 05/11/95 stevela Initial rev with this header.
  15. * 11/11/95 stevela Light code changed.
  16. * 21/11/95 colinmc Made Direct3D aggregatable
  17. * (so it can be QI'd off DirectDraw).
  18. * 23/11/95 colinmc Made Direct3D textures and devices aggregatable
  19. * (QI'd off DirectDrawSurfaces).
  20. * 07/12/95 stevela Merged in Colin's changes.
  21. * 10/12/95 stevela Removed AGGREGATE_D3D.
  22. * Removed Validate macros from here. Now in d3dpr.h
  23. * 02/03/96 colinmc Minor build fix
  24. * 17/04/96 stevela Use ddraw.h externally and ddrawp.h internally
  25. *@@END_MSINTERNAL
  26. *
  27. ***************************************************************************/
  28. #ifndef _D3DI_H
  29. #define _D3DI_H
  30. //@@BEGIN_MSINTERNAL
  31. #include "ddrawp.h"
  32. #if 0
  33. //@@END_MSINTERNAL
  34. #include "ddraw.h"
  35. //@@BEGIN_MSINTERNAL
  36. #endif
  37. //@@END_MSINTERNAL
  38. #include "d3d.h"
  39. // @@BEGIN_MSINTERNAL
  40. #if !defined(BUILD_RLAPI) && !defined(BUILD_DDDDK)
  41. #include "ddrawi.h"
  42. #include "rlreg.h"
  43. #include "queue.h"
  44. #include "object.h"
  45. /*
  46. typedef D3DCOLORMODEL D3DCOLORMODEL;
  47. #define D3DCOLOR_RAMP D3DCOLOR_RAMP
  48. #define D3DCOLOR_RGB D3DCOLOR_RGB
  49. #define D3D_COLORMODEL D3D_COLORMODEL
  50. */
  51. #endif /* !BUILD_RLAPI */
  52. // @@END_MSINTERNAL
  53. typedef DWORD D3DI_BUFFERHANDLE, *LPD3DI_BUFFERHANDLE;
  54. /*
  55. * Internal version of executedata
  56. */
  57. typedef struct _D3DI_ExecuteData {
  58. DWORD dwSize;
  59. D3DI_BUFFERHANDLE dwHandle; /* Handle allocated by driver */
  60. DWORD dwVertexOffset;
  61. DWORD dwVertexCount;
  62. DWORD dwInstructionOffset;
  63. DWORD dwInstructionLength;
  64. DWORD dwHVertexOffset;
  65. D3DSTATUS dsStatus; /* Status after execute */
  66. } D3DI_EXECUTEDATA, *LPD3DI_EXECUTEDATA;
  67. /*
  68. * Internal version of lightdata
  69. */
  70. typedef struct _D3DI_LIGHT {
  71. D3DLIGHTTYPE type;
  72. BOOL valid;
  73. D3DVALUE red, green, blue, shade;
  74. D3DVECTOR position;
  75. D3DVECTOR model_position;
  76. D3DVECTOR direction;
  77. D3DVECTOR model_direction;
  78. D3DVECTOR halfway;
  79. D3DVALUE range;
  80. D3DVALUE range_squared;
  81. D3DVALUE falloff;
  82. D3DVALUE attenuation0;
  83. D3DVALUE attenuation1;
  84. D3DVALUE attenuation2;
  85. D3DVALUE cos_theta_by_2;
  86. D3DVALUE cos_phi_by_2;
  87. } D3DI_LIGHT, *LPD3DI_LIGHT;
  88. // @@BEGIN_MSINTERNAL
  89. #if !defined(BUILD_RLAPI) && !defined(BUILD_DDDDK)
  90. #ifndef BUILD_HEL
  91. #ifdef BUILD_D3D_LAYER
  92. #include "driver.h"
  93. #endif
  94. typedef struct ID3DObjectVtbl D3DOBJECTVTBL, *LPD3DOBJECTVTBL;
  95. typedef struct IDirect3DVtbl DIRECT3DCALLBACKS, *LPDIRECT3DCALLBACKS;
  96. typedef struct IDirect3DDeviceVtbl DIRECT3DDEVICECALLBACKS, *LPDIRECT3DDEVICECALLBACKS;
  97. typedef struct IDirect3DExecuteBufferVtbl DIRECT3DEXECUTEBUFFERCALLBACKS, *LPDIRECT3DEXECUTEBUFFERCALLBACKS;
  98. typedef struct IDirect3DLightVtbl DIRECT3DLIGHTCALLBACKS, *LPDIRECT3DLIGHTCALLBACKS;
  99. typedef struct IDirect3DMaterialVtbl DIRECT3DMATERIALCALLBACKS, *LPDIRECT3DMATERIALCALLBACKS;
  100. typedef struct IDirect3DTextureVtbl DIRECT3DTEXTURECALLBACKS, *LPDIRECT3DTEXTURECALLBACKS;
  101. typedef struct IDirect3DViewportVtbl DIRECT3DVIEWPORTCALLBACKS, *LPDIRECT3DVIEWPORTCALLBACKS;
  102. #ifdef __cplusplus
  103. extern "C" {
  104. #endif
  105. typedef struct _DIRECT3DI *LPDIRECT3DI;
  106. typedef struct _DIRECT3DDEVICEI *LPDIRECT3DDEVICEI;
  107. typedef struct _DIRECT3DEXECUTEBUFFERI *LPDIRECT3DEXECUTEBUFFERI;
  108. typedef struct _DIRECT3DLIGHTI *LPDIRECT3DLIGHTI;
  109. typedef struct _DIRECT3DMATERIALI *LPDIRECT3DMATERIALI;
  110. typedef struct _DIRECT3DTEXTUREI *LPDIRECT3DTEXTUREI;
  111. typedef struct _DIRECT3DVIEWPORTI *LPDIRECT3DVIEWPORTI;
  112. /*
  113. * If we have an aggreate Direct3D we need a structure to
  114. * represent an interface distinct from the underlying
  115. * object. This is that structure.
  116. */
  117. typedef struct _DIRECT3DUNKNOWNI
  118. {
  119. LPDIRECT3DCALLBACKS lpVtbl;
  120. LPDIRECT3DI lpObj;
  121. } DIRECT3DUNKNOWNI;
  122. typedef struct _DIRECT3DUNKNOWNI *LPDIRECT3DUNKNOWNI;
  123. /*
  124. * Internal version of Direct3D object; it has data after the vtable
  125. */
  126. typedef struct _DIRECT3DI
  127. {
  128. /*** Object Interface ***/
  129. LPDIRECT3DCALLBACKS lpVtbl; /* Pointer to callbacks */
  130. int refCnt; /* Reference count object */
  131. /*** Object Relations ***/
  132. /* Devices */
  133. int numDevs;/* Number of devices */
  134. LIST_HEAD(_devices, _DIRECT3DDEVICEI) devices;
  135. /* Associated IDirect3DDevices */
  136. /* Viewports */
  137. int numViewports; /* Number of viewports */
  138. LIST_HEAD(_viewports, _DIRECT3DVIEWPORTI) viewports;
  139. /* Created IDirect3DViewports */
  140. /* Lights */
  141. int numLights; /* Number of lights */
  142. LIST_HEAD(_lights, _DIRECT3DLIGHTI) lights;
  143. /* Created IDirect3DLights */
  144. /* Materials */
  145. int numMaterials; /* Number of materials */
  146. LIST_HEAD(_materials, _DIRECT3DMATERIALI) materials;
  147. /* Created IDirect3DMaterials */
  148. /*** Object Data ***/
  149. unsigned long v_next; /* id of next viewport to be created */
  150. RLDDIRegistry* lpReg; /* Registry */
  151. /*
  152. * DirectDraw Interface
  153. */
  154. LPDDRAWI_DIRECTDRAW_INT lpDDInt;
  155. /*
  156. * The special IUnknown interface for the aggregate that does
  157. * not punt to the parent object.
  158. */
  159. LPUNKNOWN lpOwningIUnknown; /* The owning IUnknown */
  160. DIRECT3DUNKNOWNI lpThisIUnknown; /* Our IUnknown interface */
  161. } DIRECT3DI;
  162. /*
  163. * If we have an aggreate Direct3DDevice we need a structure to
  164. * represent an interface distinct from the underlying
  165. * object. This is that structure.
  166. */
  167. typedef struct _DIRECT3DDEVICEUNKNOWNI
  168. {
  169. LPDIRECT3DDEVICECALLBACKS lpVtbl;
  170. LPDIRECT3DDEVICEI lpObj;
  171. } DIRECT3DDEVICEUNKNOWNI;
  172. typedef struct _DIRECT3DDEVICEUNKNOWNI *LPDIRECT3DDEVICEUNKNOWNI;
  173. /*
  174. * Internal version of Direct3DDevice object; it has data after the vtable
  175. */
  176. #include "d3dhal.h"
  177. typedef RLDDIDriver* (*RLDDIDDrawCreateDriverFn)(
  178. LPDDRAWI_DIRECTDRAW_INT lpDDInt,
  179. LPDIRECTDRAWSURFACE lpDDS,
  180. LPDIRECTDRAWSURFACE lpZ,
  181. LPDIRECTDRAWPALETTE lpPal,
  182. LPDIRECT3DDEVICEI);
  183. typedef HRESULT (*RLDDIGetCapsFn)(LPD3DDEVICEDESC*, LPD3DDEVICEDESC*);
  184. typedef void (*RLDDIInitFn)(RLDDIMallocFn, RLDDIReallocFn, RLDDIFreeFn, RLDDIRaiseFn, RLDDIValue**, int, int);
  185. typedef void (*RLDDIPushDriverFn)(RLDDIDriverStack*, RLDDIDriver*);
  186. typedef void (*RLDDIPopDriverFn)(RLDDIDriverStack*);
  187. typedef struct _D3DI_TEXTUREBLOCK
  188. {
  189. LIST_ENTRY(_D3DI_TEXTUREBLOCK) list;
  190. /* Next block in IDirect3DTexture */
  191. LIST_ENTRY(_D3DI_TEXTUREBLOCK) devList;
  192. /* Next block in IDirect3DDevice */
  193. LPDIRECT3DDEVICEI lpD3DDeviceI;
  194. LPDIRECT3DTEXTUREI lpD3DTextureI;
  195. D3DTEXTUREHANDLE hTex;
  196. /* texture handle */
  197. } D3DI_TEXTUREBLOCK;
  198. typedef struct _D3DI_TEXTUREBLOCK *LPD3DI_TEXTUREBLOCK;
  199. typedef struct _D3DI_MATERIALBLOCK
  200. {
  201. LIST_ENTRY(_D3DI_MATERIALBLOCK) list;
  202. /* Next block in IDirect3DMaterial */
  203. LIST_ENTRY(_D3DI_MATERIALBLOCK) devList;
  204. /* Next block in IDirect3DDevice */
  205. LPDIRECT3DDEVICEI lpD3DDeviceI;
  206. LPDIRECT3DMATERIALI lpD3DMaterialI;
  207. D3DMATERIALHANDLE hMat;
  208. /* material handle */
  209. } D3DI_MATERIALBLOCK;
  210. typedef struct _D3DI_MATERIALBLOCK *LPD3DI_MATERIALBLOCK;
  211. typedef struct _DIRECT3DDEVICEI
  212. {
  213. /*** Object Interface ***/
  214. LPDIRECT3DDEVICECALLBACKS lpVtbl; /* Pointer to callbacks */
  215. int refCnt; /* Reference count */
  216. /*** Object Relations ***/
  217. LPDIRECT3DI lpDirect3DI; /* parent */
  218. LIST_ENTRY(_DIRECT3DDEVICEI)list; /* Next device IDirect3D */
  219. /* Textures */
  220. LIST_HEAD(_textures, _D3DI_TEXTUREBLOCK) texBlocks;
  221. /* Ref to created IDirect3DTextures */
  222. /* Execute buffers */
  223. LIST_HEAD(_buffers, _DIRECT3DEXECUTEBUFFERI) buffers;
  224. /* Created IDirect3DExecuteBuffers */
  225. /* Viewports */
  226. int numViewports;
  227. CIRCLEQ_HEAD(_dviewports, _DIRECT3DVIEWPORTI) viewports;
  228. /* Associated IDirect3DViewports */
  229. /* Materials */
  230. LIST_HEAD(_dmmaterials, _D3DI_MATERIALBLOCK) matBlocks;
  231. /* Ref to associated IDirect3DMaterials */
  232. /*** Object Data ***/
  233. /* Private interfaces */
  234. LPD3DOBJECTVTBL lpClassVtbl; /* Private Vtbl */
  235. LPD3DOBJECTVTBL lpObjVtbl; /* Private Vtbl */
  236. LPD3DHAL_CALLBACKS lpD3DHALCallbacks;
  237. LPD3DHAL_GLOBALDRIVERDATA lpD3DHALGlobalDriverData;
  238. /* Viewports */
  239. unsigned long v_id; /* ID of last viewport rendered */
  240. /* Lights */
  241. int numLights;
  242. /* This indicates the maximum number
  243. of lights that have been set in
  244. the device. */
  245. /* Device characteristics */
  246. int age;
  247. int width;
  248. int height;
  249. int depth;
  250. unsigned long red_mask, green_mask, blue_mask;
  251. int dither;
  252. int ramp_size;
  253. D3DCOLORMODEL color_model;
  254. int wireframe_options;
  255. D3DTEXTUREFILTER texture_quality;
  256. D3DVALUE gamma;
  257. unsigned char gamma_table[256];
  258. int aspectx, aspecty;
  259. D3DVALUE perspective_tolerance;
  260. /* Library information */
  261. #ifdef WIN32
  262. HINSTANCE hDrvDll;
  263. char dllname[MAXPATH];
  264. char base[256];
  265. #endif
  266. #ifdef SHLIB
  267. void* so;
  268. #endif
  269. /* Are we in a scene? */
  270. BOOL bInScene;
  271. /* Our Device type */
  272. GUID guid;
  273. /* GetCaps function from the library */
  274. RLDDIGetCapsFn GetCapsFn;
  275. /* Functions required to build driver */
  276. RLDDIInitFn RLDDIInit;
  277. RLDDIPushDriverFn RLDDIPushDriver;
  278. RLDDIPopDriverFn RLDDIPopDriver;
  279. RLDDIDDrawCreateDriverFn RLDDIDDrawCreateDriver;
  280. /* Device description */
  281. D3DDEVICEDESC d3dHWDevDesc;
  282. D3DDEVICEDESC d3dHELDevDesc;
  283. /* Driver stack */
  284. RLDDIDriverStack* stack;
  285. /*
  286. * The special IUnknown interface for the aggregate that does
  287. * not punt to the parent object.
  288. */
  289. LPUNKNOWN lpOwningIUnknown; /* The owning IUnknown */
  290. DIRECT3DDEVICEUNKNOWNI lpThisIUnknown; /* Our IUnknown interface */
  291. } DIRECT3DDEVICEI;
  292. /*
  293. * Internal version of Direct3DExecuteBuffer object;
  294. * it has data after the vtable
  295. */
  296. typedef struct _DIRECT3DEXECUTEBUFFERI
  297. {
  298. /*** Object Interface ***/
  299. LPDIRECT3DEXECUTEBUFFERCALLBACKS lpVtbl; /* Pointer to callbacks */
  300. int refCnt; /* Reference count */
  301. /*** Object Relations ***/
  302. LPDIRECT3DDEVICEI lpD3DDeviceI; /* Parent */
  303. LIST_ENTRY(_DIRECT3DEXECUTEBUFFERI)list;
  304. /* Next buffer in IDirect3D */
  305. /*** Object Data ***/
  306. DWORD pid; /* Process locking execute buffer */
  307. D3DEXECUTEBUFFERDESC debDesc;
  308. /* Description of the buffer */
  309. D3DEXECUTEDATA exData; /* Execute Data */
  310. BOOL locked; /* Is the buffer locked */
  311. D3DI_BUFFERHANDLE hBuf;
  312. /* Execute buffer handle */
  313. } DIRECT3DEXECUTEBUFFERI;
  314. /*
  315. * Internal version of Direct3DLight object;
  316. * it has data after the vtable
  317. */
  318. typedef struct _DIRECT3DLIGHTI
  319. {
  320. /*** Object Interface ***/
  321. LPDIRECT3DLIGHTCALLBACKS lpVtbl; /* Pointer to callbacks */
  322. int refCnt; /* Reference count */
  323. /*** Object Relations ***/
  324. LPDIRECT3DI lpDirect3DI; /* Parent */
  325. LIST_ENTRY(_DIRECT3DLIGHTI)list;
  326. /* Next light in IDirect3D */
  327. LPDIRECT3DVIEWPORTI lpD3DViewportI; /* Guardian */
  328. CIRCLEQ_ENTRY(_DIRECT3DLIGHTI)light_list;
  329. /* Next light in IDirect3DViewport */
  330. /*** Object Data ***/
  331. D3DLIGHT dlLight;/* Data describing light */
  332. D3DI_LIGHT diLightData;
  333. /* Internal representation of light */
  334. } DIRECT3DLIGHTI;
  335. /*
  336. * Internal version of Direct3DMaterial object;
  337. * it has data after the vtable
  338. */
  339. typedef struct _DIRECT3DMATERIALI
  340. {
  341. /*** Object Interface ***/
  342. LPDIRECT3DMATERIALCALLBACKS lpVtbl; /* Pointer to callbacks */
  343. int refCnt; /* Reference count */
  344. /*** Object Relations ***/
  345. LPDIRECT3DI lpDirect3DI; /* Parent */
  346. LIST_ENTRY(_DIRECT3DMATERIALI)list;
  347. /* Next MATERIAL in IDirect3D */
  348. LIST_HEAD(_mblocks, _D3DI_MATERIALBLOCK)blocks;
  349. /* devices we're associated with */
  350. /*** Object Data ***/
  351. D3DMATERIAL dmMaterial; /* Data describing material */
  352. BOOL bRes; /* Is this material reserved in the driver */
  353. } DIRECT3DMATERIALI;
  354. /*
  355. * If we have an aggreate Direct3DTexture we need a structure
  356. * to represent an unknown interface distinct from the underlying
  357. * object. This is that structure.
  358. */
  359. typedef struct _DIRECT3DTEXTUREUNKNOWNI
  360. {
  361. LPDIRECT3DTEXTURECALLBACKS lpVtbl;
  362. LPDIRECT3DTEXTUREI lpObj;
  363. } DIRECT3DTEXTUREUNKNOWNI;
  364. typedef struct _DIRECT3DTEXTUREUNKNOWNI *LPDIRECT3DTEXTUREUNKNOWNI;
  365. /*
  366. * Internal version of Direct3DTexture object; it has data after the vtable
  367. */
  368. typedef struct _DIRECT3DTEXTUREI
  369. {
  370. /*** Object Interface ***/
  371. LPDIRECT3DTEXTURECALLBACKS lpVtbl; /* Pointer to callbacks */
  372. int refCnt; /* Reference count */
  373. /*** Object Relations ***/
  374. LIST_HEAD(_blocks, _D3DI_TEXTUREBLOCK) blocks;
  375. /* Devices we're associated with */
  376. /*** Object Data ***/
  377. LPDIRECTDRAWSURFACE lpDDS;
  378. /*
  379. * The special IUnknown interface for the aggregate that does
  380. * not punt to the parent object.
  381. */
  382. LPUNKNOWN lpOwningIUnknown; /* The owning IUnknown */
  383. DIRECT3DTEXTUREUNKNOWNI lpThisIUnknown; /* Our IUnknown interface */
  384. BOOL bIsPalettized;
  385. } DIRECT3DTEXTUREI;
  386. /*
  387. * Internal version of Direct3DViewport object; it has data after the vtable
  388. */
  389. typedef struct _DIRECT3DVIEWPORTI
  390. {
  391. /*** Object Interface ***/
  392. LPDIRECT3DVIEWPORTCALLBACKS lpVtbl; /* Pointer to callbacks */
  393. int refCnt; /* Reference count */
  394. /*** Object Relations */
  395. LPDIRECT3DI lpDirect3DI; /* Parent */
  396. LIST_ENTRY(_DIRECT3DVIEWPORTI)list;
  397. /* Next viewport in IDirect3D */
  398. LPDIRECT3DDEVICEI lpD3DDeviceI; /* Guardian */
  399. CIRCLEQ_ENTRY(_DIRECT3DVIEWPORTI)vw_list;
  400. /* Next viewport in IDirect3DDevice */
  401. /* Lights */
  402. int numLights;
  403. CIRCLEQ_HEAD(_dlights, _DIRECT3DLIGHTI) lights;
  404. /* Associated IDirect3DLights */
  405. /*** Object Data ***/
  406. unsigned long v_id; /* Id for this viewport */
  407. D3DVIEWPORT v_data;
  408. BOOL have_background;
  409. D3DMATERIALHANDLE background;
  410. /* Background material */
  411. BOOL have_depth;
  412. LPDIRECTDRAWSURFACE depth; /* Background depth */
  413. BOOL bLightsChanged;
  414. /* Have the lights changed since they
  415. were last collected? */
  416. DWORD clrCount; /* Number of rects allocated */
  417. LPD3DRECT clrRects; /* Rects used for clearing */
  418. } DIRECT3DVIEWPORTI;
  419. /*
  420. * Picking stuff.
  421. */
  422. typedef struct _D3DI_PICKDATA {
  423. D3DI_EXECUTEDATA* exe;
  424. D3DPICKRECORD* records;
  425. int pick_count;
  426. D3DRECT pick;
  427. } D3DI_PICKDATA, *LPD3DI_PICKDATA;
  428. /*
  429. * Direct3D memory allocation
  430. */
  431. /*
  432. * Register a set of functions to be used in place of malloc, realloc
  433. * and free for memory allocation. The functions D3DMalloc, D3DRealloc
  434. * and D3DFree will use these functions. The default is to use the
  435. * ANSI C library routines malloc, realloc and free.
  436. */
  437. typedef LPVOID (*D3DMALLOCFUNCTION)(size_t);
  438. typedef LPVOID (*D3DREALLOCFUNCTION)(LPVOID, size_t);
  439. typedef VOID (*D3DFREEFUNCTION)(LPVOID);
  440. /*
  441. * Allocate size bytes of memory and return a pointer to it in *p_return.
  442. * Returns D3DERR_BADALLOC with *p_return unchanged if the allocation fails.
  443. */
  444. HRESULT D3DAPI D3DMalloc(LPVOID* p_return, size_t size);
  445. /*
  446. * Change the size of an allocated block of memory. A pointer to the
  447. * block is passed in in *p_inout. If *p_inout is NULL then a new
  448. * block is allocated. If the reallocation is successful, *p_inout is
  449. * changed to point to the new block. If the allocation fails,
  450. * *p_inout is unchanged and D3DERR_BADALLOC is returned.
  451. */
  452. HRESULT D3DAPI D3DRealloc(LPVOID* p_inout, size_t size);
  453. /*
  454. * Free a block of memory previously allocated with D3DMalloc or
  455. * D3DRealloc.
  456. */
  457. VOID D3DAPI D3DFree(LPVOID p);
  458. /*
  459. * Used for raising errors from the driver.
  460. */
  461. HRESULT D3DAPI D3DRaise(HRESULT);
  462. /*
  463. * Convert RLDDI error codes to D3D error codes
  464. */
  465. #define RLDDITOD3DERR(_errcode) (RLDDIToD3DErrors[_errcode])
  466. extern HRESULT RLDDIToD3DErrors[];
  467. /*
  468. * maths
  469. */
  470. #if 1 /* defined(STACK_CALL) && defined(__WATCOMC__) */
  471. D3DVALUE D3DIPow(D3DVALUE, D3DVALUE);
  472. #else
  473. #define D3DIPow(v,p) DTOVAL(pow(VALTOD(v), VALTOD(p)))
  474. #endif
  475. /*
  476. * Light utils
  477. */
  478. void D3DI_DeviceMarkLightEnd(LPDIRECT3DDEVICEI, int);
  479. void D3DI_UpdateLightInternal(LPDIRECT3DLIGHTI);
  480. void D3DI_VectorNormalise12(LPD3DVECTOR v);
  481. D3DTEXTUREHANDLE D3DI_FindTextureHandle(LPDIRECT3DTEXTUREI, LPDIRECT3DDEVICEI);
  482. void D3DI_SetTextureHandle(LPDIRECT3DTEXTUREI, LPDIRECT3DDEVICEI, D3DTEXTUREHANDLE);
  483. void D3DI_RemoveTextureBlock(LPD3DI_TEXTUREBLOCK);
  484. void D3DI_RemoveMaterialBlock(LPD3DI_MATERIALBLOCK);
  485. extern BOOL D3DI_isHALValid(LPD3DHAL_CALLBACKS);
  486. #ifdef BUILD_D3D_LAYER
  487. extern RLDDIValue* RLDDIFInvSqrtTable;
  488. #endif
  489. #ifdef __cplusplus
  490. };
  491. #endif
  492. #endif /* BUILD_HEL */
  493. #endif /* !BUILD_RLAPI */
  494. // @@END_MSINTERNAL
  495. #endif /* _D3DI_H */