move crt, ddk and GL includes
[reactos.git] / reactos / include / ddk / dmemmgr.h
1
2 /* $Id: $
3 *
4 * COPYRIGHT: See COPYING in the top level directory
5 * PROJECT: ReactOS kernel
6 * FILE:
7 * PURPOSE: Directx headers
8 * PROGRAMMER: Magnus Olsen (greatlrd)
9 *
10 */
11
12 #ifndef __DMEMMGR_INCLUDED__
13 #define __DMEMMGR_INCLUDED__
14
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18
19 #ifndef __NTDDKCOMP__
20 typedef ULONG_PTR FLATPTR;
21 typedef struct _VIDMEM *LPVIDMEM;
22 #else
23 typedef ULONG_PTR FLATPTR;
24 typedef struct _VIDEOMEMORY *LPVIDMEM;
25 #endif
26
27 #define SURFACEALIGN_DISCARDABLE 0x00000001
28 #define VMEMHEAP_LINEAR 0x00000001
29 #define VMEMHEAP_RECTANGULAR 0x00000002
30 #define VMEMHEAP_ALIGNMENT 0x00000004
31
32 typedef struct _VMEML
33 {
34 struct _VMEML *next;
35 FLATPTR ptr;
36 DWORD size;
37 BOOL bDiscardable;
38 } VMEML, *LPVMEML, *LPLPVMEML;
39
40 typedef struct _VMEMR
41 {
42 struct _VMEMR *next;
43 struct _VMEMR *prev;
44
45 struct _VMEMR *pUp;
46 struct _VMEMR *pDown;
47 struct _VMEMR *pLeft;
48 struct _VMEMR *pRight;
49 FLATPTR ptr;
50 DWORD size;
51 DWORD x;
52 DWORD y;
53 DWORD cx;
54 DWORD cy;
55 DWORD flags;
56 FLATPTR pBits;
57 BOOL bDiscardable;
58 } VMEMR, *LPVMEMR, *LPLPVMEMR;
59
60
61 typedef struct _SURFACEALIGNMENT
62 {
63 union
64 {
65 struct
66 {
67 DWORD dwStartAlignment;
68 DWORD dwPitchAlignment;
69 DWORD dwFlags;
70 DWORD dwReserved2;
71 } Linear;
72 struct
73 {
74 DWORD dwXAlignment;
75 DWORD dwYAlignment;
76 DWORD dwFlags;
77 DWORD dwReserved2;
78 } Rectangular;
79 };
80 } SURFACEALIGNMENT, *LPSURFACEALIGNMENT;
81
82 typedef struct _HEAPALIGNMENT
83 {
84 DWORD dwSize;
85 DDSCAPS ddsCaps;
86 DWORD dwReserved;
87 SURFACEALIGNMENT ExecuteBuffer;
88 SURFACEALIGNMENT Overlay;
89 SURFACEALIGNMENT Texture;
90 SURFACEALIGNMENT ZBuffer;
91 SURFACEALIGNMENT AlphaBuffer;
92 SURFACEALIGNMENT Offscreen;
93 SURFACEALIGNMENT FlipTarget;
94 } HEAPALIGNMENT, *LPHEAPALIGNMENT;
95
96
97 typedef struct _VMEMHEAP
98 {
99 DWORD dwFlags;
100 DWORD stride;
101 LPVOID freeList;
102 LPVOID allocList;
103 DWORD dwTotalSize;
104 FLATPTR fpGARTLin;
105 FLATPTR fpGARTDev;
106 DWORD dwCommitedSize;
107 DWORD dwCoalesceCount;
108 HEAPALIGNMENT Alignment;
109 DDSCAPSEX ddsCapsEx;
110 DDSCAPSEX ddsCapsExAlt;
111 #ifndef IS_16
112 LARGE_INTEGER liPhysAGPBase;
113 #endif
114 HANDLE hdevAGP;
115 LPVOID pvPhysRsrv;
116 BYTE* pAgpCommitMask;
117 DWORD dwAgpCommitMaskSize;
118 } VMEMHEAP;
119
120 typedef VMEMHEAP FAR *LPVMEMHEAP;
121
122 typedef struct _DD_GETHEAPALIGNMENTDATA
123 {
124 ULONG_PTR dwInstance;
125 DWORD dwHeap;
126 HRESULT ddRVal;
127 VOID* GetHeapAlignment;
128 HEAPALIGNMENT Alignment;
129 } DD_GETHEAPALIGNMENTDATA, *PDD_GETHEAPALIGNMENTDATA;
130
131 extern void WINAPI VidMemFree( LPVMEMHEAP pvmh, FLATPTR ptr);
132
133 extern FLATPTR WINAPI
134 HeapVidMemAllocAligned(
135 LPVIDMEM lpVidMem,
136 DWORD dwWidth,
137 DWORD dwHeight,
138 LPSURFACEALIGNMENT lpAlignment ,
139 LPLONG lpNewPitch );
140
141
142 #ifndef __NTDDKCOMP__
143 extern FLATPTR WINAPI VidMemAlloc( LPVMEMHEAP pvmh, DWORD width, DWORD height);
144 #endif
145
146 #ifdef __cplusplus
147 };
148 #endif
149
150 #endif