dmemmgr.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /**
  2. * This file is part of the mingw-w64 runtime package.
  3. * No warranty is given; refer to the file DISCLAIMER within this package.
  4. */
  5. #ifndef __DMEMMGR_INCLUDED__
  6. #define __DMEMMGR_INCLUDED__
  7. #include <winapifamily.h>
  8. #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
  9. #define VMEMHEAP_LINEAR __MSABI_LONG(0x1)
  10. #define VMEMHEAP_RECTANGULAR __MSABI_LONG(0x2)
  11. #define VMEMHEAP_ALIGNMENT __MSABI_LONG(0x4)
  12. #define SURFACEALIGN_DISCARDABLE __MSABI_LONG(0x1)
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. typedef ULONG_PTR FLATPTR;
  17. typedef struct _SURFACEALIGNMENT {
  18. __C89_NAMELESS union {
  19. struct {
  20. DWORD dwStartAlignment;
  21. DWORD dwPitchAlignment;
  22. DWORD dwFlags;
  23. DWORD dwReserved2;
  24. } Linear;
  25. struct {
  26. DWORD dwXAlignment;
  27. DWORD dwYAlignment;
  28. DWORD dwFlags;
  29. DWORD dwReserved2;
  30. } Rectangular;
  31. };
  32. } SURFACEALIGNMENT;
  33. typedef struct _HEAPALIGNMENT {
  34. DWORD dwSize;
  35. DDSCAPS ddsCaps;
  36. DWORD dwReserved;
  37. SURFACEALIGNMENT ExecuteBuffer;
  38. SURFACEALIGNMENT Overlay;
  39. SURFACEALIGNMENT Texture;
  40. SURFACEALIGNMENT ZBuffer;
  41. SURFACEALIGNMENT AlphaBuffer;
  42. SURFACEALIGNMENT Offscreen;
  43. SURFACEALIGNMENT FlipTarget;
  44. } HEAPALIGNMENT;
  45. typedef struct _DD_GETHEAPALIGNMENTDATA {
  46. ULONG_PTR dwInstance;
  47. DWORD dwHeap;
  48. HRESULT ddRVal;
  49. VOID *GetHeapAlignment;
  50. HEAPALIGNMENT Alignment;
  51. } DD_GETHEAPALIGNMENTDATA;
  52. typedef struct _VMEML {
  53. struct _VMEML *next;
  54. FLATPTR ptr;
  55. DWORD size;
  56. WINBOOL bDiscardable;
  57. } VMEML,*LPVMEML,**LPLPVMEML;
  58. typedef struct _VMEMR {
  59. struct _VMEMR *next;
  60. struct _VMEMR *prev;
  61. struct _VMEMR *pUp;
  62. struct _VMEMR *pDown;
  63. struct _VMEMR *pLeft;
  64. struct _VMEMR *pRight;
  65. FLATPTR ptr;
  66. DWORD size;
  67. DWORD x;
  68. DWORD y;
  69. DWORD cx;
  70. DWORD cy;
  71. DWORD flags;
  72. FLATPTR pBits;
  73. WINBOOL bDiscardable;
  74. } VMEMR,*LPVMEMR,**LPLPVMEMR;
  75. typedef struct _VMEMHEAP {
  76. DWORD dwFlags;
  77. DWORD stride;
  78. LPVOID freeList;
  79. LPVOID allocList;
  80. DWORD dwTotalSize;
  81. FLATPTR fpGARTLin;
  82. FLATPTR fpGARTDev;
  83. DWORD dwCommitedSize;
  84. DWORD dwCoalesceCount;
  85. HEAPALIGNMENT Alignment;
  86. DDSCAPSEX ddsCapsEx;
  87. DDSCAPSEX ddsCapsExAlt;
  88. #ifndef IS_16
  89. LARGE_INTEGER liPhysAGPBase;
  90. #endif
  91. HANDLE hdevAGP;
  92. LPVOID pvPhysRsrv;
  93. #if NTDDI_VERSION >= 0x05010000
  94. BYTE *pAgpCommitMask;
  95. DWORD dwAgpCommitMaskSize;
  96. #endif
  97. } VMEMHEAP;
  98. #ifndef __NTDDKCOMP__
  99. typedef struct _VIDMEM *LPVIDMEM;
  100. #else
  101. typedef struct _VIDEOMEMORY *LPVIDMEM;
  102. #endif
  103. typedef struct _SURFACEALIGNMENT *LPSURFACEALIGNMENT;
  104. typedef struct _HEAPALIGNMENT *LPHEAPALIGNMENT;
  105. typedef struct _DD_GETHEAPALIGNMENTDATA *PDD_GETHEAPALIGNMENTDATA;
  106. typedef VMEMHEAP *LPVMEMHEAP;
  107. #ifndef __NTDDKCOMP__
  108. extern FLATPTR WINAPI VidMemAlloc (LPVMEMHEAP pvmh, DWORD width, DWORD height);
  109. #endif
  110. extern FLATPTR WINAPI HeapVidMemAllocAligned (LPVIDMEM lpVidMem, DWORD dwWidth, DWORD dwHeight, LPSURFACEALIGNMENT lpAlignment, LPLONG lpNewPitch);
  111. extern void WINAPI VidMemFree (LPVMEMHEAP pvmh, FLATPTR ptr);
  112. #ifdef __cplusplus
  113. };
  114. #endif
  115. #endif
  116. #endif