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