1 2 /* $Id: $ 3 * 4 * COPYRIGHT: This file is in the public domain. 5 * PROJECT: ReactOS kernel 6 * FILE: 7 * PURPOSE: Directx headers 8 * PROGRAMMER: Magnus Olsen (greatlrd) 9 * 10 */ 11 12 #ifndef __DMEMMGR_INCLUDED__ 13 #define __DMEMMGR_INCLUDED__ 14 15 #ifdef __cplusplus 16 extern "C" { 17 #endif 18 19 #ifndef __NTDDKCOMP__ 20 21 #ifndef FLATPTR_DEFINED 22 typedef ULONG_PTR FLATPTR; 23 #define FLATPTR_DEFINED 24 #endif 25 26 typedef struct _VIDMEM *LPVIDMEM; 27 28 #else /* __NTDDKCOMP__ */ 29 30 #ifndef FLATPTR_DEFINED 31 typedef ULONG_PTR FLATPTR; 32 #define FLATPTR_DEFINED 33 #endif 34 35 typedef struct _VIDEOMEMORY *LPVIDMEM; 36 #endif /* __NTDDKCOMP__ */ 37 38 #define SURFACEALIGN_DISCARDABLE 0x00000001 39 #define VMEMHEAP_LINEAR 0x00000001 40 #define VMEMHEAP_RECTANGULAR 0x00000002 41 #define VMEMHEAP_ALIGNMENT 0x00000004 42 43 typedef struct _VMEML 44 { 45 struct _VMEML *next; 46 FLATPTR ptr; 47 DWORD size; 48 WINBOOL bDiscardable; 49 } VMEML, *LPVMEML, *LPLPVMEML; 50 51 typedef struct _VMEMR 52 { 53 struct _VMEMR *next; 54 struct _VMEMR *prev; 55 56 struct _VMEMR *pUp; 57 struct _VMEMR *pDown; 58 struct _VMEMR *pLeft; 59 struct _VMEMR *pRight; 60 FLATPTR ptr; 61 DWORD size; 62 DWORD x; 63 DWORD y; 64 DWORD cx; 65 DWORD cy; 66 DWORD flags; 67 FLATPTR pBits; 68 WINBOOL bDiscardable; 69 } VMEMR, *LPVMEMR, *LPLPVMEMR; 70 71 typedef struct _SURFACEALIGNMENT 72 { 73 __GNU_EXTENSION union { 74 struct { 75 DWORD dwStartAlignment; 76 DWORD dwPitchAlignment; 77 DWORD dwFlags; 78 DWORD dwReserved2; 79 } Linear; 80 struct { 81 DWORD dwXAlignment; 82 DWORD dwYAlignment; 83 DWORD dwFlags; 84 DWORD dwReserved2; 85 } Rectangular; 86 }; 87 } SURFACEALIGNMENT, *LPSURFACEALIGNMENT; 88 89 typedef struct _HEAPALIGNMENT 90 { 91 DWORD dwSize; 92 DDSCAPS ddsCaps; 93 DWORD dwReserved; 94 SURFACEALIGNMENT ExecuteBuffer; 95 SURFACEALIGNMENT Overlay; 96 SURFACEALIGNMENT Texture; 97 SURFACEALIGNMENT ZBuffer; 98 SURFACEALIGNMENT AlphaBuffer; 99 SURFACEALIGNMENT Offscreen; 100 SURFACEALIGNMENT FlipTarget; 101 } HEAPALIGNMENT, *LPHEAPALIGNMENT; 102 103 typedef struct _VMEMHEAP 104 { 105 DWORD dwFlags; 106 DWORD stride; 107 LPVOID freeList; 108 LPVOID allocList; 109 DWORD dwTotalSize; 110 FLATPTR fpGARTLin; 111 FLATPTR fpGARTDev; 112 DWORD dwCommitedSize; 113 DWORD dwCoalesceCount; 114 HEAPALIGNMENT Alignment; 115 DDSCAPSEX ddsCapsEx; 116 DDSCAPSEX ddsCapsExAlt; 117 #ifndef IS_16 118 LARGE_INTEGER liPhysAGPBase; 119 #endif 120 HANDLE hdevAGP; 121 LPVOID pvPhysRsrv; 122 BYTE* pAgpCommitMask; 123 DWORD dwAgpCommitMaskSize; 124 } VMEMHEAP, *LPVMEMHEAP; 125 126 typedef struct _DD_GETHEAPALIGNMENTDATA 127 { 128 ULONG_PTR dwInstance; 129 DWORD dwHeap; 130 HRESULT ddRVal; 131 VOID* GetHeapAlignment; 132 HEAPALIGNMENT Alignment; 133 } DD_GETHEAPALIGNMENTDATA; 134 135 #ifndef DD_GETHEAPALIGNMENTDATA_DECLARED 136 typedef DD_GETHEAPALIGNMENTDATA *PDD_GETHEAPALIGNMENTDATA; 137 #define DD_GETHEAPALIGNMENTDATA_DECLARED 138 #endif 139 140 extern void WINAPI VidMemFree (LPVMEMHEAP pvmh, FLATPTR ptr); 141 extern FLATPTR WINAPI VidMemAlloc (LPVMEMHEAP pvmh, DWORD width, DWORD height); 142 143 extern FLATPTR WINAPI 144 HeapVidMemAllocAligned( 145 LPVIDMEM lpVidMem, 146 DWORD dwWidth, 147 DWORD dwHeight, 148 LPSURFACEALIGNMENT lpAlignment, 149 LPLONG lpNewPitch ); 150 151 #ifdef __cplusplus 152 } 153 #endif 154 155 #endif /* __DMEMMGR_INCLUDED__ */ 156 157