dxgi1_3.h 70 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121
  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_3_h__
  22. #define __dxgi1_3_h__
  23. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  24. #pragma once
  25. #endif
  26. /* Forward Declarations */
  27. #ifndef __IDXGIDevice3_FWD_DEFINED__
  28. #define __IDXGIDevice3_FWD_DEFINED__
  29. typedef interface IDXGIDevice3 IDXGIDevice3;
  30. #endif /* __IDXGIDevice3_FWD_DEFINED__ */
  31. #ifndef __IDXGISwapChain2_FWD_DEFINED__
  32. #define __IDXGISwapChain2_FWD_DEFINED__
  33. typedef interface IDXGISwapChain2 IDXGISwapChain2;
  34. #endif /* __IDXGISwapChain2_FWD_DEFINED__ */
  35. #ifndef __IDXGIOutput2_FWD_DEFINED__
  36. #define __IDXGIOutput2_FWD_DEFINED__
  37. typedef interface IDXGIOutput2 IDXGIOutput2;
  38. #endif /* __IDXGIOutput2_FWD_DEFINED__ */
  39. #ifndef __IDXGIFactory3_FWD_DEFINED__
  40. #define __IDXGIFactory3_FWD_DEFINED__
  41. typedef interface IDXGIFactory3 IDXGIFactory3;
  42. #endif /* __IDXGIFactory3_FWD_DEFINED__ */
  43. #ifndef __IDXGIDecodeSwapChain_FWD_DEFINED__
  44. #define __IDXGIDecodeSwapChain_FWD_DEFINED__
  45. typedef interface IDXGIDecodeSwapChain IDXGIDecodeSwapChain;
  46. #endif /* __IDXGIDecodeSwapChain_FWD_DEFINED__ */
  47. #ifndef __IDXGIFactoryMedia_FWD_DEFINED__
  48. #define __IDXGIFactoryMedia_FWD_DEFINED__
  49. typedef interface IDXGIFactoryMedia IDXGIFactoryMedia;
  50. #endif /* __IDXGIFactoryMedia_FWD_DEFINED__ */
  51. #ifndef __IDXGISwapChainMedia_FWD_DEFINED__
  52. #define __IDXGISwapChainMedia_FWD_DEFINED__
  53. typedef interface IDXGISwapChainMedia IDXGISwapChainMedia;
  54. #endif /* __IDXGISwapChainMedia_FWD_DEFINED__ */
  55. #ifndef __IDXGIOutput3_FWD_DEFINED__
  56. #define __IDXGIOutput3_FWD_DEFINED__
  57. typedef interface IDXGIOutput3 IDXGIOutput3;
  58. #endif /* __IDXGIOutput3_FWD_DEFINED__ */
  59. /* header files for imported files */
  60. #include "dxgi1_2.h"
  61. #ifdef __cplusplus
  62. extern "C"{
  63. #endif
  64. /* interface __MIDL_itf_dxgi1_3_0000_0000 */
  65. /* [local] */
  66. #include <winapifamily.h>
  67. #pragma region App Family
  68. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  69. #define DXGI_CREATE_FACTORY_DEBUG 0x1
  70. HRESULT WINAPI CreateDXGIFactory2(UINT Flags, REFIID riid, _COM_Outptr_ void **ppFactory);
  71. HRESULT WINAPI DXGIGetDebugInterface1(UINT Flags, REFIID riid, _COM_Outptr_ void **pDebug);
  72. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_3_0000_0000_v0_0_c_ifspec;
  73. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_3_0000_0000_v0_0_s_ifspec;
  74. #ifndef __IDXGIDevice3_INTERFACE_DEFINED__
  75. #define __IDXGIDevice3_INTERFACE_DEFINED__
  76. /* interface IDXGIDevice3 */
  77. /* [unique][local][uuid][object] */
  78. EXTERN_C const IID IID_IDXGIDevice3;
  79. #if defined(__cplusplus) && !defined(CINTERFACE)
  80. MIDL_INTERFACE("6007896c-3244-4afd-bf18-a6d3beda5023")
  81. IDXGIDevice3 : public IDXGIDevice2
  82. {
  83. public:
  84. virtual void STDMETHODCALLTYPE Trim( void) = 0;
  85. };
  86. #else /* C style interface */
  87. typedef struct IDXGIDevice3Vtbl
  88. {
  89. BEGIN_INTERFACE
  90. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  91. IDXGIDevice3 * This,
  92. /* [in] */ REFIID riid,
  93. /* [annotation][iid_is][out] */
  94. _COM_Outptr_ void **ppvObject);
  95. ULONG ( STDMETHODCALLTYPE *AddRef )(
  96. IDXGIDevice3 * This);
  97. ULONG ( STDMETHODCALLTYPE *Release )(
  98. IDXGIDevice3 * This);
  99. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  100. IDXGIDevice3 * This,
  101. /* [annotation][in] */
  102. _In_ REFGUID Name,
  103. /* [in] */ UINT DataSize,
  104. /* [annotation][in] */
  105. _In_reads_bytes_(DataSize) const void *pData);
  106. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  107. IDXGIDevice3 * This,
  108. /* [annotation][in] */
  109. _In_ REFGUID Name,
  110. /* [annotation][in] */
  111. _In_opt_ const IUnknown *pUnknown);
  112. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  113. IDXGIDevice3 * This,
  114. /* [annotation][in] */
  115. _In_ REFGUID Name,
  116. /* [annotation][out][in] */
  117. _Inout_ UINT *pDataSize,
  118. /* [annotation][out] */
  119. _Out_writes_bytes_(*pDataSize) void *pData);
  120. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  121. IDXGIDevice3 * This,
  122. /* [annotation][in] */
  123. _In_ REFIID riid,
  124. /* [annotation][retval][out] */
  125. _COM_Outptr_ void **ppParent);
  126. HRESULT ( STDMETHODCALLTYPE *GetAdapter )(
  127. IDXGIDevice3 * This,
  128. /* [annotation][out] */
  129. _COM_Outptr_ IDXGIAdapter **pAdapter);
  130. HRESULT ( STDMETHODCALLTYPE *CreateSurface )(
  131. IDXGIDevice3 * This,
  132. /* [annotation][in] */
  133. _In_ const DXGI_SURFACE_DESC *pDesc,
  134. /* [in] */ UINT NumSurfaces,
  135. /* [in] */ DXGI_USAGE Usage,
  136. /* [annotation][in] */
  137. _In_opt_ const DXGI_SHARED_RESOURCE *pSharedResource,
  138. /* [annotation][out] */
  139. _COM_Outptr_ IDXGISurface **ppSurface);
  140. HRESULT ( STDMETHODCALLTYPE *QueryResourceResidency )(
  141. IDXGIDevice3 * This,
  142. /* [annotation][size_is][in] */
  143. _In_reads_(NumResources) IUnknown *const *ppResources,
  144. /* [annotation][size_is][out] */
  145. _Out_writes_(NumResources) DXGI_RESIDENCY *pResidencyStatus,
  146. /* [in] */ UINT NumResources);
  147. HRESULT ( STDMETHODCALLTYPE *SetGPUThreadPriority )(
  148. IDXGIDevice3 * This,
  149. /* [in] */ INT Priority);
  150. HRESULT ( STDMETHODCALLTYPE *GetGPUThreadPriority )(
  151. IDXGIDevice3 * This,
  152. /* [annotation][retval][out] */
  153. _Out_ INT *pPriority);
  154. HRESULT ( STDMETHODCALLTYPE *SetMaximumFrameLatency )(
  155. IDXGIDevice3 * This,
  156. /* [in] */ UINT MaxLatency);
  157. HRESULT ( STDMETHODCALLTYPE *GetMaximumFrameLatency )(
  158. IDXGIDevice3 * This,
  159. /* [annotation][out] */
  160. _Out_ UINT *pMaxLatency);
  161. HRESULT ( STDMETHODCALLTYPE *OfferResources )(
  162. IDXGIDevice3 * This,
  163. /* [annotation][in] */
  164. _In_ UINT NumResources,
  165. /* [annotation][size_is][in] */
  166. _In_reads_(NumResources) IDXGIResource *const *ppResources,
  167. /* [annotation][in] */
  168. _In_ DXGI_OFFER_RESOURCE_PRIORITY Priority);
  169. HRESULT ( STDMETHODCALLTYPE *ReclaimResources )(
  170. IDXGIDevice3 * This,
  171. /* [annotation][in] */
  172. _In_ UINT NumResources,
  173. /* [annotation][size_is][in] */
  174. _In_reads_(NumResources) IDXGIResource *const *ppResources,
  175. /* [annotation][size_is][out] */
  176. _Out_writes_all_opt_(NumResources) BOOL *pDiscarded);
  177. HRESULT ( STDMETHODCALLTYPE *EnqueueSetEvent )(
  178. IDXGIDevice3 * This,
  179. /* [annotation][in] */
  180. _In_ HANDLE hEvent);
  181. void ( STDMETHODCALLTYPE *Trim )(
  182. IDXGIDevice3 * This);
  183. END_INTERFACE
  184. } IDXGIDevice3Vtbl;
  185. interface IDXGIDevice3
  186. {
  187. CONST_VTBL struct IDXGIDevice3Vtbl *lpVtbl;
  188. };
  189. #ifdef COBJMACROS
  190. #define IDXGIDevice3_QueryInterface(This,riid,ppvObject) \
  191. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  192. #define IDXGIDevice3_AddRef(This) \
  193. ( (This)->lpVtbl -> AddRef(This) )
  194. #define IDXGIDevice3_Release(This) \
  195. ( (This)->lpVtbl -> Release(This) )
  196. #define IDXGIDevice3_SetPrivateData(This,Name,DataSize,pData) \
  197. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  198. #define IDXGIDevice3_SetPrivateDataInterface(This,Name,pUnknown) \
  199. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  200. #define IDXGIDevice3_GetPrivateData(This,Name,pDataSize,pData) \
  201. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  202. #define IDXGIDevice3_GetParent(This,riid,ppParent) \
  203. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  204. #define IDXGIDevice3_GetAdapter(This,pAdapter) \
  205. ( (This)->lpVtbl -> GetAdapter(This,pAdapter) )
  206. #define IDXGIDevice3_CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) \
  207. ( (This)->lpVtbl -> CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) )
  208. #define IDXGIDevice3_QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) \
  209. ( (This)->lpVtbl -> QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) )
  210. #define IDXGIDevice3_SetGPUThreadPriority(This,Priority) \
  211. ( (This)->lpVtbl -> SetGPUThreadPriority(This,Priority) )
  212. #define IDXGIDevice3_GetGPUThreadPriority(This,pPriority) \
  213. ( (This)->lpVtbl -> GetGPUThreadPriority(This,pPriority) )
  214. #define IDXGIDevice3_SetMaximumFrameLatency(This,MaxLatency) \
  215. ( (This)->lpVtbl -> SetMaximumFrameLatency(This,MaxLatency) )
  216. #define IDXGIDevice3_GetMaximumFrameLatency(This,pMaxLatency) \
  217. ( (This)->lpVtbl -> GetMaximumFrameLatency(This,pMaxLatency) )
  218. #define IDXGIDevice3_OfferResources(This,NumResources,ppResources,Priority) \
  219. ( (This)->lpVtbl -> OfferResources(This,NumResources,ppResources,Priority) )
  220. #define IDXGIDevice3_ReclaimResources(This,NumResources,ppResources,pDiscarded) \
  221. ( (This)->lpVtbl -> ReclaimResources(This,NumResources,ppResources,pDiscarded) )
  222. #define IDXGIDevice3_EnqueueSetEvent(This,hEvent) \
  223. ( (This)->lpVtbl -> EnqueueSetEvent(This,hEvent) )
  224. #define IDXGIDevice3_Trim(This) \
  225. ( (This)->lpVtbl -> Trim(This) )
  226. #endif /* COBJMACROS */
  227. #endif /* C style interface */
  228. #endif /* __IDXGIDevice3_INTERFACE_DEFINED__ */
  229. /* interface __MIDL_itf_dxgi1_3_0000_0001 */
  230. /* [local] */
  231. typedef struct DXGI_MATRIX_3X2_F
  232. {
  233. FLOAT _11;
  234. FLOAT _12;
  235. FLOAT _21;
  236. FLOAT _22;
  237. FLOAT _31;
  238. FLOAT _32;
  239. } DXGI_MATRIX_3X2_F;
  240. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_3_0000_0001_v0_0_c_ifspec;
  241. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_3_0000_0001_v0_0_s_ifspec;
  242. #ifndef __IDXGISwapChain2_INTERFACE_DEFINED__
  243. #define __IDXGISwapChain2_INTERFACE_DEFINED__
  244. /* interface IDXGISwapChain2 */
  245. /* [unique][local][uuid][object] */
  246. EXTERN_C const IID IID_IDXGISwapChain2;
  247. #if defined(__cplusplus) && !defined(CINTERFACE)
  248. MIDL_INTERFACE("a8be2ac4-199f-4946-b331-79599fb98de7")
  249. IDXGISwapChain2 : public IDXGISwapChain1
  250. {
  251. public:
  252. virtual HRESULT STDMETHODCALLTYPE SetSourceSize(
  253. UINT Width,
  254. UINT Height) = 0;
  255. virtual HRESULT STDMETHODCALLTYPE GetSourceSize(
  256. /* [annotation][out] */
  257. _Out_ UINT *pWidth,
  258. /* [annotation][out] */
  259. _Out_ UINT *pHeight) = 0;
  260. virtual HRESULT STDMETHODCALLTYPE SetMaximumFrameLatency(
  261. UINT MaxLatency) = 0;
  262. virtual HRESULT STDMETHODCALLTYPE GetMaximumFrameLatency(
  263. /* [annotation][out] */
  264. _Out_ UINT *pMaxLatency) = 0;
  265. virtual HANDLE STDMETHODCALLTYPE GetFrameLatencyWaitableObject( void) = 0;
  266. virtual HRESULT STDMETHODCALLTYPE SetMatrixTransform(
  267. const DXGI_MATRIX_3X2_F *pMatrix) = 0;
  268. virtual HRESULT STDMETHODCALLTYPE GetMatrixTransform(
  269. /* [annotation][out] */
  270. _Out_ DXGI_MATRIX_3X2_F *pMatrix) = 0;
  271. };
  272. #else /* C style interface */
  273. typedef struct IDXGISwapChain2Vtbl
  274. {
  275. BEGIN_INTERFACE
  276. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  277. IDXGISwapChain2 * This,
  278. /* [in] */ REFIID riid,
  279. /* [annotation][iid_is][out] */
  280. _COM_Outptr_ void **ppvObject);
  281. ULONG ( STDMETHODCALLTYPE *AddRef )(
  282. IDXGISwapChain2 * This);
  283. ULONG ( STDMETHODCALLTYPE *Release )(
  284. IDXGISwapChain2 * This);
  285. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  286. IDXGISwapChain2 * This,
  287. /* [annotation][in] */
  288. _In_ REFGUID Name,
  289. /* [in] */ UINT DataSize,
  290. /* [annotation][in] */
  291. _In_reads_bytes_(DataSize) const void *pData);
  292. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  293. IDXGISwapChain2 * This,
  294. /* [annotation][in] */
  295. _In_ REFGUID Name,
  296. /* [annotation][in] */
  297. _In_opt_ const IUnknown *pUnknown);
  298. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  299. IDXGISwapChain2 * This,
  300. /* [annotation][in] */
  301. _In_ REFGUID Name,
  302. /* [annotation][out][in] */
  303. _Inout_ UINT *pDataSize,
  304. /* [annotation][out] */
  305. _Out_writes_bytes_(*pDataSize) void *pData);
  306. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  307. IDXGISwapChain2 * This,
  308. /* [annotation][in] */
  309. _In_ REFIID riid,
  310. /* [annotation][retval][out] */
  311. _COM_Outptr_ void **ppParent);
  312. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  313. IDXGISwapChain2 * This,
  314. /* [annotation][in] */
  315. _In_ REFIID riid,
  316. /* [annotation][retval][out] */
  317. _COM_Outptr_ void **ppDevice);
  318. HRESULT ( STDMETHODCALLTYPE *Present )(
  319. IDXGISwapChain2 * This,
  320. /* [in] */ UINT SyncInterval,
  321. /* [in] */ UINT Flags);
  322. HRESULT ( STDMETHODCALLTYPE *GetBuffer )(
  323. IDXGISwapChain2 * This,
  324. /* [in] */ UINT Buffer,
  325. /* [annotation][in] */
  326. _In_ REFIID riid,
  327. /* [annotation][out][in] */
  328. _COM_Outptr_ void **ppSurface);
  329. HRESULT ( STDMETHODCALLTYPE *SetFullscreenState )(
  330. IDXGISwapChain2 * This,
  331. /* [in] */ BOOL Fullscreen,
  332. /* [annotation][in] */
  333. _In_opt_ IDXGIOutput *pTarget);
  334. HRESULT ( STDMETHODCALLTYPE *GetFullscreenState )(
  335. IDXGISwapChain2 * This,
  336. /* [annotation][out] */
  337. _Out_opt_ BOOL *pFullscreen,
  338. /* [annotation][out] */
  339. _COM_Outptr_opt_result_maybenull_ IDXGIOutput **ppTarget);
  340. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  341. IDXGISwapChain2 * This,
  342. /* [annotation][out] */
  343. _Out_ DXGI_SWAP_CHAIN_DESC *pDesc);
  344. HRESULT ( STDMETHODCALLTYPE *ResizeBuffers )(
  345. IDXGISwapChain2 * This,
  346. /* [in] */ UINT BufferCount,
  347. /* [in] */ UINT Width,
  348. /* [in] */ UINT Height,
  349. /* [in] */ DXGI_FORMAT NewFormat,
  350. /* [in] */ UINT SwapChainFlags);
  351. HRESULT ( STDMETHODCALLTYPE *ResizeTarget )(
  352. IDXGISwapChain2 * This,
  353. /* [annotation][in] */
  354. _In_ const DXGI_MODE_DESC *pNewTargetParameters);
  355. HRESULT ( STDMETHODCALLTYPE *GetContainingOutput )(
  356. IDXGISwapChain2 * This,
  357. /* [annotation][out] */
  358. _COM_Outptr_ IDXGIOutput **ppOutput);
  359. HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )(
  360. IDXGISwapChain2 * This,
  361. /* [annotation][out] */
  362. _Out_ DXGI_FRAME_STATISTICS *pStats);
  363. HRESULT ( STDMETHODCALLTYPE *GetLastPresentCount )(
  364. IDXGISwapChain2 * This,
  365. /* [annotation][out] */
  366. _Out_ UINT *pLastPresentCount);
  367. HRESULT ( STDMETHODCALLTYPE *GetDesc1 )(
  368. IDXGISwapChain2 * This,
  369. /* [annotation][out] */
  370. _Out_ DXGI_SWAP_CHAIN_DESC1 *pDesc);
  371. HRESULT ( STDMETHODCALLTYPE *GetFullscreenDesc )(
  372. IDXGISwapChain2 * This,
  373. /* [annotation][out] */
  374. _Out_ DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc);
  375. HRESULT ( STDMETHODCALLTYPE *GetHwnd )(
  376. IDXGISwapChain2 * This,
  377. /* [annotation][out] */
  378. _Out_ HWND *pHwnd);
  379. HRESULT ( STDMETHODCALLTYPE *GetCoreWindow )(
  380. IDXGISwapChain2 * This,
  381. /* [annotation][in] */
  382. _In_ REFIID refiid,
  383. /* [annotation][out] */
  384. _COM_Outptr_ void **ppUnk);
  385. HRESULT ( STDMETHODCALLTYPE *Present1 )(
  386. IDXGISwapChain2 * This,
  387. /* [in] */ UINT SyncInterval,
  388. /* [in] */ UINT PresentFlags,
  389. /* [annotation][in] */
  390. _In_ const DXGI_PRESENT_PARAMETERS *pPresentParameters);
  391. BOOL ( STDMETHODCALLTYPE *IsTemporaryMonoSupported )(
  392. IDXGISwapChain2 * This);
  393. HRESULT ( STDMETHODCALLTYPE *GetRestrictToOutput )(
  394. IDXGISwapChain2 * This,
  395. /* [annotation][out] */
  396. _Out_ IDXGIOutput **ppRestrictToOutput);
  397. HRESULT ( STDMETHODCALLTYPE *SetBackgroundColor )(
  398. IDXGISwapChain2 * This,
  399. /* [annotation][in] */
  400. _In_ const DXGI_RGBA *pColor);
  401. HRESULT ( STDMETHODCALLTYPE *GetBackgroundColor )(
  402. IDXGISwapChain2 * This,
  403. /* [annotation][out] */
  404. _Out_ DXGI_RGBA *pColor);
  405. HRESULT ( STDMETHODCALLTYPE *SetRotation )(
  406. IDXGISwapChain2 * This,
  407. /* [annotation][in] */
  408. _In_ DXGI_MODE_ROTATION Rotation);
  409. HRESULT ( STDMETHODCALLTYPE *GetRotation )(
  410. IDXGISwapChain2 * This,
  411. /* [annotation][out] */
  412. _Out_ DXGI_MODE_ROTATION *pRotation);
  413. HRESULT ( STDMETHODCALLTYPE *SetSourceSize )(
  414. IDXGISwapChain2 * This,
  415. UINT Width,
  416. UINT Height);
  417. HRESULT ( STDMETHODCALLTYPE *GetSourceSize )(
  418. IDXGISwapChain2 * This,
  419. /* [annotation][out] */
  420. _Out_ UINT *pWidth,
  421. /* [annotation][out] */
  422. _Out_ UINT *pHeight);
  423. HRESULT ( STDMETHODCALLTYPE *SetMaximumFrameLatency )(
  424. IDXGISwapChain2 * This,
  425. UINT MaxLatency);
  426. HRESULT ( STDMETHODCALLTYPE *GetMaximumFrameLatency )(
  427. IDXGISwapChain2 * This,
  428. /* [annotation][out] */
  429. _Out_ UINT *pMaxLatency);
  430. HANDLE ( STDMETHODCALLTYPE *GetFrameLatencyWaitableObject )(
  431. IDXGISwapChain2 * This);
  432. HRESULT ( STDMETHODCALLTYPE *SetMatrixTransform )(
  433. IDXGISwapChain2 * This,
  434. const DXGI_MATRIX_3X2_F *pMatrix);
  435. HRESULT ( STDMETHODCALLTYPE *GetMatrixTransform )(
  436. IDXGISwapChain2 * This,
  437. /* [annotation][out] */
  438. _Out_ DXGI_MATRIX_3X2_F *pMatrix);
  439. END_INTERFACE
  440. } IDXGISwapChain2Vtbl;
  441. interface IDXGISwapChain2
  442. {
  443. CONST_VTBL struct IDXGISwapChain2Vtbl *lpVtbl;
  444. };
  445. #ifdef COBJMACROS
  446. #define IDXGISwapChain2_QueryInterface(This,riid,ppvObject) \
  447. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  448. #define IDXGISwapChain2_AddRef(This) \
  449. ( (This)->lpVtbl -> AddRef(This) )
  450. #define IDXGISwapChain2_Release(This) \
  451. ( (This)->lpVtbl -> Release(This) )
  452. #define IDXGISwapChain2_SetPrivateData(This,Name,DataSize,pData) \
  453. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  454. #define IDXGISwapChain2_SetPrivateDataInterface(This,Name,pUnknown) \
  455. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  456. #define IDXGISwapChain2_GetPrivateData(This,Name,pDataSize,pData) \
  457. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  458. #define IDXGISwapChain2_GetParent(This,riid,ppParent) \
  459. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  460. #define IDXGISwapChain2_GetDevice(This,riid,ppDevice) \
  461. ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
  462. #define IDXGISwapChain2_Present(This,SyncInterval,Flags) \
  463. ( (This)->lpVtbl -> Present(This,SyncInterval,Flags) )
  464. #define IDXGISwapChain2_GetBuffer(This,Buffer,riid,ppSurface) \
  465. ( (This)->lpVtbl -> GetBuffer(This,Buffer,riid,ppSurface) )
  466. #define IDXGISwapChain2_SetFullscreenState(This,Fullscreen,pTarget) \
  467. ( (This)->lpVtbl -> SetFullscreenState(This,Fullscreen,pTarget) )
  468. #define IDXGISwapChain2_GetFullscreenState(This,pFullscreen,ppTarget) \
  469. ( (This)->lpVtbl -> GetFullscreenState(This,pFullscreen,ppTarget) )
  470. #define IDXGISwapChain2_GetDesc(This,pDesc) \
  471. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  472. #define IDXGISwapChain2_ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags) \
  473. ( (This)->lpVtbl -> ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags) )
  474. #define IDXGISwapChain2_ResizeTarget(This,pNewTargetParameters) \
  475. ( (This)->lpVtbl -> ResizeTarget(This,pNewTargetParameters) )
  476. #define IDXGISwapChain2_GetContainingOutput(This,ppOutput) \
  477. ( (This)->lpVtbl -> GetContainingOutput(This,ppOutput) )
  478. #define IDXGISwapChain2_GetFrameStatistics(This,pStats) \
  479. ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) )
  480. #define IDXGISwapChain2_GetLastPresentCount(This,pLastPresentCount) \
  481. ( (This)->lpVtbl -> GetLastPresentCount(This,pLastPresentCount) )
  482. #define IDXGISwapChain2_GetDesc1(This,pDesc) \
  483. ( (This)->lpVtbl -> GetDesc1(This,pDesc) )
  484. #define IDXGISwapChain2_GetFullscreenDesc(This,pDesc) \
  485. ( (This)->lpVtbl -> GetFullscreenDesc(This,pDesc) )
  486. #define IDXGISwapChain2_GetHwnd(This,pHwnd) \
  487. ( (This)->lpVtbl -> GetHwnd(This,pHwnd) )
  488. #define IDXGISwapChain2_GetCoreWindow(This,refiid,ppUnk) \
  489. ( (This)->lpVtbl -> GetCoreWindow(This,refiid,ppUnk) )
  490. #define IDXGISwapChain2_Present1(This,SyncInterval,PresentFlags,pPresentParameters) \
  491. ( (This)->lpVtbl -> Present1(This,SyncInterval,PresentFlags,pPresentParameters) )
  492. #define IDXGISwapChain2_IsTemporaryMonoSupported(This) \
  493. ( (This)->lpVtbl -> IsTemporaryMonoSupported(This) )
  494. #define IDXGISwapChain2_GetRestrictToOutput(This,ppRestrictToOutput) \
  495. ( (This)->lpVtbl -> GetRestrictToOutput(This,ppRestrictToOutput) )
  496. #define IDXGISwapChain2_SetBackgroundColor(This,pColor) \
  497. ( (This)->lpVtbl -> SetBackgroundColor(This,pColor) )
  498. #define IDXGISwapChain2_GetBackgroundColor(This,pColor) \
  499. ( (This)->lpVtbl -> GetBackgroundColor(This,pColor) )
  500. #define IDXGISwapChain2_SetRotation(This,Rotation) \
  501. ( (This)->lpVtbl -> SetRotation(This,Rotation) )
  502. #define IDXGISwapChain2_GetRotation(This,pRotation) \
  503. ( (This)->lpVtbl -> GetRotation(This,pRotation) )
  504. #define IDXGISwapChain2_SetSourceSize(This,Width,Height) \
  505. ( (This)->lpVtbl -> SetSourceSize(This,Width,Height) )
  506. #define IDXGISwapChain2_GetSourceSize(This,pWidth,pHeight) \
  507. ( (This)->lpVtbl -> GetSourceSize(This,pWidth,pHeight) )
  508. #define IDXGISwapChain2_SetMaximumFrameLatency(This,MaxLatency) \
  509. ( (This)->lpVtbl -> SetMaximumFrameLatency(This,MaxLatency) )
  510. #define IDXGISwapChain2_GetMaximumFrameLatency(This,pMaxLatency) \
  511. ( (This)->lpVtbl -> GetMaximumFrameLatency(This,pMaxLatency) )
  512. #define IDXGISwapChain2_GetFrameLatencyWaitableObject(This) \
  513. ( (This)->lpVtbl -> GetFrameLatencyWaitableObject(This) )
  514. #define IDXGISwapChain2_SetMatrixTransform(This,pMatrix) \
  515. ( (This)->lpVtbl -> SetMatrixTransform(This,pMatrix) )
  516. #define IDXGISwapChain2_GetMatrixTransform(This,pMatrix) \
  517. ( (This)->lpVtbl -> GetMatrixTransform(This,pMatrix) )
  518. #endif /* COBJMACROS */
  519. #endif /* C style interface */
  520. #endif /* __IDXGISwapChain2_INTERFACE_DEFINED__ */
  521. #ifndef __IDXGIOutput2_INTERFACE_DEFINED__
  522. #define __IDXGIOutput2_INTERFACE_DEFINED__
  523. /* interface IDXGIOutput2 */
  524. /* [unique][local][uuid][object] */
  525. EXTERN_C const IID IID_IDXGIOutput2;
  526. #if defined(__cplusplus) && !defined(CINTERFACE)
  527. MIDL_INTERFACE("595e39d1-2724-4663-99b1-da969de28364")
  528. IDXGIOutput2 : public IDXGIOutput1
  529. {
  530. public:
  531. virtual BOOL STDMETHODCALLTYPE SupportsOverlays( void) = 0;
  532. };
  533. #else /* C style interface */
  534. typedef struct IDXGIOutput2Vtbl
  535. {
  536. BEGIN_INTERFACE
  537. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  538. IDXGIOutput2 * This,
  539. /* [in] */ REFIID riid,
  540. /* [annotation][iid_is][out] */
  541. _COM_Outptr_ void **ppvObject);
  542. ULONG ( STDMETHODCALLTYPE *AddRef )(
  543. IDXGIOutput2 * This);
  544. ULONG ( STDMETHODCALLTYPE *Release )(
  545. IDXGIOutput2 * This);
  546. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  547. IDXGIOutput2 * This,
  548. /* [annotation][in] */
  549. _In_ REFGUID Name,
  550. /* [in] */ UINT DataSize,
  551. /* [annotation][in] */
  552. _In_reads_bytes_(DataSize) const void *pData);
  553. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  554. IDXGIOutput2 * This,
  555. /* [annotation][in] */
  556. _In_ REFGUID Name,
  557. /* [annotation][in] */
  558. _In_opt_ const IUnknown *pUnknown);
  559. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  560. IDXGIOutput2 * This,
  561. /* [annotation][in] */
  562. _In_ REFGUID Name,
  563. /* [annotation][out][in] */
  564. _Inout_ UINT *pDataSize,
  565. /* [annotation][out] */
  566. _Out_writes_bytes_(*pDataSize) void *pData);
  567. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  568. IDXGIOutput2 * This,
  569. /* [annotation][in] */
  570. _In_ REFIID riid,
  571. /* [annotation][retval][out] */
  572. _COM_Outptr_ void **ppParent);
  573. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  574. IDXGIOutput2 * This,
  575. /* [annotation][out] */
  576. _Out_ DXGI_OUTPUT_DESC *pDesc);
  577. HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList )(
  578. IDXGIOutput2 * This,
  579. /* [in] */ DXGI_FORMAT EnumFormat,
  580. /* [in] */ UINT Flags,
  581. /* [annotation][out][in] */
  582. _Inout_ UINT *pNumModes,
  583. /* [annotation][out] */
  584. _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC *pDesc);
  585. HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode )(
  586. IDXGIOutput2 * This,
  587. /* [annotation][in] */
  588. _In_ const DXGI_MODE_DESC *pModeToMatch,
  589. /* [annotation][out] */
  590. _Out_ DXGI_MODE_DESC *pClosestMatch,
  591. /* [annotation][in] */
  592. _In_opt_ IUnknown *pConcernedDevice);
  593. HRESULT ( STDMETHODCALLTYPE *WaitForVBlank )(
  594. IDXGIOutput2 * This);
  595. HRESULT ( STDMETHODCALLTYPE *TakeOwnership )(
  596. IDXGIOutput2 * This,
  597. /* [annotation][in] */
  598. _In_ IUnknown *pDevice,
  599. BOOL Exclusive);
  600. void ( STDMETHODCALLTYPE *ReleaseOwnership )(
  601. IDXGIOutput2 * This);
  602. HRESULT ( STDMETHODCALLTYPE *GetGammaControlCapabilities )(
  603. IDXGIOutput2 * This,
  604. /* [annotation][out] */
  605. _Out_ DXGI_GAMMA_CONTROL_CAPABILITIES *pGammaCaps);
  606. HRESULT ( STDMETHODCALLTYPE *SetGammaControl )(
  607. IDXGIOutput2 * This,
  608. /* [annotation][in] */
  609. _In_ const DXGI_GAMMA_CONTROL *pArray);
  610. HRESULT ( STDMETHODCALLTYPE *GetGammaControl )(
  611. IDXGIOutput2 * This,
  612. /* [annotation][out] */
  613. _Out_ DXGI_GAMMA_CONTROL *pArray);
  614. HRESULT ( STDMETHODCALLTYPE *SetDisplaySurface )(
  615. IDXGIOutput2 * This,
  616. /* [annotation][in] */
  617. _In_ IDXGISurface *pScanoutSurface);
  618. HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData )(
  619. IDXGIOutput2 * This,
  620. /* [annotation][in] */
  621. _In_ IDXGISurface *pDestination);
  622. HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )(
  623. IDXGIOutput2 * This,
  624. /* [annotation][out] */
  625. _Out_ DXGI_FRAME_STATISTICS *pStats);
  626. HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList1 )(
  627. IDXGIOutput2 * This,
  628. /* [in] */ DXGI_FORMAT EnumFormat,
  629. /* [in] */ UINT Flags,
  630. /* [annotation][out][in] */
  631. _Inout_ UINT *pNumModes,
  632. /* [annotation][out] */
  633. _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC1 *pDesc);
  634. HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode1 )(
  635. IDXGIOutput2 * This,
  636. /* [annotation][in] */
  637. _In_ const DXGI_MODE_DESC1 *pModeToMatch,
  638. /* [annotation][out] */
  639. _Out_ DXGI_MODE_DESC1 *pClosestMatch,
  640. /* [annotation][in] */
  641. _In_opt_ IUnknown *pConcernedDevice);
  642. HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData1 )(
  643. IDXGIOutput2 * This,
  644. /* [annotation][in] */
  645. _In_ IDXGIResource *pDestination);
  646. HRESULT ( STDMETHODCALLTYPE *DuplicateOutput )(
  647. IDXGIOutput2 * This,
  648. /* [annotation][in] */
  649. _In_ IUnknown *pDevice,
  650. /* [annotation][out] */
  651. _COM_Outptr_ IDXGIOutputDuplication **ppOutputDuplication);
  652. BOOL ( STDMETHODCALLTYPE *SupportsOverlays )(
  653. IDXGIOutput2 * This);
  654. END_INTERFACE
  655. } IDXGIOutput2Vtbl;
  656. interface IDXGIOutput2
  657. {
  658. CONST_VTBL struct IDXGIOutput2Vtbl *lpVtbl;
  659. };
  660. #ifdef COBJMACROS
  661. #define IDXGIOutput2_QueryInterface(This,riid,ppvObject) \
  662. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  663. #define IDXGIOutput2_AddRef(This) \
  664. ( (This)->lpVtbl -> AddRef(This) )
  665. #define IDXGIOutput2_Release(This) \
  666. ( (This)->lpVtbl -> Release(This) )
  667. #define IDXGIOutput2_SetPrivateData(This,Name,DataSize,pData) \
  668. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  669. #define IDXGIOutput2_SetPrivateDataInterface(This,Name,pUnknown) \
  670. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  671. #define IDXGIOutput2_GetPrivateData(This,Name,pDataSize,pData) \
  672. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  673. #define IDXGIOutput2_GetParent(This,riid,ppParent) \
  674. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  675. #define IDXGIOutput2_GetDesc(This,pDesc) \
  676. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  677. #define IDXGIOutput2_GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) \
  678. ( (This)->lpVtbl -> GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) )
  679. #define IDXGIOutput2_FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) \
  680. ( (This)->lpVtbl -> FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) )
  681. #define IDXGIOutput2_WaitForVBlank(This) \
  682. ( (This)->lpVtbl -> WaitForVBlank(This) )
  683. #define IDXGIOutput2_TakeOwnership(This,pDevice,Exclusive) \
  684. ( (This)->lpVtbl -> TakeOwnership(This,pDevice,Exclusive) )
  685. #define IDXGIOutput2_ReleaseOwnership(This) \
  686. ( (This)->lpVtbl -> ReleaseOwnership(This) )
  687. #define IDXGIOutput2_GetGammaControlCapabilities(This,pGammaCaps) \
  688. ( (This)->lpVtbl -> GetGammaControlCapabilities(This,pGammaCaps) )
  689. #define IDXGIOutput2_SetGammaControl(This,pArray) \
  690. ( (This)->lpVtbl -> SetGammaControl(This,pArray) )
  691. #define IDXGIOutput2_GetGammaControl(This,pArray) \
  692. ( (This)->lpVtbl -> GetGammaControl(This,pArray) )
  693. #define IDXGIOutput2_SetDisplaySurface(This,pScanoutSurface) \
  694. ( (This)->lpVtbl -> SetDisplaySurface(This,pScanoutSurface) )
  695. #define IDXGIOutput2_GetDisplaySurfaceData(This,pDestination) \
  696. ( (This)->lpVtbl -> GetDisplaySurfaceData(This,pDestination) )
  697. #define IDXGIOutput2_GetFrameStatistics(This,pStats) \
  698. ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) )
  699. #define IDXGIOutput2_GetDisplayModeList1(This,EnumFormat,Flags,pNumModes,pDesc) \
  700. ( (This)->lpVtbl -> GetDisplayModeList1(This,EnumFormat,Flags,pNumModes,pDesc) )
  701. #define IDXGIOutput2_FindClosestMatchingMode1(This,pModeToMatch,pClosestMatch,pConcernedDevice) \
  702. ( (This)->lpVtbl -> FindClosestMatchingMode1(This,pModeToMatch,pClosestMatch,pConcernedDevice) )
  703. #define IDXGIOutput2_GetDisplaySurfaceData1(This,pDestination) \
  704. ( (This)->lpVtbl -> GetDisplaySurfaceData1(This,pDestination) )
  705. #define IDXGIOutput2_DuplicateOutput(This,pDevice,ppOutputDuplication) \
  706. ( (This)->lpVtbl -> DuplicateOutput(This,pDevice,ppOutputDuplication) )
  707. #define IDXGIOutput2_SupportsOverlays(This) \
  708. ( (This)->lpVtbl -> SupportsOverlays(This) )
  709. #endif /* COBJMACROS */
  710. #endif /* C style interface */
  711. #endif /* __IDXGIOutput2_INTERFACE_DEFINED__ */
  712. #ifndef __IDXGIFactory3_INTERFACE_DEFINED__
  713. #define __IDXGIFactory3_INTERFACE_DEFINED__
  714. /* interface IDXGIFactory3 */
  715. /* [unique][local][uuid][object] */
  716. EXTERN_C const IID IID_IDXGIFactory3;
  717. #if defined(__cplusplus) && !defined(CINTERFACE)
  718. MIDL_INTERFACE("25483823-cd46-4c7d-86ca-47aa95b837bd")
  719. IDXGIFactory3 : public IDXGIFactory2
  720. {
  721. public:
  722. virtual UINT STDMETHODCALLTYPE GetCreationFlags( void) = 0;
  723. };
  724. #else /* C style interface */
  725. typedef struct IDXGIFactory3Vtbl
  726. {
  727. BEGIN_INTERFACE
  728. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  729. IDXGIFactory3 * This,
  730. /* [in] */ REFIID riid,
  731. /* [annotation][iid_is][out] */
  732. _COM_Outptr_ void **ppvObject);
  733. ULONG ( STDMETHODCALLTYPE *AddRef )(
  734. IDXGIFactory3 * This);
  735. ULONG ( STDMETHODCALLTYPE *Release )(
  736. IDXGIFactory3 * This);
  737. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  738. IDXGIFactory3 * This,
  739. /* [annotation][in] */
  740. _In_ REFGUID Name,
  741. /* [in] */ UINT DataSize,
  742. /* [annotation][in] */
  743. _In_reads_bytes_(DataSize) const void *pData);
  744. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  745. IDXGIFactory3 * This,
  746. /* [annotation][in] */
  747. _In_ REFGUID Name,
  748. /* [annotation][in] */
  749. _In_opt_ const IUnknown *pUnknown);
  750. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  751. IDXGIFactory3 * This,
  752. /* [annotation][in] */
  753. _In_ REFGUID Name,
  754. /* [annotation][out][in] */
  755. _Inout_ UINT *pDataSize,
  756. /* [annotation][out] */
  757. _Out_writes_bytes_(*pDataSize) void *pData);
  758. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  759. IDXGIFactory3 * This,
  760. /* [annotation][in] */
  761. _In_ REFIID riid,
  762. /* [annotation][retval][out] */
  763. _COM_Outptr_ void **ppParent);
  764. HRESULT ( STDMETHODCALLTYPE *EnumAdapters )(
  765. IDXGIFactory3 * This,
  766. /* [in] */ UINT Adapter,
  767. /* [annotation][out] */
  768. _COM_Outptr_ IDXGIAdapter **ppAdapter);
  769. HRESULT ( STDMETHODCALLTYPE *MakeWindowAssociation )(
  770. IDXGIFactory3 * This,
  771. HWND WindowHandle,
  772. UINT Flags);
  773. HRESULT ( STDMETHODCALLTYPE *GetWindowAssociation )(
  774. IDXGIFactory3 * This,
  775. /* [annotation][out] */
  776. _Out_ HWND *pWindowHandle);
  777. HRESULT ( STDMETHODCALLTYPE *CreateSwapChain )(
  778. IDXGIFactory3 * This,
  779. /* [annotation][in] */
  780. _In_ IUnknown *pDevice,
  781. /* [annotation][in] */
  782. _In_ DXGI_SWAP_CHAIN_DESC *pDesc,
  783. /* [annotation][out] */
  784. _COM_Outptr_ IDXGISwapChain **ppSwapChain);
  785. HRESULT ( STDMETHODCALLTYPE *CreateSoftwareAdapter )(
  786. IDXGIFactory3 * This,
  787. /* [in] */ HMODULE Module,
  788. /* [annotation][out] */
  789. _COM_Outptr_ IDXGIAdapter **ppAdapter);
  790. HRESULT ( STDMETHODCALLTYPE *EnumAdapters1 )(
  791. IDXGIFactory3 * This,
  792. /* [in] */ UINT Adapter,
  793. /* [annotation][out] */
  794. _COM_Outptr_ IDXGIAdapter1 **ppAdapter);
  795. BOOL ( STDMETHODCALLTYPE *IsCurrent )(
  796. IDXGIFactory3 * This);
  797. BOOL ( STDMETHODCALLTYPE *IsWindowedStereoEnabled )(
  798. IDXGIFactory3 * This);
  799. HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForHwnd )(
  800. IDXGIFactory3 * This,
  801. /* [annotation][in] */
  802. _In_ IUnknown *pDevice,
  803. /* [annotation][in] */
  804. _In_ HWND hWnd,
  805. /* [annotation][in] */
  806. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  807. /* [annotation][in] */
  808. _In_opt_ const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
  809. /* [annotation][in] */
  810. _In_opt_ IDXGIOutput *pRestrictToOutput,
  811. /* [annotation][out] */
  812. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain);
  813. HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForCoreWindow )(
  814. IDXGIFactory3 * This,
  815. /* [annotation][in] */
  816. _In_ IUnknown *pDevice,
  817. /* [annotation][in] */
  818. _In_ IUnknown *pWindow,
  819. /* [annotation][in] */
  820. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  821. /* [annotation][in] */
  822. _In_opt_ IDXGIOutput *pRestrictToOutput,
  823. /* [annotation][out] */
  824. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain);
  825. HRESULT ( STDMETHODCALLTYPE *GetSharedResourceAdapterLuid )(
  826. IDXGIFactory3 * This,
  827. /* [annotation] */
  828. _In_ HANDLE hResource,
  829. /* [annotation] */
  830. _Out_ LUID *pLuid);
  831. HRESULT ( STDMETHODCALLTYPE *RegisterStereoStatusWindow )(
  832. IDXGIFactory3 * This,
  833. /* [annotation][in] */
  834. _In_ HWND WindowHandle,
  835. /* [annotation][in] */
  836. _In_ UINT wMsg,
  837. /* [annotation][out] */
  838. _Out_ DWORD *pdwCookie);
  839. HRESULT ( STDMETHODCALLTYPE *RegisterStereoStatusEvent )(
  840. IDXGIFactory3 * This,
  841. /* [annotation][in] */
  842. _In_ HANDLE hEvent,
  843. /* [annotation][out] */
  844. _Out_ DWORD *pdwCookie);
  845. void ( STDMETHODCALLTYPE *UnregisterStereoStatus )(
  846. IDXGIFactory3 * This,
  847. /* [annotation][in] */
  848. _In_ DWORD dwCookie);
  849. HRESULT ( STDMETHODCALLTYPE *RegisterOcclusionStatusWindow )(
  850. IDXGIFactory3 * This,
  851. /* [annotation][in] */
  852. _In_ HWND WindowHandle,
  853. /* [annotation][in] */
  854. _In_ UINT wMsg,
  855. /* [annotation][out] */
  856. _Out_ DWORD *pdwCookie);
  857. HRESULT ( STDMETHODCALLTYPE *RegisterOcclusionStatusEvent )(
  858. IDXGIFactory3 * This,
  859. /* [annotation][in] */
  860. _In_ HANDLE hEvent,
  861. /* [annotation][out] */
  862. _Out_ DWORD *pdwCookie);
  863. void ( STDMETHODCALLTYPE *UnregisterOcclusionStatus )(
  864. IDXGIFactory3 * This,
  865. /* [annotation][in] */
  866. _In_ DWORD dwCookie);
  867. HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForComposition )(
  868. IDXGIFactory3 * This,
  869. /* [annotation][in] */
  870. _In_ IUnknown *pDevice,
  871. /* [annotation][in] */
  872. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  873. /* [annotation][in] */
  874. _In_opt_ IDXGIOutput *pRestrictToOutput,
  875. /* [annotation][out] */
  876. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain);
  877. UINT ( STDMETHODCALLTYPE *GetCreationFlags )(
  878. IDXGIFactory3 * This);
  879. END_INTERFACE
  880. } IDXGIFactory3Vtbl;
  881. interface IDXGIFactory3
  882. {
  883. CONST_VTBL struct IDXGIFactory3Vtbl *lpVtbl;
  884. };
  885. #ifdef COBJMACROS
  886. #define IDXGIFactory3_QueryInterface(This,riid,ppvObject) \
  887. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  888. #define IDXGIFactory3_AddRef(This) \
  889. ( (This)->lpVtbl -> AddRef(This) )
  890. #define IDXGIFactory3_Release(This) \
  891. ( (This)->lpVtbl -> Release(This) )
  892. #define IDXGIFactory3_SetPrivateData(This,Name,DataSize,pData) \
  893. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  894. #define IDXGIFactory3_SetPrivateDataInterface(This,Name,pUnknown) \
  895. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  896. #define IDXGIFactory3_GetPrivateData(This,Name,pDataSize,pData) \
  897. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  898. #define IDXGIFactory3_GetParent(This,riid,ppParent) \
  899. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  900. #define IDXGIFactory3_EnumAdapters(This,Adapter,ppAdapter) \
  901. ( (This)->lpVtbl -> EnumAdapters(This,Adapter,ppAdapter) )
  902. #define IDXGIFactory3_MakeWindowAssociation(This,WindowHandle,Flags) \
  903. ( (This)->lpVtbl -> MakeWindowAssociation(This,WindowHandle,Flags) )
  904. #define IDXGIFactory3_GetWindowAssociation(This,pWindowHandle) \
  905. ( (This)->lpVtbl -> GetWindowAssociation(This,pWindowHandle) )
  906. #define IDXGIFactory3_CreateSwapChain(This,pDevice,pDesc,ppSwapChain) \
  907. ( (This)->lpVtbl -> CreateSwapChain(This,pDevice,pDesc,ppSwapChain) )
  908. #define IDXGIFactory3_CreateSoftwareAdapter(This,Module,ppAdapter) \
  909. ( (This)->lpVtbl -> CreateSoftwareAdapter(This,Module,ppAdapter) )
  910. #define IDXGIFactory3_EnumAdapters1(This,Adapter,ppAdapter) \
  911. ( (This)->lpVtbl -> EnumAdapters1(This,Adapter,ppAdapter) )
  912. #define IDXGIFactory3_IsCurrent(This) \
  913. ( (This)->lpVtbl -> IsCurrent(This) )
  914. #define IDXGIFactory3_IsWindowedStereoEnabled(This) \
  915. ( (This)->lpVtbl -> IsWindowedStereoEnabled(This) )
  916. #define IDXGIFactory3_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) \
  917. ( (This)->lpVtbl -> CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) )
  918. #define IDXGIFactory3_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) \
  919. ( (This)->lpVtbl -> CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) )
  920. #define IDXGIFactory3_GetSharedResourceAdapterLuid(This,hResource,pLuid) \
  921. ( (This)->lpVtbl -> GetSharedResourceAdapterLuid(This,hResource,pLuid) )
  922. #define IDXGIFactory3_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) \
  923. ( (This)->lpVtbl -> RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) )
  924. #define IDXGIFactory3_RegisterStereoStatusEvent(This,hEvent,pdwCookie) \
  925. ( (This)->lpVtbl -> RegisterStereoStatusEvent(This,hEvent,pdwCookie) )
  926. #define IDXGIFactory3_UnregisterStereoStatus(This,dwCookie) \
  927. ( (This)->lpVtbl -> UnregisterStereoStatus(This,dwCookie) )
  928. #define IDXGIFactory3_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) \
  929. ( (This)->lpVtbl -> RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) )
  930. #define IDXGIFactory3_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) \
  931. ( (This)->lpVtbl -> RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) )
  932. #define IDXGIFactory3_UnregisterOcclusionStatus(This,dwCookie) \
  933. ( (This)->lpVtbl -> UnregisterOcclusionStatus(This,dwCookie) )
  934. #define IDXGIFactory3_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) \
  935. ( (This)->lpVtbl -> CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) )
  936. #define IDXGIFactory3_GetCreationFlags(This) \
  937. ( (This)->lpVtbl -> GetCreationFlags(This) )
  938. #endif /* COBJMACROS */
  939. #endif /* C style interface */
  940. #endif /* __IDXGIFactory3_INTERFACE_DEFINED__ */
  941. /* interface __MIDL_itf_dxgi1_3_0000_0004 */
  942. /* [local] */
  943. #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
  944. #pragma endregion
  945. #pragma region App Family
  946. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  947. typedef struct DXGI_DECODE_SWAP_CHAIN_DESC
  948. {
  949. UINT Flags;
  950. } DXGI_DECODE_SWAP_CHAIN_DESC;
  951. typedef
  952. enum DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS
  953. {
  954. DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE = 0x1,
  955. DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709 = 0x2,
  956. DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC = 0x4
  957. } DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS;
  958. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_3_0000_0004_v0_0_c_ifspec;
  959. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_3_0000_0004_v0_0_s_ifspec;
  960. #ifndef __IDXGIDecodeSwapChain_INTERFACE_DEFINED__
  961. #define __IDXGIDecodeSwapChain_INTERFACE_DEFINED__
  962. /* interface IDXGIDecodeSwapChain */
  963. /* [unique][local][uuid][object] */
  964. EXTERN_C const IID IID_IDXGIDecodeSwapChain;
  965. #if defined(__cplusplus) && !defined(CINTERFACE)
  966. MIDL_INTERFACE("2633066b-4514-4c7a-8fd8-12ea98059d18")
  967. IDXGIDecodeSwapChain : public IUnknown
  968. {
  969. public:
  970. virtual HRESULT STDMETHODCALLTYPE PresentBuffer(
  971. UINT BufferToPresent,
  972. UINT SyncInterval,
  973. UINT Flags) = 0;
  974. virtual HRESULT STDMETHODCALLTYPE SetSourceRect(
  975. const RECT *pRect) = 0;
  976. virtual HRESULT STDMETHODCALLTYPE SetTargetRect(
  977. const RECT *pRect) = 0;
  978. virtual HRESULT STDMETHODCALLTYPE SetDestSize(
  979. UINT Width,
  980. UINT Height) = 0;
  981. virtual HRESULT STDMETHODCALLTYPE GetSourceRect(
  982. /* [annotation][out] */
  983. _Out_ RECT *pRect) = 0;
  984. virtual HRESULT STDMETHODCALLTYPE GetTargetRect(
  985. /* [annotation][out] */
  986. _Out_ RECT *pRect) = 0;
  987. virtual HRESULT STDMETHODCALLTYPE GetDestSize(
  988. /* [annotation][out] */
  989. _Out_ UINT *pWidth,
  990. /* [annotation][out] */
  991. _Out_ UINT *pHeight) = 0;
  992. virtual HRESULT STDMETHODCALLTYPE SetColorSpace(
  993. DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS ColorSpace) = 0;
  994. virtual DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS STDMETHODCALLTYPE GetColorSpace( void) = 0;
  995. };
  996. #else /* C style interface */
  997. typedef struct IDXGIDecodeSwapChainVtbl
  998. {
  999. BEGIN_INTERFACE
  1000. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1001. IDXGIDecodeSwapChain * This,
  1002. /* [in] */ REFIID riid,
  1003. /* [annotation][iid_is][out] */
  1004. _COM_Outptr_ void **ppvObject);
  1005. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1006. IDXGIDecodeSwapChain * This);
  1007. ULONG ( STDMETHODCALLTYPE *Release )(
  1008. IDXGIDecodeSwapChain * This);
  1009. HRESULT ( STDMETHODCALLTYPE *PresentBuffer )(
  1010. IDXGIDecodeSwapChain * This,
  1011. UINT BufferToPresent,
  1012. UINT SyncInterval,
  1013. UINT Flags);
  1014. HRESULT ( STDMETHODCALLTYPE *SetSourceRect )(
  1015. IDXGIDecodeSwapChain * This,
  1016. const RECT *pRect);
  1017. HRESULT ( STDMETHODCALLTYPE *SetTargetRect )(
  1018. IDXGIDecodeSwapChain * This,
  1019. const RECT *pRect);
  1020. HRESULT ( STDMETHODCALLTYPE *SetDestSize )(
  1021. IDXGIDecodeSwapChain * This,
  1022. UINT Width,
  1023. UINT Height);
  1024. HRESULT ( STDMETHODCALLTYPE *GetSourceRect )(
  1025. IDXGIDecodeSwapChain * This,
  1026. /* [annotation][out] */
  1027. _Out_ RECT *pRect);
  1028. HRESULT ( STDMETHODCALLTYPE *GetTargetRect )(
  1029. IDXGIDecodeSwapChain * This,
  1030. /* [annotation][out] */
  1031. _Out_ RECT *pRect);
  1032. HRESULT ( STDMETHODCALLTYPE *GetDestSize )(
  1033. IDXGIDecodeSwapChain * This,
  1034. /* [annotation][out] */
  1035. _Out_ UINT *pWidth,
  1036. /* [annotation][out] */
  1037. _Out_ UINT *pHeight);
  1038. HRESULT ( STDMETHODCALLTYPE *SetColorSpace )(
  1039. IDXGIDecodeSwapChain * This,
  1040. DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS ColorSpace);
  1041. DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS ( STDMETHODCALLTYPE *GetColorSpace )(
  1042. IDXGIDecodeSwapChain * This);
  1043. END_INTERFACE
  1044. } IDXGIDecodeSwapChainVtbl;
  1045. interface IDXGIDecodeSwapChain
  1046. {
  1047. CONST_VTBL struct IDXGIDecodeSwapChainVtbl *lpVtbl;
  1048. };
  1049. #ifdef COBJMACROS
  1050. #define IDXGIDecodeSwapChain_QueryInterface(This,riid,ppvObject) \
  1051. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1052. #define IDXGIDecodeSwapChain_AddRef(This) \
  1053. ( (This)->lpVtbl -> AddRef(This) )
  1054. #define IDXGIDecodeSwapChain_Release(This) \
  1055. ( (This)->lpVtbl -> Release(This) )
  1056. #define IDXGIDecodeSwapChain_PresentBuffer(This,BufferToPresent,SyncInterval,Flags) \
  1057. ( (This)->lpVtbl -> PresentBuffer(This,BufferToPresent,SyncInterval,Flags) )
  1058. #define IDXGIDecodeSwapChain_SetSourceRect(This,pRect) \
  1059. ( (This)->lpVtbl -> SetSourceRect(This,pRect) )
  1060. #define IDXGIDecodeSwapChain_SetTargetRect(This,pRect) \
  1061. ( (This)->lpVtbl -> SetTargetRect(This,pRect) )
  1062. #define IDXGIDecodeSwapChain_SetDestSize(This,Width,Height) \
  1063. ( (This)->lpVtbl -> SetDestSize(This,Width,Height) )
  1064. #define IDXGIDecodeSwapChain_GetSourceRect(This,pRect) \
  1065. ( (This)->lpVtbl -> GetSourceRect(This,pRect) )
  1066. #define IDXGIDecodeSwapChain_GetTargetRect(This,pRect) \
  1067. ( (This)->lpVtbl -> GetTargetRect(This,pRect) )
  1068. #define IDXGIDecodeSwapChain_GetDestSize(This,pWidth,pHeight) \
  1069. ( (This)->lpVtbl -> GetDestSize(This,pWidth,pHeight) )
  1070. #define IDXGIDecodeSwapChain_SetColorSpace(This,ColorSpace) \
  1071. ( (This)->lpVtbl -> SetColorSpace(This,ColorSpace) )
  1072. #define IDXGIDecodeSwapChain_GetColorSpace(This) \
  1073. ( (This)->lpVtbl -> GetColorSpace(This) )
  1074. #endif /* COBJMACROS */
  1075. #endif /* C style interface */
  1076. #endif /* __IDXGIDecodeSwapChain_INTERFACE_DEFINED__ */
  1077. #ifndef __IDXGIFactoryMedia_INTERFACE_DEFINED__
  1078. #define __IDXGIFactoryMedia_INTERFACE_DEFINED__
  1079. /* interface IDXGIFactoryMedia */
  1080. /* [unique][local][uuid][object] */
  1081. EXTERN_C const IID IID_IDXGIFactoryMedia;
  1082. #if defined(__cplusplus) && !defined(CINTERFACE)
  1083. MIDL_INTERFACE("41e7d1f2-a591-4f7b-a2e5-fa9c843e1c12")
  1084. IDXGIFactoryMedia : public IUnknown
  1085. {
  1086. public:
  1087. virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForCompositionSurfaceHandle(
  1088. /* [annotation][in] */
  1089. _In_ IUnknown *pDevice,
  1090. /* [annotation][in] */
  1091. _In_opt_ HANDLE hSurface,
  1092. /* [annotation][in] */
  1093. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1094. /* [annotation][in] */
  1095. _In_opt_ IDXGIOutput *pRestrictToOutput,
  1096. /* [annotation][out] */
  1097. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain) = 0;
  1098. virtual HRESULT STDMETHODCALLTYPE CreateDecodeSwapChainForCompositionSurfaceHandle(
  1099. /* [annotation][in] */
  1100. _In_ IUnknown *pDevice,
  1101. /* [annotation][in] */
  1102. _In_opt_ HANDLE hSurface,
  1103. /* [annotation][in] */
  1104. _In_ DXGI_DECODE_SWAP_CHAIN_DESC *pDesc,
  1105. /* [annotation][in] */
  1106. _In_ IDXGIResource *pYuvDecodeBuffers,
  1107. /* [annotation][in] */
  1108. _In_opt_ IDXGIOutput *pRestrictToOutput,
  1109. /* [annotation][out] */
  1110. _COM_Outptr_ IDXGIDecodeSwapChain **ppSwapChain) = 0;
  1111. };
  1112. #else /* C style interface */
  1113. typedef struct IDXGIFactoryMediaVtbl
  1114. {
  1115. BEGIN_INTERFACE
  1116. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1117. IDXGIFactoryMedia * This,
  1118. /* [in] */ REFIID riid,
  1119. /* [annotation][iid_is][out] */
  1120. _COM_Outptr_ void **ppvObject);
  1121. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1122. IDXGIFactoryMedia * This);
  1123. ULONG ( STDMETHODCALLTYPE *Release )(
  1124. IDXGIFactoryMedia * This);
  1125. HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForCompositionSurfaceHandle )(
  1126. IDXGIFactoryMedia * This,
  1127. /* [annotation][in] */
  1128. _In_ IUnknown *pDevice,
  1129. /* [annotation][in] */
  1130. _In_opt_ HANDLE hSurface,
  1131. /* [annotation][in] */
  1132. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1133. /* [annotation][in] */
  1134. _In_opt_ IDXGIOutput *pRestrictToOutput,
  1135. /* [annotation][out] */
  1136. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain);
  1137. HRESULT ( STDMETHODCALLTYPE *CreateDecodeSwapChainForCompositionSurfaceHandle )(
  1138. IDXGIFactoryMedia * This,
  1139. /* [annotation][in] */
  1140. _In_ IUnknown *pDevice,
  1141. /* [annotation][in] */
  1142. _In_opt_ HANDLE hSurface,
  1143. /* [annotation][in] */
  1144. _In_ DXGI_DECODE_SWAP_CHAIN_DESC *pDesc,
  1145. /* [annotation][in] */
  1146. _In_ IDXGIResource *pYuvDecodeBuffers,
  1147. /* [annotation][in] */
  1148. _In_opt_ IDXGIOutput *pRestrictToOutput,
  1149. /* [annotation][out] */
  1150. _COM_Outptr_ IDXGIDecodeSwapChain **ppSwapChain);
  1151. END_INTERFACE
  1152. } IDXGIFactoryMediaVtbl;
  1153. interface IDXGIFactoryMedia
  1154. {
  1155. CONST_VTBL struct IDXGIFactoryMediaVtbl *lpVtbl;
  1156. };
  1157. #ifdef COBJMACROS
  1158. #define IDXGIFactoryMedia_QueryInterface(This,riid,ppvObject) \
  1159. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1160. #define IDXGIFactoryMedia_AddRef(This) \
  1161. ( (This)->lpVtbl -> AddRef(This) )
  1162. #define IDXGIFactoryMedia_Release(This) \
  1163. ( (This)->lpVtbl -> Release(This) )
  1164. #define IDXGIFactoryMedia_CreateSwapChainForCompositionSurfaceHandle(This,pDevice,hSurface,pDesc,pRestrictToOutput,ppSwapChain) \
  1165. ( (This)->lpVtbl -> CreateSwapChainForCompositionSurfaceHandle(This,pDevice,hSurface,pDesc,pRestrictToOutput,ppSwapChain) )
  1166. #define IDXGIFactoryMedia_CreateDecodeSwapChainForCompositionSurfaceHandle(This,pDevice,hSurface,pDesc,pYuvDecodeBuffers,pRestrictToOutput,ppSwapChain) \
  1167. ( (This)->lpVtbl -> CreateDecodeSwapChainForCompositionSurfaceHandle(This,pDevice,hSurface,pDesc,pYuvDecodeBuffers,pRestrictToOutput,ppSwapChain) )
  1168. #endif /* COBJMACROS */
  1169. #endif /* C style interface */
  1170. #endif /* __IDXGIFactoryMedia_INTERFACE_DEFINED__ */
  1171. /* interface __MIDL_itf_dxgi1_3_0000_0006 */
  1172. /* [local] */
  1173. typedef
  1174. enum DXGI_FRAME_PRESENTATION_MODE
  1175. {
  1176. DXGI_FRAME_PRESENTATION_MODE_COMPOSED = 0,
  1177. DXGI_FRAME_PRESENTATION_MODE_OVERLAY = 1,
  1178. DXGI_FRAME_PRESENTATION_MODE_NONE = 2,
  1179. DXGI_FRAME_PRESENTATION_MODE_COMPOSITION_FAILURE = 3
  1180. } DXGI_FRAME_PRESENTATION_MODE;
  1181. typedef struct DXGI_FRAME_STATISTICS_MEDIA
  1182. {
  1183. UINT PresentCount;
  1184. UINT PresentRefreshCount;
  1185. UINT SyncRefreshCount;
  1186. LARGE_INTEGER SyncQPCTime;
  1187. LARGE_INTEGER SyncGPUTime;
  1188. DXGI_FRAME_PRESENTATION_MODE CompositionMode;
  1189. UINT ApprovedPresentDuration;
  1190. } DXGI_FRAME_STATISTICS_MEDIA;
  1191. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_3_0000_0006_v0_0_c_ifspec;
  1192. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_3_0000_0006_v0_0_s_ifspec;
  1193. #ifndef __IDXGISwapChainMedia_INTERFACE_DEFINED__
  1194. #define __IDXGISwapChainMedia_INTERFACE_DEFINED__
  1195. /* interface IDXGISwapChainMedia */
  1196. /* [unique][local][uuid][object] */
  1197. EXTERN_C const IID IID_IDXGISwapChainMedia;
  1198. #if defined(__cplusplus) && !defined(CINTERFACE)
  1199. MIDL_INTERFACE("dd95b90b-f05f-4f6a-bd65-25bfb264bd84")
  1200. IDXGISwapChainMedia : public IUnknown
  1201. {
  1202. public:
  1203. virtual HRESULT STDMETHODCALLTYPE GetFrameStatisticsMedia(
  1204. /* [annotation][out] */
  1205. _Out_ DXGI_FRAME_STATISTICS_MEDIA *pStats) = 0;
  1206. virtual HRESULT STDMETHODCALLTYPE SetPresentDuration(
  1207. UINT Duration) = 0;
  1208. virtual HRESULT STDMETHODCALLTYPE CheckPresentDurationSupport(
  1209. UINT DesiredPresentDuration,
  1210. /* [annotation][out] */
  1211. _Out_ UINT *pClosestSmallerPresentDuration,
  1212. /* [annotation][out] */
  1213. _Out_ UINT *pClosestLargerPresentDuration) = 0;
  1214. };
  1215. #else /* C style interface */
  1216. typedef struct IDXGISwapChainMediaVtbl
  1217. {
  1218. BEGIN_INTERFACE
  1219. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1220. IDXGISwapChainMedia * This,
  1221. /* [in] */ REFIID riid,
  1222. /* [annotation][iid_is][out] */
  1223. _COM_Outptr_ void **ppvObject);
  1224. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1225. IDXGISwapChainMedia * This);
  1226. ULONG ( STDMETHODCALLTYPE *Release )(
  1227. IDXGISwapChainMedia * This);
  1228. HRESULT ( STDMETHODCALLTYPE *GetFrameStatisticsMedia )(
  1229. IDXGISwapChainMedia * This,
  1230. /* [annotation][out] */
  1231. _Out_ DXGI_FRAME_STATISTICS_MEDIA *pStats);
  1232. HRESULT ( STDMETHODCALLTYPE *SetPresentDuration )(
  1233. IDXGISwapChainMedia * This,
  1234. UINT Duration);
  1235. HRESULT ( STDMETHODCALLTYPE *CheckPresentDurationSupport )(
  1236. IDXGISwapChainMedia * This,
  1237. UINT DesiredPresentDuration,
  1238. /* [annotation][out] */
  1239. _Out_ UINT *pClosestSmallerPresentDuration,
  1240. /* [annotation][out] */
  1241. _Out_ UINT *pClosestLargerPresentDuration);
  1242. END_INTERFACE
  1243. } IDXGISwapChainMediaVtbl;
  1244. interface IDXGISwapChainMedia
  1245. {
  1246. CONST_VTBL struct IDXGISwapChainMediaVtbl *lpVtbl;
  1247. };
  1248. #ifdef COBJMACROS
  1249. #define IDXGISwapChainMedia_QueryInterface(This,riid,ppvObject) \
  1250. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1251. #define IDXGISwapChainMedia_AddRef(This) \
  1252. ( (This)->lpVtbl -> AddRef(This) )
  1253. #define IDXGISwapChainMedia_Release(This) \
  1254. ( (This)->lpVtbl -> Release(This) )
  1255. #define IDXGISwapChainMedia_GetFrameStatisticsMedia(This,pStats) \
  1256. ( (This)->lpVtbl -> GetFrameStatisticsMedia(This,pStats) )
  1257. #define IDXGISwapChainMedia_SetPresentDuration(This,Duration) \
  1258. ( (This)->lpVtbl -> SetPresentDuration(This,Duration) )
  1259. #define IDXGISwapChainMedia_CheckPresentDurationSupport(This,DesiredPresentDuration,pClosestSmallerPresentDuration,pClosestLargerPresentDuration) \
  1260. ( (This)->lpVtbl -> CheckPresentDurationSupport(This,DesiredPresentDuration,pClosestSmallerPresentDuration,pClosestLargerPresentDuration) )
  1261. #endif /* COBJMACROS */
  1262. #endif /* C style interface */
  1263. #endif /* __IDXGISwapChainMedia_INTERFACE_DEFINED__ */
  1264. /* interface __MIDL_itf_dxgi1_3_0000_0007 */
  1265. /* [local] */
  1266. typedef
  1267. enum DXGI_OVERLAY_SUPPORT_FLAG
  1268. {
  1269. DXGI_OVERLAY_SUPPORT_FLAG_DIRECT = 0x1,
  1270. DXGI_OVERLAY_SUPPORT_FLAG_SCALING = 0x2
  1271. } DXGI_OVERLAY_SUPPORT_FLAG;
  1272. #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
  1273. #pragma endregion
  1274. #pragma region App Family
  1275. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  1276. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_3_0000_0007_v0_0_c_ifspec;
  1277. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_3_0000_0007_v0_0_s_ifspec;
  1278. #ifndef __IDXGIOutput3_INTERFACE_DEFINED__
  1279. #define __IDXGIOutput3_INTERFACE_DEFINED__
  1280. /* interface IDXGIOutput3 */
  1281. /* [unique][local][uuid][object] */
  1282. EXTERN_C const IID IID_IDXGIOutput3;
  1283. #if defined(__cplusplus) && !defined(CINTERFACE)
  1284. MIDL_INTERFACE("8a6bb301-7e7e-41F4-a8e0-5b32f7f99b18")
  1285. IDXGIOutput3 : public IDXGIOutput2
  1286. {
  1287. public:
  1288. virtual HRESULT STDMETHODCALLTYPE CheckOverlaySupport(
  1289. /* [annotation][in] */
  1290. _In_ DXGI_FORMAT EnumFormat,
  1291. /* [annotation][out] */
  1292. _In_ IUnknown *pConcernedDevice,
  1293. /* [annotation][out] */
  1294. _Out_ UINT *pFlags) = 0;
  1295. };
  1296. #else /* C style interface */
  1297. typedef struct IDXGIOutput3Vtbl
  1298. {
  1299. BEGIN_INTERFACE
  1300. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1301. IDXGIOutput3 * This,
  1302. /* [in] */ REFIID riid,
  1303. /* [annotation][iid_is][out] */
  1304. _COM_Outptr_ void **ppvObject);
  1305. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1306. IDXGIOutput3 * This);
  1307. ULONG ( STDMETHODCALLTYPE *Release )(
  1308. IDXGIOutput3 * This);
  1309. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  1310. IDXGIOutput3 * This,
  1311. /* [annotation][in] */
  1312. _In_ REFGUID Name,
  1313. /* [in] */ UINT DataSize,
  1314. /* [annotation][in] */
  1315. _In_reads_bytes_(DataSize) const void *pData);
  1316. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  1317. IDXGIOutput3 * This,
  1318. /* [annotation][in] */
  1319. _In_ REFGUID Name,
  1320. /* [annotation][in] */
  1321. _In_opt_ const IUnknown *pUnknown);
  1322. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  1323. IDXGIOutput3 * This,
  1324. /* [annotation][in] */
  1325. _In_ REFGUID Name,
  1326. /* [annotation][out][in] */
  1327. _Inout_ UINT *pDataSize,
  1328. /* [annotation][out] */
  1329. _Out_writes_bytes_(*pDataSize) void *pData);
  1330. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  1331. IDXGIOutput3 * This,
  1332. /* [annotation][in] */
  1333. _In_ REFIID riid,
  1334. /* [annotation][retval][out] */
  1335. _COM_Outptr_ void **ppParent);
  1336. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  1337. IDXGIOutput3 * This,
  1338. /* [annotation][out] */
  1339. _Out_ DXGI_OUTPUT_DESC *pDesc);
  1340. HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList )(
  1341. IDXGIOutput3 * This,
  1342. /* [in] */ DXGI_FORMAT EnumFormat,
  1343. /* [in] */ UINT Flags,
  1344. /* [annotation][out][in] */
  1345. _Inout_ UINT *pNumModes,
  1346. /* [annotation][out] */
  1347. _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC *pDesc);
  1348. HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode )(
  1349. IDXGIOutput3 * This,
  1350. /* [annotation][in] */
  1351. _In_ const DXGI_MODE_DESC *pModeToMatch,
  1352. /* [annotation][out] */
  1353. _Out_ DXGI_MODE_DESC *pClosestMatch,
  1354. /* [annotation][in] */
  1355. _In_opt_ IUnknown *pConcernedDevice);
  1356. HRESULT ( STDMETHODCALLTYPE *WaitForVBlank )(
  1357. IDXGIOutput3 * This);
  1358. HRESULT ( STDMETHODCALLTYPE *TakeOwnership )(
  1359. IDXGIOutput3 * This,
  1360. /* [annotation][in] */
  1361. _In_ IUnknown *pDevice,
  1362. BOOL Exclusive);
  1363. void ( STDMETHODCALLTYPE *ReleaseOwnership )(
  1364. IDXGIOutput3 * This);
  1365. HRESULT ( STDMETHODCALLTYPE *GetGammaControlCapabilities )(
  1366. IDXGIOutput3 * This,
  1367. /* [annotation][out] */
  1368. _Out_ DXGI_GAMMA_CONTROL_CAPABILITIES *pGammaCaps);
  1369. HRESULT ( STDMETHODCALLTYPE *SetGammaControl )(
  1370. IDXGIOutput3 * This,
  1371. /* [annotation][in] */
  1372. _In_ const DXGI_GAMMA_CONTROL *pArray);
  1373. HRESULT ( STDMETHODCALLTYPE *GetGammaControl )(
  1374. IDXGIOutput3 * This,
  1375. /* [annotation][out] */
  1376. _Out_ DXGI_GAMMA_CONTROL *pArray);
  1377. HRESULT ( STDMETHODCALLTYPE *SetDisplaySurface )(
  1378. IDXGIOutput3 * This,
  1379. /* [annotation][in] */
  1380. _In_ IDXGISurface *pScanoutSurface);
  1381. HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData )(
  1382. IDXGIOutput3 * This,
  1383. /* [annotation][in] */
  1384. _In_ IDXGISurface *pDestination);
  1385. HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )(
  1386. IDXGIOutput3 * This,
  1387. /* [annotation][out] */
  1388. _Out_ DXGI_FRAME_STATISTICS *pStats);
  1389. HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList1 )(
  1390. IDXGIOutput3 * This,
  1391. /* [in] */ DXGI_FORMAT EnumFormat,
  1392. /* [in] */ UINT Flags,
  1393. /* [annotation][out][in] */
  1394. _Inout_ UINT *pNumModes,
  1395. /* [annotation][out] */
  1396. _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC1 *pDesc);
  1397. HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode1 )(
  1398. IDXGIOutput3 * This,
  1399. /* [annotation][in] */
  1400. _In_ const DXGI_MODE_DESC1 *pModeToMatch,
  1401. /* [annotation][out] */
  1402. _Out_ DXGI_MODE_DESC1 *pClosestMatch,
  1403. /* [annotation][in] */
  1404. _In_opt_ IUnknown *pConcernedDevice);
  1405. HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData1 )(
  1406. IDXGIOutput3 * This,
  1407. /* [annotation][in] */
  1408. _In_ IDXGIResource *pDestination);
  1409. HRESULT ( STDMETHODCALLTYPE *DuplicateOutput )(
  1410. IDXGIOutput3 * This,
  1411. /* [annotation][in] */
  1412. _In_ IUnknown *pDevice,
  1413. /* [annotation][out] */
  1414. _COM_Outptr_ IDXGIOutputDuplication **ppOutputDuplication);
  1415. BOOL ( STDMETHODCALLTYPE *SupportsOverlays )(
  1416. IDXGIOutput3 * This);
  1417. HRESULT ( STDMETHODCALLTYPE *CheckOverlaySupport )(
  1418. IDXGIOutput3 * This,
  1419. /* [annotation][in] */
  1420. _In_ DXGI_FORMAT EnumFormat,
  1421. /* [annotation][out] */
  1422. _In_ IUnknown *pConcernedDevice,
  1423. /* [annotation][out] */
  1424. _Out_ UINT *pFlags);
  1425. END_INTERFACE
  1426. } IDXGIOutput3Vtbl;
  1427. interface IDXGIOutput3
  1428. {
  1429. CONST_VTBL struct IDXGIOutput3Vtbl *lpVtbl;
  1430. };
  1431. #ifdef COBJMACROS
  1432. #define IDXGIOutput3_QueryInterface(This,riid,ppvObject) \
  1433. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1434. #define IDXGIOutput3_AddRef(This) \
  1435. ( (This)->lpVtbl -> AddRef(This) )
  1436. #define IDXGIOutput3_Release(This) \
  1437. ( (This)->lpVtbl -> Release(This) )
  1438. #define IDXGIOutput3_SetPrivateData(This,Name,DataSize,pData) \
  1439. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  1440. #define IDXGIOutput3_SetPrivateDataInterface(This,Name,pUnknown) \
  1441. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  1442. #define IDXGIOutput3_GetPrivateData(This,Name,pDataSize,pData) \
  1443. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  1444. #define IDXGIOutput3_GetParent(This,riid,ppParent) \
  1445. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  1446. #define IDXGIOutput3_GetDesc(This,pDesc) \
  1447. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  1448. #define IDXGIOutput3_GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) \
  1449. ( (This)->lpVtbl -> GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) )
  1450. #define IDXGIOutput3_FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) \
  1451. ( (This)->lpVtbl -> FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) )
  1452. #define IDXGIOutput3_WaitForVBlank(This) \
  1453. ( (This)->lpVtbl -> WaitForVBlank(This) )
  1454. #define IDXGIOutput3_TakeOwnership(This,pDevice,Exclusive) \
  1455. ( (This)->lpVtbl -> TakeOwnership(This,pDevice,Exclusive) )
  1456. #define IDXGIOutput3_ReleaseOwnership(This) \
  1457. ( (This)->lpVtbl -> ReleaseOwnership(This) )
  1458. #define IDXGIOutput3_GetGammaControlCapabilities(This,pGammaCaps) \
  1459. ( (This)->lpVtbl -> GetGammaControlCapabilities(This,pGammaCaps) )
  1460. #define IDXGIOutput3_SetGammaControl(This,pArray) \
  1461. ( (This)->lpVtbl -> SetGammaControl(This,pArray) )
  1462. #define IDXGIOutput3_GetGammaControl(This,pArray) \
  1463. ( (This)->lpVtbl -> GetGammaControl(This,pArray) )
  1464. #define IDXGIOutput3_SetDisplaySurface(This,pScanoutSurface) \
  1465. ( (This)->lpVtbl -> SetDisplaySurface(This,pScanoutSurface) )
  1466. #define IDXGIOutput3_GetDisplaySurfaceData(This,pDestination) \
  1467. ( (This)->lpVtbl -> GetDisplaySurfaceData(This,pDestination) )
  1468. #define IDXGIOutput3_GetFrameStatistics(This,pStats) \
  1469. ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) )
  1470. #define IDXGIOutput3_GetDisplayModeList1(This,EnumFormat,Flags,pNumModes,pDesc) \
  1471. ( (This)->lpVtbl -> GetDisplayModeList1(This,EnumFormat,Flags,pNumModes,pDesc) )
  1472. #define IDXGIOutput3_FindClosestMatchingMode1(This,pModeToMatch,pClosestMatch,pConcernedDevice) \
  1473. ( (This)->lpVtbl -> FindClosestMatchingMode1(This,pModeToMatch,pClosestMatch,pConcernedDevice) )
  1474. #define IDXGIOutput3_GetDisplaySurfaceData1(This,pDestination) \
  1475. ( (This)->lpVtbl -> GetDisplaySurfaceData1(This,pDestination) )
  1476. #define IDXGIOutput3_DuplicateOutput(This,pDevice,ppOutputDuplication) \
  1477. ( (This)->lpVtbl -> DuplicateOutput(This,pDevice,ppOutputDuplication) )
  1478. #define IDXGIOutput3_SupportsOverlays(This) \
  1479. ( (This)->lpVtbl -> SupportsOverlays(This) )
  1480. #define IDXGIOutput3_CheckOverlaySupport(This,EnumFormat,pConcernedDevice,pFlags) \
  1481. ( (This)->lpVtbl -> CheckOverlaySupport(This,EnumFormat,pConcernedDevice,pFlags) )
  1482. #endif /* COBJMACROS */
  1483. #endif /* C style interface */
  1484. #endif /* __IDXGIOutput3_INTERFACE_DEFINED__ */
  1485. /* interface __MIDL_itf_dxgi1_3_0000_0008 */
  1486. /* [local] */
  1487. #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
  1488. #pragma endregion
  1489. DEFINE_GUID(IID_IDXGIDevice3,0x6007896c,0x3244,0x4afd,0xbf,0x18,0xa6,0xd3,0xbe,0xda,0x50,0x23);
  1490. DEFINE_GUID(IID_IDXGISwapChain2,0xa8be2ac4,0x199f,0x4946,0xb3,0x31,0x79,0x59,0x9f,0xb9,0x8d,0xe7);
  1491. DEFINE_GUID(IID_IDXGIOutput2,0x595e39d1,0x2724,0x4663,0x99,0xb1,0xda,0x96,0x9d,0xe2,0x83,0x64);
  1492. DEFINE_GUID(IID_IDXGIFactory3,0x25483823,0xcd46,0x4c7d,0x86,0xca,0x47,0xaa,0x95,0xb8,0x37,0xbd);
  1493. DEFINE_GUID(IID_IDXGIDecodeSwapChain,0x2633066b,0x4514,0x4c7a,0x8f,0xd8,0x12,0xea,0x98,0x05,0x9d,0x18);
  1494. DEFINE_GUID(IID_IDXGIFactoryMedia,0x41e7d1f2,0xa591,0x4f7b,0xa2,0xe5,0xfa,0x9c,0x84,0x3e,0x1c,0x12);
  1495. DEFINE_GUID(IID_IDXGISwapChainMedia,0xdd95b90b,0xf05f,0x4f6a,0xbd,0x65,0x25,0xbf,0xb2,0x64,0xbd,0x84);
  1496. DEFINE_GUID(IID_IDXGIOutput3,0x8a6bb301,0x7e7e,0x41F4,0xa8,0xe0,0x5b,0x32,0xf7,0xf9,0x9b,0x18);
  1497. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_3_0000_0008_v0_0_c_ifspec;
  1498. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_3_0000_0008_v0_0_s_ifspec;
  1499. /* Additional Prototypes for ALL interfaces */
  1500. /* end of Additional Prototypes */
  1501. #ifdef __cplusplus
  1502. }
  1503. #endif
  1504. #endif