directx.idl 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. @clr-namespace Avalonia.Win32.DxgiSwapchain
  2. @clr-access internal
  3. @clr-map FLOAT float
  4. @clr-map HSTRING IntPtr
  5. @clr-map Vector2 System.Numerics.Vector2
  6. @clr-map Vector3 System.Numerics.Vector3
  7. @clr-map Quaternion System.Numerics.Quaternion
  8. @clr-map Matrix4x4 System.Numerics.Matrix4x4
  9. @clr-map RECT Avalonia.Win32.Interop.UnmanagedMethods.RECT
  10. @clr-map SIZE Avalonia.Win32.Interop.UnmanagedMethods.SIZE
  11. @clr-map POINT Avalonia.Win32.Interop.UnmanagedMethods.POINT
  12. @clr-map HWND IntPtr
  13. @clr-map BOOL int
  14. @clr-map DWORD int
  15. @clr-map boolean int
  16. @clr-map BYTE byte
  17. @clr-map INT16 short
  18. @clr-map INT32 int
  19. @clr-map INT64 long
  20. @clr-map UINT ushort
  21. @clr-map UINT16 ushort
  22. @clr-map ULONG uint
  23. @clr-map UINT32 uint
  24. @clr-map UINT64 ulong
  25. @clr-map DOUBLE double
  26. @clr-map GUID System.Guid
  27. @clr-map REFGUID System.Guid*
  28. @clr-map REFIID System.Guid*
  29. @clr-map WCHAR System.Char
  30. @clr-map HMODULE void*
  31. @clr-map DXGI_USAGE uint
  32. @clr-map LARGE_INTEGER ulong
  33. @clr-map INT int
  34. @clr-map DXGI_SHARED_RESOURCE void*
  35. @clr-map LUID ulong
  36. @clr-map LPSTR ushort*
  37. enum DXGI_FORMAT
  38. {
  39. DXGI_FORMAT_UNKNOWN = 0,
  40. DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
  41. DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
  42. DXGI_FORMAT_R32G32B32A32_UINT = 3,
  43. DXGI_FORMAT_R32G32B32A32_SINT = 4,
  44. DXGI_FORMAT_R32G32B32_TYPELESS = 5,
  45. DXGI_FORMAT_R32G32B32_FLOAT = 6,
  46. DXGI_FORMAT_R32G32B32_UINT = 7,
  47. DXGI_FORMAT_R32G32B32_SINT = 8,
  48. DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
  49. DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
  50. DXGI_FORMAT_R16G16B16A16_UNORM = 11,
  51. DXGI_FORMAT_R16G16B16A16_UINT = 12,
  52. DXGI_FORMAT_R16G16B16A16_SNORM = 13,
  53. DXGI_FORMAT_R16G16B16A16_SINT = 14,
  54. DXGI_FORMAT_R32G32_TYPELESS = 15,
  55. DXGI_FORMAT_R32G32_FLOAT = 16,
  56. DXGI_FORMAT_R32G32_UINT = 17,
  57. DXGI_FORMAT_R32G32_SINT = 18,
  58. DXGI_FORMAT_R32G8X24_TYPELESS = 19,
  59. DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
  60. DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
  61. DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
  62. DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
  63. DXGI_FORMAT_R10G10B10A2_UNORM = 24,
  64. DXGI_FORMAT_R10G10B10A2_UINT = 25,
  65. DXGI_FORMAT_R11G11B10_FLOAT = 26,
  66. DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
  67. DXGI_FORMAT_R8G8B8A8_UNORM = 28,
  68. DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
  69. DXGI_FORMAT_R8G8B8A8_UINT = 30,
  70. DXGI_FORMAT_R8G8B8A8_SNORM = 31,
  71. DXGI_FORMAT_R8G8B8A8_SINT = 32,
  72. DXGI_FORMAT_R16G16_TYPELESS = 33,
  73. DXGI_FORMAT_R16G16_FLOAT = 34,
  74. DXGI_FORMAT_R16G16_UNORM = 35,
  75. DXGI_FORMAT_R16G16_UINT = 36,
  76. DXGI_FORMAT_R16G16_SNORM = 37,
  77. DXGI_FORMAT_R16G16_SINT = 38,
  78. DXGI_FORMAT_R32_TYPELESS = 39,
  79. DXGI_FORMAT_D32_FLOAT = 40,
  80. DXGI_FORMAT_R32_FLOAT = 41,
  81. DXGI_FORMAT_R32_UINT = 42,
  82. DXGI_FORMAT_R32_SINT = 43,
  83. DXGI_FORMAT_R24G8_TYPELESS = 44,
  84. DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
  85. DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
  86. DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
  87. DXGI_FORMAT_R8G8_TYPELESS = 48,
  88. DXGI_FORMAT_R8G8_UNORM = 49,
  89. DXGI_FORMAT_R8G8_UINT = 50,
  90. DXGI_FORMAT_R8G8_SNORM = 51,
  91. DXGI_FORMAT_R8G8_SINT = 52,
  92. DXGI_FORMAT_R16_TYPELESS = 53,
  93. DXGI_FORMAT_R16_FLOAT = 54,
  94. DXGI_FORMAT_D16_UNORM = 55,
  95. DXGI_FORMAT_R16_UNORM = 56,
  96. DXGI_FORMAT_R16_UINT = 57,
  97. DXGI_FORMAT_R16_SNORM = 58,
  98. DXGI_FORMAT_R16_SINT = 59,
  99. DXGI_FORMAT_R8_TYPELESS = 60,
  100. DXGI_FORMAT_R8_UNORM = 61,
  101. DXGI_FORMAT_R8_UINT = 62,
  102. DXGI_FORMAT_R8_SNORM = 63,
  103. DXGI_FORMAT_R8_SINT = 64,
  104. DXGI_FORMAT_A8_UNORM = 65,
  105. DXGI_FORMAT_R1_UNORM = 66,
  106. DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
  107. DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
  108. DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
  109. DXGI_FORMAT_BC1_TYPELESS = 70,
  110. DXGI_FORMAT_BC1_UNORM = 71,
  111. DXGI_FORMAT_BC1_UNORM_SRGB = 72,
  112. DXGI_FORMAT_BC2_TYPELESS = 73,
  113. DXGI_FORMAT_BC2_UNORM = 74,
  114. DXGI_FORMAT_BC2_UNORM_SRGB = 75,
  115. DXGI_FORMAT_BC3_TYPELESS = 76,
  116. DXGI_FORMAT_BC3_UNORM = 77,
  117. DXGI_FORMAT_BC3_UNORM_SRGB = 78,
  118. DXGI_FORMAT_BC4_TYPELESS = 79,
  119. DXGI_FORMAT_BC4_UNORM = 80,
  120. DXGI_FORMAT_BC4_SNORM = 81,
  121. DXGI_FORMAT_BC5_TYPELESS = 82,
  122. DXGI_FORMAT_BC5_UNORM = 83,
  123. DXGI_FORMAT_BC5_SNORM = 84,
  124. DXGI_FORMAT_B5G6R5_UNORM = 85,
  125. DXGI_FORMAT_B5G5R5A1_UNORM = 86,
  126. DXGI_FORMAT_B8G8R8A8_UNORM = 87,
  127. DXGI_FORMAT_B8G8R8X8_UNORM = 88,
  128. DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
  129. DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
  130. DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
  131. DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
  132. DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
  133. DXGI_FORMAT_BC6H_TYPELESS = 94,
  134. DXGI_FORMAT_BC6H_UF16 = 95,
  135. DXGI_FORMAT_BC6H_SF16 = 96,
  136. DXGI_FORMAT_BC7_TYPELESS = 97,
  137. DXGI_FORMAT_BC7_UNORM = 98,
  138. DXGI_FORMAT_BC7_UNORM_SRGB = 99,
  139. DXGI_FORMAT_AYUV = 100,
  140. DXGI_FORMAT_Y410 = 101,
  141. DXGI_FORMAT_Y416 = 102,
  142. DXGI_FORMAT_NV12 = 103,
  143. DXGI_FORMAT_P010 = 104,
  144. DXGI_FORMAT_P016 = 105,
  145. DXGI_FORMAT_420_OPAQUE = 106,
  146. DXGI_FORMAT_YUY2 = 107,
  147. DXGI_FORMAT_Y210 = 108,
  148. DXGI_FORMAT_Y216 = 109,
  149. DXGI_FORMAT_NV11 = 110,
  150. DXGI_FORMAT_AI44 = 111,
  151. DXGI_FORMAT_IA44 = 112,
  152. DXGI_FORMAT_P8 = 113,
  153. DXGI_FORMAT_A8P8 = 114,
  154. DXGI_FORMAT_B4G4R4A4_UNORM = 115,
  155. DXGI_FORMAT_P208 = 130,
  156. DXGI_FORMAT_V208 = 131,
  157. DXGI_FORMAT_V408 = 132,
  158. DXGI_FORMAT_FORCE_UINT = -1
  159. }
  160. enum DXGI_MODE_SCANLINE_ORDER
  161. {
  162. DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED = 0,
  163. DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE = 1,
  164. DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST = 2,
  165. DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST = 3
  166. }
  167. enum DXGI_MODE_SCALING
  168. {
  169. DXGI_MODE_SCALING_UNSPECIFIED = 0,
  170. DXGI_MODE_SCALING_CENTERED = 1,
  171. DXGI_MODE_SCALING_STRETCHED = 2
  172. }
  173. [uuid(aec22fb8-76f3-4639-9be0-28eb43a67a2e)]
  174. interface IDXGIObject : IUnknown
  175. {
  176. HRESULT SetPrivateData([in] REFGUID Name, [in] UINT DataSize, [in] void** pData);
  177. HRESULT SetPrivateDataInterface([in] REFGUID Name, [in] IUnknown* pUnknown);
  178. HRESULT GetPrivateData([in] REFGUID Name, [in, out] UINT* pDataSize, [out] void** pData);
  179. HRESULT GetParent([in] REFIID riid, [out, retval] void** ppParent);
  180. }
  181. [uuid(7b7166ec-21c7-44ae-b21a-c9ae321ae369)]
  182. interface IDXGIFactory : IDXGIObject
  183. {
  184. INT32 EnumAdapters([in] UINT Adapter, [out] void* ppAdapter);
  185. HRESULT MakeWindowAssociation(HWND WindowHandle, UINT Flags);
  186. HRESULT GetWindowAssociation([out, annotation("_Out_")] HWND* pWindowHandle);
  187. HRESULT CreateSwapChain([in, annotation("_In_")] IUnknown* pDevice, [in, annotation("_In_")] DXGI_SWAP_CHAIN_DESC* pDesc, [out, annotation("_COM_Outptr_")] IDXGISwapChain** ppSwapChain);
  188. HRESULT CreateSoftwareAdapter([in] HMODULE Module, [out, annotation("_COM_Outptr_")] IDXGIAdapter** ppAdapter);
  189. }
  190. [uuid(3d3e0379-f9de-4d58-bb6c-18d62992f1a6)]
  191. interface IDXGIDeviceSubObject : IDXGIObject
  192. {
  193. HRESULT GetDevice([in, annotation("_In_")] REFIID riid, [out, retval, annotation("_COM_Outptr_")] void** ppDevice);
  194. }
  195. [uuid(2411e7e1-12ac-4ccf-bd14-9798e8534dc0)]
  196. interface IDXGIAdapter : IDXGIObject
  197. {
  198. INT32 EnumOutputs([in] UINT Output, [in, out] void* ppOutput);
  199. HRESULT GetDesc([out, annotation("_Out_")] DXGI_ADAPTER_DESC* pDesc);
  200. HRESULT CheckInterfaceSupport([in, annotation("_In_")] REFGUID InterfaceName,[out, annotation("_Out_")] LARGE_INTEGER* pUMDVersion);
  201. };
  202. [uuid(310d36a0-d2e7-4c0a-aa04-6a9d23b8886a)]
  203. interface IDXGISwapChain : IDXGIDeviceSubObject
  204. {
  205. HRESULT Present([in] UINT SyncInterval, [in] UINT Flags);
  206. HRESULT GetBuffer([in] UINT Buffer, [in, annotation("_In_")] REFIID riid, [in, out, annotation("_COM_Outptr_")] void** ppSurface);
  207. HRESULT SetFullscreenState([in] BOOL Fullscreen, [in, annotation("_In_opt_")] IDXGIOutput* pTarget);
  208. HRESULT GetFullscreenState([out, annotation("_Out_opt_")] BOOL* pFullscreen, [out, annotation("_COM_Outptr_opt_result_maybenull_")] IDXGIOutput** ppTarget);
  209. HRESULT GetDesc([out] DXGI_SWAP_CHAIN_DESC* pDesc);
  210. HRESULT ResizeBuffers([in] UINT BufferCount, [in] UINT Width, [in] UINT Height, [in] DXGI_FORMAT NewFormat, [in] UINT SwapChainFlags);
  211. HRESULT ResizeTarget([in, annotation("_In_")] DXGI_MODE_DESC* pNewTargetParameters);
  212. HRESULT GetContainingOutput([out, annotation("_COM_Outptr_")] IDXGIOutput** ppOutput);
  213. HRESULT GetFrameStatistics([out, annotation("_Out_")] DXGI_FRAME_STATISTICS* pStats);
  214. HRESULT GetLastPresentCount([out, annotation("_Out_")] UINT* pLastPresentCount);
  215. }
  216. [uuid(54ec77fa-1377-44e6-8c32-88fd5f44c84c)]
  217. interface IDXGIDevice : IDXGIObject
  218. {
  219. HRESULT GetAdapter([out] IDXGIAdapter** pAdapter);
  220. HRESULT CreateSurface([in, annotation("_In_")] DXGI_SURFACE_DESC* pDesc, [in] UINT NumSurfaces, [in] DXGI_USAGE Usage, [in, annotation("_In_opt_")] DXGI_SHARED_RESOURCE* pSharedResource, [out] IDXGISurface** ppSurface);
  221. HRESULT QueryResourceResidency([in] IUnknown* ppResources, [out] DXGI_RESIDENCY* pResidencyStatus, [in] UINT NumResources);
  222. HRESULT SetGPUThreadPriority([in] INT Priority);
  223. HRESULT GetGPUThreadPriority([out, retval] INT* pPriority);
  224. }
  225. [uuid(ae02eedb-c735-4690-8d52-5a8dc20213aa)]
  226. interface IDXGIOutput : IDXGIObject
  227. {
  228. HRESULT GetDesc([out] DXGI_OUTPUT_DESC* pDesc);
  229. HRESULT GetDisplayModeList([in] DXGI_FORMAT EnumFormat, [in] UINT Flags, [in, out] UINT* pNumModes, [out] DXGI_MODE_DESC* pDesc);
  230. HRESULT FindClosestMatchingMode([in, annotation("_In_")] DXGI_MODE_DESC* pModeToMatch, [out] DXGI_MODE_DESC* pClosestMatch, [in] IUnknown* pConcernedDevice);
  231. HRESULT WaitForVBlank();
  232. HRESULT TakeOwnership([in, annotation("_In_")] IUnknown* pDevice, BOOL Exclusive);
  233. void ReleaseOwnership();
  234. HRESULT GetGammaControlCapabilities([out, annotation("_Out_")] DXGI_GAMMA_CONTROL_CAPABILITIES* pGammaCaps);
  235. HRESULT SetGammaControl([in, annotation("_In_")] DXGI_GAMMA_CONTROL* pArray);
  236. HRESULT GetGammaControl([out, annotation("_Out_")] DXGI_GAMMA_CONTROL* pArray);
  237. HRESULT SetDisplaySurface([in, annotation("_In_")] IDXGISurface* pScanoutSurface);
  238. HRESULT GetDisplaySurfaceData([in, annotation("_In_")] IDXGISurface* pDestination);
  239. HRESULT GetFrameStatistics([out, annotation("_Out_")] DXGI_FRAME_STATISTICS* pStats);
  240. }
  241. [uuid(cafcb56c-6ac3-4889-bf47-9e23bbd260ec)]
  242. interface IDXGISurface : IDXGIDeviceSubObject
  243. {
  244. HRESULT GetDesc([out, annotation("_Out_")] DXGI_SURFACE_DESC* pDesc);
  245. HRESULT Map([out, annotation("_Out_")] DXGI_MAPPED_RECT* pLockedRect, [in] UINT MapFlags);
  246. HRESULT Unmap();
  247. }
  248. [uuid(770aae78-f26f-4dba-a829-253c83d1b387)]
  249. interface IDXGIFactory1 : IDXGIFactory
  250. {
  251. HRESULT EnumAdapters1([in] UINT Adapter, [out, annotation("_COM_Outptr_")] IDXGIAdapter1** ppAdapter);
  252. BOOL IsCurrent();
  253. }
  254. [uuid(29038f61-3839-4626-91fd-086879011a05)]
  255. interface IDXGIAdapter1 : IDXGIAdapter
  256. {
  257. HRESULT GetDesc1([out, annotation("_Out_")] DXGI_ADAPTER_DESC1* pDesc);
  258. }
  259. [uuid(50c83a1c-e072-4c48-87b0-3630fa36a6d0)]
  260. interface IDXGIFactory2 : IDXGIFactory1
  261. {
  262. BOOL IsWindowedStereoEnabled();
  263. HRESULT CreateSwapChainForHwnd([in, annotation("_In_")] IUnknown* pDevice, [in, annotation("_In_")] HWND hWnd, [in, annotation("_In_")] DXGI_SWAP_CHAIN_DESC1* pDesc, [in, annotation("_In_opt_")] DXGI_SWAP_CHAIN_FULLSCREEN_DESC* pFullscreenDesc, [in, annotation("_In_opt_")] IDXGIOutput* pRestrictToOutput, [out, annotation("_COM_Outptr_")] IDXGISwapChain1** ppSwapChain);
  264. HRESULT CreateSwapChainForCoreWindow([in, annotation("_In_")] IUnknown* pDevice, [in, annotation("_In_")] IUnknown* pWindow, [in, annotation("_In_")] DXGI_SWAP_CHAIN_DESC1* pDesc, [in, annotation("_In_opt_")] IDXGIOutput* pRestrictToOutput, [out, annotation("_COM_Outptr_")] IDXGISwapChain1** ppSwapChain);
  265. HRESULT GetSharedResourceAdapterLuid([annotation("_In_")] HANDLE hResource, [annotation("_Out_")] LUID* pLuid);
  266. HRESULT RegisterStereoStatusWindow([in, annotation("_In_")] HWND WindowHandle, [in, annotation("_In_")] UINT wMsg, [out, annotation("_Out_")] DWORD* pdwCookie);
  267. HRESULT RegisterStereoStatusEvent([in, annotation("_In_")] HANDLE hEvent, [out, annotation("_Out_")] DWORD* pdwCookie);
  268. void UnregisterStereoStatus([in, annotation("_In_")] DWORD dwCookie);
  269. HRESULT RegisterOcclusionStatusWindow([in, annotation("_In_")] HWND WindowHandle, [in, annotation("_In_")] UINT wMsg, [out, annotation("_Out_")] DWORD* pdwCookie);
  270. HRESULT RegisterOcclusionStatusEvent([in, annotation("_In_")] HANDLE hEvent, [out, annotation("_Out_")] DWORD* pdwCookie);
  271. void UnregisterOcclusionStatus([in, annotation("_In_")] DWORD dwCookie);
  272. HRESULT CreateSwapChainForComposition([in, annotation("_In_")] IUnknown* pDevice, [in, annotation("_In_")] DXGI_SWAP_CHAIN_DESC1* pDesc, [in, annotation("_In_opt_")] IDXGIOutput* pRestrictToOutput, [out, annotation("_COM_Outptr_")] IDXGISwapChain1** ppSwapChain);
  273. }
  274. [uuid(790a45f7-0d42-4876-983a-0a55cfe6f4aa)]
  275. interface IDXGISwapChain1 : IDXGISwapChain
  276. {
  277. HRESULT GetDesc1([out, annotation("_Out_")] DXGI_SWAP_CHAIN_DESC1* pDesc);
  278. HRESULT GetFullscreenDesc([out, annotation("_Out_")] DXGI_SWAP_CHAIN_FULLSCREEN_DESC* pDesc);
  279. HRESULT GetHwnd([out, annotation("_Out_")] HWND* pHwnd);
  280. HRESULT GetCoreWindow([in, annotation("_In_")] REFIID refiid, [out, annotation("_COM_Outptr_")] void** ppUnk);
  281. HRESULT Present1([in] UINT SyncInterval, [in] UINT PresentFlags, [in, annotation("_In_")] DXGI_PRESENT_PARAMETERS* pPresentParameters);
  282. BOOL IsTemporaryMonoSupported();
  283. HRESULT GetRestrictToOutput([out, annotation("_Out_")] IDXGIOutput** ppRestrictToOutput);
  284. HRESULT SetBackgroundColor([in, annotation("_In_")] DXGI_RGBA* pColor);
  285. HRESULT GetBackgroundColor([out, annotation("_Out_")] DXGI_RGBA* pColor);
  286. HRESULT SetRotation([in, annotation("_In_")] DXGI_MODE_ROTATION Rotation);
  287. HRESULT GetRotation([out, annotation("_Out_")] DXGI_MODE_ROTATION* pRotation);
  288. }