dxgi1_5.h 59 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670
  1. /* this ALWAYS GENERATED file contains the definitions for the interfaces */
  2. /* File created by MIDL compiler version 8.01.0628 */
  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__ 501
  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_5_h__
  22. #define __dxgi1_5_h__
  23. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  24. #pragma once
  25. #endif
  26. #ifndef DECLSPEC_XFGVIRT
  27. #if defined(_CONTROL_FLOW_GUARD_XFG)
  28. #define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
  29. #else
  30. #define DECLSPEC_XFGVIRT(base, func)
  31. #endif
  32. #endif
  33. /* Forward Declarations */
  34. #ifndef __IDXGIOutput5_FWD_DEFINED__
  35. #define __IDXGIOutput5_FWD_DEFINED__
  36. typedef interface IDXGIOutput5 IDXGIOutput5;
  37. #endif /* __IDXGIOutput5_FWD_DEFINED__ */
  38. #ifndef __IDXGISwapChain4_FWD_DEFINED__
  39. #define __IDXGISwapChain4_FWD_DEFINED__
  40. typedef interface IDXGISwapChain4 IDXGISwapChain4;
  41. #endif /* __IDXGISwapChain4_FWD_DEFINED__ */
  42. #ifndef __IDXGIDevice4_FWD_DEFINED__
  43. #define __IDXGIDevice4_FWD_DEFINED__
  44. typedef interface IDXGIDevice4 IDXGIDevice4;
  45. #endif /* __IDXGIDevice4_FWD_DEFINED__ */
  46. #ifndef __IDXGIFactory5_FWD_DEFINED__
  47. #define __IDXGIFactory5_FWD_DEFINED__
  48. typedef interface IDXGIFactory5 IDXGIFactory5;
  49. #endif /* __IDXGIFactory5_FWD_DEFINED__ */
  50. /* header files for imported files */
  51. #include "dxgi1_4.h"
  52. #ifdef __cplusplus
  53. extern "C"{
  54. #endif
  55. /* interface __MIDL_itf_dxgi1_5_0000_0000 */
  56. /* [local] */
  57. #include <winapifamily.h>
  58. #pragma region App Family
  59. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
  60. typedef
  61. enum DXGI_OUTDUPL_FLAG
  62. {
  63. DXGI_OUTDUPL_COMPOSITED_UI_CAPTURE_ONLY = 1
  64. } DXGI_OUTDUPL_FLAG;
  65. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_5_0000_0000_v0_0_c_ifspec;
  66. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_5_0000_0000_v0_0_s_ifspec;
  67. #ifndef __IDXGIOutput5_INTERFACE_DEFINED__
  68. #define __IDXGIOutput5_INTERFACE_DEFINED__
  69. /* interface IDXGIOutput5 */
  70. /* [unique][local][uuid][object] */
  71. EXTERN_C const IID IID_IDXGIOutput5;
  72. #if defined(__cplusplus) && !defined(CINTERFACE)
  73. MIDL_INTERFACE("80A07424-AB52-42EB-833C-0C42FD282D98")
  74. IDXGIOutput5 : public IDXGIOutput4
  75. {
  76. public:
  77. virtual HRESULT STDMETHODCALLTYPE DuplicateOutput1(
  78. /* [annotation][in] */
  79. _In_ IUnknown *pDevice,
  80. /* [in] */ UINT Flags,
  81. /* [annotation][in] */
  82. _In_ UINT SupportedFormatsCount,
  83. /* [annotation][in] */
  84. _In_reads_(SupportedFormatsCount) const DXGI_FORMAT *pSupportedFormats,
  85. /* [annotation][out] */
  86. _COM_Outptr_ IDXGIOutputDuplication **ppOutputDuplication) = 0;
  87. };
  88. #else /* C style interface */
  89. typedef struct IDXGIOutput5Vtbl
  90. {
  91. BEGIN_INTERFACE
  92. DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
  93. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  94. IDXGIOutput5 * This,
  95. /* [in] */ REFIID riid,
  96. /* [annotation][iid_is][out] */
  97. _COM_Outptr_ void **ppvObject);
  98. DECLSPEC_XFGVIRT(IUnknown, AddRef)
  99. ULONG ( STDMETHODCALLTYPE *AddRef )(
  100. IDXGIOutput5 * This);
  101. DECLSPEC_XFGVIRT(IUnknown, Release)
  102. ULONG ( STDMETHODCALLTYPE *Release )(
  103. IDXGIOutput5 * This);
  104. DECLSPEC_XFGVIRT(IDXGIObject, SetPrivateData)
  105. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  106. IDXGIOutput5 * This,
  107. /* [annotation][in] */
  108. _In_ REFGUID Name,
  109. /* [in] */ UINT DataSize,
  110. /* [annotation][in] */
  111. _In_reads_bytes_(DataSize) const void *pData);
  112. DECLSPEC_XFGVIRT(IDXGIObject, SetPrivateDataInterface)
  113. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  114. IDXGIOutput5 * This,
  115. /* [annotation][in] */
  116. _In_ REFGUID Name,
  117. /* [annotation][in] */
  118. _In_opt_ const IUnknown *pUnknown);
  119. DECLSPEC_XFGVIRT(IDXGIObject, GetPrivateData)
  120. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  121. IDXGIOutput5 * This,
  122. /* [annotation][in] */
  123. _In_ REFGUID Name,
  124. /* [annotation][out][in] */
  125. _Inout_ UINT *pDataSize,
  126. /* [annotation][out] */
  127. _Out_writes_bytes_(*pDataSize) void *pData);
  128. DECLSPEC_XFGVIRT(IDXGIObject, GetParent)
  129. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  130. IDXGIOutput5 * This,
  131. /* [annotation][in] */
  132. _In_ REFIID riid,
  133. /* [annotation][retval][out] */
  134. _COM_Outptr_ void **ppParent);
  135. DECLSPEC_XFGVIRT(IDXGIOutput, GetDesc)
  136. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  137. IDXGIOutput5 * This,
  138. /* [annotation][out] */
  139. _Out_ DXGI_OUTPUT_DESC *pDesc);
  140. DECLSPEC_XFGVIRT(IDXGIOutput, GetDisplayModeList)
  141. HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList )(
  142. IDXGIOutput5 * This,
  143. /* [in] */ DXGI_FORMAT EnumFormat,
  144. /* [in] */ UINT Flags,
  145. /* [annotation][out][in] */
  146. _Inout_ UINT *pNumModes,
  147. /* [annotation][out] */
  148. _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC *pDesc);
  149. DECLSPEC_XFGVIRT(IDXGIOutput, FindClosestMatchingMode)
  150. HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode )(
  151. IDXGIOutput5 * This,
  152. /* [annotation][in] */
  153. _In_ const DXGI_MODE_DESC *pModeToMatch,
  154. /* [annotation][out] */
  155. _Out_ DXGI_MODE_DESC *pClosestMatch,
  156. /* [annotation][in] */
  157. _In_opt_ IUnknown *pConcernedDevice);
  158. DECLSPEC_XFGVIRT(IDXGIOutput, WaitForVBlank)
  159. HRESULT ( STDMETHODCALLTYPE *WaitForVBlank )(
  160. IDXGIOutput5 * This);
  161. DECLSPEC_XFGVIRT(IDXGIOutput, TakeOwnership)
  162. HRESULT ( STDMETHODCALLTYPE *TakeOwnership )(
  163. IDXGIOutput5 * This,
  164. /* [annotation][in] */
  165. _In_ IUnknown *pDevice,
  166. BOOL Exclusive);
  167. DECLSPEC_XFGVIRT(IDXGIOutput, ReleaseOwnership)
  168. void ( STDMETHODCALLTYPE *ReleaseOwnership )(
  169. IDXGIOutput5 * This);
  170. DECLSPEC_XFGVIRT(IDXGIOutput, GetGammaControlCapabilities)
  171. HRESULT ( STDMETHODCALLTYPE *GetGammaControlCapabilities )(
  172. IDXGIOutput5 * This,
  173. /* [annotation][out] */
  174. _Out_ DXGI_GAMMA_CONTROL_CAPABILITIES *pGammaCaps);
  175. DECLSPEC_XFGVIRT(IDXGIOutput, SetGammaControl)
  176. HRESULT ( STDMETHODCALLTYPE *SetGammaControl )(
  177. IDXGIOutput5 * This,
  178. /* [annotation][in] */
  179. _In_ const DXGI_GAMMA_CONTROL *pArray);
  180. DECLSPEC_XFGVIRT(IDXGIOutput, GetGammaControl)
  181. HRESULT ( STDMETHODCALLTYPE *GetGammaControl )(
  182. IDXGIOutput5 * This,
  183. /* [annotation][out] */
  184. _Out_ DXGI_GAMMA_CONTROL *pArray);
  185. DECLSPEC_XFGVIRT(IDXGIOutput, SetDisplaySurface)
  186. HRESULT ( STDMETHODCALLTYPE *SetDisplaySurface )(
  187. IDXGIOutput5 * This,
  188. /* [annotation][in] */
  189. _In_ IDXGISurface *pScanoutSurface);
  190. DECLSPEC_XFGVIRT(IDXGIOutput, GetDisplaySurfaceData)
  191. HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData )(
  192. IDXGIOutput5 * This,
  193. /* [annotation][in] */
  194. _In_ IDXGISurface *pDestination);
  195. DECLSPEC_XFGVIRT(IDXGIOutput, GetFrameStatistics)
  196. HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )(
  197. IDXGIOutput5 * This,
  198. /* [annotation][out] */
  199. _Out_ DXGI_FRAME_STATISTICS *pStats);
  200. DECLSPEC_XFGVIRT(IDXGIOutput1, GetDisplayModeList1)
  201. HRESULT ( STDMETHODCALLTYPE *GetDisplayModeList1 )(
  202. IDXGIOutput5 * This,
  203. /* [in] */ DXGI_FORMAT EnumFormat,
  204. /* [in] */ UINT Flags,
  205. /* [annotation][out][in] */
  206. _Inout_ UINT *pNumModes,
  207. /* [annotation][out] */
  208. _Out_writes_to_opt_(*pNumModes,*pNumModes) DXGI_MODE_DESC1 *pDesc);
  209. DECLSPEC_XFGVIRT(IDXGIOutput1, FindClosestMatchingMode1)
  210. HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode1 )(
  211. IDXGIOutput5 * This,
  212. /* [annotation][in] */
  213. _In_ const DXGI_MODE_DESC1 *pModeToMatch,
  214. /* [annotation][out] */
  215. _Out_ DXGI_MODE_DESC1 *pClosestMatch,
  216. /* [annotation][in] */
  217. _In_opt_ IUnknown *pConcernedDevice);
  218. DECLSPEC_XFGVIRT(IDXGIOutput1, GetDisplaySurfaceData1)
  219. HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData1 )(
  220. IDXGIOutput5 * This,
  221. /* [annotation][in] */
  222. _In_ IDXGIResource *pDestination);
  223. DECLSPEC_XFGVIRT(IDXGIOutput1, DuplicateOutput)
  224. HRESULT ( STDMETHODCALLTYPE *DuplicateOutput )(
  225. IDXGIOutput5 * This,
  226. /* [annotation][in] */
  227. _In_ IUnknown *pDevice,
  228. /* [annotation][out] */
  229. _COM_Outptr_ IDXGIOutputDuplication **ppOutputDuplication);
  230. DECLSPEC_XFGVIRT(IDXGIOutput2, SupportsOverlays)
  231. BOOL ( STDMETHODCALLTYPE *SupportsOverlays )(
  232. IDXGIOutput5 * This);
  233. DECLSPEC_XFGVIRT(IDXGIOutput3, CheckOverlaySupport)
  234. HRESULT ( STDMETHODCALLTYPE *CheckOverlaySupport )(
  235. IDXGIOutput5 * This,
  236. /* [annotation][in] */
  237. _In_ DXGI_FORMAT EnumFormat,
  238. /* [annotation][out] */
  239. _In_ IUnknown *pConcernedDevice,
  240. /* [annotation][out] */
  241. _Out_ UINT *pFlags);
  242. DECLSPEC_XFGVIRT(IDXGIOutput4, CheckOverlayColorSpaceSupport)
  243. HRESULT ( STDMETHODCALLTYPE *CheckOverlayColorSpaceSupport )(
  244. IDXGIOutput5 * This,
  245. /* [annotation][in] */
  246. _In_ DXGI_FORMAT Format,
  247. /* [annotation][in] */
  248. _In_ DXGI_COLOR_SPACE_TYPE ColorSpace,
  249. /* [annotation][in] */
  250. _In_ IUnknown *pConcernedDevice,
  251. /* [annotation][out] */
  252. _Out_ UINT *pFlags);
  253. DECLSPEC_XFGVIRT(IDXGIOutput5, DuplicateOutput1)
  254. HRESULT ( STDMETHODCALLTYPE *DuplicateOutput1 )(
  255. IDXGIOutput5 * This,
  256. /* [annotation][in] */
  257. _In_ IUnknown *pDevice,
  258. /* [in] */ UINT Flags,
  259. /* [annotation][in] */
  260. _In_ UINT SupportedFormatsCount,
  261. /* [annotation][in] */
  262. _In_reads_(SupportedFormatsCount) const DXGI_FORMAT *pSupportedFormats,
  263. /* [annotation][out] */
  264. _COM_Outptr_ IDXGIOutputDuplication **ppOutputDuplication);
  265. END_INTERFACE
  266. } IDXGIOutput5Vtbl;
  267. interface IDXGIOutput5
  268. {
  269. CONST_VTBL struct IDXGIOutput5Vtbl *lpVtbl;
  270. };
  271. #ifdef COBJMACROS
  272. #define IDXGIOutput5_QueryInterface(This,riid,ppvObject) \
  273. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  274. #define IDXGIOutput5_AddRef(This) \
  275. ( (This)->lpVtbl -> AddRef(This) )
  276. #define IDXGIOutput5_Release(This) \
  277. ( (This)->lpVtbl -> Release(This) )
  278. #define IDXGIOutput5_SetPrivateData(This,Name,DataSize,pData) \
  279. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  280. #define IDXGIOutput5_SetPrivateDataInterface(This,Name,pUnknown) \
  281. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  282. #define IDXGIOutput5_GetPrivateData(This,Name,pDataSize,pData) \
  283. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  284. #define IDXGIOutput5_GetParent(This,riid,ppParent) \
  285. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  286. #define IDXGIOutput5_GetDesc(This,pDesc) \
  287. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  288. #define IDXGIOutput5_GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) \
  289. ( (This)->lpVtbl -> GetDisplayModeList(This,EnumFormat,Flags,pNumModes,pDesc) )
  290. #define IDXGIOutput5_FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) \
  291. ( (This)->lpVtbl -> FindClosestMatchingMode(This,pModeToMatch,pClosestMatch,pConcernedDevice) )
  292. #define IDXGIOutput5_WaitForVBlank(This) \
  293. ( (This)->lpVtbl -> WaitForVBlank(This) )
  294. #define IDXGIOutput5_TakeOwnership(This,pDevice,Exclusive) \
  295. ( (This)->lpVtbl -> TakeOwnership(This,pDevice,Exclusive) )
  296. #define IDXGIOutput5_ReleaseOwnership(This) \
  297. ( (This)->lpVtbl -> ReleaseOwnership(This) )
  298. #define IDXGIOutput5_GetGammaControlCapabilities(This,pGammaCaps) \
  299. ( (This)->lpVtbl -> GetGammaControlCapabilities(This,pGammaCaps) )
  300. #define IDXGIOutput5_SetGammaControl(This,pArray) \
  301. ( (This)->lpVtbl -> SetGammaControl(This,pArray) )
  302. #define IDXGIOutput5_GetGammaControl(This,pArray) \
  303. ( (This)->lpVtbl -> GetGammaControl(This,pArray) )
  304. #define IDXGIOutput5_SetDisplaySurface(This,pScanoutSurface) \
  305. ( (This)->lpVtbl -> SetDisplaySurface(This,pScanoutSurface) )
  306. #define IDXGIOutput5_GetDisplaySurfaceData(This,pDestination) \
  307. ( (This)->lpVtbl -> GetDisplaySurfaceData(This,pDestination) )
  308. #define IDXGIOutput5_GetFrameStatistics(This,pStats) \
  309. ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) )
  310. #define IDXGIOutput5_GetDisplayModeList1(This,EnumFormat,Flags,pNumModes,pDesc) \
  311. ( (This)->lpVtbl -> GetDisplayModeList1(This,EnumFormat,Flags,pNumModes,pDesc) )
  312. #define IDXGIOutput5_FindClosestMatchingMode1(This,pModeToMatch,pClosestMatch,pConcernedDevice) \
  313. ( (This)->lpVtbl -> FindClosestMatchingMode1(This,pModeToMatch,pClosestMatch,pConcernedDevice) )
  314. #define IDXGIOutput5_GetDisplaySurfaceData1(This,pDestination) \
  315. ( (This)->lpVtbl -> GetDisplaySurfaceData1(This,pDestination) )
  316. #define IDXGIOutput5_DuplicateOutput(This,pDevice,ppOutputDuplication) \
  317. ( (This)->lpVtbl -> DuplicateOutput(This,pDevice,ppOutputDuplication) )
  318. #define IDXGIOutput5_SupportsOverlays(This) \
  319. ( (This)->lpVtbl -> SupportsOverlays(This) )
  320. #define IDXGIOutput5_CheckOverlaySupport(This,EnumFormat,pConcernedDevice,pFlags) \
  321. ( (This)->lpVtbl -> CheckOverlaySupport(This,EnumFormat,pConcernedDevice,pFlags) )
  322. #define IDXGIOutput5_CheckOverlayColorSpaceSupport(This,Format,ColorSpace,pConcernedDevice,pFlags) \
  323. ( (This)->lpVtbl -> CheckOverlayColorSpaceSupport(This,Format,ColorSpace,pConcernedDevice,pFlags) )
  324. #define IDXGIOutput5_DuplicateOutput1(This,pDevice,Flags,SupportedFormatsCount,pSupportedFormats,ppOutputDuplication) \
  325. ( (This)->lpVtbl -> DuplicateOutput1(This,pDevice,Flags,SupportedFormatsCount,pSupportedFormats,ppOutputDuplication) )
  326. #endif /* COBJMACROS */
  327. #endif /* C style interface */
  328. #endif /* __IDXGIOutput5_INTERFACE_DEFINED__ */
  329. /* interface __MIDL_itf_dxgi1_5_0000_0001 */
  330. /* [local] */
  331. typedef
  332. enum DXGI_HDR_METADATA_TYPE
  333. {
  334. DXGI_HDR_METADATA_TYPE_NONE = 0,
  335. DXGI_HDR_METADATA_TYPE_HDR10 = 1,
  336. DXGI_HDR_METADATA_TYPE_HDR10PLUS = 2
  337. } DXGI_HDR_METADATA_TYPE;
  338. typedef struct DXGI_HDR_METADATA_HDR10
  339. {
  340. UINT16 RedPrimary[ 2 ];
  341. UINT16 GreenPrimary[ 2 ];
  342. UINT16 BluePrimary[ 2 ];
  343. UINT16 WhitePoint[ 2 ];
  344. UINT MaxMasteringLuminance;
  345. UINT MinMasteringLuminance;
  346. UINT16 MaxContentLightLevel;
  347. UINT16 MaxFrameAverageLightLevel;
  348. } DXGI_HDR_METADATA_HDR10;
  349. typedef struct DXGI_HDR_METADATA_HDR10PLUS
  350. {
  351. BYTE Data[ 72 ];
  352. } DXGI_HDR_METADATA_HDR10PLUS;
  353. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_5_0000_0001_v0_0_c_ifspec;
  354. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_5_0000_0001_v0_0_s_ifspec;
  355. #ifndef __IDXGISwapChain4_INTERFACE_DEFINED__
  356. #define __IDXGISwapChain4_INTERFACE_DEFINED__
  357. /* interface IDXGISwapChain4 */
  358. /* [unique][local][uuid][object] */
  359. EXTERN_C const IID IID_IDXGISwapChain4;
  360. #if defined(__cplusplus) && !defined(CINTERFACE)
  361. MIDL_INTERFACE("3D585D5A-BD4A-489E-B1F4-3DBCB6452FFB")
  362. IDXGISwapChain4 : public IDXGISwapChain3
  363. {
  364. public:
  365. virtual HRESULT STDMETHODCALLTYPE SetHDRMetaData(
  366. /* [annotation][in] */
  367. _In_ DXGI_HDR_METADATA_TYPE Type,
  368. /* [annotation][in] */
  369. _In_ UINT Size,
  370. /* [annotation][size_is][in] */
  371. _In_reads_opt_(Size) void *pMetaData) = 0;
  372. };
  373. #else /* C style interface */
  374. typedef struct IDXGISwapChain4Vtbl
  375. {
  376. BEGIN_INTERFACE
  377. DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
  378. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  379. IDXGISwapChain4 * This,
  380. /* [in] */ REFIID riid,
  381. /* [annotation][iid_is][out] */
  382. _COM_Outptr_ void **ppvObject);
  383. DECLSPEC_XFGVIRT(IUnknown, AddRef)
  384. ULONG ( STDMETHODCALLTYPE *AddRef )(
  385. IDXGISwapChain4 * This);
  386. DECLSPEC_XFGVIRT(IUnknown, Release)
  387. ULONG ( STDMETHODCALLTYPE *Release )(
  388. IDXGISwapChain4 * This);
  389. DECLSPEC_XFGVIRT(IDXGIObject, SetPrivateData)
  390. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  391. IDXGISwapChain4 * This,
  392. /* [annotation][in] */
  393. _In_ REFGUID Name,
  394. /* [in] */ UINT DataSize,
  395. /* [annotation][in] */
  396. _In_reads_bytes_(DataSize) const void *pData);
  397. DECLSPEC_XFGVIRT(IDXGIObject, SetPrivateDataInterface)
  398. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  399. IDXGISwapChain4 * This,
  400. /* [annotation][in] */
  401. _In_ REFGUID Name,
  402. /* [annotation][in] */
  403. _In_opt_ const IUnknown *pUnknown);
  404. DECLSPEC_XFGVIRT(IDXGIObject, GetPrivateData)
  405. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  406. IDXGISwapChain4 * This,
  407. /* [annotation][in] */
  408. _In_ REFGUID Name,
  409. /* [annotation][out][in] */
  410. _Inout_ UINT *pDataSize,
  411. /* [annotation][out] */
  412. _Out_writes_bytes_(*pDataSize) void *pData);
  413. DECLSPEC_XFGVIRT(IDXGIObject, GetParent)
  414. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  415. IDXGISwapChain4 * This,
  416. /* [annotation][in] */
  417. _In_ REFIID riid,
  418. /* [annotation][retval][out] */
  419. _COM_Outptr_ void **ppParent);
  420. DECLSPEC_XFGVIRT(IDXGIDeviceSubObject, GetDevice)
  421. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  422. IDXGISwapChain4 * This,
  423. /* [annotation][in] */
  424. _In_ REFIID riid,
  425. /* [annotation][retval][out] */
  426. _COM_Outptr_ void **ppDevice);
  427. DECLSPEC_XFGVIRT(IDXGISwapChain, Present)
  428. HRESULT ( STDMETHODCALLTYPE *Present )(
  429. IDXGISwapChain4 * This,
  430. /* [in] */ UINT SyncInterval,
  431. /* [in] */ UINT Flags);
  432. DECLSPEC_XFGVIRT(IDXGISwapChain, GetBuffer)
  433. HRESULT ( STDMETHODCALLTYPE *GetBuffer )(
  434. IDXGISwapChain4 * This,
  435. /* [in] */ UINT Buffer,
  436. /* [annotation][in] */
  437. _In_ REFIID riid,
  438. /* [annotation][out][in] */
  439. _COM_Outptr_ void **ppSurface);
  440. DECLSPEC_XFGVIRT(IDXGISwapChain, SetFullscreenState)
  441. HRESULT ( STDMETHODCALLTYPE *SetFullscreenState )(
  442. IDXGISwapChain4 * This,
  443. /* [in] */ BOOL Fullscreen,
  444. /* [annotation][in] */
  445. _In_opt_ IDXGIOutput *pTarget);
  446. DECLSPEC_XFGVIRT(IDXGISwapChain, GetFullscreenState)
  447. HRESULT ( STDMETHODCALLTYPE *GetFullscreenState )(
  448. IDXGISwapChain4 * This,
  449. /* [annotation][out] */
  450. _Out_opt_ BOOL *pFullscreen,
  451. /* [annotation][out] */
  452. _COM_Outptr_opt_result_maybenull_ IDXGIOutput **ppTarget);
  453. DECLSPEC_XFGVIRT(IDXGISwapChain, GetDesc)
  454. HRESULT ( STDMETHODCALLTYPE *GetDesc )(
  455. IDXGISwapChain4 * This,
  456. /* [annotation][out] */
  457. _Out_ DXGI_SWAP_CHAIN_DESC *pDesc);
  458. DECLSPEC_XFGVIRT(IDXGISwapChain, ResizeBuffers)
  459. HRESULT ( STDMETHODCALLTYPE *ResizeBuffers )(
  460. IDXGISwapChain4 * This,
  461. /* [in] */ UINT BufferCount,
  462. /* [in] */ UINT Width,
  463. /* [in] */ UINT Height,
  464. /* [in] */ DXGI_FORMAT NewFormat,
  465. /* [in] */ UINT SwapChainFlags);
  466. DECLSPEC_XFGVIRT(IDXGISwapChain, ResizeTarget)
  467. HRESULT ( STDMETHODCALLTYPE *ResizeTarget )(
  468. IDXGISwapChain4 * This,
  469. /* [annotation][in] */
  470. _In_ const DXGI_MODE_DESC *pNewTargetParameters);
  471. DECLSPEC_XFGVIRT(IDXGISwapChain, GetContainingOutput)
  472. HRESULT ( STDMETHODCALLTYPE *GetContainingOutput )(
  473. IDXGISwapChain4 * This,
  474. /* [annotation][out] */
  475. _COM_Outptr_ IDXGIOutput **ppOutput);
  476. DECLSPEC_XFGVIRT(IDXGISwapChain, GetFrameStatistics)
  477. HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )(
  478. IDXGISwapChain4 * This,
  479. /* [annotation][out] */
  480. _Out_ DXGI_FRAME_STATISTICS *pStats);
  481. DECLSPEC_XFGVIRT(IDXGISwapChain, GetLastPresentCount)
  482. HRESULT ( STDMETHODCALLTYPE *GetLastPresentCount )(
  483. IDXGISwapChain4 * This,
  484. /* [annotation][out] */
  485. _Out_ UINT *pLastPresentCount);
  486. DECLSPEC_XFGVIRT(IDXGISwapChain1, GetDesc1)
  487. HRESULT ( STDMETHODCALLTYPE *GetDesc1 )(
  488. IDXGISwapChain4 * This,
  489. /* [annotation][out] */
  490. _Out_ DXGI_SWAP_CHAIN_DESC1 *pDesc);
  491. DECLSPEC_XFGVIRT(IDXGISwapChain1, GetFullscreenDesc)
  492. HRESULT ( STDMETHODCALLTYPE *GetFullscreenDesc )(
  493. IDXGISwapChain4 * This,
  494. /* [annotation][out] */
  495. _Out_ DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc);
  496. DECLSPEC_XFGVIRT(IDXGISwapChain1, GetHwnd)
  497. HRESULT ( STDMETHODCALLTYPE *GetHwnd )(
  498. IDXGISwapChain4 * This,
  499. /* [annotation][out] */
  500. _Out_ HWND *pHwnd);
  501. DECLSPEC_XFGVIRT(IDXGISwapChain1, GetCoreWindow)
  502. HRESULT ( STDMETHODCALLTYPE *GetCoreWindow )(
  503. IDXGISwapChain4 * This,
  504. /* [annotation][in] */
  505. _In_ REFIID refiid,
  506. /* [annotation][out] */
  507. _COM_Outptr_ void **ppUnk);
  508. DECLSPEC_XFGVIRT(IDXGISwapChain1, Present1)
  509. HRESULT ( STDMETHODCALLTYPE *Present1 )(
  510. IDXGISwapChain4 * This,
  511. /* [in] */ UINT SyncInterval,
  512. /* [in] */ UINT PresentFlags,
  513. /* [annotation][in] */
  514. _In_ const DXGI_PRESENT_PARAMETERS *pPresentParameters);
  515. DECLSPEC_XFGVIRT(IDXGISwapChain1, IsTemporaryMonoSupported)
  516. BOOL ( STDMETHODCALLTYPE *IsTemporaryMonoSupported )(
  517. IDXGISwapChain4 * This);
  518. DECLSPEC_XFGVIRT(IDXGISwapChain1, GetRestrictToOutput)
  519. HRESULT ( STDMETHODCALLTYPE *GetRestrictToOutput )(
  520. IDXGISwapChain4 * This,
  521. /* [annotation][out] */
  522. _Out_ IDXGIOutput **ppRestrictToOutput);
  523. DECLSPEC_XFGVIRT(IDXGISwapChain1, SetBackgroundColor)
  524. HRESULT ( STDMETHODCALLTYPE *SetBackgroundColor )(
  525. IDXGISwapChain4 * This,
  526. /* [annotation][in] */
  527. _In_ const DXGI_RGBA *pColor);
  528. DECLSPEC_XFGVIRT(IDXGISwapChain1, GetBackgroundColor)
  529. HRESULT ( STDMETHODCALLTYPE *GetBackgroundColor )(
  530. IDXGISwapChain4 * This,
  531. /* [annotation][out] */
  532. _Out_ DXGI_RGBA *pColor);
  533. DECLSPEC_XFGVIRT(IDXGISwapChain1, SetRotation)
  534. HRESULT ( STDMETHODCALLTYPE *SetRotation )(
  535. IDXGISwapChain4 * This,
  536. /* [annotation][in] */
  537. _In_ DXGI_MODE_ROTATION Rotation);
  538. DECLSPEC_XFGVIRT(IDXGISwapChain1, GetRotation)
  539. HRESULT ( STDMETHODCALLTYPE *GetRotation )(
  540. IDXGISwapChain4 * This,
  541. /* [annotation][out] */
  542. _Out_ DXGI_MODE_ROTATION *pRotation);
  543. DECLSPEC_XFGVIRT(IDXGISwapChain2, SetSourceSize)
  544. HRESULT ( STDMETHODCALLTYPE *SetSourceSize )(
  545. IDXGISwapChain4 * This,
  546. UINT Width,
  547. UINT Height);
  548. DECLSPEC_XFGVIRT(IDXGISwapChain2, GetSourceSize)
  549. HRESULT ( STDMETHODCALLTYPE *GetSourceSize )(
  550. IDXGISwapChain4 * This,
  551. /* [annotation][out] */
  552. _Out_ UINT *pWidth,
  553. /* [annotation][out] */
  554. _Out_ UINT *pHeight);
  555. DECLSPEC_XFGVIRT(IDXGISwapChain2, SetMaximumFrameLatency)
  556. HRESULT ( STDMETHODCALLTYPE *SetMaximumFrameLatency )(
  557. IDXGISwapChain4 * This,
  558. UINT MaxLatency);
  559. DECLSPEC_XFGVIRT(IDXGISwapChain2, GetMaximumFrameLatency)
  560. HRESULT ( STDMETHODCALLTYPE *GetMaximumFrameLatency )(
  561. IDXGISwapChain4 * This,
  562. /* [annotation][out] */
  563. _Out_ UINT *pMaxLatency);
  564. DECLSPEC_XFGVIRT(IDXGISwapChain2, GetFrameLatencyWaitableObject)
  565. HANDLE ( STDMETHODCALLTYPE *GetFrameLatencyWaitableObject )(
  566. IDXGISwapChain4 * This);
  567. DECLSPEC_XFGVIRT(IDXGISwapChain2, SetMatrixTransform)
  568. HRESULT ( STDMETHODCALLTYPE *SetMatrixTransform )(
  569. IDXGISwapChain4 * This,
  570. const DXGI_MATRIX_3X2_F *pMatrix);
  571. DECLSPEC_XFGVIRT(IDXGISwapChain2, GetMatrixTransform)
  572. HRESULT ( STDMETHODCALLTYPE *GetMatrixTransform )(
  573. IDXGISwapChain4 * This,
  574. /* [annotation][out] */
  575. _Out_ DXGI_MATRIX_3X2_F *pMatrix);
  576. DECLSPEC_XFGVIRT(IDXGISwapChain3, GetCurrentBackBufferIndex)
  577. UINT ( STDMETHODCALLTYPE *GetCurrentBackBufferIndex )(
  578. IDXGISwapChain4 * This);
  579. DECLSPEC_XFGVIRT(IDXGISwapChain3, CheckColorSpaceSupport)
  580. HRESULT ( STDMETHODCALLTYPE *CheckColorSpaceSupport )(
  581. IDXGISwapChain4 * This,
  582. /* [annotation][in] */
  583. _In_ DXGI_COLOR_SPACE_TYPE ColorSpace,
  584. /* [annotation][out] */
  585. _Out_ UINT *pColorSpaceSupport);
  586. DECLSPEC_XFGVIRT(IDXGISwapChain3, SetColorSpace1)
  587. HRESULT ( STDMETHODCALLTYPE *SetColorSpace1 )(
  588. IDXGISwapChain4 * This,
  589. /* [annotation][in] */
  590. _In_ DXGI_COLOR_SPACE_TYPE ColorSpace);
  591. DECLSPEC_XFGVIRT(IDXGISwapChain3, ResizeBuffers1)
  592. HRESULT ( STDMETHODCALLTYPE *ResizeBuffers1 )(
  593. IDXGISwapChain4 * This,
  594. /* [annotation][in] */
  595. _In_ UINT BufferCount,
  596. /* [annotation][in] */
  597. _In_ UINT Width,
  598. /* [annotation][in] */
  599. _In_ UINT Height,
  600. /* [annotation][in] */
  601. _In_ DXGI_FORMAT Format,
  602. /* [annotation][in] */
  603. _In_ UINT SwapChainFlags,
  604. /* [annotation][in] */
  605. _In_reads_(BufferCount) const UINT *pCreationNodeMask,
  606. /* [annotation][in] */
  607. _In_reads_(BufferCount) IUnknown *const *ppPresentQueue);
  608. DECLSPEC_XFGVIRT(IDXGISwapChain4, SetHDRMetaData)
  609. HRESULT ( STDMETHODCALLTYPE *SetHDRMetaData )(
  610. IDXGISwapChain4 * This,
  611. /* [annotation][in] */
  612. _In_ DXGI_HDR_METADATA_TYPE Type,
  613. /* [annotation][in] */
  614. _In_ UINT Size,
  615. /* [annotation][size_is][in] */
  616. _In_reads_opt_(Size) void *pMetaData);
  617. END_INTERFACE
  618. } IDXGISwapChain4Vtbl;
  619. interface IDXGISwapChain4
  620. {
  621. CONST_VTBL struct IDXGISwapChain4Vtbl *lpVtbl;
  622. };
  623. #ifdef COBJMACROS
  624. #define IDXGISwapChain4_QueryInterface(This,riid,ppvObject) \
  625. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  626. #define IDXGISwapChain4_AddRef(This) \
  627. ( (This)->lpVtbl -> AddRef(This) )
  628. #define IDXGISwapChain4_Release(This) \
  629. ( (This)->lpVtbl -> Release(This) )
  630. #define IDXGISwapChain4_SetPrivateData(This,Name,DataSize,pData) \
  631. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  632. #define IDXGISwapChain4_SetPrivateDataInterface(This,Name,pUnknown) \
  633. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  634. #define IDXGISwapChain4_GetPrivateData(This,Name,pDataSize,pData) \
  635. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  636. #define IDXGISwapChain4_GetParent(This,riid,ppParent) \
  637. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  638. #define IDXGISwapChain4_GetDevice(This,riid,ppDevice) \
  639. ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
  640. #define IDXGISwapChain4_Present(This,SyncInterval,Flags) \
  641. ( (This)->lpVtbl -> Present(This,SyncInterval,Flags) )
  642. #define IDXGISwapChain4_GetBuffer(This,Buffer,riid,ppSurface) \
  643. ( (This)->lpVtbl -> GetBuffer(This,Buffer,riid,ppSurface) )
  644. #define IDXGISwapChain4_SetFullscreenState(This,Fullscreen,pTarget) \
  645. ( (This)->lpVtbl -> SetFullscreenState(This,Fullscreen,pTarget) )
  646. #define IDXGISwapChain4_GetFullscreenState(This,pFullscreen,ppTarget) \
  647. ( (This)->lpVtbl -> GetFullscreenState(This,pFullscreen,ppTarget) )
  648. #define IDXGISwapChain4_GetDesc(This,pDesc) \
  649. ( (This)->lpVtbl -> GetDesc(This,pDesc) )
  650. #define IDXGISwapChain4_ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags) \
  651. ( (This)->lpVtbl -> ResizeBuffers(This,BufferCount,Width,Height,NewFormat,SwapChainFlags) )
  652. #define IDXGISwapChain4_ResizeTarget(This,pNewTargetParameters) \
  653. ( (This)->lpVtbl -> ResizeTarget(This,pNewTargetParameters) )
  654. #define IDXGISwapChain4_GetContainingOutput(This,ppOutput) \
  655. ( (This)->lpVtbl -> GetContainingOutput(This,ppOutput) )
  656. #define IDXGISwapChain4_GetFrameStatistics(This,pStats) \
  657. ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) )
  658. #define IDXGISwapChain4_GetLastPresentCount(This,pLastPresentCount) \
  659. ( (This)->lpVtbl -> GetLastPresentCount(This,pLastPresentCount) )
  660. #define IDXGISwapChain4_GetDesc1(This,pDesc) \
  661. ( (This)->lpVtbl -> GetDesc1(This,pDesc) )
  662. #define IDXGISwapChain4_GetFullscreenDesc(This,pDesc) \
  663. ( (This)->lpVtbl -> GetFullscreenDesc(This,pDesc) )
  664. #define IDXGISwapChain4_GetHwnd(This,pHwnd) \
  665. ( (This)->lpVtbl -> GetHwnd(This,pHwnd) )
  666. #define IDXGISwapChain4_GetCoreWindow(This,refiid,ppUnk) \
  667. ( (This)->lpVtbl -> GetCoreWindow(This,refiid,ppUnk) )
  668. #define IDXGISwapChain4_Present1(This,SyncInterval,PresentFlags,pPresentParameters) \
  669. ( (This)->lpVtbl -> Present1(This,SyncInterval,PresentFlags,pPresentParameters) )
  670. #define IDXGISwapChain4_IsTemporaryMonoSupported(This) \
  671. ( (This)->lpVtbl -> IsTemporaryMonoSupported(This) )
  672. #define IDXGISwapChain4_GetRestrictToOutput(This,ppRestrictToOutput) \
  673. ( (This)->lpVtbl -> GetRestrictToOutput(This,ppRestrictToOutput) )
  674. #define IDXGISwapChain4_SetBackgroundColor(This,pColor) \
  675. ( (This)->lpVtbl -> SetBackgroundColor(This,pColor) )
  676. #define IDXGISwapChain4_GetBackgroundColor(This,pColor) \
  677. ( (This)->lpVtbl -> GetBackgroundColor(This,pColor) )
  678. #define IDXGISwapChain4_SetRotation(This,Rotation) \
  679. ( (This)->lpVtbl -> SetRotation(This,Rotation) )
  680. #define IDXGISwapChain4_GetRotation(This,pRotation) \
  681. ( (This)->lpVtbl -> GetRotation(This,pRotation) )
  682. #define IDXGISwapChain4_SetSourceSize(This,Width,Height) \
  683. ( (This)->lpVtbl -> SetSourceSize(This,Width,Height) )
  684. #define IDXGISwapChain4_GetSourceSize(This,pWidth,pHeight) \
  685. ( (This)->lpVtbl -> GetSourceSize(This,pWidth,pHeight) )
  686. #define IDXGISwapChain4_SetMaximumFrameLatency(This,MaxLatency) \
  687. ( (This)->lpVtbl -> SetMaximumFrameLatency(This,MaxLatency) )
  688. #define IDXGISwapChain4_GetMaximumFrameLatency(This,pMaxLatency) \
  689. ( (This)->lpVtbl -> GetMaximumFrameLatency(This,pMaxLatency) )
  690. #define IDXGISwapChain4_GetFrameLatencyWaitableObject(This) \
  691. ( (This)->lpVtbl -> GetFrameLatencyWaitableObject(This) )
  692. #define IDXGISwapChain4_SetMatrixTransform(This,pMatrix) \
  693. ( (This)->lpVtbl -> SetMatrixTransform(This,pMatrix) )
  694. #define IDXGISwapChain4_GetMatrixTransform(This,pMatrix) \
  695. ( (This)->lpVtbl -> GetMatrixTransform(This,pMatrix) )
  696. #define IDXGISwapChain4_GetCurrentBackBufferIndex(This) \
  697. ( (This)->lpVtbl -> GetCurrentBackBufferIndex(This) )
  698. #define IDXGISwapChain4_CheckColorSpaceSupport(This,ColorSpace,pColorSpaceSupport) \
  699. ( (This)->lpVtbl -> CheckColorSpaceSupport(This,ColorSpace,pColorSpaceSupport) )
  700. #define IDXGISwapChain4_SetColorSpace1(This,ColorSpace) \
  701. ( (This)->lpVtbl -> SetColorSpace1(This,ColorSpace) )
  702. #define IDXGISwapChain4_ResizeBuffers1(This,BufferCount,Width,Height,Format,SwapChainFlags,pCreationNodeMask,ppPresentQueue) \
  703. ( (This)->lpVtbl -> ResizeBuffers1(This,BufferCount,Width,Height,Format,SwapChainFlags,pCreationNodeMask,ppPresentQueue) )
  704. #define IDXGISwapChain4_SetHDRMetaData(This,Type,Size,pMetaData) \
  705. ( (This)->lpVtbl -> SetHDRMetaData(This,Type,Size,pMetaData) )
  706. #endif /* COBJMACROS */
  707. #endif /* C style interface */
  708. #endif /* __IDXGISwapChain4_INTERFACE_DEFINED__ */
  709. /* interface __MIDL_itf_dxgi1_5_0000_0002 */
  710. /* [local] */
  711. typedef
  712. enum _DXGI_OFFER_RESOURCE_FLAGS
  713. {
  714. DXGI_OFFER_RESOURCE_FLAG_ALLOW_DECOMMIT = 0x1
  715. } DXGI_OFFER_RESOURCE_FLAGS;
  716. typedef
  717. enum _DXGI_RECLAIM_RESOURCE_RESULTS
  718. {
  719. DXGI_RECLAIM_RESOURCE_RESULT_OK = 0,
  720. DXGI_RECLAIM_RESOURCE_RESULT_DISCARDED = 1,
  721. DXGI_RECLAIM_RESOURCE_RESULT_NOT_COMMITTED = 2
  722. } DXGI_RECLAIM_RESOURCE_RESULTS;
  723. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_5_0000_0002_v0_0_c_ifspec;
  724. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_5_0000_0002_v0_0_s_ifspec;
  725. #ifndef __IDXGIDevice4_INTERFACE_DEFINED__
  726. #define __IDXGIDevice4_INTERFACE_DEFINED__
  727. /* interface IDXGIDevice4 */
  728. /* [unique][local][uuid][object] */
  729. EXTERN_C const IID IID_IDXGIDevice4;
  730. #if defined(__cplusplus) && !defined(CINTERFACE)
  731. MIDL_INTERFACE("95B4F95F-D8DA-4CA4-9EE6-3B76D5968A10")
  732. IDXGIDevice4 : public IDXGIDevice3
  733. {
  734. public:
  735. virtual HRESULT STDMETHODCALLTYPE OfferResources1(
  736. /* [annotation][in] */
  737. _In_ UINT NumResources,
  738. /* [annotation][size_is][in] */
  739. _In_reads_(NumResources) IDXGIResource *const *ppResources,
  740. /* [annotation][in] */
  741. _In_ DXGI_OFFER_RESOURCE_PRIORITY Priority,
  742. /* [annotation][in] */
  743. _In_ UINT Flags) = 0;
  744. virtual HRESULT STDMETHODCALLTYPE ReclaimResources1(
  745. /* [annotation][in] */
  746. _In_ UINT NumResources,
  747. /* [annotation][size_is][in] */
  748. _In_reads_(NumResources) IDXGIResource *const *ppResources,
  749. /* [annotation][size_is][out] */
  750. _Out_writes_all_(NumResources) DXGI_RECLAIM_RESOURCE_RESULTS *pResults) = 0;
  751. };
  752. #else /* C style interface */
  753. typedef struct IDXGIDevice4Vtbl
  754. {
  755. BEGIN_INTERFACE
  756. DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
  757. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  758. IDXGIDevice4 * This,
  759. /* [in] */ REFIID riid,
  760. /* [annotation][iid_is][out] */
  761. _COM_Outptr_ void **ppvObject);
  762. DECLSPEC_XFGVIRT(IUnknown, AddRef)
  763. ULONG ( STDMETHODCALLTYPE *AddRef )(
  764. IDXGIDevice4 * This);
  765. DECLSPEC_XFGVIRT(IUnknown, Release)
  766. ULONG ( STDMETHODCALLTYPE *Release )(
  767. IDXGIDevice4 * This);
  768. DECLSPEC_XFGVIRT(IDXGIObject, SetPrivateData)
  769. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  770. IDXGIDevice4 * This,
  771. /* [annotation][in] */
  772. _In_ REFGUID Name,
  773. /* [in] */ UINT DataSize,
  774. /* [annotation][in] */
  775. _In_reads_bytes_(DataSize) const void *pData);
  776. DECLSPEC_XFGVIRT(IDXGIObject, SetPrivateDataInterface)
  777. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  778. IDXGIDevice4 * This,
  779. /* [annotation][in] */
  780. _In_ REFGUID Name,
  781. /* [annotation][in] */
  782. _In_opt_ const IUnknown *pUnknown);
  783. DECLSPEC_XFGVIRT(IDXGIObject, GetPrivateData)
  784. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  785. IDXGIDevice4 * This,
  786. /* [annotation][in] */
  787. _In_ REFGUID Name,
  788. /* [annotation][out][in] */
  789. _Inout_ UINT *pDataSize,
  790. /* [annotation][out] */
  791. _Out_writes_bytes_(*pDataSize) void *pData);
  792. DECLSPEC_XFGVIRT(IDXGIObject, GetParent)
  793. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  794. IDXGIDevice4 * This,
  795. /* [annotation][in] */
  796. _In_ REFIID riid,
  797. /* [annotation][retval][out] */
  798. _COM_Outptr_ void **ppParent);
  799. DECLSPEC_XFGVIRT(IDXGIDevice, GetAdapter)
  800. HRESULT ( STDMETHODCALLTYPE *GetAdapter )(
  801. IDXGIDevice4 * This,
  802. /* [annotation][out] */
  803. _COM_Outptr_ IDXGIAdapter **pAdapter);
  804. DECLSPEC_XFGVIRT(IDXGIDevice, CreateSurface)
  805. HRESULT ( STDMETHODCALLTYPE *CreateSurface )(
  806. IDXGIDevice4 * This,
  807. /* [annotation][in] */
  808. _In_ const DXGI_SURFACE_DESC *pDesc,
  809. /* [in] */ UINT NumSurfaces,
  810. /* [in] */ DXGI_USAGE Usage,
  811. /* [annotation][in] */
  812. _In_opt_ const DXGI_SHARED_RESOURCE *pSharedResource,
  813. /* [annotation][size_is][out] */
  814. _Out_writes_(NumSurfaces) IDXGISurface **ppSurface);
  815. DECLSPEC_XFGVIRT(IDXGIDevice, QueryResourceResidency)
  816. HRESULT ( STDMETHODCALLTYPE *QueryResourceResidency )(
  817. IDXGIDevice4 * This,
  818. /* [annotation][size_is][in] */
  819. _In_reads_(NumResources) IUnknown *const *ppResources,
  820. /* [annotation][size_is][out] */
  821. _Out_writes_(NumResources) DXGI_RESIDENCY *pResidencyStatus,
  822. /* [in] */ UINT NumResources);
  823. DECLSPEC_XFGVIRT(IDXGIDevice, SetGPUThreadPriority)
  824. HRESULT ( STDMETHODCALLTYPE *SetGPUThreadPriority )(
  825. IDXGIDevice4 * This,
  826. /* [in] */ INT Priority);
  827. DECLSPEC_XFGVIRT(IDXGIDevice, GetGPUThreadPriority)
  828. HRESULT ( STDMETHODCALLTYPE *GetGPUThreadPriority )(
  829. IDXGIDevice4 * This,
  830. /* [annotation][retval][out] */
  831. _Out_ INT *pPriority);
  832. DECLSPEC_XFGVIRT(IDXGIDevice1, SetMaximumFrameLatency)
  833. HRESULT ( STDMETHODCALLTYPE *SetMaximumFrameLatency )(
  834. IDXGIDevice4 * This,
  835. /* [in] */ UINT MaxLatency);
  836. DECLSPEC_XFGVIRT(IDXGIDevice1, GetMaximumFrameLatency)
  837. HRESULT ( STDMETHODCALLTYPE *GetMaximumFrameLatency )(
  838. IDXGIDevice4 * This,
  839. /* [annotation][out] */
  840. _Out_ UINT *pMaxLatency);
  841. DECLSPEC_XFGVIRT(IDXGIDevice2, OfferResources)
  842. HRESULT ( STDMETHODCALLTYPE *OfferResources )(
  843. IDXGIDevice4 * This,
  844. /* [annotation][in] */
  845. _In_ UINT NumResources,
  846. /* [annotation][size_is][in] */
  847. _In_reads_(NumResources) IDXGIResource *const *ppResources,
  848. /* [annotation][in] */
  849. _In_ DXGI_OFFER_RESOURCE_PRIORITY Priority);
  850. DECLSPEC_XFGVIRT(IDXGIDevice2, ReclaimResources)
  851. HRESULT ( STDMETHODCALLTYPE *ReclaimResources )(
  852. IDXGIDevice4 * This,
  853. /* [annotation][in] */
  854. _In_ UINT NumResources,
  855. /* [annotation][size_is][in] */
  856. _In_reads_(NumResources) IDXGIResource *const *ppResources,
  857. /* [annotation][size_is][out] */
  858. _Out_writes_all_opt_(NumResources) BOOL *pDiscarded);
  859. DECLSPEC_XFGVIRT(IDXGIDevice2, EnqueueSetEvent)
  860. HRESULT ( STDMETHODCALLTYPE *EnqueueSetEvent )(
  861. IDXGIDevice4 * This,
  862. /* [annotation][in] */
  863. _In_ HANDLE hEvent);
  864. DECLSPEC_XFGVIRT(IDXGIDevice3, Trim)
  865. void ( STDMETHODCALLTYPE *Trim )(
  866. IDXGIDevice4 * This);
  867. DECLSPEC_XFGVIRT(IDXGIDevice4, OfferResources1)
  868. HRESULT ( STDMETHODCALLTYPE *OfferResources1 )(
  869. IDXGIDevice4 * This,
  870. /* [annotation][in] */
  871. _In_ UINT NumResources,
  872. /* [annotation][size_is][in] */
  873. _In_reads_(NumResources) IDXGIResource *const *ppResources,
  874. /* [annotation][in] */
  875. _In_ DXGI_OFFER_RESOURCE_PRIORITY Priority,
  876. /* [annotation][in] */
  877. _In_ UINT Flags);
  878. DECLSPEC_XFGVIRT(IDXGIDevice4, ReclaimResources1)
  879. HRESULT ( STDMETHODCALLTYPE *ReclaimResources1 )(
  880. IDXGIDevice4 * This,
  881. /* [annotation][in] */
  882. _In_ UINT NumResources,
  883. /* [annotation][size_is][in] */
  884. _In_reads_(NumResources) IDXGIResource *const *ppResources,
  885. /* [annotation][size_is][out] */
  886. _Out_writes_all_(NumResources) DXGI_RECLAIM_RESOURCE_RESULTS *pResults);
  887. END_INTERFACE
  888. } IDXGIDevice4Vtbl;
  889. interface IDXGIDevice4
  890. {
  891. CONST_VTBL struct IDXGIDevice4Vtbl *lpVtbl;
  892. };
  893. #ifdef COBJMACROS
  894. #define IDXGIDevice4_QueryInterface(This,riid,ppvObject) \
  895. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  896. #define IDXGIDevice4_AddRef(This) \
  897. ( (This)->lpVtbl -> AddRef(This) )
  898. #define IDXGIDevice4_Release(This) \
  899. ( (This)->lpVtbl -> Release(This) )
  900. #define IDXGIDevice4_SetPrivateData(This,Name,DataSize,pData) \
  901. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  902. #define IDXGIDevice4_SetPrivateDataInterface(This,Name,pUnknown) \
  903. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  904. #define IDXGIDevice4_GetPrivateData(This,Name,pDataSize,pData) \
  905. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  906. #define IDXGIDevice4_GetParent(This,riid,ppParent) \
  907. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  908. #define IDXGIDevice4_GetAdapter(This,pAdapter) \
  909. ( (This)->lpVtbl -> GetAdapter(This,pAdapter) )
  910. #define IDXGIDevice4_CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) \
  911. ( (This)->lpVtbl -> CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) )
  912. #define IDXGIDevice4_QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) \
  913. ( (This)->lpVtbl -> QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) )
  914. #define IDXGIDevice4_SetGPUThreadPriority(This,Priority) \
  915. ( (This)->lpVtbl -> SetGPUThreadPriority(This,Priority) )
  916. #define IDXGIDevice4_GetGPUThreadPriority(This,pPriority) \
  917. ( (This)->lpVtbl -> GetGPUThreadPriority(This,pPriority) )
  918. #define IDXGIDevice4_SetMaximumFrameLatency(This,MaxLatency) \
  919. ( (This)->lpVtbl -> SetMaximumFrameLatency(This,MaxLatency) )
  920. #define IDXGIDevice4_GetMaximumFrameLatency(This,pMaxLatency) \
  921. ( (This)->lpVtbl -> GetMaximumFrameLatency(This,pMaxLatency) )
  922. #define IDXGIDevice4_OfferResources(This,NumResources,ppResources,Priority) \
  923. ( (This)->lpVtbl -> OfferResources(This,NumResources,ppResources,Priority) )
  924. #define IDXGIDevice4_ReclaimResources(This,NumResources,ppResources,pDiscarded) \
  925. ( (This)->lpVtbl -> ReclaimResources(This,NumResources,ppResources,pDiscarded) )
  926. #define IDXGIDevice4_EnqueueSetEvent(This,hEvent) \
  927. ( (This)->lpVtbl -> EnqueueSetEvent(This,hEvent) )
  928. #define IDXGIDevice4_Trim(This) \
  929. ( (This)->lpVtbl -> Trim(This) )
  930. #define IDXGIDevice4_OfferResources1(This,NumResources,ppResources,Priority,Flags) \
  931. ( (This)->lpVtbl -> OfferResources1(This,NumResources,ppResources,Priority,Flags) )
  932. #define IDXGIDevice4_ReclaimResources1(This,NumResources,ppResources,pResults) \
  933. ( (This)->lpVtbl -> ReclaimResources1(This,NumResources,ppResources,pResults) )
  934. #endif /* COBJMACROS */
  935. #endif /* C style interface */
  936. #endif /* __IDXGIDevice4_INTERFACE_DEFINED__ */
  937. /* interface __MIDL_itf_dxgi1_5_0000_0003 */
  938. /* [local] */
  939. typedef
  940. enum DXGI_FEATURE
  941. {
  942. DXGI_FEATURE_PRESENT_ALLOW_TEARING = 0
  943. } DXGI_FEATURE;
  944. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_5_0000_0003_v0_0_c_ifspec;
  945. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_5_0000_0003_v0_0_s_ifspec;
  946. #ifndef __IDXGIFactory5_INTERFACE_DEFINED__
  947. #define __IDXGIFactory5_INTERFACE_DEFINED__
  948. /* interface IDXGIFactory5 */
  949. /* [unique][local][uuid][object] */
  950. EXTERN_C const IID IID_IDXGIFactory5;
  951. #if defined(__cplusplus) && !defined(CINTERFACE)
  952. MIDL_INTERFACE("7632e1f5-ee65-4dca-87fd-84cd75f8838d")
  953. IDXGIFactory5 : public IDXGIFactory4
  954. {
  955. public:
  956. virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
  957. DXGI_FEATURE Feature,
  958. /* [annotation] */
  959. _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
  960. UINT FeatureSupportDataSize) = 0;
  961. };
  962. #else /* C style interface */
  963. typedef struct IDXGIFactory5Vtbl
  964. {
  965. BEGIN_INTERFACE
  966. DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
  967. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  968. IDXGIFactory5 * This,
  969. /* [in] */ REFIID riid,
  970. /* [annotation][iid_is][out] */
  971. _COM_Outptr_ void **ppvObject);
  972. DECLSPEC_XFGVIRT(IUnknown, AddRef)
  973. ULONG ( STDMETHODCALLTYPE *AddRef )(
  974. IDXGIFactory5 * This);
  975. DECLSPEC_XFGVIRT(IUnknown, Release)
  976. ULONG ( STDMETHODCALLTYPE *Release )(
  977. IDXGIFactory5 * This);
  978. DECLSPEC_XFGVIRT(IDXGIObject, SetPrivateData)
  979. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  980. IDXGIFactory5 * This,
  981. /* [annotation][in] */
  982. _In_ REFGUID Name,
  983. /* [in] */ UINT DataSize,
  984. /* [annotation][in] */
  985. _In_reads_bytes_(DataSize) const void *pData);
  986. DECLSPEC_XFGVIRT(IDXGIObject, SetPrivateDataInterface)
  987. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  988. IDXGIFactory5 * This,
  989. /* [annotation][in] */
  990. _In_ REFGUID Name,
  991. /* [annotation][in] */
  992. _In_opt_ const IUnknown *pUnknown);
  993. DECLSPEC_XFGVIRT(IDXGIObject, GetPrivateData)
  994. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  995. IDXGIFactory5 * This,
  996. /* [annotation][in] */
  997. _In_ REFGUID Name,
  998. /* [annotation][out][in] */
  999. _Inout_ UINT *pDataSize,
  1000. /* [annotation][out] */
  1001. _Out_writes_bytes_(*pDataSize) void *pData);
  1002. DECLSPEC_XFGVIRT(IDXGIObject, GetParent)
  1003. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  1004. IDXGIFactory5 * This,
  1005. /* [annotation][in] */
  1006. _In_ REFIID riid,
  1007. /* [annotation][retval][out] */
  1008. _COM_Outptr_ void **ppParent);
  1009. DECLSPEC_XFGVIRT(IDXGIFactory, EnumAdapters)
  1010. HRESULT ( STDMETHODCALLTYPE *EnumAdapters )(
  1011. IDXGIFactory5 * This,
  1012. /* [in] */ UINT Adapter,
  1013. /* [annotation][out] */
  1014. _COM_Outptr_ IDXGIAdapter **ppAdapter);
  1015. DECLSPEC_XFGVIRT(IDXGIFactory, MakeWindowAssociation)
  1016. HRESULT ( STDMETHODCALLTYPE *MakeWindowAssociation )(
  1017. IDXGIFactory5 * This,
  1018. HWND WindowHandle,
  1019. UINT Flags);
  1020. DECLSPEC_XFGVIRT(IDXGIFactory, GetWindowAssociation)
  1021. HRESULT ( STDMETHODCALLTYPE *GetWindowAssociation )(
  1022. IDXGIFactory5 * This,
  1023. /* [annotation][out] */
  1024. _Out_ HWND *pWindowHandle);
  1025. DECLSPEC_XFGVIRT(IDXGIFactory, CreateSwapChain)
  1026. HRESULT ( STDMETHODCALLTYPE *CreateSwapChain )(
  1027. IDXGIFactory5 * This,
  1028. /* [annotation][in] */
  1029. _In_ IUnknown *pDevice,
  1030. /* [annotation][in] */
  1031. _In_ DXGI_SWAP_CHAIN_DESC *pDesc,
  1032. /* [annotation][out] */
  1033. _COM_Outptr_ IDXGISwapChain **ppSwapChain);
  1034. DECLSPEC_XFGVIRT(IDXGIFactory, CreateSoftwareAdapter)
  1035. HRESULT ( STDMETHODCALLTYPE *CreateSoftwareAdapter )(
  1036. IDXGIFactory5 * This,
  1037. /* [in] */ HMODULE Module,
  1038. /* [annotation][out] */
  1039. _COM_Outptr_ IDXGIAdapter **ppAdapter);
  1040. DECLSPEC_XFGVIRT(IDXGIFactory1, EnumAdapters1)
  1041. HRESULT ( STDMETHODCALLTYPE *EnumAdapters1 )(
  1042. IDXGIFactory5 * This,
  1043. /* [in] */ UINT Adapter,
  1044. /* [annotation][out] */
  1045. _COM_Outptr_ IDXGIAdapter1 **ppAdapter);
  1046. DECLSPEC_XFGVIRT(IDXGIFactory1, IsCurrent)
  1047. BOOL ( STDMETHODCALLTYPE *IsCurrent )(
  1048. IDXGIFactory5 * This);
  1049. DECLSPEC_XFGVIRT(IDXGIFactory2, IsWindowedStereoEnabled)
  1050. BOOL ( STDMETHODCALLTYPE *IsWindowedStereoEnabled )(
  1051. IDXGIFactory5 * This);
  1052. DECLSPEC_XFGVIRT(IDXGIFactory2, CreateSwapChainForHwnd)
  1053. HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForHwnd )(
  1054. IDXGIFactory5 * This,
  1055. /* [annotation][in] */
  1056. _In_ IUnknown *pDevice,
  1057. /* [annotation][in] */
  1058. _In_ HWND hWnd,
  1059. /* [annotation][in] */
  1060. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1061. /* [annotation][in] */
  1062. _In_opt_ const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
  1063. /* [annotation][in] */
  1064. _In_opt_ IDXGIOutput *pRestrictToOutput,
  1065. /* [annotation][out] */
  1066. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain);
  1067. DECLSPEC_XFGVIRT(IDXGIFactory2, CreateSwapChainForCoreWindow)
  1068. HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForCoreWindow )(
  1069. IDXGIFactory5 * This,
  1070. /* [annotation][in] */
  1071. _In_ IUnknown *pDevice,
  1072. /* [annotation][in] */
  1073. _In_ IUnknown *pWindow,
  1074. /* [annotation][in] */
  1075. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1076. /* [annotation][in] */
  1077. _In_opt_ IDXGIOutput *pRestrictToOutput,
  1078. /* [annotation][out] */
  1079. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain);
  1080. DECLSPEC_XFGVIRT(IDXGIFactory2, GetSharedResourceAdapterLuid)
  1081. HRESULT ( STDMETHODCALLTYPE *GetSharedResourceAdapterLuid )(
  1082. IDXGIFactory5 * This,
  1083. /* [annotation] */
  1084. _In_ HANDLE hResource,
  1085. /* [annotation] */
  1086. _Out_ LUID *pLuid);
  1087. DECLSPEC_XFGVIRT(IDXGIFactory2, RegisterStereoStatusWindow)
  1088. HRESULT ( STDMETHODCALLTYPE *RegisterStereoStatusWindow )(
  1089. IDXGIFactory5 * This,
  1090. /* [annotation][in] */
  1091. _In_ HWND WindowHandle,
  1092. /* [annotation][in] */
  1093. _In_ UINT wMsg,
  1094. /* [annotation][out] */
  1095. _Out_ DWORD *pdwCookie);
  1096. DECLSPEC_XFGVIRT(IDXGIFactory2, RegisterStereoStatusEvent)
  1097. HRESULT ( STDMETHODCALLTYPE *RegisterStereoStatusEvent )(
  1098. IDXGIFactory5 * This,
  1099. /* [annotation][in] */
  1100. _In_ HANDLE hEvent,
  1101. /* [annotation][out] */
  1102. _Out_ DWORD *pdwCookie);
  1103. DECLSPEC_XFGVIRT(IDXGIFactory2, UnregisterStereoStatus)
  1104. void ( STDMETHODCALLTYPE *UnregisterStereoStatus )(
  1105. IDXGIFactory5 * This,
  1106. /* [annotation][in] */
  1107. _In_ DWORD dwCookie);
  1108. DECLSPEC_XFGVIRT(IDXGIFactory2, RegisterOcclusionStatusWindow)
  1109. HRESULT ( STDMETHODCALLTYPE *RegisterOcclusionStatusWindow )(
  1110. IDXGIFactory5 * This,
  1111. /* [annotation][in] */
  1112. _In_ HWND WindowHandle,
  1113. /* [annotation][in] */
  1114. _In_ UINT wMsg,
  1115. /* [annotation][out] */
  1116. _Out_ DWORD *pdwCookie);
  1117. DECLSPEC_XFGVIRT(IDXGIFactory2, RegisterOcclusionStatusEvent)
  1118. HRESULT ( STDMETHODCALLTYPE *RegisterOcclusionStatusEvent )(
  1119. IDXGIFactory5 * This,
  1120. /* [annotation][in] */
  1121. _In_ HANDLE hEvent,
  1122. /* [annotation][out] */
  1123. _Out_ DWORD *pdwCookie);
  1124. DECLSPEC_XFGVIRT(IDXGIFactory2, UnregisterOcclusionStatus)
  1125. void ( STDMETHODCALLTYPE *UnregisterOcclusionStatus )(
  1126. IDXGIFactory5 * This,
  1127. /* [annotation][in] */
  1128. _In_ DWORD dwCookie);
  1129. DECLSPEC_XFGVIRT(IDXGIFactory2, CreateSwapChainForComposition)
  1130. HRESULT ( STDMETHODCALLTYPE *CreateSwapChainForComposition )(
  1131. IDXGIFactory5 * This,
  1132. /* [annotation][in] */
  1133. _In_ IUnknown *pDevice,
  1134. /* [annotation][in] */
  1135. _In_ const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1136. /* [annotation][in] */
  1137. _In_opt_ IDXGIOutput *pRestrictToOutput,
  1138. /* [annotation][out] */
  1139. _COM_Outptr_ IDXGISwapChain1 **ppSwapChain);
  1140. DECLSPEC_XFGVIRT(IDXGIFactory3, GetCreationFlags)
  1141. UINT ( STDMETHODCALLTYPE *GetCreationFlags )(
  1142. IDXGIFactory5 * This);
  1143. DECLSPEC_XFGVIRT(IDXGIFactory4, EnumAdapterByLuid)
  1144. HRESULT ( STDMETHODCALLTYPE *EnumAdapterByLuid )(
  1145. IDXGIFactory5 * This,
  1146. /* [annotation] */
  1147. _In_ LUID AdapterLuid,
  1148. /* [annotation] */
  1149. _In_ REFIID riid,
  1150. /* [annotation] */
  1151. _COM_Outptr_ void **ppvAdapter);
  1152. DECLSPEC_XFGVIRT(IDXGIFactory4, EnumWarpAdapter)
  1153. HRESULT ( STDMETHODCALLTYPE *EnumWarpAdapter )(
  1154. IDXGIFactory5 * This,
  1155. /* [annotation] */
  1156. _In_ REFIID riid,
  1157. /* [annotation] */
  1158. _COM_Outptr_ void **ppvAdapter);
  1159. DECLSPEC_XFGVIRT(IDXGIFactory5, CheckFeatureSupport)
  1160. HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
  1161. IDXGIFactory5 * This,
  1162. DXGI_FEATURE Feature,
  1163. /* [annotation] */
  1164. _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
  1165. UINT FeatureSupportDataSize);
  1166. END_INTERFACE
  1167. } IDXGIFactory5Vtbl;
  1168. interface IDXGIFactory5
  1169. {
  1170. CONST_VTBL struct IDXGIFactory5Vtbl *lpVtbl;
  1171. };
  1172. #ifdef COBJMACROS
  1173. #define IDXGIFactory5_QueryInterface(This,riid,ppvObject) \
  1174. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1175. #define IDXGIFactory5_AddRef(This) \
  1176. ( (This)->lpVtbl -> AddRef(This) )
  1177. #define IDXGIFactory5_Release(This) \
  1178. ( (This)->lpVtbl -> Release(This) )
  1179. #define IDXGIFactory5_SetPrivateData(This,Name,DataSize,pData) \
  1180. ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
  1181. #define IDXGIFactory5_SetPrivateDataInterface(This,Name,pUnknown) \
  1182. ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
  1183. #define IDXGIFactory5_GetPrivateData(This,Name,pDataSize,pData) \
  1184. ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
  1185. #define IDXGIFactory5_GetParent(This,riid,ppParent) \
  1186. ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
  1187. #define IDXGIFactory5_EnumAdapters(This,Adapter,ppAdapter) \
  1188. ( (This)->lpVtbl -> EnumAdapters(This,Adapter,ppAdapter) )
  1189. #define IDXGIFactory5_MakeWindowAssociation(This,WindowHandle,Flags) \
  1190. ( (This)->lpVtbl -> MakeWindowAssociation(This,WindowHandle,Flags) )
  1191. #define IDXGIFactory5_GetWindowAssociation(This,pWindowHandle) \
  1192. ( (This)->lpVtbl -> GetWindowAssociation(This,pWindowHandle) )
  1193. #define IDXGIFactory5_CreateSwapChain(This,pDevice,pDesc,ppSwapChain) \
  1194. ( (This)->lpVtbl -> CreateSwapChain(This,pDevice,pDesc,ppSwapChain) )
  1195. #define IDXGIFactory5_CreateSoftwareAdapter(This,Module,ppAdapter) \
  1196. ( (This)->lpVtbl -> CreateSoftwareAdapter(This,Module,ppAdapter) )
  1197. #define IDXGIFactory5_EnumAdapters1(This,Adapter,ppAdapter) \
  1198. ( (This)->lpVtbl -> EnumAdapters1(This,Adapter,ppAdapter) )
  1199. #define IDXGIFactory5_IsCurrent(This) \
  1200. ( (This)->lpVtbl -> IsCurrent(This) )
  1201. #define IDXGIFactory5_IsWindowedStereoEnabled(This) \
  1202. ( (This)->lpVtbl -> IsWindowedStereoEnabled(This) )
  1203. #define IDXGIFactory5_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) \
  1204. ( (This)->lpVtbl -> CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) )
  1205. #define IDXGIFactory5_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) \
  1206. ( (This)->lpVtbl -> CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) )
  1207. #define IDXGIFactory5_GetSharedResourceAdapterLuid(This,hResource,pLuid) \
  1208. ( (This)->lpVtbl -> GetSharedResourceAdapterLuid(This,hResource,pLuid) )
  1209. #define IDXGIFactory5_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) \
  1210. ( (This)->lpVtbl -> RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) )
  1211. #define IDXGIFactory5_RegisterStereoStatusEvent(This,hEvent,pdwCookie) \
  1212. ( (This)->lpVtbl -> RegisterStereoStatusEvent(This,hEvent,pdwCookie) )
  1213. #define IDXGIFactory5_UnregisterStereoStatus(This,dwCookie) \
  1214. ( (This)->lpVtbl -> UnregisterStereoStatus(This,dwCookie) )
  1215. #define IDXGIFactory5_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) \
  1216. ( (This)->lpVtbl -> RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) )
  1217. #define IDXGIFactory5_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) \
  1218. ( (This)->lpVtbl -> RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) )
  1219. #define IDXGIFactory5_UnregisterOcclusionStatus(This,dwCookie) \
  1220. ( (This)->lpVtbl -> UnregisterOcclusionStatus(This,dwCookie) )
  1221. #define IDXGIFactory5_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) \
  1222. ( (This)->lpVtbl -> CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) )
  1223. #define IDXGIFactory5_GetCreationFlags(This) \
  1224. ( (This)->lpVtbl -> GetCreationFlags(This) )
  1225. #define IDXGIFactory5_EnumAdapterByLuid(This,AdapterLuid,riid,ppvAdapter) \
  1226. ( (This)->lpVtbl -> EnumAdapterByLuid(This,AdapterLuid,riid,ppvAdapter) )
  1227. #define IDXGIFactory5_EnumWarpAdapter(This,riid,ppvAdapter) \
  1228. ( (This)->lpVtbl -> EnumWarpAdapter(This,riid,ppvAdapter) )
  1229. #define IDXGIFactory5_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
  1230. ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
  1231. #endif /* COBJMACROS */
  1232. #endif /* C style interface */
  1233. #endif /* __IDXGIFactory5_INTERFACE_DEFINED__ */
  1234. /* interface __MIDL_itf_dxgi1_5_0000_0004 */
  1235. /* [local] */
  1236. #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
  1237. #pragma endregion
  1238. DEFINE_GUID(IID_IDXGIOutput5,0x80A07424,0xAB52,0x42EB,0x83,0x3C,0x0C,0x42,0xFD,0x28,0x2D,0x98);
  1239. DEFINE_GUID(IID_IDXGISwapChain4,0x3D585D5A,0xBD4A,0x489E,0xB1,0xF4,0x3D,0xBC,0xB6,0x45,0x2F,0xFB);
  1240. DEFINE_GUID(IID_IDXGIDevice4,0x95B4F95F,0xD8DA,0x4CA4,0x9E,0xE6,0x3B,0x76,0xD5,0x96,0x8A,0x10);
  1241. DEFINE_GUID(IID_IDXGIFactory5,0x7632e1f5,0xee65,0x4dca,0x87,0xfd,0x84,0xcd,0x75,0xf8,0x83,0x8d);
  1242. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_5_0000_0004_v0_0_c_ifspec;
  1243. extern RPC_IF_HANDLE __MIDL_itf_dxgi1_5_0000_0004_v0_0_s_ifspec;
  1244. /* Additional Prototypes for ALL interfaces */
  1245. /* end of Additional Prototypes */
  1246. #ifdef __cplusplus
  1247. }
  1248. #endif
  1249. #endif