Bring back ext2 code from branch
[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 typedef struct _SURFACEALIGNMENT
61 {
62 union
63 {
64 struct
65 {
66 DWORD dwStartAlignment;
67 DWORD dwPitchAlignment;
68 DWORD dwFlags;
69 DWORD dwReserved2;
70 } Linear;
71 struct
72 {
73 DWORD dwXAlignment;
74 DWORD dwYAlignment;
75 DWORD dwFlags;
76 DWORD dwReserved2;
77 } Rectangular;
78 };
79 } SURFACEALIGNMENT, *LPSURFACEALIGNMENT;
80
81 typedef struct _HEAPALIGNMENT
82 {
83 DWORD dwSize;
84 DDSCAPS ddsCaps;
85 DWORD dwReserved;
86 SURFACEALIGNMENT ExecuteBuffer;
87 SURFACEALIGNMENT Overlay;
88 SURFACEALIGNMENT Texture;
89 SURFACEALIGNMENT ZBuffer;
90 SURFACEALIGNMENT AlphaBuffer;
91 SURFACEALIGNMENT Offscreen;
92 SURFACEALIGNMENT FlipTarget;
93 } HEAPALIGNMENT, *LPHEAPALIGNMENT;
94
95 typedef struct _VMEMHEAP
96 {
97 DWORD dwFlags;
98 DWORD stride;
99 LPVOID freeList;
100 LPVOID allocList;
101 DWORD dwTotalSize;
102 FLATPTR fpGARTLin;
103 FLATPTR fpGARTDev;
104 DWORD dwCommitedSize;
105 DWORD dwCoalesceCount;
106 HEAPALIGNMENT Alignment;
107 DDSCAPSEX ddsCapsEx;
108 DDSCAPSEX ddsCapsExAlt;
109 #ifndef IS_16
110 LARGE_INTEGER liPhysAGPBase;
111 #endif
112 HANDLE hdevAGP;
113 LPVOID pvPhysRsrv;
114 BYTE* pAgpCommitMask;
115 DWORD dwAgpCommitMaskSize;
116 } VMEMHEAP, *LPVMEMHEAP;
117
118 typedef struct _DD_GETHEAPALIGNMENTDATA
119 {
120 ULONG_PTR dwInstance;
121 DWORD dwHeap;
122 HRESULT ddRVal;
123 VOID* GetHeapAlignment;
124 HEAPALIGNMENT Alignment;
125 } DD_GETHEAPALIGNMENTDATA, *PDD_GETHEAPALIGNMENTDATA;
126
127 extern void WINAPI VidMemFree( LPVMEMHEAP pvmh, FLATPTR ptr);
128 extern FLATPTR WINAPI VidMemAlloc( LPVMEMHEAP pvmh, DWORD width, DWORD height);
129
130 extern FLATPTR WINAPI
131 HeapVidMemAllocAligned(
132 LPVIDMEM lpVidMem,
133 DWORD dwWidth,
134 DWORD dwHeight,
135 LPSURFACEALIGNMENT lpAlignment ,
136 LPLONG lpNewPitch );
137
138
139
140
141
142
143 #ifdef __cplusplus
144 };
145 #endif
146
147 #endif