• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 /* __NTDDKCOMP__ */
29 
30 #ifndef FLATPTR_DEFINED
31 typedef ULONG_PTR FLATPTR;
32 #define FLATPTR_DEFINED
33 #endif
34 
35 typedef struct _VIDEOMEMORY *LPVIDMEM;
36 #endif /* __NTDDKCOMP__ */
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   WINBOOL 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   WINBOOL bDiscardable;
69 } VMEMR,  *LPVMEMR,  *LPLPVMEMR;
70 
71 typedef struct _SURFACEALIGNMENT
72 {
73   __GNU_EXTENSION union {
74     struct {
75       DWORD dwStartAlignment;
76       DWORD dwPitchAlignment;
77       DWORD dwFlags;
78       DWORD dwReserved2;
79     } Linear;
80     struct {
81       DWORD dwXAlignment;
82       DWORD dwYAlignment;
83       DWORD dwFlags;
84       DWORD dwReserved2;
85     } Rectangular;
86   };
87 } SURFACEALIGNMENT, *LPSURFACEALIGNMENT;
88 
89 typedef struct _HEAPALIGNMENT
90 {
91     DWORD dwSize;
92     DDSCAPS ddsCaps;
93     DWORD dwReserved;
94     SURFACEALIGNMENT ExecuteBuffer;
95     SURFACEALIGNMENT Overlay;
96     SURFACEALIGNMENT Texture;
97     SURFACEALIGNMENT ZBuffer;
98     SURFACEALIGNMENT AlphaBuffer;
99     SURFACEALIGNMENT Offscreen;
100     SURFACEALIGNMENT FlipTarget;
101 } HEAPALIGNMENT, *LPHEAPALIGNMENT;
102 
103 typedef struct _VMEMHEAP
104 {
105     DWORD dwFlags;
106     DWORD stride;
107     LPVOID freeList;
108     LPVOID allocList;
109     DWORD dwTotalSize;
110     FLATPTR fpGARTLin;
111     FLATPTR fpGARTDev;
112     DWORD dwCommitedSize;
113     DWORD dwCoalesceCount;
114     HEAPALIGNMENT Alignment;
115     DDSCAPSEX ddsCapsEx;
116     DDSCAPSEX ddsCapsExAlt;
117 #ifndef IS_16
118     LARGE_INTEGER liPhysAGPBase;
119 #endif
120     HANDLE hdevAGP;
121     LPVOID pvPhysRsrv;
122     BYTE* pAgpCommitMask;
123     DWORD dwAgpCommitMaskSize;
124 } VMEMHEAP, *LPVMEMHEAP;
125 
126 typedef struct _DD_GETHEAPALIGNMENTDATA
127 {
128     ULONG_PTR dwInstance;
129     DWORD dwHeap;
130     HRESULT ddRVal;
131     VOID* GetHeapAlignment;
132     HEAPALIGNMENT Alignment;
133 } DD_GETHEAPALIGNMENTDATA;
134 
135 #ifndef DD_GETHEAPALIGNMENTDATA_DECLARED
136 typedef DD_GETHEAPALIGNMENTDATA *PDD_GETHEAPALIGNMENTDATA;
137 #define DD_GETHEAPALIGNMENTDATA_DECLARED
138 #endif
139 
140 extern void WINAPI VidMemFree (LPVMEMHEAP pvmh, FLATPTR ptr);
141 extern FLATPTR WINAPI VidMemAlloc (LPVMEMHEAP pvmh, DWORD width, DWORD height);
142 
143 extern FLATPTR WINAPI
144        HeapVidMemAllocAligned(
145                                LPVIDMEM lpVidMem,
146                                DWORD dwWidth,
147                                DWORD dwHeight,
148                                LPSURFACEALIGNMENT lpAlignment,
149                                LPLONG lpNewPitch );
150 
151 #ifdef __cplusplus
152 }
153 #endif
154 
155 #endif /* __DMEMMGR_INCLUDED__ */
156 
157