|  | 
 | /* $Id: $ | 
 |  * | 
 |  * COPYRIGHT:            This file is in the public domain. | 
 |  * PROJECT:              ReactOS kernel | 
 |  * FILE: | 
 |  * PURPOSE:              Directx headers | 
 |  * PROGRAMMER:           Magnus Olsen (greatlrd) | 
 |  * | 
 |  */ | 
 |  | 
 | #ifndef __DMEMMGR_INCLUDED__ | 
 | #define __DMEMMGR_INCLUDED__ | 
 |  | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif | 
 |  | 
 | #ifndef __NTDDKCOMP__ | 
 |  | 
 | #ifndef FLATPTR_DEFINED | 
 | typedef ULONG_PTR FLATPTR; | 
 | #define FLATPTR_DEFINED | 
 | #endif | 
 |  | 
 | typedef struct _VIDMEM *LPVIDMEM; | 
 |  | 
 | #else /* __NTDDKCOMP__ */ | 
 |  | 
 | #ifndef FLATPTR_DEFINED | 
 | typedef ULONG_PTR FLATPTR; | 
 | #define FLATPTR_DEFINED | 
 | #endif | 
 |  | 
 | typedef struct _VIDEOMEMORY *LPVIDMEM; | 
 | #endif /* __NTDDKCOMP__ */ | 
 |  | 
 | #define SURFACEALIGN_DISCARDABLE 0x00000001 | 
 | #define VMEMHEAP_LINEAR 0x00000001 | 
 | #define VMEMHEAP_RECTANGULAR 0x00000002 | 
 | #define VMEMHEAP_ALIGNMENT 0x00000004 | 
 |  | 
 | typedef struct _VMEML | 
 | { | 
 |   struct _VMEML *next; | 
 |   FLATPTR ptr; | 
 |   DWORD size; | 
 |   WINBOOL bDiscardable; | 
 | } VMEML, *LPVMEML, *LPLPVMEML; | 
 |  | 
 | typedef struct _VMEMR | 
 | { | 
 |   struct _VMEMR *next; | 
 |   struct _VMEMR *prev; | 
 |  | 
 |   struct _VMEMR *pUp; | 
 |   struct _VMEMR *pDown; | 
 |   struct _VMEMR *pLeft; | 
 |   struct _VMEMR *pRight; | 
 |   FLATPTR  ptr; | 
 |   DWORD size; | 
 |   DWORD x; | 
 |   DWORD y; | 
 |   DWORD cx; | 
 |   DWORD cy; | 
 |   DWORD flags; | 
 |   FLATPTR pBits; | 
 |   WINBOOL bDiscardable; | 
 | } VMEMR,  *LPVMEMR,  *LPLPVMEMR; | 
 |  | 
 | typedef struct _SURFACEALIGNMENT | 
 | { | 
 |   __GNU_EXTENSION union { | 
 |     struct { | 
 |       DWORD dwStartAlignment; | 
 |       DWORD dwPitchAlignment; | 
 |       DWORD dwFlags; | 
 |       DWORD dwReserved2; | 
 |     } Linear; | 
 |     struct { | 
 |       DWORD dwXAlignment; | 
 |       DWORD dwYAlignment; | 
 |       DWORD dwFlags; | 
 |       DWORD dwReserved2; | 
 |     } Rectangular; | 
 |   }; | 
 | } SURFACEALIGNMENT, *LPSURFACEALIGNMENT; | 
 |  | 
 | typedef struct _HEAPALIGNMENT | 
 | { | 
 |     DWORD dwSize; | 
 |     DDSCAPS ddsCaps; | 
 |     DWORD dwReserved; | 
 |     SURFACEALIGNMENT ExecuteBuffer; | 
 |     SURFACEALIGNMENT Overlay; | 
 |     SURFACEALIGNMENT Texture; | 
 |     SURFACEALIGNMENT ZBuffer; | 
 |     SURFACEALIGNMENT AlphaBuffer; | 
 |     SURFACEALIGNMENT Offscreen; | 
 |     SURFACEALIGNMENT FlipTarget; | 
 | } HEAPALIGNMENT, *LPHEAPALIGNMENT; | 
 |  | 
 | typedef struct _VMEMHEAP | 
 | { | 
 |     DWORD dwFlags; | 
 |     DWORD stride; | 
 |     LPVOID freeList; | 
 |     LPVOID allocList; | 
 |     DWORD dwTotalSize; | 
 |     FLATPTR fpGARTLin; | 
 |     FLATPTR fpGARTDev; | 
 |     DWORD dwCommitedSize; | 
 |     DWORD dwCoalesceCount; | 
 |     HEAPALIGNMENT Alignment; | 
 |     DDSCAPSEX ddsCapsEx; | 
 |     DDSCAPSEX ddsCapsExAlt; | 
 | #ifndef IS_16 | 
 |     LARGE_INTEGER liPhysAGPBase; | 
 | #endif | 
 |     HANDLE hdevAGP; | 
 |     LPVOID pvPhysRsrv; | 
 |     BYTE* pAgpCommitMask; | 
 |     DWORD dwAgpCommitMaskSize; | 
 | } VMEMHEAP, *LPVMEMHEAP; | 
 |  | 
 | typedef struct _DD_GETHEAPALIGNMENTDATA | 
 | { | 
 |     ULONG_PTR dwInstance; | 
 |     DWORD dwHeap; | 
 |     HRESULT ddRVal; | 
 |     VOID* GetHeapAlignment; | 
 |     HEAPALIGNMENT Alignment; | 
 | } DD_GETHEAPALIGNMENTDATA; | 
 |  | 
 | #ifndef DD_GETHEAPALIGNMENTDATA_DECLARED | 
 | typedef DD_GETHEAPALIGNMENTDATA *PDD_GETHEAPALIGNMENTDATA; | 
 | #define DD_GETHEAPALIGNMENTDATA_DECLARED | 
 | #endif | 
 |  | 
 | extern void WINAPI VidMemFree (LPVMEMHEAP pvmh, FLATPTR ptr); | 
 | extern FLATPTR WINAPI VidMemAlloc (LPVMEMHEAP pvmh, DWORD width, DWORD height); | 
 |  | 
 | extern FLATPTR WINAPI | 
 |        HeapVidMemAllocAligned( | 
 |                                LPVIDMEM lpVidMem, | 
 |                                DWORD dwWidth, | 
 |                                DWORD dwHeight, | 
 |                                LPSURFACEALIGNMENT lpAlignment, | 
 |                                LPLONG lpNewPitch ); | 
 |  | 
 | #ifdef __cplusplus | 
 | } | 
 | #endif | 
 |  | 
 | #endif /* __DMEMMGR_INCLUDED__ */ | 
 |  |