| /** |
| * This file is part of the mingw-w64 runtime package. |
| * No warranty is given; refer to the file DISCLAIMER within this package. |
| */ |
| |
| #ifndef __DMEMMGR_INCLUDED__ |
| #define __DMEMMGR_INCLUDED__ |
| |
| #include <winapifamily.h> |
| |
| #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) |
| |
| #define VMEMHEAP_LINEAR __MSABI_LONG(0x1) |
| #define VMEMHEAP_RECTANGULAR __MSABI_LONG(0x2) |
| #define VMEMHEAP_ALIGNMENT __MSABI_LONG(0x4) |
| |
| #define SURFACEALIGN_DISCARDABLE __MSABI_LONG(0x1) |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| typedef ULONG_PTR FLATPTR; |
| |
| typedef struct _SURFACEALIGNMENT { |
| __C89_NAMELESS union { |
| struct { |
| DWORD dwStartAlignment; |
| DWORD dwPitchAlignment; |
| DWORD dwFlags; |
| DWORD dwReserved2; |
| } Linear; |
| struct { |
| DWORD dwXAlignment; |
| DWORD dwYAlignment; |
| DWORD dwFlags; |
| DWORD dwReserved2; |
| } Rectangular; |
| }; |
| } SURFACEALIGNMENT; |
| |
| typedef struct _HEAPALIGNMENT { |
| DWORD dwSize; |
| DDSCAPS ddsCaps; |
| DWORD dwReserved; |
| SURFACEALIGNMENT ExecuteBuffer; |
| SURFACEALIGNMENT Overlay; |
| SURFACEALIGNMENT Texture; |
| SURFACEALIGNMENT ZBuffer; |
| SURFACEALIGNMENT AlphaBuffer; |
| SURFACEALIGNMENT Offscreen; |
| SURFACEALIGNMENT FlipTarget; |
| } HEAPALIGNMENT; |
| |
| typedef struct _DD_GETHEAPALIGNMENTDATA { |
| ULONG_PTR dwInstance; |
| DWORD dwHeap; |
| HRESULT ddRVal; |
| VOID *GetHeapAlignment; |
| HEAPALIGNMENT Alignment; |
| } DD_GETHEAPALIGNMENTDATA; |
| |
| 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 _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; |
| #if NTDDI_VERSION >= 0x05010000 |
| BYTE *pAgpCommitMask; |
| DWORD dwAgpCommitMaskSize; |
| #endif |
| } VMEMHEAP; |
| |
| #ifndef __NTDDKCOMP__ |
| typedef struct _VIDMEM *LPVIDMEM; |
| #else |
| typedef struct _VIDEOMEMORY *LPVIDMEM; |
| #endif |
| |
| typedef struct _SURFACEALIGNMENT *LPSURFACEALIGNMENT; |
| typedef struct _HEAPALIGNMENT *LPHEAPALIGNMENT; |
| typedef struct _DD_GETHEAPALIGNMENTDATA *PDD_GETHEAPALIGNMENTDATA; |
| typedef VMEMHEAP *LPVMEMHEAP; |
| |
| #ifndef __NTDDKCOMP__ |
| extern FLATPTR WINAPI VidMemAlloc (LPVMEMHEAP pvmh, DWORD width, DWORD height); |
| #endif |
| extern FLATPTR WINAPI HeapVidMemAllocAligned (LPVIDMEM lpVidMem, DWORD dwWidth, DWORD dwHeight, LPSURFACEALIGNMENT lpAlignment, LPLONG lpNewPitch); |
| extern void WINAPI VidMemFree (LPVMEMHEAP pvmh, FLATPTR ptr); |
| |
| #ifdef __cplusplus |
| }; |
| #endif |
| |
| #endif |
| #endif |