2
0

dxgi1_4.h 51 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494
  1. /* this ALWAYS GENERATED file contains the definitions for the interfaces */
  2. /* File created by MIDL compiler version 8.01.0622 */
  3. /* @@MIDL_FILE_HEADING( ) */
  4. /* verify that the <rpcndr.h> version is high enough to compile this file*/
  5. #ifndef __REQUIRED_RPCNDR_H_VERSION__
  6. #define __REQUIRED_RPCNDR_H_VERSION__ 500
  7. #endif
  8. /* verify that the <rpcsal.h> version is high enough to compile this file*/
  9. #ifndef __REQUIRED_RPCSAL_H_VERSION__
  10. #define __REQUIRED_RPCSAL_H_VERSION__ 100
  11. #endif
  12. #include "rpc.h"
  13. #include "rpcndr.h"
  14. #ifndef __RPCNDR_H_VERSION__
  15. #error this stub requires an updated version of <rpcndr.h>
  16. #endif /* __RPCNDR_H_VERSION__ */
  17. #ifndef COM_NO_WINDOWS_H
  18. #include "windows.h"
  19. #include "ole2.h"
  20. #endif /*COM_NO_WINDOWS_H*/
  21. #ifndef __dxgi1_4_h__
  22. #define __dxgi1_4_h__
  23. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  24. #pragma once
  25. #endif
  26. /* Forward Declarations */
  27. #ifndef __IDXGISwapChain3_FWD_DEFINED__
  28. #define __IDXGISwapChain3_FWD_DEFINED__
  29. typedef interface IDXGISwapChain3 IDXGISwapChain3;
  30. #endif /* __IDXGISwapChain3_FWD_DEFINED__ */
  31. #ifndef __IDXGIOutput4_FWD_DEFINED__
  32. #define __IDXGIOutput4_FWD_DEFINED__
  33. typedef interface IDXGIOutput4 IDXGIOutput4;
  34. #endif /* __IDXGIOutput4_FWD_DEFINED__ */
  35. #ifndef __IDXGIFactory4_FWD_DEFINED__
  36. #define __IDXGIFactory4_FWD_DEFINED__
  37. typedef interface IDXGIFactory4 IDXGIFactory4;
  38. #endif /* __IDXGIFactory4_FWD_DEFINED__ */
  39. #ifndef __IDXGIAdapter3_FWD_DEFINED__
  40. #define __IDXGIAdapter3_FWD_DEFINED__
  41. typedef interface IDXGIAdapter3 IDXGIAdapter3;
  42. #endif /* __IDXGIAdapter3_FWD_DEFINED__ */
  43. /* header files for imported files */
  44. #include "dxgi1_3.h"
  45. #ifdef __cplusplus
  46. extern "C"{
  47. #endif
  48. /* interface __MIDL_itf_dxgi1_4_0000_0000 */
  49. /* [local] */
  50. #include <winapifamily.h>
  51. // BK - pragma region App Family
  52. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  53. typedef
  54. enum DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG
  55. {
  56. DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_PRESENT = 0x1,
  57. DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_OVERLAY_PRESENT = 0x2
  58. } DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG;
  59. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0000_v0_0_c_ifspec;
  60. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0000_v0_0_s_ifspec;
  61. #ifndef __IDXGISwapChain3_INTERFACE_DEFINED__
  62. #define __IDXGISwapChain3_INTERFACE_DEFINED__
  63. /* interface IDXGISwapChain3 */
  64. /* [unique][local][uuid][object] */
  65. EXTERN_C const IID IID_IDXGISwapChain3;
  66. #if defined(__cplusplus) && !defined(CINTERFACE)
  67. MIDL_INTERFACE("94d99bdb-f1f8-4ab0-b236-7da0170edab1")
  68. IDXGISwapChain3 : public IDXGISwapChain2
  69. {
  70. public:
  71. virtual UINT STDMETHODCALLTYPE GetCurrentBackBufferIndex( void) = 0;
  72. virtual HRESULT STDMETHODCALLTYPE CheckColorSpaceSupport(
  73. /* [annotation][in] */
  74. _In_ DXGI_COLOR_SPACE_TYPE ColorSpace,
  75. /* [annotation][out] */
  76. _Out_ UINT *pColorSpaceSupport) = 0;
  77. virtual HRESULT STDMETHODCALLTYPE SetColorSpace1(
  78. /* [annotation][in] */
  79. _In_ DXGI_COLOR_SPACE_TYPE ColorSpace) = 0;
  80. virtual HRESULT STDMETHODCALLTYPE ResizeBuffers1(
  81. /* [annotation][in] */
  82. _In_ UINT BufferCount,
  83. /* [annotation][in] */
  84. _In_ UINT Width,
  85. /* [annotation][in] */
  86. _In_ UINT Height,
  87. /* [annotation][in] */
  88. _In_ DXGI_FORMAT Format,
  89. /* [annotation][in] */
  90. _In_ UINT SwapChainFlags,
  91. /* [annotation][in] */
  92. _In_reads_(BufferCount) const UINT *pCreationNodeMask,
  93. /* [annotation][in] */
  94. _In_reads_(BufferCount) IUnknown *const *ppPresentQueue) = 0;
  95. };
  96. #else /* C style interface */
  97. typedef struct IDXGISwapChain3Vtbl
  98. {
  99. BEGIN_INTERFACE
  100. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  101. IDXGISwapChain3 * This,
  102. /* [in] */ REFIID riid,
  103. /* [annotation][iid_is][out] */
  104. _COM_Outptr_ void **ppvObject);
  105. ULONG ( STDMETHODCALLTYPE *AddRef )(
  106. IDXGISwapChain3 * This);
  107. ULONG ( STDMETHODCALLTYPE *Release )(
  108. IDXGISwapChain3 * This);
  109. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  110. IDXGISwapChain3 * This,
  111. /* [annotation][in] */
  112. _In_ REFGUID Name,
  113. /* [in] */ UINT DataSize,
  114. /* [annotation][in] */
  115. _In_reads_bytes_(DataSize) const void *pData);
  116. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  117. IDXGISwapChain3 * This,
  118. /* [annotation][in] */
  119. _In_ REFGUID Name,
  120. /* [annotation][in] */
  121. _In_opt_ const IUnknown *pUnknown);
  122. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  123. IDXGISwapChain3 * This,
  124. /* [annotation][in] */
  125. _In_ REFGUID Name,
  126. /* [annotation][out][in] */
  127. _Inout_ UINT *pDataSize,
  128. /* [annotation][out] */
  129. _Out_writes_bytes_(*pDataSize) void *pData);
  130. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  131. IDXGISwapChain3 * This,
  132. /* [annotation][in] */
  133. _In_ REFIID riid,
  134. /* [annotation][retval][out] */
  135. _COM_Outptr_ void **ppParent);
  136. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  137. IDXGISwapChain3 * This,
  138. /* [annotation][in] */
  139. _In_ REFIID riid,
  140. /* [annotation][retval][out] */
  141. _COM_Outptr_ void **ppDevice);
  142. HRESULT ( STDMETHODCALLTYPE *Present )(
  143. IDXGISwapChain3 * This,
  144. /* [in] */ UINT SyncInterval,
  145. /* [in] */ UINT Flags);
  146. HRESULT ( STDMETHODCALLTYPE *GetBuffer )(
  147. IDXGISwapChain3 * This,
  148. /* [in] */ UINT Buffer,
  149. /* [annotation][in] */
  150. _In_ REFIID riid,
  151. /* [annotation][out][in] */
  152. _COM_Outptr_ void **ppSurface);
  153. HRESULT ( STDMETHODCALLTYPE *SetFullscreenState )(
  154. IDXGISwapChain3 * This,
  155. /* [in] */ BOOL Fullscreen,
  156. /* [annotation][in] */
  157. _In_opt_ IDXGIOutput *pTarget);
  158. HRESULT ( STDMETHODCALLTYPE *GetFullscreenState )(
  159. IDXGISwapChain3 * This,
  160. /* [annotation][out] */
  161. _Out_opt_ BOOL *pFullscreen,
  162. /* [annotation][out] */
  163. _COM_Outptr_opt_result_maybenull_ IDXGIOutput **ppTarget);
  164. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  165. IDXGISwapChain3 * This,
  166. /* [annotation][out] */
  167. _Out_ DXGI_SWAP_CHAIN_DESC *pDesc);
  168. HRESULT ( STDMETHODCALLTYPE *ResizeBuffers )(
  169. IDXGISwapChain3 * This,
  170. /* [in] */ UINT BufferCount,
  171. /* [in] */ UINT Width,
  172. /* [in] */ UINT Height,
  173. /* [in] */ DXGI_FORMAT NewFormat,
  174. /* [in] */ UINT SwapChainFlags);
  175. HRESULT ( STDMETHODCALLTYPE *ResizeTarget )(
  176. IDXGISwapChain3 * This,
  177. /* [annotation][in] */
  178. _In_ const DXGI_MODE_DESC *pNewTargetParameters);
  179. HRESULT ( STDMETHODCALLTYPE *GetContainingOutput )(
  180. IDXGISwapChain3 * This,
  181. /* [annotation][out] */
  182. _COM_Outptr_ IDXGIOutput **ppOutput);
  183. HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )(
  184. IDXGISwapChain3 * This,
  185. /* [annotation][out] */
  186. _Out_ DXGI_FRAME_STATISTICS *pStats);
  187. HRESULT ( STDMETHODCALLTYPE *GetLastPresentCount )(
  188. IDXGISwapChain3 * This,
  189. /* [annotation][out] */
  190. _Out_ UINT *pLastPresentCount);
  191. HRESULT ( STDMETHODCALLTYPE *GetDesc1 )(
  192. IDXGISwapChain3 * This,
  193. /* [annotation][out] */
  194. _Out_ DXGI_SWAP_CHAIN_DESC1 *pDesc);
  195. HRESULT ( STDMETHODCALLTYPE *GetFullscreenDesc )(
  196. IDXGISwapChain3 * This,
  197. /* [annotation][out] */
  198. _Out_ DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc);
  199. HRESULT ( STDMETHODCALLTYPE *GetHwnd )(
  200. IDXGISwapChain3 * This,
  201. /* [annotation][out] */
  202. _Out_ HWND *pHwnd);
  203. HRESULT ( STDMETHODCALLTYPE *GetCoreWindow )(
  204. IDXGISwapChain3 * This,
  205. /* [annotation][in] */
  206. _In_ REFIID refiid,
  207. /* [annotation][out] */
  208. _COM_Outptr_ void **ppUnk);
  209. HRESULT ( STDMETHODCALLTYPE *Present1 )(
  210. IDXGISwapChain3 * This,
  211. /* [in] */ UINT SyncInterval,
  212. /* [in] */ UINT PresentFlags,
  213. /* [annotation][in] */
  214. _In_ const DXGI_PRESENT_PARAMETERS *pPresentParameters);
  215. BOOL ( STDMETHODCALLTYPE *IsTemporaryMonoSupported )(
  216. IDXGISwapChain3 * This);
  217. HRESULT ( STDMETHODCALLTYPE *GetRestrictToOutput )(
  218. IDXGISwapChain3 * This,
  219. /* [annotation][out] */
  220. _Out_ IDXGIOutput **ppRestrictToOutput);
  221. HRESULT ( STDMETHODCALLTYPE *SetBackgroundColor )(
  222. IDXGISwapChain3 * This,
  223. /* [annotation][in] */
  224. _In_ const DXGI_RGBA *pColor);
  225. HRESULT ( STDMETHODCALLTYPE *GetBackgroundColor )(
  226. IDXGISwapChain3 * This,
  227. /* [annotation][out] */
  228. _Out_ DXGI_RGBA *pColor);
  229. HRESULT ( STDMETHODCALLTYPE *SetRotation )(
  230. IDXGISwapChain3 * This,
  231. /* [annotation][in] */
  232. _In_ DXGI_MODE_ROTATION Rotation);
  233. HRESULT ( STDMETHODCALLTYPE *GetRotation )(
  234. IDXGISwapChain3 * This,
  235. /* [annotation][out] */
  236. _Out_ DXGI_MODE_ROTATION *pRotation);
  237. HRESULT ( STDMETHODCALLTYPE *SetSourceSize )(
  238. IDXGISwapChain3 * This,
  239. UINT Width,
  240. UINT Height);
  241. HRESULT ( STDMETHODCALLTYPE *GetSourceSize )(
  242. IDXGISwapChain3 * This,
  243. /* [annotation][out] */
  244. _Out_ UINT *pWidth,
  245. /* [annotation][out] */
  246. _Out_ UINT *pHeight);
  247. HRESULT ( STDMETHODCALLTYPE *SetMaximumFrameLatency )(
  248. IDXGISwapChain3 * This,
  249. UINT MaxLatency);
  250. HRESULT ( STDMETHODCALLTYPE *GetMaximumFrameLatency )(
  251. IDXGISwapChain3 * This,
  252. /* [annotation][out] */
  253. _Out_ UINT *pMaxLatency);
  254. HANDLE ( STDMETHODCALLTYPE *GetFrameLatencyWaitableObject )(
  255. IDXGISwapChain3 * This);
  256. HRESULT ( STDMETHODCALLTYPE *SetMatrixTransform )(
  257. IDXGISwapChain3 * This,
  258. const DXGI_MATRIX_3X2_F *pMatrix);
  259. HRESULT ( STDMETHODCALLTYPE *GetMatrixTransform )(
  260. IDXGISwapChain3 * This,
  261. /* [annotation][out] */
  262. _Out_ DXGI_MATRIX_3X2_F *pMatrix);
  263. UINT ( STDMETHODCALLTYPE *GetCurrentBackBufferIndex )(
  264. IDXGISwapChain3 * This);
  265. HRESULT ( STDMETHODCALLTYPE *CheckColorSpaceSupport )(
  266. IDXGISwapChain3 * This,
  267. /* [annotation][in] */
  268. _In_ DXGI_COLOR_SPACE_TYPE ColorSpace,
  269. /* [annotation][out] */
  270. _Out_ UINT *pColorSpaceSupport);
  271. HRESULT ( STDMETHODCALLTYPE *SetColorSpace1 )(
  272. IDXGISwapChain3 * This,
  273. /* [annotation][in] */
  274. _In_ DXGI_COLOR_SPACE_TYPE ColorSpace);
  275. HRESULT ( STDMETHODCALLTYPE *ResizeBuffers1 )(
  276. IDXGISwapChain3 * This,
  277. /* [annotation][in] */
  278. _In_ UINT BufferCount,
  279. /* [annotation][in] */
  280. _In_ UINT Width,
  281. /* [annotation][in] */
  282. _In_ UINT Height,
  283. /* [annotation][in] */
  284. _In_ DXGI_FORMAT Format,
  285. /* [annotation][in] */
  286. _In_ UINT SwapChainFlags,
  287. /* [annotation][in] */
  288. _In_reads_(BufferCount) const UINT *pCreationNodeMask,
  289. /* [annotation][in] */
  290. _In_reads_(BufferCount) IUnknown *const *ppPresentQueue);
  291. END_INTERFACE
  292. } IDXGISwapChain3Vtbl;
  293. interface IDXGISwapChain3
  294. {
  295. CONST_VTBL struct IDXGISwapChain3Vtbl *lpVtbl;
  296. };
  297. #ifdef COBJMACROS
  298. #define IDXGISwapChain3_QueryInterface(This,riid,ppvObject) \
  299. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  300. #define IDXGISwapChain3_AddRef(This) \
  301. ( (This)->lpVtbl -> AddRef(This) )
  302. #define IDXGISwapChain3_Release(This) \
  303. ( (This)->lpVtbl -> Release(This) )
  304. #define IDXGISwapChain3_SetPrivateData(This,Name,DataSize,pData) \
  305. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  306. #define IDXGISwapChain3_SetPrivateDataInterface(This,Name,pUnknown) \
  307. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  308. #define IDXGISwapChain3_GetPrivateData(This,Name,pDataSize,pData) \
  309. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  310. #define IDXGISwapChain3_GetParent(This,riid,ppParent) \
  311. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  312. #define IDXGISwapChain3_GetDevice(This,riid,ppDevice) \
  313. ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
  314. #define IDXGISwapChain3_Present(This,SyncInterval,Flags) \
  315. ( (This)->lpVtbl -> Present(This,SyncInterval,Flags) )
  316. #define IDXGISwapChain3_GetBuffer(This,Buffer,riid,ppSurface) \
  317. ( (This)->lpVtbl -> GetBuffer(This,Buffer,riid,ppSurface) )
  318. #define IDXGISwapChain3_SetFullscreenState(This,Fullscreen,pTarget) \
  319. ( (This)->lpVtbl -> SetFullscreenState(This,Fullscreen,pTarget) )
  320. #define IDXGISwapChain3_GetFullscreenState(This,pFullscreen,ppTarget) \
  321. ( (This)->lpVtbl -> GetFullscreenState(This,pFullscreen,ppTarget) )
  322. #define IDXGISwapChain3_GetDesc(This,pDesc) \
  323. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  324. #define IDXGISwapChain3_ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags) \
  325. ( (This)->lpVtbl -> ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags) )
  326. #define IDXGISwapChain3_ResizeTarget(This,pNewTargetParameters) \
  327. ( (This)->lpVtbl -> ResizeTarget(This,pNewTargetParameters) )
  328. #define IDXGISwapChain3_GetContainingOutput(This,ppOutput) \
  329. ( (This)->lpVtbl -> GetContainingOutput(This,ppOutput) )
  330. #define IDXGISwapChain3_GetFrameStatistics(This,pStats) \
  331. ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) )
  332. #define IDXGISwapChain3_GetLastPresentCount(This,pLastPresentCount) \
  333. ( (This)->lpVtbl -> GetLastPresentCount(This,pLastPresentCount) )
  334. #define IDXGISwapChain3_GetDesc1(This,pDesc) \
  335. ( (This)->lpVtbl -> GetDesc1(This,pDesc) )
  336. #define IDXGISwapChain3_GetFullscreenDesc(This,pDesc) \
  337. ( (This)->lpVtbl -> GetFullscreenDesc(This,pDesc) )
  338. #define IDXGISwapChain3_GetHwnd(This,pHwnd) \
  339. ( (This)->lpVtbl -> GetHwnd(This,pHwnd) )
  340. #define IDXGISwapChain3_GetCoreWindow(This,refiid,ppUnk) \
  341. ( (This)->lpVtbl -> GetCoreWindow(This,refiid,ppUnk) )
  342. #define IDXGISwapChain3_Present1(This,SyncInterval,PresentFlags,pPresentParameters) \
  343. ( (This)->lpVtbl -> Present1(This,SyncInterval,PresentFlags,pPresentParameters) )
  344. #define IDXGISwapChain3_IsTemporaryMonoSupported(This) \
  345. ( (This)->lpVtbl -> IsTemporaryMonoSupported(This) )
  346. #define IDXGISwapChain3_GetRestrictToOutput(This,ppRestrictToOutput) \
  347. ( (This)->lpVtbl -> GetRestrictToOutput(This,ppRestrictToOutput) )
  348. #define IDXGISwapChain3_SetBackgroundColor(This,pColor) \
  349. ( (This)->lpVtbl -> SetBackgroundColor(This,pColor) )
  350. #define IDXGISwapChain3_GetBackgroundColor(This,pColor) \
  351. ( (This)->lpVtbl -> GetBackgroundColor(This,pColor) )
  352. #define IDXGISwapChain3_SetRotation(This,Rotation) \
  353. ( (This)->lpVtbl -> SetRotation(This,Rotation) )
  354. #define IDXGISwapChain3_GetRotation(This,pRotation) \
  355. ( (This)->lpVtbl -> GetRotation(This,pRotation) )
  356. #define IDXGISwapChain3_SetSourceSize(This,Width,Height) \
  357. ( (This)->lpVtbl -> SetSourceSize(This,Width,Height) )
  358. #define IDXGISwapChain3_GetSourceSize(This,pWidth,pHeight) \
  359. ( (This)->lpVtbl -> GetSourceSize(This,pWidth,pHeight) )
  360. #define IDXGISwapChain3_SetMaximumFrameLatency(This,MaxLatency) \
  361. ( (This)->lpVtbl -> SetMaximumFrameLatency(This,MaxLatency) )
  362. #define IDXGISwapChain3_GetMaximumFrameLatency(This,pMaxLatency) \
  363. ( (This)->lpVtbl -> GetMaximumFrameLatency(This,pMaxLatency) )
  364. #define IDXGISwapChain3_GetFrameLatencyWaitableObject(This) \
  365. ( (This)->lpVtbl -> GetFrameLatencyWaitableObject(This) )
  366. #define IDXGISwapChain3_SetMatrixTransform(This,pMatrix) \
  367. ( (This)->lpVtbl -> SetMatrixTransform(This,pMatrix) )
  368. #define IDXGISwapChain3_GetMatrixTransform(This,pMatrix) \
  369. ( (This)->lpVtbl -> GetMatrixTransform(This,pMatrix) )
  370. #define IDXGISwapChain3_GetCurrentBackBufferIndex(This) \
  371. ( (This)->lpVtbl -> GetCurrentBackBufferIndex(This) )
  372. #define IDXGISwapChain3_CheckColorSpaceSupport(This,ColorSpace,pColorSpaceSupport) \
  373. ( (This)->lpVtbl -> CheckColorSpaceSupport(This,ColorSpace,pColorSpaceSupport) )
  374. #define IDXGISwapChain3_SetColorSpace1(This,ColorSpace) \
  375. ( (This)->lpVtbl -> SetColorSpace1(This,ColorSpace) )
  376. #define IDXGISwapChain3_ResizeBuffers1(This,BufferCount,Width,Height,Format,SwapChainFlags,pCreationNodeMask,ppPresentQueue) \
  377. ( (This)->lpVtbl -> ResizeBuffers1(This,BufferCount,Width,Height,Format,SwapChainFlags,pCreationNodeMask,ppPresentQueue) )
  378. #endif /* COBJMACROS */
  379. #endif /* C style interface */
  380. #endif /* __IDXGISwapChain3_INTERFACE_DEFINED__ */
  381. /* interface __MIDL_itf_dxgi1_4_0000_0001 */
  382. /* [local] */
  383. typedef
  384. enum DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG
  385. {
  386. DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG_PRESENT = 0x1
  387. } DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG;
  388. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0001_v0_0_c_ifspec;
  389. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0001_v0_0_s_ifspec;
  390. #ifndef __IDXGIOutput4_INTERFACE_DEFINED__
  391. #define __IDXGIOutput4_INTERFACE_DEFINED__
  392. /* interface IDXGIOutput4 */
  393. /* [unique][local][uuid][object] */
  394. EXTERN_C const IID IID_IDXGIOutput4;
  395. #if defined(__cplusplus) && !defined(CINTERFACE)
  396. MIDL_INTERFACE("dc7dca35-2196-414d-9F53-617884032a60")
  397. IDXGIOutput4 : public IDXGIOutput3
  398. {
  399. public:
  400. virtual HRESULT STDMETHODCALLTYPE CheckOverlayColorSpaceSupport(
  401. /* [annotation][in] */
  402. _In_ DXGI_FORMAT Format,
  403. /* [annotation][in] */
  404. _In_ DXGI_COLOR_SPACE_TYPE ColorSpace,
  405. /* [annotation][in] */
  406. _In_ IUnknown *pConcernedDevice,
  407. /* [annotation][out] */
  408. _Out_ UINT *pFlags) = 0;
  409. };
  410. #else /* C style interface */
  411. typedef struct IDXGIOutput4Vtbl
  412. {
  413. BEGIN_INTERFACE
  414. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  415. IDXGIOutput4 * This,
  416. /* [in] */ REFIID riid,
  417. /* [annotation][iid_is][out] */
  418. _COM_Outptr_ void **ppvObject);
  419. ULONG ( STDMETHODCALLTYPE *AddRef )(
  420. IDXGIOutput4 * This);
  421. ULONG ( STDMETHODCALLTYPE *Release )(
  422. IDXGIOutput4 * This);
  423. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  424. IDXGIOutput4 * This,
  425. /* [annotation][in] */
  426. _In_ REFGUID Name,
  427. /* [in] */ UINT DataSize,
  428. /* [annotation][in] */
  429. _In_reads_bytes_(DataSize) const void *pData);
  430. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  431. IDXGIOutput4 * This,
  432. /* [annotation][in] */
  433. _In_ REFGUID Name,
  434. /* [annotation][in] */
  435. _In_opt_ const IUnknown *pUnknown);
  436. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  437. IDXGIOutput4 * This,
  438. /* [annotation][in] */
  439. _In_ REFGUID Name,
  440. /* [annotation][out][in] */
  441. _Inout_ UINT *pDataSize,
  442. /* [annotation][out] */
  443. _Out_writes_bytes_(*pDataSize) void *pData);
  444. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  445. IDXGIOutput4 * This,
  446. /* [annotation][in] */
  447. _In_ REFIID riid,
  448. /* [annotation][retval][out] */
  449. _COM_Outptr_ void **ppParent);
  450. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  451. IDXGIOutput4 * This,
  452. /* [annotation][out] */
  453. _Out_ DXGI_OUTPUT_DESC *pDesc);
  454. HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList )(
  455. IDXGIOutput4 * This,
  456. /* [in] */ DXGI_FORMAT EnumFormat,
  457. /* [in] */ UINT Flags,
  458. /* [annotation][out][in] */
  459. _Inout_ UINT *pNumModes,
  460. /* [annotation][out] */
  461. _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC *pDesc);
  462. HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode )(
  463. IDXGIOutput4 * This,
  464. /* [annotation][in] */
  465. _In_ const DXGI_MODE_DESC *pModeToMatch,
  466. /* [annotation][out] */
  467. _Out_ DXGI_MODE_DESC *pClosestMatch,
  468. /* [annotation][in] */
  469. _In_opt_ IUnknown *pConcernedDevice);
  470. HRESULT ( STDMETHODCALLTYPE *WaitForVBlank )(
  471. IDXGIOutput4 * This);
  472. HRESULT ( STDMETHODCALLTYPE *TakeOwnership )(
  473. IDXGIOutput4 * This,
  474. /* [annotation][in] */
  475. _In_ IUnknown *pDevice,
  476. BOOL Exclusive);
  477. void ( STDMETHODCALLTYPE *ReleaseOwnership )(
  478. IDXGIOutput4 * This);
  479. HRESULT ( STDMETHODCALLTYPE *GetGammaControlCapabilities )(
  480. IDXGIOutput4 * This,
  481. /* [annotation][out] */
  482. _Out_ DXGI_GAMMA_CONTROL_CAPABILITIES *pGammaCaps);
  483. HRESULT ( STDMETHODCALLTYPE *SetGammaControl )(
  484. IDXGIOutput4 * This,
  485. /* [annotation][in] */
  486. _In_ const DXGI_GAMMA_CONTROL *pArray);
  487. HRESULT ( STDMETHODCALLTYPE *GetGammaControl )(
  488. IDXGIOutput4 * This,
  489. /* [annotation][out] */
  490. _Out_ DXGI_GAMMA_CONTROL *pArray);
  491. HRESULT ( STDMETHODCALLTYPE *SetDisplaySurface )(
  492. IDXGIOutput4 * This,
  493. /* [annotation][in] */
  494. _In_ IDXGISurface *pScanoutSurface);
  495. HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData )(
  496. IDXGIOutput4 * This,
  497. /* [annotation][in] */
  498. _In_ IDXGISurface *pDestination);
  499. HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )(
  500. IDXGIOutput4 * This,
  501. /* [annotation][out] */
  502. _Out_ DXGI_FRAME_STATISTICS *pStats);
  503. HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList1 )(
  504. IDXGIOutput4 * This,
  505. /* [in] */ DXGI_FORMAT EnumFormat,
  506. /* [in] */ UINT Flags,
  507. /* [annotation][out][in] */
  508. _Inout_ UINT *pNumModes,
  509. /* [annotation][out] */
  510. _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC1 *pDesc);
  511. HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode1 )(
  512. IDXGIOutput4 * This,
  513. /* [annotation][in] */
  514. _In_ const DXGI_MODE_DESC1 *pModeToMatch,
  515. /* [annotation][out] */
  516. _Out_ DXGI_MODE_DESC1 *pClosestMatch,
  517. /* [annotation][in] */
  518. _In_opt_ IUnknown *pConcernedDevice);
  519. HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData1 )(
  520. IDXGIOutput4 * This,
  521. /* [annotation][in] */
  522. _In_ IDXGIResource *pDestination);
  523. HRESULT ( STDMETHODCALLTYPE *DuplicateOutput )(
  524. IDXGIOutput4 * This,
  525. /* [annotation][in] */
  526. _In_ IUnknown *pDevice,
  527. /* [annotation][out] */
  528. _COM_Outptr_ IDXGIOutputDuplication **ppOutputDuplication);
  529. BOOL ( STDMETHODCALLTYPE *SupportsOverlays )(
  530. IDXGIOutput4 * This);
  531. HRESULT ( STDMETHODCALLTYPE *CheckOverlaySupport )(
  532. IDXGIOutput4 * This,
  533. /* [annotation][in] */
  534. _In_ DXGI_FORMAT EnumFormat,
  535. /* [annotation][out] */
  536. _In_ IUnknown *pConcernedDevice,
  537. /* [annotation][out] */
  538. _Out_ UINT *pFlags);
  539. HRESULT ( STDMETHODCALLTYPE *CheckOverlayColorSpaceSupport )(
  540. IDXGIOutput4 * This,
  541. /* [annotation][in] */
  542. _In_ DXGI_FORMAT Format,
  543. /* [annotation][in] */
  544. _In_ DXGI_COLOR_SPACE_TYPE ColorSpace,
  545. /* [annotation][in] */
  546. _In_ IUnknown *pConcernedDevice,
  547. /* [annotation][out] */
  548. _Out_ UINT *pFlags);
  549. END_INTERFACE
  550. } IDXGIOutput4Vtbl;
  551. interface IDXGIOutput4
  552. {
  553. CONST_VTBL struct IDXGIOutput4Vtbl *lpVtbl;
  554. };
  555. #ifdef COBJMACROS
  556. #define IDXGIOutput4_QueryInterface(This,riid,ppvObject) \
  557. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  558. #define IDXGIOutput4_AddRef(This) \
  559. ( (This)->lpVtbl -> AddRef(This) )
  560. #define IDXGIOutput4_Release(This) \
  561. ( (This)->lpVtbl -> Release(This) )
  562. #define IDXGIOutput4_SetPrivateData(This,Name,DataSize,pData) \
  563. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  564. #define IDXGIOutput4_SetPrivateDataInterface(This,Name,pUnknown) \
  565. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  566. #define IDXGIOutput4_GetPrivateData(This,Name,pDataSize,pData) \
  567. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  568. #define IDXGIOutput4_GetParent(This,riid,ppParent) \
  569. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  570. #define IDXGIOutput4_GetDesc(This,pDesc) \
  571. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  572. #define IDXGIOutput4_GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) \
  573. ( (This)->lpVtbl -> GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) )
  574. #define IDXGIOutput4_FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) \
  575. ( (This)->lpVtbl -> FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) )
  576. #define IDXGIOutput4_WaitForVBlank(This) \
  577. ( (This)->lpVtbl -> WaitForVBlank(This) )
  578. #define IDXGIOutput4_TakeOwnership(This,pDevice,Exclusive) \
  579. ( (This)->lpVtbl -> TakeOwnership(This,pDevice,Exclusive) )
  580. #define IDXGIOutput4_ReleaseOwnership(This) \
  581. ( (This)->lpVtbl -> ReleaseOwnership(This) )
  582. #define IDXGIOutput4_GetGammaControlCapabilities(This,pGammaCaps) \
  583. ( (This)->lpVtbl -> GetGammaControlCapabilities(This,pGammaCaps) )
  584. #define IDXGIOutput4_SetGammaControl(This,pArray) \
  585. ( (This)->lpVtbl -> SetGammaControl(This,pArray) )
  586. #define IDXGIOutput4_GetGammaControl(This,pArray) \
  587. ( (This)->lpVtbl -> GetGammaControl(This,pArray) )
  588. #define IDXGIOutput4_SetDisplaySurface(This,pScanoutSurface) \
  589. ( (This)->lpVtbl -> SetDisplaySurface(This,pScanoutSurface) )
  590. #define IDXGIOutput4_GetDisplaySurfaceData(This,pDestination) \
  591. ( (This)->lpVtbl -> GetDisplaySurfaceData(This,pDestination) )
  592. #define IDXGIOutput4_GetFrameStatistics(This,pStats) \
  593. ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) )
  594. #define IDXGIOutput4_GetDisplayModeList1(This,EnumFormat,Flags,pNumModes,pDesc) \
  595. ( (This)->lpVtbl -> GetDisplayModeList1(This,EnumFormat,Flags,pNumModes,pDesc) )
  596. #define IDXGIOutput4_FindClosestMatchingMode1(This,pModeToMatch,pClosestMatch,pConcernedDevice) \
  597. ( (This)->lpVtbl -> FindClosestMatchingMode1(This,pModeToMatch,pClosestMatch,pConcernedDevice) )
  598. #define IDXGIOutput4_GetDisplaySurfaceData1(This,pDestination) \
  599. ( (This)->lpVtbl -> GetDisplaySurfaceData1(This,pDestination) )
  600. #define IDXGIOutput4_DuplicateOutput(This,pDevice,ppOutputDuplication) \
  601. ( (This)->lpVtbl -> DuplicateOutput(This,pDevice,ppOutputDuplication) )
  602. #define IDXGIOutput4_SupportsOverlays(This) \
  603. ( (This)->lpVtbl -> SupportsOverlays(This) )
  604. #define IDXGIOutput4_CheckOverlaySupport(This,EnumFormat,pConcernedDevice,pFlags) \
  605. ( (This)->lpVtbl -> CheckOverlaySupport(This,EnumFormat,pConcernedDevice,pFlags) )
  606. #define IDXGIOutput4_CheckOverlayColorSpaceSupport(This,Format,ColorSpace,pConcernedDevice,pFlags) \
  607. ( (This)->lpVtbl -> CheckOverlayColorSpaceSupport(This,Format,ColorSpace,pConcernedDevice,pFlags) )
  608. #endif /* COBJMACROS */
  609. #endif /* C style interface */
  610. #endif /* __IDXGIOutput4_INTERFACE_DEFINED__ */
  611. #ifndef __IDXGIFactory4_INTERFACE_DEFINED__
  612. #define __IDXGIFactory4_INTERFACE_DEFINED__
  613. /* interface IDXGIFactory4 */
  614. /* [unique][local][uuid][object] */
  615. EXTERN_C const IID IID_IDXGIFactory4;
  616. #if defined(__cplusplus) && !defined(CINTERFACE)
  617. MIDL_INTERFACE("1bc6ea02-ef36-464f-bf0c-21ca39e5168a")
  618. IDXGIFactory4 : public IDXGIFactory3
  619. {
  620. public:
  621. virtual HRESULT STDMETHODCALLTYPE EnumAdapterByLuid(
  622. /* [annotation] */
  623. _In_ LUID AdapterLuid,
  624. /* [annotation] */
  625. _In_ REFIID riid,
  626. /* [annotation] */
  627. _COM_Outptr_ void **ppvAdapter) = 0;
  628. virtual HRESULT STDMETHODCALLTYPE EnumWarpAdapter(
  629. /* [annotation] */
  630. _In_ REFIID riid,
  631. /* [annotation] */
  632. _COM_Outptr_ void **ppvAdapter) = 0;
  633. };
  634. #else /* C style interface */
  635. typedef struct IDXGIFactory4Vtbl
  636. {
  637. BEGIN_INTERFACE
  638. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  639. IDXGIFactory4 * This,
  640. /* [in] */ REFIID riid,
  641. /* [annotation][iid_is][out] */
  642. _COM_Outptr_ void **ppvObject);
  643. ULONG ( STDMETHODCALLTYPE *AddRef )(
  644. IDXGIFactory4 * This);
  645. ULONG ( STDMETHODCALLTYPE *Release )(
  646. IDXGIFactory4 * This);
  647. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  648. IDXGIFactory4 * This,
  649. /* [annotation][in] */
  650. _In_ REFGUID Name,
  651. /* [in] */ UINT DataSize,
  652. /* [annotation][in] */
  653. _In_reads_bytes_(DataSize) const void *pData);
  654. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  655. IDXGIFactory4 * This,
  656. /* [annotation][in] */
  657. _In_ REFGUID Name,
  658. /* [annotation][in] */
  659. _In_opt_ const IUnknown *pUnknown);
  660. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  661. IDXGIFactory4 * This,
  662. /* [annotation][in] */
  663. _In_ REFGUID Name,
  664. /* [annotation][out][in] */
  665. _Inout_ UINT *pDataSize,
  666. /* [annotation][out] */
  667. _Out_writes_bytes_(*pDataSize) void *pData);
  668. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  669. IDXGIFactory4 * This,
  670. /* [annotation][in] */
  671. _In_ REFIID riid,
  672. /* [annotation][retval][out] */
  673. _COM_Outptr_ void **ppParent);
  674. HRESULT ( STDMETHODCALLTYPE *EnumAdapters )(
  675. IDXGIFactory4 * This,
  676. /* [in] */ UINT Adapter,
  677. /* [annotation][out] */
  678. _COM_Outptr_ IDXGIAdapter **ppAdapter);
  679. HRESULT ( STDMETHODCALLTYPE *MakeWindowAssociation )(
  680. IDXGIFactory4 * This,
  681. HWND WindowHandle,
  682. UINT Flags);
  683. HRESULT ( STDMETHODCALLTYPE *GetWindowAssociation )(
  684. IDXGIFactory4 * This,
  685. /* [annotation][out] */
  686. _Out_ HWND *pWindowHandle);
  687. HRESULT ( STDMETHODCALLTYPE *CreateSwapChain )(
  688. IDXGIFactory4 * This,
  689. /* [annotation][in] */
  690. _In_ IUnknown *pDevice,
  691. /* [annotation][in] */
  692. _In_ DXGI_SWAP_CHAIN_DESC *pDesc,
  693. /* [annotation][out] */
  694. _COM_Outptr_ IDXGISwapChain **ppSwapChain);
  695. HRESULT ( STDMETHODCALLTYPE *CreateSoftwareAdapter )(
  696. IDXGIFactory4 * This,
  697. /* [in] */ HMODULE Module,
  698. /* [annotation][out] */
  699. _COM_Outptr_ IDXGIAdapter **ppAdapter);
  700. HRESULT ( STDMETHODCALLTYPE *EnumAdapters1 )(
  701. IDXGIFactory4 * This,
  702. /* [in] */ UINT Adapter,
  703. /* [annotation][out] */
  704. _COM_Outptr_ IDXGIAdapter1 **ppAdapter);
  705. BOOL ( STDMETHODCALLTYPE *IsCurrent )(
  706. IDXGIFactory4 * This);
  707. BOOL ( STDMETHODCALLTYPE *IsWindowedStereoEnabled )(
  708. IDXGIFactory4 * This);
  709. HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForHwnd )(
  710. IDXGIFactory4 * This,
  711. /* [annotation][in] */
  712. _In_ IUnknown *pDevice,
  713. /* [annotation][in] */
  714. _In_ HWND hWnd,
  715. /* [annotation][in] */
  716. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  717. /* [annotation][in] */
  718. _In_opt_ const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
  719. /* [annotation][in] */
  720. _In_opt_ IDXGIOutput *pRestrictToOutput,
  721. /* [annotation][out] */
  722. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain);
  723. HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForCoreWindow )(
  724. IDXGIFactory4 * This,
  725. /* [annotation][in] */
  726. _In_ IUnknown *pDevice,
  727. /* [annotation][in] */
  728. _In_ IUnknown *pWindow,
  729. /* [annotation][in] */
  730. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  731. /* [annotation][in] */
  732. _In_opt_ IDXGIOutput *pRestrictToOutput,
  733. /* [annotation][out] */
  734. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain);
  735. HRESULT ( STDMETHODCALLTYPE *GetSharedResourceAdapterLuid )(
  736. IDXGIFactory4 * This,
  737. /* [annotation] */
  738. _In_ HANDLE hResource,
  739. /* [annotation] */
  740. _Out_ LUID *pLuid);
  741. HRESULT ( STDMETHODCALLTYPE *RegisterStereoStatusWindow )(
  742. IDXGIFactory4 * This,
  743. /* [annotation][in] */
  744. _In_ HWND WindowHandle,
  745. /* [annotation][in] */
  746. _In_ UINT wMsg,
  747. /* [annotation][out] */
  748. _Out_ DWORD *pdwCookie);
  749. HRESULT ( STDMETHODCALLTYPE *RegisterStereoStatusEvent )(
  750. IDXGIFactory4 * This,
  751. /* [annotation][in] */
  752. _In_ HANDLE hEvent,
  753. /* [annotation][out] */
  754. _Out_ DWORD *pdwCookie);
  755. void ( STDMETHODCALLTYPE *UnregisterStereoStatus )(
  756. IDXGIFactory4 * This,
  757. /* [annotation][in] */
  758. _In_ DWORD dwCookie);
  759. HRESULT ( STDMETHODCALLTYPE *RegisterOcclusionStatusWindow )(
  760. IDXGIFactory4 * This,
  761. /* [annotation][in] */
  762. _In_ HWND WindowHandle,
  763. /* [annotation][in] */
  764. _In_ UINT wMsg,
  765. /* [annotation][out] */
  766. _Out_ DWORD *pdwCookie);
  767. HRESULT ( STDMETHODCALLTYPE *RegisterOcclusionStatusEvent )(
  768. IDXGIFactory4 * This,
  769. /* [annotation][in] */
  770. _In_ HANDLE hEvent,
  771. /* [annotation][out] */
  772. _Out_ DWORD *pdwCookie);
  773. void ( STDMETHODCALLTYPE *UnregisterOcclusionStatus )(
  774. IDXGIFactory4 * This,
  775. /* [annotation][in] */
  776. _In_ DWORD dwCookie);
  777. HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForComposition )(
  778. IDXGIFactory4 * This,
  779. /* [annotation][in] */
  780. _In_ IUnknown *pDevice,
  781. /* [annotation][in] */
  782. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  783. /* [annotation][in] */
  784. _In_opt_ IDXGIOutput *pRestrictToOutput,
  785. /* [annotation][out] */
  786. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain);
  787. UINT ( STDMETHODCALLTYPE *GetCreationFlags )(
  788. IDXGIFactory4 * This);
  789. HRESULT ( STDMETHODCALLTYPE *EnumAdapterByLuid )(
  790. IDXGIFactory4 * This,
  791. /* [annotation] */
  792. _In_ LUID AdapterLuid,
  793. /* [annotation] */
  794. _In_ REFIID riid,
  795. /* [annotation] */
  796. _COM_Outptr_ void **ppvAdapter);
  797. HRESULT ( STDMETHODCALLTYPE *EnumWarpAdapter )(
  798. IDXGIFactory4 * This,
  799. /* [annotation] */
  800. _In_ REFIID riid,
  801. /* [annotation] */
  802. _COM_Outptr_ void **ppvAdapter);
  803. END_INTERFACE
  804. } IDXGIFactory4Vtbl;
  805. interface IDXGIFactory4
  806. {
  807. CONST_VTBL struct IDXGIFactory4Vtbl *lpVtbl;
  808. };
  809. #ifdef COBJMACROS
  810. #define IDXGIFactory4_QueryInterface(This,riid,ppvObject) \
  811. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  812. #define IDXGIFactory4_AddRef(This) \
  813. ( (This)->lpVtbl -> AddRef(This) )
  814. #define IDXGIFactory4_Release(This) \
  815. ( (This)->lpVtbl -> Release(This) )
  816. #define IDXGIFactory4_SetPrivateData(This,Name,DataSize,pData) \
  817. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  818. #define IDXGIFactory4_SetPrivateDataInterface(This,Name,pUnknown) \
  819. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  820. #define IDXGIFactory4_GetPrivateData(This,Name,pDataSize,pData) \
  821. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  822. #define IDXGIFactory4_GetParent(This,riid,ppParent) \
  823. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  824. #define IDXGIFactory4_EnumAdapters(This,Adapter,ppAdapter) \
  825. ( (This)->lpVtbl -> EnumAdapters(This,Adapter,ppAdapter) )
  826. #define IDXGIFactory4_MakeWindowAssociation(This,WindowHandle,Flags) \
  827. ( (This)->lpVtbl -> MakeWindowAssociation(This,WindowHandle,Flags) )
  828. #define IDXGIFactory4_GetWindowAssociation(This,pWindowHandle) \
  829. ( (This)->lpVtbl -> GetWindowAssociation(This,pWindowHandle) )
  830. #define IDXGIFactory4_CreateSwapChain(This,pDevice,pDesc,ppSwapChain) \
  831. ( (This)->lpVtbl -> CreateSwapChain(This,pDevice,pDesc,ppSwapChain) )
  832. #define IDXGIFactory4_CreateSoftwareAdapter(This,Module,ppAdapter) \
  833. ( (This)->lpVtbl -> CreateSoftwareAdapter(This,Module,ppAdapter) )
  834. #define IDXGIFactory4_EnumAdapters1(This,Adapter,ppAdapter) \
  835. ( (This)->lpVtbl -> EnumAdapters1(This,Adapter,ppAdapter) )
  836. #define IDXGIFactory4_IsCurrent(This) \
  837. ( (This)->lpVtbl -> IsCurrent(This) )
  838. #define IDXGIFactory4_IsWindowedStereoEnabled(This) \
  839. ( (This)->lpVtbl -> IsWindowedStereoEnabled(This) )
  840. #define IDXGIFactory4_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) \
  841. ( (This)->lpVtbl -> CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) )
  842. #define IDXGIFactory4_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) \
  843. ( (This)->lpVtbl -> CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) )
  844. #define IDXGIFactory4_GetSharedResourceAdapterLuid(This,hResource,pLuid) \
  845. ( (This)->lpVtbl -> GetSharedResourceAdapterLuid(This,hResource,pLuid) )
  846. #define IDXGIFactory4_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) \
  847. ( (This)->lpVtbl -> RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) )
  848. #define IDXGIFactory4_RegisterStereoStatusEvent(This,hEvent,pdwCookie) \
  849. ( (This)->lpVtbl -> RegisterStereoStatusEvent(This,hEvent,pdwCookie) )
  850. #define IDXGIFactory4_UnregisterStereoStatus(This,dwCookie) \
  851. ( (This)->lpVtbl -> UnregisterStereoStatus(This,dwCookie) )
  852. #define IDXGIFactory4_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) \
  853. ( (This)->lpVtbl -> RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) )
  854. #define IDXGIFactory4_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) \
  855. ( (This)->lpVtbl -> RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) )
  856. #define IDXGIFactory4_UnregisterOcclusionStatus(This,dwCookie) \
  857. ( (This)->lpVtbl -> UnregisterOcclusionStatus(This,dwCookie) )
  858. #define IDXGIFactory4_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) \
  859. ( (This)->lpVtbl -> CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) )
  860. #define IDXGIFactory4_GetCreationFlags(This) \
  861. ( (This)->lpVtbl -> GetCreationFlags(This) )
  862. #define IDXGIFactory4_EnumAdapterByLuid(This,AdapterLuid,riid,ppvAdapter) \
  863. ( (This)->lpVtbl -> EnumAdapterByLuid(This,AdapterLuid,riid,ppvAdapter) )
  864. #define IDXGIFactory4_EnumWarpAdapter(This,riid,ppvAdapter) \
  865. ( (This)->lpVtbl -> EnumWarpAdapter(This,riid,ppvAdapter) )
  866. #endif /* COBJMACROS */
  867. #endif /* C style interface */
  868. #endif /* __IDXGIFactory4_INTERFACE_DEFINED__ */
  869. /* interface __MIDL_itf_dxgi1_4_0000_0003 */
  870. /* [local] */
  871. typedef
  872. enum DXGI_MEMORY_SEGMENT_GROUP
  873. {
  874. DXGI_MEMORY_SEGMENT_GROUP_LOCAL = 0,
  875. DXGI_MEMORY_SEGMENT_GROUP_NON_LOCAL = 1
  876. } DXGI_MEMORY_SEGMENT_GROUP;
  877. typedef struct DXGI_QUERY_VIDEO_MEMORY_INFO
  878. {
  879. UINT64 Budget;
  880. UINT64 CurrentUsage;
  881. UINT64 AvailableForReservation;
  882. UINT64 CurrentReservation;
  883. } DXGI_QUERY_VIDEO_MEMORY_INFO;
  884. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0003_v0_0_c_ifspec;
  885. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0003_v0_0_s_ifspec;
  886. #ifndef __IDXGIAdapter3_INTERFACE_DEFINED__
  887. #define __IDXGIAdapter3_INTERFACE_DEFINED__
  888. /* interface IDXGIAdapter3 */
  889. /* [unique][local][uuid][object] */
  890. EXTERN_C const IID IID_IDXGIAdapter3;
  891. #if defined(__cplusplus) && !defined(CINTERFACE)
  892. MIDL_INTERFACE("645967A4-1392-4310-A798-8053CE3E93FD")
  893. IDXGIAdapter3 : public IDXGIAdapter2
  894. {
  895. public:
  896. virtual HRESULT STDMETHODCALLTYPE RegisterHardwareContentProtectionTeardownStatusEvent(
  897. /* [annotation][in] */
  898. _In_ HANDLE hEvent,
  899. /* [annotation][out] */
  900. _Out_ DWORD *pdwCookie) = 0;
  901. virtual void STDMETHODCALLTYPE UnregisterHardwareContentProtectionTeardownStatus(
  902. /* [annotation][in] */
  903. _In_ DWORD dwCookie) = 0;
  904. virtual HRESULT STDMETHODCALLTYPE QueryVideoMemoryInfo(
  905. /* [annotation][in] */
  906. _In_ UINT NodeIndex,
  907. /* [annotation][in] */
  908. _In_ DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup,
  909. /* [annotation][out] */
  910. _Out_ DXGI_QUERY_VIDEO_MEMORY_INFO *pVideoMemoryInfo) = 0;
  911. virtual HRESULT STDMETHODCALLTYPE SetVideoMemoryReservation(
  912. /* [annotation][in] */
  913. _In_ UINT NodeIndex,
  914. /* [annotation][in] */
  915. _In_ DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup,
  916. /* [annotation][in] */
  917. _In_ UINT64 Reservation) = 0;
  918. virtual HRESULT STDMETHODCALLTYPE RegisterVideoMemoryBudgetChangeNotificationEvent(
  919. /* [annotation][in] */
  920. _In_ HANDLE hEvent,
  921. /* [annotation][out] */
  922. _Out_ DWORD *pdwCookie) = 0;
  923. virtual void STDMETHODCALLTYPE UnregisterVideoMemoryBudgetChangeNotification(
  924. /* [annotation][in] */
  925. _In_ DWORD dwCookie) = 0;
  926. };
  927. #else /* C style interface */
  928. typedef struct IDXGIAdapter3Vtbl
  929. {
  930. BEGIN_INTERFACE
  931. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  932. IDXGIAdapter3 * This,
  933. /* [in] */ REFIID riid,
  934. /* [annotation][iid_is][out] */
  935. _COM_Outptr_ void **ppvObject);
  936. ULONG ( STDMETHODCALLTYPE *AddRef )(
  937. IDXGIAdapter3 * This);
  938. ULONG ( STDMETHODCALLTYPE *Release )(
  939. IDXGIAdapter3 * This);
  940. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  941. IDXGIAdapter3 * This,
  942. /* [annotation][in] */
  943. _In_ REFGUID Name,
  944. /* [in] */ UINT DataSize,
  945. /* [annotation][in] */
  946. _In_reads_bytes_(DataSize) const void *pData);
  947. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  948. IDXGIAdapter3 * This,
  949. /* [annotation][in] */
  950. _In_ REFGUID Name,
  951. /* [annotation][in] */
  952. _In_opt_ const IUnknown *pUnknown);
  953. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  954. IDXGIAdapter3 * This,
  955. /* [annotation][in] */
  956. _In_ REFGUID Name,
  957. /* [annotation][out][in] */
  958. _Inout_ UINT *pDataSize,
  959. /* [annotation][out] */
  960. _Out_writes_bytes_(*pDataSize) void *pData);
  961. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  962. IDXGIAdapter3 * This,
  963. /* [annotation][in] */
  964. _In_ REFIID riid,
  965. /* [annotation][retval][out] */
  966. _COM_Outptr_ void **ppParent);
  967. HRESULT ( STDMETHODCALLTYPE *EnumOutputs )(
  968. IDXGIAdapter3 * This,
  969. /* [in] */ UINT Output,
  970. /* [annotation][out][in] */
  971. _COM_Outptr_ IDXGIOutput **ppOutput);
  972. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  973. IDXGIAdapter3 * This,
  974. /* [annotation][out] */
  975. _Out_ DXGI_ADAPTER_DESC *pDesc);
  976. HRESULT ( STDMETHODCALLTYPE *CheckInterfaceSupport )(
  977. IDXGIAdapter3 * This,
  978. /* [annotation][in] */
  979. _In_ REFGUID InterfaceName,
  980. /* [annotation][out] */
  981. _Out_ LARGE_INTEGER *pUMDVersion);
  982. HRESULT ( STDMETHODCALLTYPE *GetDesc1 )(
  983. IDXGIAdapter3 * This,
  984. /* [annotation][out] */
  985. _Out_ DXGI_ADAPTER_DESC1 *pDesc);
  986. HRESULT ( STDMETHODCALLTYPE *GetDesc2 )(
  987. IDXGIAdapter3 * This,
  988. /* [annotation][out] */
  989. _Out_ DXGI_ADAPTER_DESC2 *pDesc);
  990. HRESULT ( STDMETHODCALLTYPE *RegisterHardwareContentProtectionTeardownStatusEvent )(
  991. IDXGIAdapter3 * This,
  992. /* [annotation][in] */
  993. _In_ HANDLE hEvent,
  994. /* [annotation][out] */
  995. _Out_ DWORD *pdwCookie);
  996. void ( STDMETHODCALLTYPE *UnregisterHardwareContentProtectionTeardownStatus )(
  997. IDXGIAdapter3 * This,
  998. /* [annotation][in] */
  999. _In_ DWORD dwCookie);
  1000. HRESULT ( STDMETHODCALLTYPE *QueryVideoMemoryInfo )(
  1001. IDXGIAdapter3 * This,
  1002. /* [annotation][in] */
  1003. _In_ UINT NodeIndex,
  1004. /* [annotation][in] */
  1005. _In_ DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup,
  1006. /* [annotation][out] */
  1007. _Out_ DXGI_QUERY_VIDEO_MEMORY_INFO *pVideoMemoryInfo);
  1008. HRESULT ( STDMETHODCALLTYPE *SetVideoMemoryReservation )(
  1009. IDXGIAdapter3 * This,
  1010. /* [annotation][in] */
  1011. _In_ UINT NodeIndex,
  1012. /* [annotation][in] */
  1013. _In_ DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup,
  1014. /* [annotation][in] */
  1015. _In_ UINT64 Reservation);
  1016. HRESULT ( STDMETHODCALLTYPE *RegisterVideoMemoryBudgetChangeNotificationEvent )(
  1017. IDXGIAdapter3 * This,
  1018. /* [annotation][in] */
  1019. _In_ HANDLE hEvent,
  1020. /* [annotation][out] */
  1021. _Out_ DWORD *pdwCookie);
  1022. void ( STDMETHODCALLTYPE *UnregisterVideoMemoryBudgetChangeNotification )(
  1023. IDXGIAdapter3 * This,
  1024. /* [annotation][in] */
  1025. _In_ DWORD dwCookie);
  1026. END_INTERFACE
  1027. } IDXGIAdapter3Vtbl;
  1028. interface IDXGIAdapter3
  1029. {
  1030. CONST_VTBL struct IDXGIAdapter3Vtbl *lpVtbl;
  1031. };
  1032. #ifdef COBJMACROS
  1033. #define IDXGIAdapter3_QueryInterface(This,riid,ppvObject) \
  1034. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1035. #define IDXGIAdapter3_AddRef(This) \
  1036. ( (This)->lpVtbl -> AddRef(This) )
  1037. #define IDXGIAdapter3_Release(This) \
  1038. ( (This)->lpVtbl -> Release(This) )
  1039. #define IDXGIAdapter3_SetPrivateData(This,Name,DataSize,pData) \
  1040. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  1041. #define IDXGIAdapter3_SetPrivateDataInterface(This,Name,pUnknown) \
  1042. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  1043. #define IDXGIAdapter3_GetPrivateData(This,Name,pDataSize,pData) \
  1044. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  1045. #define IDXGIAdapter3_GetParent(This,riid,ppParent) \
  1046. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  1047. #define IDXGIAdapter3_EnumOutputs(This,Output,ppOutput) \
  1048. ( (This)->lpVtbl -> EnumOutputs(This,Output,ppOutput) )
  1049. #define IDXGIAdapter3_GetDesc(This,pDesc) \
  1050. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  1051. #define IDXGIAdapter3_CheckInterfaceSupport(This,InterfaceName,pUMDVersion) \
  1052. ( (This)->lpVtbl -> CheckInterfaceSupport(This,InterfaceName,pUMDVersion) )
  1053. #define IDXGIAdapter3_GetDesc1(This,pDesc) \
  1054. ( (This)->lpVtbl -> GetDesc1(This,pDesc) )
  1055. #define IDXGIAdapter3_GetDesc2(This,pDesc) \
  1056. ( (This)->lpVtbl -> GetDesc2(This,pDesc) )
  1057. #define IDXGIAdapter3_RegisterHardwareContentProtectionTeardownStatusEvent(This,hEvent,pdwCookie) \
  1058. ( (This)->lpVtbl -> RegisterHardwareContentProtectionTeardownStatusEvent(This,hEvent,pdwCookie) )
  1059. #define IDXGIAdapter3_UnregisterHardwareContentProtectionTeardownStatus(This,dwCookie) \
  1060. ( (This)->lpVtbl -> UnregisterHardwareContentProtectionTeardownStatus(This,dwCookie) )
  1061. #define IDXGIAdapter3_QueryVideoMemoryInfo(This,NodeIndex,MemorySegmentGroup,pVideoMemoryInfo) \
  1062. ( (This)->lpVtbl -> QueryVideoMemoryInfo(This,NodeIndex,MemorySegmentGroup,pVideoMemoryInfo) )
  1063. #define IDXGIAdapter3_SetVideoMemoryReservation(This,NodeIndex,MemorySegmentGroup,Reservation) \
  1064. ( (This)->lpVtbl -> SetVideoMemoryReservation(This,NodeIndex,MemorySegmentGroup,Reservation) )
  1065. #define IDXGIAdapter3_RegisterVideoMemoryBudgetChangeNotificationEvent(This,hEvent,pdwCookie) \
  1066. ( (This)->lpVtbl -> RegisterVideoMemoryBudgetChangeNotificationEvent(This,hEvent,pdwCookie) )
  1067. #define IDXGIAdapter3_UnregisterVideoMemoryBudgetChangeNotification(This,dwCookie) \
  1068. ( (This)->lpVtbl -> UnregisterVideoMemoryBudgetChangeNotification(This,dwCookie) )
  1069. #endif /* COBJMACROS */
  1070. #endif /* C style interface */
  1071. #endif /* __IDXGIAdapter3_INTERFACE_DEFINED__ */
  1072. /* interface __MIDL_itf_dxgi1_4_0000_0004 */
  1073. /* [local] */
  1074. #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
  1075. // BK - pragma endregion
  1076. DEFINE_GUID(IID_IDXGISwapChain3,0x94d99bdb,0xf1f8,0x4ab0,0xb2,0x36,0x7d,0xa0,0x17,0x0e,0xda,0xb1);
  1077. DEFINE_GUID(IID_IDXGIOutput4,0xdc7dca35,0x2196,0x414d,0x9F,0x53,0x61,0x78,0x84,0x03,0x2a,0x60);
  1078. DEFINE_GUID(IID_IDXGIFactory4,0x1bc6ea02,0xef36,0x464f,0xbf,0x0c,0x21,0xca,0x39,0xe5,0x16,0x8a);
  1079. DEFINE_GUID(IID_IDXGIAdapter3,0x645967A4,0x1392,0x4310,0xA7,0x98,0x80,0x53,0xCE,0x3E,0x93,0xFD);
  1080. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0004_v0_0_c_ifspec;
  1081. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_4_0000_0004_v0_0_s_ifspec;
  1082. /* Additional Prototypes for ALL interfaces */
  1083. /* end of Additional Prototypes */
  1084. #ifdef __cplusplus
  1085. }
  1086. #endif
  1087. #endif