mirror of
https://github.com/QB64Official/qb64.git
synced 2024-08-22 03:15:07 +00:00
134 lines
3 KiB
C
134 lines
3 KiB
C
/**
|
|
* 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
|