Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171/* * COPYRIGHT: This file is in the public domain. * PROJECT: ReactOS kernel * FILE: include/psdk/dmemmgr.h * PURPOSE: Directx headers * PROGRAMMER: Magnus Olsen (greatlrd) * */
#ifndef __DMEMMGR_INCLUDED__#define __DMEMMGR_INCLUDED__
/* Helper macro to enable gcc's extension. */#ifndef __GNU_EXTENSION#ifdef __GNUC__#define __GNU_EXTENSION __extension__#else#define __GNU_EXTENSION#endif#endif
#ifdef __cplusplusextern "C" {#endif
#ifndef __NTDDKCOMP__
#ifndef FLATPTR_DEFINEDtypedef ULONG_PTR FLATPTR;#define FLATPTR_DEFINED#endif
typedef struct _VIDMEM *LPVIDMEM;
#else
#ifndef FLATPTR_DEFINEDtypedef ULONG_PTR FLATPTR;#define FLATPTR_DEFINED#endif
typedef struct _VIDEOMEMORY *LPVIDMEM;#endif
#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; BOOL 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; BOOL 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_DECLAREDtypedef 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