blob: 6b79d5a350b355d5dbc39916201582443ce31ef1 [file] [log] [blame]
/* $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__ */