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