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