1 /*** Autogenerated by WIDL 3.19 from direct-x/include/dxgi1_3.idl - Do not edit ***/
2 
3 #ifndef __REQUIRED_RPCNDR_H_VERSION__
4 #define __REQUIRED_RPCNDR_H_VERSION__ 475
5 #endif
6 
7 #include <rpc.h>
8 #include <rpcndr.h>
9 
10 #ifndef COM_NO_WINDOWS_H
11 #include <windows.h>
12 #include <ole2.h>
13 #endif
14 
15 #ifndef __dxgi1_3_h__
16 #define __dxgi1_3_h__
17 
18 /* Forward declarations */
19 
20 #ifndef __IDXGIDevice3_FWD_DEFINED__
21 #define __IDXGIDevice3_FWD_DEFINED__
22 typedef interface IDXGIDevice3 IDXGIDevice3;
23 #ifdef __cplusplus
24 interface IDXGIDevice3;
25 #endif /* __cplusplus */
26 #endif
27 
28 #ifndef __IDXGISwapChain2_FWD_DEFINED__
29 #define __IDXGISwapChain2_FWD_DEFINED__
30 typedef interface IDXGISwapChain2 IDXGISwapChain2;
31 #ifdef __cplusplus
32 interface IDXGISwapChain2;
33 #endif /* __cplusplus */
34 #endif
35 
36 #ifndef __IDXGIOutput2_FWD_DEFINED__
37 #define __IDXGIOutput2_FWD_DEFINED__
38 typedef interface IDXGIOutput2 IDXGIOutput2;
39 #ifdef __cplusplus
40 interface IDXGIOutput2;
41 #endif /* __cplusplus */
42 #endif
43 
44 #ifndef __IDXGIFactory3_FWD_DEFINED__
45 #define __IDXGIFactory3_FWD_DEFINED__
46 typedef interface IDXGIFactory3 IDXGIFactory3;
47 #ifdef __cplusplus
48 interface IDXGIFactory3;
49 #endif /* __cplusplus */
50 #endif
51 
52 #ifndef __IDXGIDecodeSwapChain_FWD_DEFINED__
53 #define __IDXGIDecodeSwapChain_FWD_DEFINED__
54 typedef interface IDXGIDecodeSwapChain IDXGIDecodeSwapChain;
55 #ifdef __cplusplus
56 interface IDXGIDecodeSwapChain;
57 #endif /* __cplusplus */
58 #endif
59 
60 #ifndef __IDXGIFactoryMedia_FWD_DEFINED__
61 #define __IDXGIFactoryMedia_FWD_DEFINED__
62 typedef interface IDXGIFactoryMedia IDXGIFactoryMedia;
63 #ifdef __cplusplus
64 interface IDXGIFactoryMedia;
65 #endif /* __cplusplus */
66 #endif
67 
68 #ifndef __IDXGISwapChainMedia_FWD_DEFINED__
69 #define __IDXGISwapChainMedia_FWD_DEFINED__
70 typedef interface IDXGISwapChainMedia IDXGISwapChainMedia;
71 #ifdef __cplusplus
72 interface IDXGISwapChainMedia;
73 #endif /* __cplusplus */
74 #endif
75 
76 #ifndef __IDXGIOutput3_FWD_DEFINED__
77 #define __IDXGIOutput3_FWD_DEFINED__
78 typedef interface IDXGIOutput3 IDXGIOutput3;
79 #ifdef __cplusplus
80 interface IDXGIOutput3;
81 #endif /* __cplusplus */
82 #endif
83 
84 /* Headers for imported files */
85 
86 #include <dxgi1_2.h>
87 
88 #ifdef __cplusplus
89 extern "C" {
90 #endif
91 
92 typedef struct DXGI_MATRIX_3X2_F {
93     float _11;
94     float _12;
95     float _21;
96     float _22;
97     float _31;
98     float _32;
99 } DXGI_MATRIX_3X2_F;
100 typedef struct DXGI_DECODE_SWAP_CHAIN_DESC {
101     UINT Flags;
102 } DXGI_DECODE_SWAP_CHAIN_DESC;
103 typedef enum DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS {
104     DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE = 0x1,
105     DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709 = 0x2,
106     DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC = 0x4
107 } DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS;
108 typedef enum DXGI_FRAME_PRESENTATION_MODE {
109     DXGI_FRAME_PRESENTATION_MODE_COMPOSED = 0,
110     DXGI_FRAME_PRESENTATION_MODE_OVERLAY = 1,
111     DXGI_FRAME_PRESENTATION_MODE_NONE = 2,
112     DXGI_FRAME_PRESENTATION_MODE_COMPOSITION_FAILURE = 3
113 } DXGI_FRAME_PRESENTATION_MODE;
114 typedef struct DXGI_FRAME_STATISTICS_MEDIA {
115     UINT PresentCount;
116     UINT PresentRefreshCount;
117     UINT SyncRefreshCount;
118     LARGE_INTEGER SyncQPCTime;
119     LARGE_INTEGER SyncGPUTime;
120     DXGI_FRAME_PRESENTATION_MODE CompositionMode;
121     UINT ApprovedPresentDuration;
122 } DXGI_FRAME_STATISTICS_MEDIA;
123 typedef enum DXGI_OVERLAY_SUPPORT_FLAG {
124     DXGI_OVERLAY_SUPPORT_FLAG_DIRECT = 0x1,
125     DXGI_OVERLAY_SUPPORT_FLAG_SCALING = 0x2
126 } DXGI_OVERLAY_SUPPORT_FLAG;
127 /*****************************************************************************
128  * IDXGIDevice3 interface
129  */
130 #ifndef __IDXGIDevice3_INTERFACE_DEFINED__
131 #define __IDXGIDevice3_INTERFACE_DEFINED__
132 
133 DEFINE_GUID(IID_IDXGIDevice3, 0x6007896c, 0x3244, 0x4afd, 0xbf,0x18, 0xa6,0xd3,0xbe,0xda,0x50,0x23);
134 #if defined(__cplusplus) && !defined(CINTERFACE)
135 MIDL_INTERFACE("6007896c-3244-4afd-bf18-a6d3beda5023")
136 IDXGIDevice3 : public IDXGIDevice2
137 {
138     virtual void STDMETHODCALLTYPE Trim(
139         ) = 0;
140 
141 };
142 #ifdef __CRT_UUID_DECL
143 __CRT_UUID_DECL(IDXGIDevice3, 0x6007896c, 0x3244, 0x4afd, 0xbf,0x18, 0xa6,0xd3,0xbe,0xda,0x50,0x23)
144 #endif
145 #else
146 typedef struct IDXGIDevice3Vtbl {
147     BEGIN_INTERFACE
148 
149     /*** IUnknown methods ***/
150     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
151         IDXGIDevice3 *This,
152         REFIID riid,
153         void **ppvObject);
154 
155     ULONG (STDMETHODCALLTYPE *AddRef)(
156         IDXGIDevice3 *This);
157 
158     ULONG (STDMETHODCALLTYPE *Release)(
159         IDXGIDevice3 *This);
160 
161     /*** IDXGIObject methods ***/
162     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
163         IDXGIDevice3 *This,
164         REFGUID guid,
165         UINT data_size,
166         const void *data);
167 
168     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
169         IDXGIDevice3 *This,
170         REFGUID guid,
171         const IUnknown *object);
172 
173     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
174         IDXGIDevice3 *This,
175         REFGUID guid,
176         UINT *data_size,
177         void *data);
178 
179     HRESULT (STDMETHODCALLTYPE *GetParent)(
180         IDXGIDevice3 *This,
181         REFIID riid,
182         void **parent);
183 
184     /*** IDXGIDevice methods ***/
185     HRESULT (STDMETHODCALLTYPE *GetAdapter)(
186         IDXGIDevice3 *This,
187         IDXGIAdapter **adapter);
188 
189     HRESULT (STDMETHODCALLTYPE *CreateSurface)(
190         IDXGIDevice3 *This,
191         const DXGI_SURFACE_DESC *desc,
192         UINT surface_count,
193         DXGI_USAGE usage,
194         const DXGI_SHARED_RESOURCE *shared_resource,
195         IDXGISurface **surface);
196 
197     HRESULT (STDMETHODCALLTYPE *QueryResourceResidency)(
198         IDXGIDevice3 *This,
199         IUnknown *const *resources,
200         DXGI_RESIDENCY *residency,
201         UINT resource_count);
202 
203     HRESULT (STDMETHODCALLTYPE *SetGPUThreadPriority)(
204         IDXGIDevice3 *This,
205         INT priority);
206 
207     HRESULT (STDMETHODCALLTYPE *GetGPUThreadPriority)(
208         IDXGIDevice3 *This,
209         INT *priority);
210 
211     /*** IDXGIDevice1 methods ***/
212     HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)(
213         IDXGIDevice3 *This,
214         UINT MaxLatency);
215 
216     HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)(
217         IDXGIDevice3 *This,
218         UINT *pMaxLatency);
219 
220     /*** IDXGIDevice2 methods ***/
221     HRESULT (STDMETHODCALLTYPE *OfferResources)(
222         IDXGIDevice3 *This,
223         UINT NumResources,
224         IDXGIResource *const *ppResources,
225         DXGI_OFFER_RESOURCE_PRIORITY Priority);
226 
227     HRESULT (STDMETHODCALLTYPE *ReclaimResources)(
228         IDXGIDevice3 *This,
229         UINT NumResources,
230         IDXGIResource *const *ppResources,
231         WINBOOL *pDiscarded);
232 
233     HRESULT (STDMETHODCALLTYPE *EnqueueSetEvent)(
234         IDXGIDevice3 *This,
235         HANDLE hEvent);
236 
237     /*** IDXGIDevice3 methods ***/
238     void (STDMETHODCALLTYPE *Trim)(
239         IDXGIDevice3 *This);
240 
241     END_INTERFACE
242 } IDXGIDevice3Vtbl;
243 
244 interface IDXGIDevice3 {
245     CONST_VTBL IDXGIDevice3Vtbl* lpVtbl;
246 };
247 
248 #ifdef COBJMACROS
249 #ifndef WIDL_C_INLINE_WRAPPERS
250 /*** IUnknown methods ***/
251 #define IDXGIDevice3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
252 #define IDXGIDevice3_AddRef(This) (This)->lpVtbl->AddRef(This)
253 #define IDXGIDevice3_Release(This) (This)->lpVtbl->Release(This)
254 /*** IDXGIObject methods ***/
255 #define IDXGIDevice3_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
256 #define IDXGIDevice3_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
257 #define IDXGIDevice3_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
258 #define IDXGIDevice3_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
259 /*** IDXGIDevice methods ***/
260 #define IDXGIDevice3_GetAdapter(This,adapter) (This)->lpVtbl->GetAdapter(This,adapter)
261 #define IDXGIDevice3_CreateSurface(This,desc,surface_count,usage,shared_resource,surface) (This)->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface)
262 #define IDXGIDevice3_QueryResourceResidency(This,resources,residency,resource_count) (This)->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count)
263 #define IDXGIDevice3_SetGPUThreadPriority(This,priority) (This)->lpVtbl->SetGPUThreadPriority(This,priority)
264 #define IDXGIDevice3_GetGPUThreadPriority(This,priority) (This)->lpVtbl->GetGPUThreadPriority(This,priority)
265 /*** IDXGIDevice1 methods ***/
266 #define IDXGIDevice3_SetMaximumFrameLatency(This,MaxLatency) (This)->lpVtbl->SetMaximumFrameLatency(This,MaxLatency)
267 #define IDXGIDevice3_GetMaximumFrameLatency(This,pMaxLatency) (This)->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency)
268 /*** IDXGIDevice2 methods ***/
269 #define IDXGIDevice3_OfferResources(This,NumResources,ppResources,Priority) (This)->lpVtbl->OfferResources(This,NumResources,ppResources,Priority)
270 #define IDXGIDevice3_ReclaimResources(This,NumResources,ppResources,pDiscarded) (This)->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded)
271 #define IDXGIDevice3_EnqueueSetEvent(This,hEvent) (This)->lpVtbl->EnqueueSetEvent(This,hEvent)
272 /*** IDXGIDevice3 methods ***/
273 #define IDXGIDevice3_Trim(This) (This)->lpVtbl->Trim(This)
274 #else
275 /*** IUnknown methods ***/
276 static FORCEINLINE HRESULT IDXGIDevice3_QueryInterface(IDXGIDevice3* This,REFIID riid,void **ppvObject) {
277     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
278 }
279 static FORCEINLINE ULONG IDXGIDevice3_AddRef(IDXGIDevice3* This) {
280     return This->lpVtbl->AddRef(This);
281 }
282 static FORCEINLINE ULONG IDXGIDevice3_Release(IDXGIDevice3* This) {
283     return This->lpVtbl->Release(This);
284 }
285 /*** IDXGIObject methods ***/
286 static FORCEINLINE HRESULT IDXGIDevice3_SetPrivateData(IDXGIDevice3* This,REFGUID guid,UINT data_size,const void *data) {
287     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
288 }
289 static FORCEINLINE HRESULT IDXGIDevice3_SetPrivateDataInterface(IDXGIDevice3* This,REFGUID guid,const IUnknown *object) {
290     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
291 }
292 static FORCEINLINE HRESULT IDXGIDevice3_GetPrivateData(IDXGIDevice3* This,REFGUID guid,UINT *data_size,void *data) {
293     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
294 }
295 static FORCEINLINE HRESULT IDXGIDevice3_GetParent(IDXGIDevice3* This,REFIID riid,void **parent) {
296     return This->lpVtbl->GetParent(This,riid,parent);
297 }
298 /*** IDXGIDevice methods ***/
299 static FORCEINLINE HRESULT IDXGIDevice3_GetAdapter(IDXGIDevice3* This,IDXGIAdapter **adapter) {
300     return This->lpVtbl->GetAdapter(This,adapter);
301 }
302 static FORCEINLINE HRESULT IDXGIDevice3_CreateSurface(IDXGIDevice3* This,const DXGI_SURFACE_DESC *desc,UINT surface_count,DXGI_USAGE usage,const DXGI_SHARED_RESOURCE *shared_resource,IDXGISurface **surface) {
303     return This->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface);
304 }
305 static FORCEINLINE HRESULT IDXGIDevice3_QueryResourceResidency(IDXGIDevice3* This,IUnknown *const *resources,DXGI_RESIDENCY *residency,UINT resource_count) {
306     return This->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count);
307 }
308 static FORCEINLINE HRESULT IDXGIDevice3_SetGPUThreadPriority(IDXGIDevice3* This,INT priority) {
309     return This->lpVtbl->SetGPUThreadPriority(This,priority);
310 }
311 static FORCEINLINE HRESULT IDXGIDevice3_GetGPUThreadPriority(IDXGIDevice3* This,INT *priority) {
312     return This->lpVtbl->GetGPUThreadPriority(This,priority);
313 }
314 /*** IDXGIDevice1 methods ***/
315 static FORCEINLINE HRESULT IDXGIDevice3_SetMaximumFrameLatency(IDXGIDevice3* This,UINT MaxLatency) {
316     return This->lpVtbl->SetMaximumFrameLatency(This,MaxLatency);
317 }
318 static FORCEINLINE HRESULT IDXGIDevice3_GetMaximumFrameLatency(IDXGIDevice3* This,UINT *pMaxLatency) {
319     return This->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency);
320 }
321 /*** IDXGIDevice2 methods ***/
322 static FORCEINLINE HRESULT IDXGIDevice3_OfferResources(IDXGIDevice3* This,UINT NumResources,IDXGIResource *const *ppResources,DXGI_OFFER_RESOURCE_PRIORITY Priority) {
323     return This->lpVtbl->OfferResources(This,NumResources,ppResources,Priority);
324 }
325 static FORCEINLINE HRESULT IDXGIDevice3_ReclaimResources(IDXGIDevice3* This,UINT NumResources,IDXGIResource *const *ppResources,WINBOOL *pDiscarded) {
326     return This->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded);
327 }
328 static FORCEINLINE HRESULT IDXGIDevice3_EnqueueSetEvent(IDXGIDevice3* This,HANDLE hEvent) {
329     return This->lpVtbl->EnqueueSetEvent(This,hEvent);
330 }
331 /*** IDXGIDevice3 methods ***/
332 static FORCEINLINE void IDXGIDevice3_Trim(IDXGIDevice3* This) {
333     This->lpVtbl->Trim(This);
334 }
335 #endif
336 #endif
337 
338 #endif
339 
340 
341 #endif  /* __IDXGIDevice3_INTERFACE_DEFINED__ */
342 
343 /*****************************************************************************
344  * IDXGISwapChain2 interface
345  */
346 #ifndef __IDXGISwapChain2_INTERFACE_DEFINED__
347 #define __IDXGISwapChain2_INTERFACE_DEFINED__
348 
349 DEFINE_GUID(IID_IDXGISwapChain2, 0xa8be2ac4, 0x199f, 0x4946, 0xb3,0x31, 0x79,0x59,0x9f,0xb9,0x8d,0xe7);
350 #if defined(__cplusplus) && !defined(CINTERFACE)
351 MIDL_INTERFACE("a8be2ac4-199f-4946-b331-79599fb98de7")
352 IDXGISwapChain2 : public IDXGISwapChain1
353 {
354     virtual HRESULT STDMETHODCALLTYPE SetSourceSize(
355         UINT width,
356         UINT height) = 0;
357 
358     virtual HRESULT STDMETHODCALLTYPE GetSourceSize(
359         UINT *width,
360         UINT *height) = 0;
361 
362     virtual HRESULT STDMETHODCALLTYPE SetMaximumFrameLatency(
363         UINT max_latency) = 0;
364 
365     virtual HRESULT STDMETHODCALLTYPE GetMaximumFrameLatency(
366         UINT *max_latency) = 0;
367 
368     virtual HANDLE STDMETHODCALLTYPE GetFrameLatencyWaitableObject(
369         ) = 0;
370 
371     virtual HRESULT STDMETHODCALLTYPE SetMatrixTransform(
372         const DXGI_MATRIX_3X2_F *matrix) = 0;
373 
374     virtual HRESULT STDMETHODCALLTYPE GetMatrixTransform(
375         DXGI_MATRIX_3X2_F *matrix) = 0;
376 
377 };
378 #ifdef __CRT_UUID_DECL
379 __CRT_UUID_DECL(IDXGISwapChain2, 0xa8be2ac4, 0x199f, 0x4946, 0xb3,0x31, 0x79,0x59,0x9f,0xb9,0x8d,0xe7)
380 #endif
381 #else
382 typedef struct IDXGISwapChain2Vtbl {
383     BEGIN_INTERFACE
384 
385     /*** IUnknown methods ***/
386     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
387         IDXGISwapChain2 *This,
388         REFIID riid,
389         void **ppvObject);
390 
391     ULONG (STDMETHODCALLTYPE *AddRef)(
392         IDXGISwapChain2 *This);
393 
394     ULONG (STDMETHODCALLTYPE *Release)(
395         IDXGISwapChain2 *This);
396 
397     /*** IDXGIObject methods ***/
398     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
399         IDXGISwapChain2 *This,
400         REFGUID guid,
401         UINT data_size,
402         const void *data);
403 
404     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
405         IDXGISwapChain2 *This,
406         REFGUID guid,
407         const IUnknown *object);
408 
409     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
410         IDXGISwapChain2 *This,
411         REFGUID guid,
412         UINT *data_size,
413         void *data);
414 
415     HRESULT (STDMETHODCALLTYPE *GetParent)(
416         IDXGISwapChain2 *This,
417         REFIID riid,
418         void **parent);
419 
420     /*** IDXGIDeviceSubObject methods ***/
421     HRESULT (STDMETHODCALLTYPE *GetDevice)(
422         IDXGISwapChain2 *This,
423         REFIID riid,
424         void **device);
425 
426     /*** IDXGISwapChain methods ***/
427     HRESULT (STDMETHODCALLTYPE *Present)(
428         IDXGISwapChain2 *This,
429         UINT sync_interval,
430         UINT flags);
431 
432     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
433         IDXGISwapChain2 *This,
434         UINT buffer_idx,
435         REFIID riid,
436         void **surface);
437 
438     HRESULT (STDMETHODCALLTYPE *SetFullscreenState)(
439         IDXGISwapChain2 *This,
440         WINBOOL fullscreen,
441         IDXGIOutput *target);
442 
443     HRESULT (STDMETHODCALLTYPE *GetFullscreenState)(
444         IDXGISwapChain2 *This,
445         WINBOOL *fullscreen,
446         IDXGIOutput **target);
447 
448     HRESULT (STDMETHODCALLTYPE *GetDesc)(
449         IDXGISwapChain2 *This,
450         DXGI_SWAP_CHAIN_DESC *desc);
451 
452     HRESULT (STDMETHODCALLTYPE *ResizeBuffers)(
453         IDXGISwapChain2 *This,
454         UINT buffer_count,
455         UINT width,
456         UINT height,
457         DXGI_FORMAT format,
458         UINT flags);
459 
460     HRESULT (STDMETHODCALLTYPE *ResizeTarget)(
461         IDXGISwapChain2 *This,
462         const DXGI_MODE_DESC *target_mode_desc);
463 
464     HRESULT (STDMETHODCALLTYPE *GetContainingOutput)(
465         IDXGISwapChain2 *This,
466         IDXGIOutput **output);
467 
468     HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
469         IDXGISwapChain2 *This,
470         DXGI_FRAME_STATISTICS *stats);
471 
472     HRESULT (STDMETHODCALLTYPE *GetLastPresentCount)(
473         IDXGISwapChain2 *This,
474         UINT *last_present_count);
475 
476     /*** IDXGISwapChain1 methods ***/
477     HRESULT (STDMETHODCALLTYPE *GetDesc1)(
478         IDXGISwapChain2 *This,
479         DXGI_SWAP_CHAIN_DESC1 *pDesc);
480 
481     HRESULT (STDMETHODCALLTYPE *GetFullscreenDesc)(
482         IDXGISwapChain2 *This,
483         DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc);
484 
485     HRESULT (STDMETHODCALLTYPE *GetHwnd)(
486         IDXGISwapChain2 *This,
487         HWND *pHwnd);
488 
489     HRESULT (STDMETHODCALLTYPE *GetCoreWindow)(
490         IDXGISwapChain2 *This,
491         REFIID refiid,
492         void **ppUnk);
493 
494     HRESULT (STDMETHODCALLTYPE *Present1)(
495         IDXGISwapChain2 *This,
496         UINT SyncInterval,
497         UINT PresentFlags,
498         const DXGI_PRESENT_PARAMETERS *pPresentParameters);
499 
500     WINBOOL (STDMETHODCALLTYPE *IsTemporaryMonoSupported)(
501         IDXGISwapChain2 *This);
502 
503     HRESULT (STDMETHODCALLTYPE *GetRestrictToOutput)(
504         IDXGISwapChain2 *This,
505         IDXGIOutput **ppRestrictToOutput);
506 
507     HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)(
508         IDXGISwapChain2 *This,
509         const DXGI_RGBA *pColor);
510 
511     HRESULT (STDMETHODCALLTYPE *GetBackgroundColor)(
512         IDXGISwapChain2 *This,
513         DXGI_RGBA *pColor);
514 
515     HRESULT (STDMETHODCALLTYPE *SetRotation)(
516         IDXGISwapChain2 *This,
517         DXGI_MODE_ROTATION Rotation);
518 
519     HRESULT (STDMETHODCALLTYPE *GetRotation)(
520         IDXGISwapChain2 *This,
521         DXGI_MODE_ROTATION *pRotation);
522 
523     /*** IDXGISwapChain2 methods ***/
524     HRESULT (STDMETHODCALLTYPE *SetSourceSize)(
525         IDXGISwapChain2 *This,
526         UINT width,
527         UINT height);
528 
529     HRESULT (STDMETHODCALLTYPE *GetSourceSize)(
530         IDXGISwapChain2 *This,
531         UINT *width,
532         UINT *height);
533 
534     HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)(
535         IDXGISwapChain2 *This,
536         UINT max_latency);
537 
538     HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)(
539         IDXGISwapChain2 *This,
540         UINT *max_latency);
541 
542     HANDLE (STDMETHODCALLTYPE *GetFrameLatencyWaitableObject)(
543         IDXGISwapChain2 *This);
544 
545     HRESULT (STDMETHODCALLTYPE *SetMatrixTransform)(
546         IDXGISwapChain2 *This,
547         const DXGI_MATRIX_3X2_F *matrix);
548 
549     HRESULT (STDMETHODCALLTYPE *GetMatrixTransform)(
550         IDXGISwapChain2 *This,
551         DXGI_MATRIX_3X2_F *matrix);
552 
553     END_INTERFACE
554 } IDXGISwapChain2Vtbl;
555 
556 interface IDXGISwapChain2 {
557     CONST_VTBL IDXGISwapChain2Vtbl* lpVtbl;
558 };
559 
560 #ifdef COBJMACROS
561 #ifndef WIDL_C_INLINE_WRAPPERS
562 /*** IUnknown methods ***/
563 #define IDXGISwapChain2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
564 #define IDXGISwapChain2_AddRef(This) (This)->lpVtbl->AddRef(This)
565 #define IDXGISwapChain2_Release(This) (This)->lpVtbl->Release(This)
566 /*** IDXGIObject methods ***/
567 #define IDXGISwapChain2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
568 #define IDXGISwapChain2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
569 #define IDXGISwapChain2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
570 #define IDXGISwapChain2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
571 /*** IDXGIDeviceSubObject methods ***/
572 #define IDXGISwapChain2_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
573 /*** IDXGISwapChain methods ***/
574 #define IDXGISwapChain2_Present(This,sync_interval,flags) (This)->lpVtbl->Present(This,sync_interval,flags)
575 #define IDXGISwapChain2_GetBuffer(This,buffer_idx,riid,surface) (This)->lpVtbl->GetBuffer(This,buffer_idx,riid,surface)
576 #define IDXGISwapChain2_SetFullscreenState(This,fullscreen,target) (This)->lpVtbl->SetFullscreenState(This,fullscreen,target)
577 #define IDXGISwapChain2_GetFullscreenState(This,fullscreen,target) (This)->lpVtbl->GetFullscreenState(This,fullscreen,target)
578 #define IDXGISwapChain2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
579 #define IDXGISwapChain2_ResizeBuffers(This,buffer_count,width,height,format,flags) (This)->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags)
580 #define IDXGISwapChain2_ResizeTarget(This,target_mode_desc) (This)->lpVtbl->ResizeTarget(This,target_mode_desc)
581 #define IDXGISwapChain2_GetContainingOutput(This,output) (This)->lpVtbl->GetContainingOutput(This,output)
582 #define IDXGISwapChain2_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
583 #define IDXGISwapChain2_GetLastPresentCount(This,last_present_count) (This)->lpVtbl->GetLastPresentCount(This,last_present_count)
584 /*** IDXGISwapChain1 methods ***/
585 #define IDXGISwapChain2_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
586 #define IDXGISwapChain2_GetFullscreenDesc(This,pDesc) (This)->lpVtbl->GetFullscreenDesc(This,pDesc)
587 #define IDXGISwapChain2_GetHwnd(This,pHwnd) (This)->lpVtbl->GetHwnd(This,pHwnd)
588 #define IDXGISwapChain2_GetCoreWindow(This,refiid,ppUnk) (This)->lpVtbl->GetCoreWindow(This,refiid,ppUnk)
589 #define IDXGISwapChain2_Present1(This,SyncInterval,PresentFlags,pPresentParameters) (This)->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters)
590 #define IDXGISwapChain2_IsTemporaryMonoSupported(This) (This)->lpVtbl->IsTemporaryMonoSupported(This)
591 #define IDXGISwapChain2_GetRestrictToOutput(This,ppRestrictToOutput) (This)->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput)
592 #define IDXGISwapChain2_SetBackgroundColor(This,pColor) (This)->lpVtbl->SetBackgroundColor(This,pColor)
593 #define IDXGISwapChain2_GetBackgroundColor(This,pColor) (This)->lpVtbl->GetBackgroundColor(This,pColor)
594 #define IDXGISwapChain2_SetRotation(This,Rotation) (This)->lpVtbl->SetRotation(This,Rotation)
595 #define IDXGISwapChain2_GetRotation(This,pRotation) (This)->lpVtbl->GetRotation(This,pRotation)
596 /*** IDXGISwapChain2 methods ***/
597 #define IDXGISwapChain2_SetSourceSize(This,width,height) (This)->lpVtbl->SetSourceSize(This,width,height)
598 #define IDXGISwapChain2_GetSourceSize(This,width,height) (This)->lpVtbl->GetSourceSize(This,width,height)
599 #define IDXGISwapChain2_SetMaximumFrameLatency(This,max_latency) (This)->lpVtbl->SetMaximumFrameLatency(This,max_latency)
600 #define IDXGISwapChain2_GetMaximumFrameLatency(This,max_latency) (This)->lpVtbl->GetMaximumFrameLatency(This,max_latency)
601 #define IDXGISwapChain2_GetFrameLatencyWaitableObject(This) (This)->lpVtbl->GetFrameLatencyWaitableObject(This)
602 #define IDXGISwapChain2_SetMatrixTransform(This,matrix) (This)->lpVtbl->SetMatrixTransform(This,matrix)
603 #define IDXGISwapChain2_GetMatrixTransform(This,matrix) (This)->lpVtbl->GetMatrixTransform(This,matrix)
604 #else
605 /*** IUnknown methods ***/
606 static FORCEINLINE HRESULT IDXGISwapChain2_QueryInterface(IDXGISwapChain2* This,REFIID riid,void **ppvObject) {
607     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
608 }
609 static FORCEINLINE ULONG IDXGISwapChain2_AddRef(IDXGISwapChain2* This) {
610     return This->lpVtbl->AddRef(This);
611 }
612 static FORCEINLINE ULONG IDXGISwapChain2_Release(IDXGISwapChain2* This) {
613     return This->lpVtbl->Release(This);
614 }
615 /*** IDXGIObject methods ***/
616 static FORCEINLINE HRESULT IDXGISwapChain2_SetPrivateData(IDXGISwapChain2* This,REFGUID guid,UINT data_size,const void *data) {
617     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
618 }
619 static FORCEINLINE HRESULT IDXGISwapChain2_SetPrivateDataInterface(IDXGISwapChain2* This,REFGUID guid,const IUnknown *object) {
620     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
621 }
622 static FORCEINLINE HRESULT IDXGISwapChain2_GetPrivateData(IDXGISwapChain2* This,REFGUID guid,UINT *data_size,void *data) {
623     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
624 }
625 static FORCEINLINE HRESULT IDXGISwapChain2_GetParent(IDXGISwapChain2* This,REFIID riid,void **parent) {
626     return This->lpVtbl->GetParent(This,riid,parent);
627 }
628 /*** IDXGIDeviceSubObject methods ***/
629 static FORCEINLINE HRESULT IDXGISwapChain2_GetDevice(IDXGISwapChain2* This,REFIID riid,void **device) {
630     return This->lpVtbl->GetDevice(This,riid,device);
631 }
632 /*** IDXGISwapChain methods ***/
633 static FORCEINLINE HRESULT IDXGISwapChain2_Present(IDXGISwapChain2* This,UINT sync_interval,UINT flags) {
634     return This->lpVtbl->Present(This,sync_interval,flags);
635 }
636 static FORCEINLINE HRESULT IDXGISwapChain2_GetBuffer(IDXGISwapChain2* This,UINT buffer_idx,REFIID riid,void **surface) {
637     return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface);
638 }
639 static FORCEINLINE HRESULT IDXGISwapChain2_SetFullscreenState(IDXGISwapChain2* This,WINBOOL fullscreen,IDXGIOutput *target) {
640     return This->lpVtbl->SetFullscreenState(This,fullscreen,target);
641 }
642 static FORCEINLINE HRESULT IDXGISwapChain2_GetFullscreenState(IDXGISwapChain2* This,WINBOOL *fullscreen,IDXGIOutput **target) {
643     return This->lpVtbl->GetFullscreenState(This,fullscreen,target);
644 }
645 static FORCEINLINE HRESULT IDXGISwapChain2_GetDesc(IDXGISwapChain2* This,DXGI_SWAP_CHAIN_DESC *desc) {
646     return This->lpVtbl->GetDesc(This,desc);
647 }
648 static FORCEINLINE HRESULT IDXGISwapChain2_ResizeBuffers(IDXGISwapChain2* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags) {
649     return This->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags);
650 }
651 static FORCEINLINE HRESULT IDXGISwapChain2_ResizeTarget(IDXGISwapChain2* This,const DXGI_MODE_DESC *target_mode_desc) {
652     return This->lpVtbl->ResizeTarget(This,target_mode_desc);
653 }
654 static FORCEINLINE HRESULT IDXGISwapChain2_GetContainingOutput(IDXGISwapChain2* This,IDXGIOutput **output) {
655     return This->lpVtbl->GetContainingOutput(This,output);
656 }
657 static FORCEINLINE HRESULT IDXGISwapChain2_GetFrameStatistics(IDXGISwapChain2* This,DXGI_FRAME_STATISTICS *stats) {
658     return This->lpVtbl->GetFrameStatistics(This,stats);
659 }
660 static FORCEINLINE HRESULT IDXGISwapChain2_GetLastPresentCount(IDXGISwapChain2* This,UINT *last_present_count) {
661     return This->lpVtbl->GetLastPresentCount(This,last_present_count);
662 }
663 /*** IDXGISwapChain1 methods ***/
664 static FORCEINLINE HRESULT IDXGISwapChain2_GetDesc1(IDXGISwapChain2* This,DXGI_SWAP_CHAIN_DESC1 *pDesc) {
665     return This->lpVtbl->GetDesc1(This,pDesc);
666 }
667 static FORCEINLINE HRESULT IDXGISwapChain2_GetFullscreenDesc(IDXGISwapChain2* This,DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) {
668     return This->lpVtbl->GetFullscreenDesc(This,pDesc);
669 }
670 static FORCEINLINE HRESULT IDXGISwapChain2_GetHwnd(IDXGISwapChain2* This,HWND *pHwnd) {
671     return This->lpVtbl->GetHwnd(This,pHwnd);
672 }
673 static FORCEINLINE HRESULT IDXGISwapChain2_GetCoreWindow(IDXGISwapChain2* This,REFIID refiid,void **ppUnk) {
674     return This->lpVtbl->GetCoreWindow(This,refiid,ppUnk);
675 }
676 static FORCEINLINE HRESULT IDXGISwapChain2_Present1(IDXGISwapChain2* This,UINT SyncInterval,UINT PresentFlags,const DXGI_PRESENT_PARAMETERS *pPresentParameters) {
677     return This->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters);
678 }
679 static FORCEINLINE WINBOOL IDXGISwapChain2_IsTemporaryMonoSupported(IDXGISwapChain2* This) {
680     return This->lpVtbl->IsTemporaryMonoSupported(This);
681 }
682 static FORCEINLINE HRESULT IDXGISwapChain2_GetRestrictToOutput(IDXGISwapChain2* This,IDXGIOutput **ppRestrictToOutput) {
683     return This->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput);
684 }
685 static FORCEINLINE HRESULT IDXGISwapChain2_SetBackgroundColor(IDXGISwapChain2* This,const DXGI_RGBA *pColor) {
686     return This->lpVtbl->SetBackgroundColor(This,pColor);
687 }
688 static FORCEINLINE HRESULT IDXGISwapChain2_GetBackgroundColor(IDXGISwapChain2* This,DXGI_RGBA *pColor) {
689     return This->lpVtbl->GetBackgroundColor(This,pColor);
690 }
691 static FORCEINLINE HRESULT IDXGISwapChain2_SetRotation(IDXGISwapChain2* This,DXGI_MODE_ROTATION Rotation) {
692     return This->lpVtbl->SetRotation(This,Rotation);
693 }
694 static FORCEINLINE HRESULT IDXGISwapChain2_GetRotation(IDXGISwapChain2* This,DXGI_MODE_ROTATION *pRotation) {
695     return This->lpVtbl->GetRotation(This,pRotation);
696 }
697 /*** IDXGISwapChain2 methods ***/
698 static FORCEINLINE HRESULT IDXGISwapChain2_SetSourceSize(IDXGISwapChain2* This,UINT width,UINT height) {
699     return This->lpVtbl->SetSourceSize(This,width,height);
700 }
701 static FORCEINLINE HRESULT IDXGISwapChain2_GetSourceSize(IDXGISwapChain2* This,UINT *width,UINT *height) {
702     return This->lpVtbl->GetSourceSize(This,width,height);
703 }
704 static FORCEINLINE HRESULT IDXGISwapChain2_SetMaximumFrameLatency(IDXGISwapChain2* This,UINT max_latency) {
705     return This->lpVtbl->SetMaximumFrameLatency(This,max_latency);
706 }
707 static FORCEINLINE HRESULT IDXGISwapChain2_GetMaximumFrameLatency(IDXGISwapChain2* This,UINT *max_latency) {
708     return This->lpVtbl->GetMaximumFrameLatency(This,max_latency);
709 }
710 static FORCEINLINE HANDLE IDXGISwapChain2_GetFrameLatencyWaitableObject(IDXGISwapChain2* This) {
711     return This->lpVtbl->GetFrameLatencyWaitableObject(This);
712 }
713 static FORCEINLINE HRESULT IDXGISwapChain2_SetMatrixTransform(IDXGISwapChain2* This,const DXGI_MATRIX_3X2_F *matrix) {
714     return This->lpVtbl->SetMatrixTransform(This,matrix);
715 }
716 static FORCEINLINE HRESULT IDXGISwapChain2_GetMatrixTransform(IDXGISwapChain2* This,DXGI_MATRIX_3X2_F *matrix) {
717     return This->lpVtbl->GetMatrixTransform(This,matrix);
718 }
719 #endif
720 #endif
721 
722 #endif
723 
724 
725 #endif  /* __IDXGISwapChain2_INTERFACE_DEFINED__ */
726 
727 /*****************************************************************************
728  * IDXGIOutput2 interface
729  */
730 #ifndef __IDXGIOutput2_INTERFACE_DEFINED__
731 #define __IDXGIOutput2_INTERFACE_DEFINED__
732 
733 DEFINE_GUID(IID_IDXGIOutput2, 0x595e39d1, 0x2724, 0x4663, 0x99,0xb1, 0xda,0x96,0x9d,0xe2,0x83,0x64);
734 #if defined(__cplusplus) && !defined(CINTERFACE)
735 MIDL_INTERFACE("595e39d1-2724-4663-99b1-da969de28364")
736 IDXGIOutput2 : public IDXGIOutput1
737 {
738     virtual WINBOOL STDMETHODCALLTYPE SupportsOverlays(
739         ) = 0;
740 
741 };
742 #ifdef __CRT_UUID_DECL
743 __CRT_UUID_DECL(IDXGIOutput2, 0x595e39d1, 0x2724, 0x4663, 0x99,0xb1, 0xda,0x96,0x9d,0xe2,0x83,0x64)
744 #endif
745 #else
746 typedef struct IDXGIOutput2Vtbl {
747     BEGIN_INTERFACE
748 
749     /*** IUnknown methods ***/
750     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
751         IDXGIOutput2 *This,
752         REFIID riid,
753         void **ppvObject);
754 
755     ULONG (STDMETHODCALLTYPE *AddRef)(
756         IDXGIOutput2 *This);
757 
758     ULONG (STDMETHODCALLTYPE *Release)(
759         IDXGIOutput2 *This);
760 
761     /*** IDXGIObject methods ***/
762     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
763         IDXGIOutput2 *This,
764         REFGUID guid,
765         UINT data_size,
766         const void *data);
767 
768     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
769         IDXGIOutput2 *This,
770         REFGUID guid,
771         const IUnknown *object);
772 
773     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
774         IDXGIOutput2 *This,
775         REFGUID guid,
776         UINT *data_size,
777         void *data);
778 
779     HRESULT (STDMETHODCALLTYPE *GetParent)(
780         IDXGIOutput2 *This,
781         REFIID riid,
782         void **parent);
783 
784     /*** IDXGIOutput methods ***/
785     HRESULT (STDMETHODCALLTYPE *GetDesc)(
786         IDXGIOutput2 *This,
787         DXGI_OUTPUT_DESC *desc);
788 
789     HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)(
790         IDXGIOutput2 *This,
791         DXGI_FORMAT format,
792         UINT flags,
793         UINT *mode_count,
794         DXGI_MODE_DESC *desc);
795 
796     HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)(
797         IDXGIOutput2 *This,
798         const DXGI_MODE_DESC *mode,
799         DXGI_MODE_DESC *closest_match,
800         IUnknown *device);
801 
802     HRESULT (STDMETHODCALLTYPE *WaitForVBlank)(
803         IDXGIOutput2 *This);
804 
805     HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
806         IDXGIOutput2 *This,
807         IUnknown *device,
808         WINBOOL exclusive);
809 
810     void (STDMETHODCALLTYPE *ReleaseOwnership)(
811         IDXGIOutput2 *This);
812 
813     HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)(
814         IDXGIOutput2 *This,
815         DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps);
816 
817     HRESULT (STDMETHODCALLTYPE *SetGammaControl)(
818         IDXGIOutput2 *This,
819         const DXGI_GAMMA_CONTROL *gamma_control);
820 
821     HRESULT (STDMETHODCALLTYPE *GetGammaControl)(
822         IDXGIOutput2 *This,
823         DXGI_GAMMA_CONTROL *gamma_control);
824 
825     HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)(
826         IDXGIOutput2 *This,
827         IDXGISurface *surface);
828 
829     HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)(
830         IDXGIOutput2 *This,
831         IDXGISurface *surface);
832 
833     HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
834         IDXGIOutput2 *This,
835         DXGI_FRAME_STATISTICS *stats);
836 
837     /*** IDXGIOutput1 methods ***/
838     HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)(
839         IDXGIOutput2 *This,
840         DXGI_FORMAT enum_format,
841         UINT flags,
842         UINT *num_modes,
843         DXGI_MODE_DESC1 *desc);
844 
845     HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)(
846         IDXGIOutput2 *This,
847         const DXGI_MODE_DESC1 *mode_to_match,
848         DXGI_MODE_DESC1 *closest_match,
849         IUnknown *concerned_device);
850 
851     HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)(
852         IDXGIOutput2 *This,
853         IDXGIResource *destination);
854 
855     HRESULT (STDMETHODCALLTYPE *DuplicateOutput)(
856         IDXGIOutput2 *This,
857         IUnknown *device,
858         IDXGIOutputDuplication **output_duplication);
859 
860     /*** IDXGIOutput2 methods ***/
861     WINBOOL (STDMETHODCALLTYPE *SupportsOverlays)(
862         IDXGIOutput2 *This);
863 
864     END_INTERFACE
865 } IDXGIOutput2Vtbl;
866 
867 interface IDXGIOutput2 {
868     CONST_VTBL IDXGIOutput2Vtbl* lpVtbl;
869 };
870 
871 #ifdef COBJMACROS
872 #ifndef WIDL_C_INLINE_WRAPPERS
873 /*** IUnknown methods ***/
874 #define IDXGIOutput2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
875 #define IDXGIOutput2_AddRef(This) (This)->lpVtbl->AddRef(This)
876 #define IDXGIOutput2_Release(This) (This)->lpVtbl->Release(This)
877 /*** IDXGIObject methods ***/
878 #define IDXGIOutput2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
879 #define IDXGIOutput2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
880 #define IDXGIOutput2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
881 #define IDXGIOutput2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
882 /*** IDXGIOutput methods ***/
883 #define IDXGIOutput2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
884 #define IDXGIOutput2_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc)
885 #define IDXGIOutput2_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device)
886 #define IDXGIOutput2_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This)
887 #define IDXGIOutput2_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive)
888 #define IDXGIOutput2_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This)
889 #define IDXGIOutput2_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps)
890 #define IDXGIOutput2_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control)
891 #define IDXGIOutput2_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control)
892 #define IDXGIOutput2_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface)
893 #define IDXGIOutput2_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface)
894 #define IDXGIOutput2_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
895 /*** IDXGIOutput1 methods ***/
896 #define IDXGIOutput2_GetDisplayModeList1(This,enum_format,flags,num_modes,desc) (This)->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc)
897 #define IDXGIOutput2_FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device)
898 #define IDXGIOutput2_GetDisplaySurfaceData1(This,destination) (This)->lpVtbl->GetDisplaySurfaceData1(This,destination)
899 #define IDXGIOutput2_DuplicateOutput(This,device,output_duplication) (This)->lpVtbl->DuplicateOutput(This,device,output_duplication)
900 /*** IDXGIOutput2 methods ***/
901 #define IDXGIOutput2_SupportsOverlays(This) (This)->lpVtbl->SupportsOverlays(This)
902 #else
903 /*** IUnknown methods ***/
904 static FORCEINLINE HRESULT IDXGIOutput2_QueryInterface(IDXGIOutput2* This,REFIID riid,void **ppvObject) {
905     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
906 }
907 static FORCEINLINE ULONG IDXGIOutput2_AddRef(IDXGIOutput2* This) {
908     return This->lpVtbl->AddRef(This);
909 }
910 static FORCEINLINE ULONG IDXGIOutput2_Release(IDXGIOutput2* This) {
911     return This->lpVtbl->Release(This);
912 }
913 /*** IDXGIObject methods ***/
914 static FORCEINLINE HRESULT IDXGIOutput2_SetPrivateData(IDXGIOutput2* This,REFGUID guid,UINT data_size,const void *data) {
915     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
916 }
917 static FORCEINLINE HRESULT IDXGIOutput2_SetPrivateDataInterface(IDXGIOutput2* This,REFGUID guid,const IUnknown *object) {
918     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
919 }
920 static FORCEINLINE HRESULT IDXGIOutput2_GetPrivateData(IDXGIOutput2* This,REFGUID guid,UINT *data_size,void *data) {
921     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
922 }
923 static FORCEINLINE HRESULT IDXGIOutput2_GetParent(IDXGIOutput2* This,REFIID riid,void **parent) {
924     return This->lpVtbl->GetParent(This,riid,parent);
925 }
926 /*** IDXGIOutput methods ***/
927 static FORCEINLINE HRESULT IDXGIOutput2_GetDesc(IDXGIOutput2* This,DXGI_OUTPUT_DESC *desc) {
928     return This->lpVtbl->GetDesc(This,desc);
929 }
930 static FORCEINLINE HRESULT IDXGIOutput2_GetDisplayModeList(IDXGIOutput2* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) {
931     return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc);
932 }
933 static FORCEINLINE HRESULT IDXGIOutput2_FindClosestMatchingMode(IDXGIOutput2* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) {
934     return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device);
935 }
936 static FORCEINLINE HRESULT IDXGIOutput2_WaitForVBlank(IDXGIOutput2* This) {
937     return This->lpVtbl->WaitForVBlank(This);
938 }
939 static FORCEINLINE HRESULT IDXGIOutput2_TakeOwnership(IDXGIOutput2* This,IUnknown *device,WINBOOL exclusive) {
940     return This->lpVtbl->TakeOwnership(This,device,exclusive);
941 }
942 static FORCEINLINE void IDXGIOutput2_ReleaseOwnership(IDXGIOutput2* This) {
943     This->lpVtbl->ReleaseOwnership(This);
944 }
945 static FORCEINLINE HRESULT IDXGIOutput2_GetGammaControlCapabilities(IDXGIOutput2* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) {
946     return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps);
947 }
948 static FORCEINLINE HRESULT IDXGIOutput2_SetGammaControl(IDXGIOutput2* This,const DXGI_GAMMA_CONTROL *gamma_control) {
949     return This->lpVtbl->SetGammaControl(This,gamma_control);
950 }
951 static FORCEINLINE HRESULT IDXGIOutput2_GetGammaControl(IDXGIOutput2* This,DXGI_GAMMA_CONTROL *gamma_control) {
952     return This->lpVtbl->GetGammaControl(This,gamma_control);
953 }
954 static FORCEINLINE HRESULT IDXGIOutput2_SetDisplaySurface(IDXGIOutput2* This,IDXGISurface *surface) {
955     return This->lpVtbl->SetDisplaySurface(This,surface);
956 }
957 static FORCEINLINE HRESULT IDXGIOutput2_GetDisplaySurfaceData(IDXGIOutput2* This,IDXGISurface *surface) {
958     return This->lpVtbl->GetDisplaySurfaceData(This,surface);
959 }
960 static FORCEINLINE HRESULT IDXGIOutput2_GetFrameStatistics(IDXGIOutput2* This,DXGI_FRAME_STATISTICS *stats) {
961     return This->lpVtbl->GetFrameStatistics(This,stats);
962 }
963 /*** IDXGIOutput1 methods ***/
964 static FORCEINLINE HRESULT IDXGIOutput2_GetDisplayModeList1(IDXGIOutput2* This,DXGI_FORMAT enum_format,UINT flags,UINT *num_modes,DXGI_MODE_DESC1 *desc) {
965     return This->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc);
966 }
967 static FORCEINLINE HRESULT IDXGIOutput2_FindClosestMatchingMode1(IDXGIOutput2* This,const DXGI_MODE_DESC1 *mode_to_match,DXGI_MODE_DESC1 *closest_match,IUnknown *concerned_device) {
968     return This->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device);
969 }
970 static FORCEINLINE HRESULT IDXGIOutput2_GetDisplaySurfaceData1(IDXGIOutput2* This,IDXGIResource *destination) {
971     return This->lpVtbl->GetDisplaySurfaceData1(This,destination);
972 }
973 static FORCEINLINE HRESULT IDXGIOutput2_DuplicateOutput(IDXGIOutput2* This,IUnknown *device,IDXGIOutputDuplication **output_duplication) {
974     return This->lpVtbl->DuplicateOutput(This,device,output_duplication);
975 }
976 /*** IDXGIOutput2 methods ***/
977 static FORCEINLINE WINBOOL IDXGIOutput2_SupportsOverlays(IDXGIOutput2* This) {
978     return This->lpVtbl->SupportsOverlays(This);
979 }
980 #endif
981 #endif
982 
983 #endif
984 
985 
986 #endif  /* __IDXGIOutput2_INTERFACE_DEFINED__ */
987 
988 /*****************************************************************************
989  * IDXGIFactory3 interface
990  */
991 #ifndef __IDXGIFactory3_INTERFACE_DEFINED__
992 #define __IDXGIFactory3_INTERFACE_DEFINED__
993 
994 DEFINE_GUID(IID_IDXGIFactory3, 0x25483823, 0xcd46, 0x4c7d, 0x86,0xca, 0x47,0xaa,0x95,0xb8,0x37,0xbd);
995 #if defined(__cplusplus) && !defined(CINTERFACE)
996 MIDL_INTERFACE("25483823-cd46-4c7d-86ca-47aa95b837bd")
997 IDXGIFactory3 : public IDXGIFactory2
998 {
999     virtual UINT STDMETHODCALLTYPE GetCreationFlags(
1000         ) = 0;
1001 
1002 };
1003 #ifdef __CRT_UUID_DECL
1004 __CRT_UUID_DECL(IDXGIFactory3, 0x25483823, 0xcd46, 0x4c7d, 0x86,0xca, 0x47,0xaa,0x95,0xb8,0x37,0xbd)
1005 #endif
1006 #else
1007 typedef struct IDXGIFactory3Vtbl {
1008     BEGIN_INTERFACE
1009 
1010     /*** IUnknown methods ***/
1011     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1012         IDXGIFactory3 *This,
1013         REFIID riid,
1014         void **ppvObject);
1015 
1016     ULONG (STDMETHODCALLTYPE *AddRef)(
1017         IDXGIFactory3 *This);
1018 
1019     ULONG (STDMETHODCALLTYPE *Release)(
1020         IDXGIFactory3 *This);
1021 
1022     /*** IDXGIObject methods ***/
1023     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1024         IDXGIFactory3 *This,
1025         REFGUID guid,
1026         UINT data_size,
1027         const void *data);
1028 
1029     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1030         IDXGIFactory3 *This,
1031         REFGUID guid,
1032         const IUnknown *object);
1033 
1034     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1035         IDXGIFactory3 *This,
1036         REFGUID guid,
1037         UINT *data_size,
1038         void *data);
1039 
1040     HRESULT (STDMETHODCALLTYPE *GetParent)(
1041         IDXGIFactory3 *This,
1042         REFIID riid,
1043         void **parent);
1044 
1045     /*** IDXGIFactory methods ***/
1046     HRESULT (STDMETHODCALLTYPE *EnumAdapters)(
1047         IDXGIFactory3 *This,
1048         UINT adapter_idx,
1049         IDXGIAdapter **adapter);
1050 
1051     HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)(
1052         IDXGIFactory3 *This,
1053         HWND window,
1054         UINT flags);
1055 
1056     HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)(
1057         IDXGIFactory3 *This,
1058         HWND *window);
1059 
1060     HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
1061         IDXGIFactory3 *This,
1062         IUnknown *device,
1063         DXGI_SWAP_CHAIN_DESC *desc,
1064         IDXGISwapChain **swapchain);
1065 
1066     HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)(
1067         IDXGIFactory3 *This,
1068         HMODULE swrast,
1069         IDXGIAdapter **adapter);
1070 
1071     /*** IDXGIFactory1 methods ***/
1072     HRESULT (STDMETHODCALLTYPE *EnumAdapters1)(
1073         IDXGIFactory3 *This,
1074         UINT Adapter,
1075         IDXGIAdapter1 **ppAdapter);
1076 
1077     WINBOOL (STDMETHODCALLTYPE *IsCurrent)(
1078         IDXGIFactory3 *This);
1079 
1080     /*** IDXGIFactory2 methods ***/
1081     WINBOOL (STDMETHODCALLTYPE *IsWindowedStereoEnabled)(
1082         IDXGIFactory3 *This);
1083 
1084     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForHwnd)(
1085         IDXGIFactory3 *This,
1086         IUnknown *pDevice,
1087         HWND hWnd,
1088         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1089         const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
1090         IDXGIOutput *pRestrictToOutput,
1091         IDXGISwapChain1 **ppSwapChain);
1092 
1093     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCoreWindow)(
1094         IDXGIFactory3 *This,
1095         IUnknown *pDevice,
1096         IUnknown *pWindow,
1097         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1098         IDXGIOutput *pRestrictToOutput,
1099         IDXGISwapChain1 **ppSwapChain);
1100 
1101     HRESULT (STDMETHODCALLTYPE *GetSharedResourceAdapterLuid)(
1102         IDXGIFactory3 *This,
1103         HANDLE hResource,
1104         LUID *pLuid);
1105 
1106     HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
1107         IDXGIFactory3 *This,
1108         HWND WindowHandle,
1109         UINT wMsg,
1110         DWORD *pdwCookie);
1111 
1112     HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusEvent)(
1113         IDXGIFactory3 *This,
1114         HANDLE hEvent,
1115         DWORD *pdwCookie);
1116 
1117     void (STDMETHODCALLTYPE *UnregisterStereoStatus)(
1118         IDXGIFactory3 *This,
1119         DWORD dwCookie);
1120 
1121     HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
1122         IDXGIFactory3 *This,
1123         HWND WindowHandle,
1124         UINT wMsg,
1125         DWORD *pdwCookie);
1126 
1127     HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusEvent)(
1128         IDXGIFactory3 *This,
1129         HANDLE hEvent,
1130         DWORD *pdwCookie);
1131 
1132     void (STDMETHODCALLTYPE *UnregisterOcclusionStatus)(
1133         IDXGIFactory3 *This,
1134         DWORD dwCookie);
1135 
1136     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForComposition)(
1137         IDXGIFactory3 *This,
1138         IUnknown *pDevice,
1139         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1140         IDXGIOutput *pRestrictToOutput,
1141         IDXGISwapChain1 **ppSwapChain);
1142 
1143     /*** IDXGIFactory3 methods ***/
1144     UINT (STDMETHODCALLTYPE *GetCreationFlags)(
1145         IDXGIFactory3 *This);
1146 
1147     END_INTERFACE
1148 } IDXGIFactory3Vtbl;
1149 
1150 interface IDXGIFactory3 {
1151     CONST_VTBL IDXGIFactory3Vtbl* lpVtbl;
1152 };
1153 
1154 #ifdef COBJMACROS
1155 #ifndef WIDL_C_INLINE_WRAPPERS
1156 /*** IUnknown methods ***/
1157 #define IDXGIFactory3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1158 #define IDXGIFactory3_AddRef(This) (This)->lpVtbl->AddRef(This)
1159 #define IDXGIFactory3_Release(This) (This)->lpVtbl->Release(This)
1160 /*** IDXGIObject methods ***/
1161 #define IDXGIFactory3_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1162 #define IDXGIFactory3_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
1163 #define IDXGIFactory3_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1164 #define IDXGIFactory3_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
1165 /*** IDXGIFactory methods ***/
1166 #define IDXGIFactory3_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter)
1167 #define IDXGIFactory3_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags)
1168 #define IDXGIFactory3_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window)
1169 #define IDXGIFactory3_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain)
1170 #define IDXGIFactory3_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter)
1171 /*** IDXGIFactory1 methods ***/
1172 #define IDXGIFactory3_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter)
1173 #define IDXGIFactory3_IsCurrent(This) (This)->lpVtbl->IsCurrent(This)
1174 /*** IDXGIFactory2 methods ***/
1175 #define IDXGIFactory3_IsWindowedStereoEnabled(This) (This)->lpVtbl->IsWindowedStereoEnabled(This)
1176 #define IDXGIFactory3_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
1177 #define IDXGIFactory3_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
1178 #define IDXGIFactory3_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
1179 #define IDXGIFactory3_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
1180 #define IDXGIFactory3_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
1181 #define IDXGIFactory3_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
1182 #define IDXGIFactory3_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
1183 #define IDXGIFactory3_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
1184 #define IDXGIFactory3_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
1185 #define IDXGIFactory3_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
1186 /*** IDXGIFactory3 methods ***/
1187 #define IDXGIFactory3_GetCreationFlags(This) (This)->lpVtbl->GetCreationFlags(This)
1188 #else
1189 /*** IUnknown methods ***/
1190 static FORCEINLINE HRESULT IDXGIFactory3_QueryInterface(IDXGIFactory3* This,REFIID riid,void **ppvObject) {
1191     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1192 }
1193 static FORCEINLINE ULONG IDXGIFactory3_AddRef(IDXGIFactory3* This) {
1194     return This->lpVtbl->AddRef(This);
1195 }
1196 static FORCEINLINE ULONG IDXGIFactory3_Release(IDXGIFactory3* This) {
1197     return This->lpVtbl->Release(This);
1198 }
1199 /*** IDXGIObject methods ***/
1200 static FORCEINLINE HRESULT IDXGIFactory3_SetPrivateData(IDXGIFactory3* This,REFGUID guid,UINT data_size,const void *data) {
1201     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1202 }
1203 static FORCEINLINE HRESULT IDXGIFactory3_SetPrivateDataInterface(IDXGIFactory3* This,REFGUID guid,const IUnknown *object) {
1204     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1205 }
1206 static FORCEINLINE HRESULT IDXGIFactory3_GetPrivateData(IDXGIFactory3* This,REFGUID guid,UINT *data_size,void *data) {
1207     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1208 }
1209 static FORCEINLINE HRESULT IDXGIFactory3_GetParent(IDXGIFactory3* This,REFIID riid,void **parent) {
1210     return This->lpVtbl->GetParent(This,riid,parent);
1211 }
1212 /*** IDXGIFactory methods ***/
1213 static FORCEINLINE HRESULT IDXGIFactory3_EnumAdapters(IDXGIFactory3* This,UINT adapter_idx,IDXGIAdapter **adapter) {
1214     return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter);
1215 }
1216 static FORCEINLINE HRESULT IDXGIFactory3_MakeWindowAssociation(IDXGIFactory3* This,HWND window,UINT flags) {
1217     return This->lpVtbl->MakeWindowAssociation(This,window,flags);
1218 }
1219 static FORCEINLINE HRESULT IDXGIFactory3_GetWindowAssociation(IDXGIFactory3* This,HWND *window) {
1220     return This->lpVtbl->GetWindowAssociation(This,window);
1221 }
1222 static FORCEINLINE HRESULT IDXGIFactory3_CreateSwapChain(IDXGIFactory3* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) {
1223     return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain);
1224 }
1225 static FORCEINLINE HRESULT IDXGIFactory3_CreateSoftwareAdapter(IDXGIFactory3* This,HMODULE swrast,IDXGIAdapter **adapter) {
1226     return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter);
1227 }
1228 /*** IDXGIFactory1 methods ***/
1229 static FORCEINLINE HRESULT IDXGIFactory3_EnumAdapters1(IDXGIFactory3* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) {
1230     return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter);
1231 }
1232 static FORCEINLINE WINBOOL IDXGIFactory3_IsCurrent(IDXGIFactory3* This) {
1233     return This->lpVtbl->IsCurrent(This);
1234 }
1235 /*** IDXGIFactory2 methods ***/
1236 static FORCEINLINE WINBOOL IDXGIFactory3_IsWindowedStereoEnabled(IDXGIFactory3* This) {
1237     return This->lpVtbl->IsWindowedStereoEnabled(This);
1238 }
1239 static FORCEINLINE HRESULT IDXGIFactory3_CreateSwapChainForHwnd(IDXGIFactory3* This,IUnknown *pDevice,HWND hWnd,const DXGI_SWAP_CHAIN_DESC1 *pDesc,const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1240     return This->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain);
1241 }
1242 static FORCEINLINE HRESULT IDXGIFactory3_CreateSwapChainForCoreWindow(IDXGIFactory3* This,IUnknown *pDevice,IUnknown *pWindow,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1243     return This->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain);
1244 }
1245 static FORCEINLINE HRESULT IDXGIFactory3_GetSharedResourceAdapterLuid(IDXGIFactory3* This,HANDLE hResource,LUID *pLuid) {
1246     return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
1247 }
1248 static FORCEINLINE HRESULT IDXGIFactory3_RegisterOcclusionStatusWindow(IDXGIFactory3* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1249     return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1250 }
1251 static FORCEINLINE HRESULT IDXGIFactory3_RegisterStereoStatusEvent(IDXGIFactory3* This,HANDLE hEvent,DWORD *pdwCookie) {
1252     return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
1253 }
1254 static FORCEINLINE void IDXGIFactory3_UnregisterStereoStatus(IDXGIFactory3* This,DWORD dwCookie) {
1255     This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
1256 }
1257 static FORCEINLINE HRESULT IDXGIFactory3_RegisterStereoStatusWindow(IDXGIFactory3* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1258     return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1259 }
1260 static FORCEINLINE HRESULT IDXGIFactory3_RegisterOcclusionStatusEvent(IDXGIFactory3* This,HANDLE hEvent,DWORD *pdwCookie) {
1261     return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
1262 }
1263 static FORCEINLINE void IDXGIFactory3_UnregisterOcclusionStatus(IDXGIFactory3* This,DWORD dwCookie) {
1264     This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie);
1265 }
1266 static FORCEINLINE HRESULT IDXGIFactory3_CreateSwapChainForComposition(IDXGIFactory3* This,IUnknown *pDevice,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1267     return This->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain);
1268 }
1269 /*** IDXGIFactory3 methods ***/
1270 static FORCEINLINE UINT IDXGIFactory3_GetCreationFlags(IDXGIFactory3* This) {
1271     return This->lpVtbl->GetCreationFlags(This);
1272 }
1273 #endif
1274 #endif
1275 
1276 #endif
1277 
1278 
1279 #endif  /* __IDXGIFactory3_INTERFACE_DEFINED__ */
1280 
1281 /*****************************************************************************
1282  * IDXGIDecodeSwapChain interface
1283  */
1284 #ifndef __IDXGIDecodeSwapChain_INTERFACE_DEFINED__
1285 #define __IDXGIDecodeSwapChain_INTERFACE_DEFINED__
1286 
1287 DEFINE_GUID(IID_IDXGIDecodeSwapChain, 0x2633066b, 0x4514, 0x4c7a, 0x8f,0xd8, 0x12,0xea,0x98,0x05,0x9d,0x18);
1288 #if defined(__cplusplus) && !defined(CINTERFACE)
1289 MIDL_INTERFACE("2633066b-4514-4c7a-8fd8-12ea98059d18")
1290 IDXGIDecodeSwapChain : public IUnknown
1291 {
1292     virtual HRESULT STDMETHODCALLTYPE PresentBuffer(
1293         UINT buffer_to_present,
1294         UINT sync_interval,
1295         UINT flags) = 0;
1296 
1297     virtual HRESULT STDMETHODCALLTYPE SetSourceRect(
1298         const RECT *rect) = 0;
1299 
1300     virtual HRESULT STDMETHODCALLTYPE SetTargetRect(
1301         const RECT *rect) = 0;
1302 
1303     virtual HRESULT STDMETHODCALLTYPE SetDestSize(
1304         UINT width,
1305         UINT height) = 0;
1306 
1307     virtual HRESULT STDMETHODCALLTYPE GetSourceRect(
1308         RECT *rect) = 0;
1309 
1310     virtual HRESULT STDMETHODCALLTYPE GetTargetRect(
1311         RECT *rect) = 0;
1312 
1313     virtual HRESULT STDMETHODCALLTYPE GetDestSize(
1314         UINT *width,
1315         UINT *height) = 0;
1316 
1317     virtual HRESULT STDMETHODCALLTYPE SetColorSpace(
1318         DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS colorspace) = 0;
1319 
1320     virtual DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS STDMETHODCALLTYPE GetColorSpace(
1321         ) = 0;
1322 
1323 };
1324 #ifdef __CRT_UUID_DECL
1325 __CRT_UUID_DECL(IDXGIDecodeSwapChain, 0x2633066b, 0x4514, 0x4c7a, 0x8f,0xd8, 0x12,0xea,0x98,0x05,0x9d,0x18)
1326 #endif
1327 #else
1328 typedef struct IDXGIDecodeSwapChainVtbl {
1329     BEGIN_INTERFACE
1330 
1331     /*** IUnknown methods ***/
1332     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1333         IDXGIDecodeSwapChain *This,
1334         REFIID riid,
1335         void **ppvObject);
1336 
1337     ULONG (STDMETHODCALLTYPE *AddRef)(
1338         IDXGIDecodeSwapChain *This);
1339 
1340     ULONG (STDMETHODCALLTYPE *Release)(
1341         IDXGIDecodeSwapChain *This);
1342 
1343     /*** IDXGIDecodeSwapChain methods ***/
1344     HRESULT (STDMETHODCALLTYPE *PresentBuffer)(
1345         IDXGIDecodeSwapChain *This,
1346         UINT buffer_to_present,
1347         UINT sync_interval,
1348         UINT flags);
1349 
1350     HRESULT (STDMETHODCALLTYPE *SetSourceRect)(
1351         IDXGIDecodeSwapChain *This,
1352         const RECT *rect);
1353 
1354     HRESULT (STDMETHODCALLTYPE *SetTargetRect)(
1355         IDXGIDecodeSwapChain *This,
1356         const RECT *rect);
1357 
1358     HRESULT (STDMETHODCALLTYPE *SetDestSize)(
1359         IDXGIDecodeSwapChain *This,
1360         UINT width,
1361         UINT height);
1362 
1363     HRESULT (STDMETHODCALLTYPE *GetSourceRect)(
1364         IDXGIDecodeSwapChain *This,
1365         RECT *rect);
1366 
1367     HRESULT (STDMETHODCALLTYPE *GetTargetRect)(
1368         IDXGIDecodeSwapChain *This,
1369         RECT *rect);
1370 
1371     HRESULT (STDMETHODCALLTYPE *GetDestSize)(
1372         IDXGIDecodeSwapChain *This,
1373         UINT *width,
1374         UINT *height);
1375 
1376     HRESULT (STDMETHODCALLTYPE *SetColorSpace)(
1377         IDXGIDecodeSwapChain *This,
1378         DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS colorspace);
1379 
1380     DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS (STDMETHODCALLTYPE *GetColorSpace)(
1381         IDXGIDecodeSwapChain *This);
1382 
1383     END_INTERFACE
1384 } IDXGIDecodeSwapChainVtbl;
1385 
1386 interface IDXGIDecodeSwapChain {
1387     CONST_VTBL IDXGIDecodeSwapChainVtbl* lpVtbl;
1388 };
1389 
1390 #ifdef COBJMACROS
1391 #ifndef WIDL_C_INLINE_WRAPPERS
1392 /*** IUnknown methods ***/
1393 #define IDXGIDecodeSwapChain_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1394 #define IDXGIDecodeSwapChain_AddRef(This) (This)->lpVtbl->AddRef(This)
1395 #define IDXGIDecodeSwapChain_Release(This) (This)->lpVtbl->Release(This)
1396 /*** IDXGIDecodeSwapChain methods ***/
1397 #define IDXGIDecodeSwapChain_PresentBuffer(This,buffer_to_present,sync_interval,flags) (This)->lpVtbl->PresentBuffer(This,buffer_to_present,sync_interval,flags)
1398 #define IDXGIDecodeSwapChain_SetSourceRect(This,rect) (This)->lpVtbl->SetSourceRect(This,rect)
1399 #define IDXGIDecodeSwapChain_SetTargetRect(This,rect) (This)->lpVtbl->SetTargetRect(This,rect)
1400 #define IDXGIDecodeSwapChain_SetDestSize(This,width,height) (This)->lpVtbl->SetDestSize(This,width,height)
1401 #define IDXGIDecodeSwapChain_GetSourceRect(This,rect) (This)->lpVtbl->GetSourceRect(This,rect)
1402 #define IDXGIDecodeSwapChain_GetTargetRect(This,rect) (This)->lpVtbl->GetTargetRect(This,rect)
1403 #define IDXGIDecodeSwapChain_GetDestSize(This,width,height) (This)->lpVtbl->GetDestSize(This,width,height)
1404 #define IDXGIDecodeSwapChain_SetColorSpace(This,colorspace) (This)->lpVtbl->SetColorSpace(This,colorspace)
1405 #define IDXGIDecodeSwapChain_GetColorSpace(This) (This)->lpVtbl->GetColorSpace(This)
1406 #else
1407 /*** IUnknown methods ***/
1408 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_QueryInterface(IDXGIDecodeSwapChain* This,REFIID riid,void **ppvObject) {
1409     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1410 }
1411 static FORCEINLINE ULONG IDXGIDecodeSwapChain_AddRef(IDXGIDecodeSwapChain* This) {
1412     return This->lpVtbl->AddRef(This);
1413 }
1414 static FORCEINLINE ULONG IDXGIDecodeSwapChain_Release(IDXGIDecodeSwapChain* This) {
1415     return This->lpVtbl->Release(This);
1416 }
1417 /*** IDXGIDecodeSwapChain methods ***/
1418 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_PresentBuffer(IDXGIDecodeSwapChain* This,UINT buffer_to_present,UINT sync_interval,UINT flags) {
1419     return This->lpVtbl->PresentBuffer(This,buffer_to_present,sync_interval,flags);
1420 }
1421 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_SetSourceRect(IDXGIDecodeSwapChain* This,const RECT *rect) {
1422     return This->lpVtbl->SetSourceRect(This,rect);
1423 }
1424 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_SetTargetRect(IDXGIDecodeSwapChain* This,const RECT *rect) {
1425     return This->lpVtbl->SetTargetRect(This,rect);
1426 }
1427 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_SetDestSize(IDXGIDecodeSwapChain* This,UINT width,UINT height) {
1428     return This->lpVtbl->SetDestSize(This,width,height);
1429 }
1430 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_GetSourceRect(IDXGIDecodeSwapChain* This,RECT *rect) {
1431     return This->lpVtbl->GetSourceRect(This,rect);
1432 }
1433 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_GetTargetRect(IDXGIDecodeSwapChain* This,RECT *rect) {
1434     return This->lpVtbl->GetTargetRect(This,rect);
1435 }
1436 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_GetDestSize(IDXGIDecodeSwapChain* This,UINT *width,UINT *height) {
1437     return This->lpVtbl->GetDestSize(This,width,height);
1438 }
1439 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_SetColorSpace(IDXGIDecodeSwapChain* This,DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS colorspace) {
1440     return This->lpVtbl->SetColorSpace(This,colorspace);
1441 }
1442 static FORCEINLINE DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS IDXGIDecodeSwapChain_GetColorSpace(IDXGIDecodeSwapChain* This) {
1443     return This->lpVtbl->GetColorSpace(This);
1444 }
1445 #endif
1446 #endif
1447 
1448 #endif
1449 
1450 
1451 #endif  /* __IDXGIDecodeSwapChain_INTERFACE_DEFINED__ */
1452 
1453 /*****************************************************************************
1454  * IDXGIFactoryMedia interface
1455  */
1456 #ifndef __IDXGIFactoryMedia_INTERFACE_DEFINED__
1457 #define __IDXGIFactoryMedia_INTERFACE_DEFINED__
1458 
1459 DEFINE_GUID(IID_IDXGIFactoryMedia, 0x41e7d1f2, 0xa591, 0x4f7b, 0xa2,0xe5, 0xfa,0x9c,0x84,0x3e,0x1c,0x12);
1460 #if defined(__cplusplus) && !defined(CINTERFACE)
1461 MIDL_INTERFACE("41e7d1f2-a591-4f7b-a2e5-fa9c843e1c12")
1462 IDXGIFactoryMedia : public IUnknown
1463 {
1464     virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForCompositionSurfaceHandle(
1465         IUnknown *device,
1466         HANDLE surface,
1467         const DXGI_SWAP_CHAIN_DESC1 *desc,
1468         IDXGIOutput *restrict_to_output,
1469         IDXGISwapChain1 **swapchain) = 0;
1470 
1471     virtual HRESULT STDMETHODCALLTYPE CreateDecodeSwapChainForCompositionSurfaceHandle(
1472         IUnknown *device,
1473         HANDLE surface,
1474         DXGI_DECODE_SWAP_CHAIN_DESC *desc,
1475         IDXGIResource *yuv_decode_buffers,
1476         IDXGIOutput *restrict_to_output,
1477         IDXGIDecodeSwapChain **swapchain) = 0;
1478 
1479 };
1480 #ifdef __CRT_UUID_DECL
1481 __CRT_UUID_DECL(IDXGIFactoryMedia, 0x41e7d1f2, 0xa591, 0x4f7b, 0xa2,0xe5, 0xfa,0x9c,0x84,0x3e,0x1c,0x12)
1482 #endif
1483 #else
1484 typedef struct IDXGIFactoryMediaVtbl {
1485     BEGIN_INTERFACE
1486 
1487     /*** IUnknown methods ***/
1488     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1489         IDXGIFactoryMedia *This,
1490         REFIID riid,
1491         void **ppvObject);
1492 
1493     ULONG (STDMETHODCALLTYPE *AddRef)(
1494         IDXGIFactoryMedia *This);
1495 
1496     ULONG (STDMETHODCALLTYPE *Release)(
1497         IDXGIFactoryMedia *This);
1498 
1499     /*** IDXGIFactoryMedia methods ***/
1500     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCompositionSurfaceHandle)(
1501         IDXGIFactoryMedia *This,
1502         IUnknown *device,
1503         HANDLE surface,
1504         const DXGI_SWAP_CHAIN_DESC1 *desc,
1505         IDXGIOutput *restrict_to_output,
1506         IDXGISwapChain1 **swapchain);
1507 
1508     HRESULT (STDMETHODCALLTYPE *CreateDecodeSwapChainForCompositionSurfaceHandle)(
1509         IDXGIFactoryMedia *This,
1510         IUnknown *device,
1511         HANDLE surface,
1512         DXGI_DECODE_SWAP_CHAIN_DESC *desc,
1513         IDXGIResource *yuv_decode_buffers,
1514         IDXGIOutput *restrict_to_output,
1515         IDXGIDecodeSwapChain **swapchain);
1516 
1517     END_INTERFACE
1518 } IDXGIFactoryMediaVtbl;
1519 
1520 interface IDXGIFactoryMedia {
1521     CONST_VTBL IDXGIFactoryMediaVtbl* lpVtbl;
1522 };
1523 
1524 #ifdef COBJMACROS
1525 #ifndef WIDL_C_INLINE_WRAPPERS
1526 /*** IUnknown methods ***/
1527 #define IDXGIFactoryMedia_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1528 #define IDXGIFactoryMedia_AddRef(This) (This)->lpVtbl->AddRef(This)
1529 #define IDXGIFactoryMedia_Release(This) (This)->lpVtbl->Release(This)
1530 /*** IDXGIFactoryMedia methods ***/
1531 #define IDXGIFactoryMedia_CreateSwapChainForCompositionSurfaceHandle(This,device,surface,desc,restrict_to_output,swapchain) (This)->lpVtbl->CreateSwapChainForCompositionSurfaceHandle(This,device,surface,desc,restrict_to_output,swapchain)
1532 #define IDXGIFactoryMedia_CreateDecodeSwapChainForCompositionSurfaceHandle(This,device,surface,desc,yuv_decode_buffers,restrict_to_output,swapchain) (This)->lpVtbl->CreateDecodeSwapChainForCompositionSurfaceHandle(This,device,surface,desc,yuv_decode_buffers,restrict_to_output,swapchain)
1533 #else
1534 /*** IUnknown methods ***/
1535 static FORCEINLINE HRESULT IDXGIFactoryMedia_QueryInterface(IDXGIFactoryMedia* This,REFIID riid,void **ppvObject) {
1536     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1537 }
1538 static FORCEINLINE ULONG IDXGIFactoryMedia_AddRef(IDXGIFactoryMedia* This) {
1539     return This->lpVtbl->AddRef(This);
1540 }
1541 static FORCEINLINE ULONG IDXGIFactoryMedia_Release(IDXGIFactoryMedia* This) {
1542     return This->lpVtbl->Release(This);
1543 }
1544 /*** IDXGIFactoryMedia methods ***/
1545 static FORCEINLINE HRESULT IDXGIFactoryMedia_CreateSwapChainForCompositionSurfaceHandle(IDXGIFactoryMedia* This,IUnknown *device,HANDLE surface,const DXGI_SWAP_CHAIN_DESC1 *desc,IDXGIOutput *restrict_to_output,IDXGISwapChain1 **swapchain) {
1546     return This->lpVtbl->CreateSwapChainForCompositionSurfaceHandle(This,device,surface,desc,restrict_to_output,swapchain);
1547 }
1548 static FORCEINLINE HRESULT IDXGIFactoryMedia_CreateDecodeSwapChainForCompositionSurfaceHandle(IDXGIFactoryMedia* This,IUnknown *device,HANDLE surface,DXGI_DECODE_SWAP_CHAIN_DESC *desc,IDXGIResource *yuv_decode_buffers,IDXGIOutput *restrict_to_output,IDXGIDecodeSwapChain **swapchain) {
1549     return This->lpVtbl->CreateDecodeSwapChainForCompositionSurfaceHandle(This,device,surface,desc,yuv_decode_buffers,restrict_to_output,swapchain);
1550 }
1551 #endif
1552 #endif
1553 
1554 #endif
1555 
1556 
1557 #endif  /* __IDXGIFactoryMedia_INTERFACE_DEFINED__ */
1558 
1559 /*****************************************************************************
1560  * IDXGISwapChainMedia interface
1561  */
1562 #ifndef __IDXGISwapChainMedia_INTERFACE_DEFINED__
1563 #define __IDXGISwapChainMedia_INTERFACE_DEFINED__
1564 
1565 DEFINE_GUID(IID_IDXGISwapChainMedia, 0xdd95b90b, 0xf05f, 0x4f6a, 0xbd,0x65, 0x25,0xbf,0xb2,0x64,0xbd,0x84);
1566 #if defined(__cplusplus) && !defined(CINTERFACE)
1567 MIDL_INTERFACE("dd95b90b-f05f-4f6a-bd65-25bfb264bd84")
1568 IDXGISwapChainMedia : public IUnknown
1569 {
1570     virtual HRESULT STDMETHODCALLTYPE GetFrameStatisticsMedia(
1571         DXGI_FRAME_STATISTICS_MEDIA *stats) = 0;
1572 
1573     virtual HRESULT STDMETHODCALLTYPE SetPresentDuration(
1574         UINT duration) = 0;
1575 
1576     virtual HRESULT STDMETHODCALLTYPE CheckPresentDurationSupport(
1577         UINT desired_present_duration,
1578         UINT *closest_smaller_present_duration,
1579         UINT *closest_larger_present_duration) = 0;
1580 
1581 };
1582 #ifdef __CRT_UUID_DECL
1583 __CRT_UUID_DECL(IDXGISwapChainMedia, 0xdd95b90b, 0xf05f, 0x4f6a, 0xbd,0x65, 0x25,0xbf,0xb2,0x64,0xbd,0x84)
1584 #endif
1585 #else
1586 typedef struct IDXGISwapChainMediaVtbl {
1587     BEGIN_INTERFACE
1588 
1589     /*** IUnknown methods ***/
1590     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1591         IDXGISwapChainMedia *This,
1592         REFIID riid,
1593         void **ppvObject);
1594 
1595     ULONG (STDMETHODCALLTYPE *AddRef)(
1596         IDXGISwapChainMedia *This);
1597 
1598     ULONG (STDMETHODCALLTYPE *Release)(
1599         IDXGISwapChainMedia *This);
1600 
1601     /*** IDXGISwapChainMedia methods ***/
1602     HRESULT (STDMETHODCALLTYPE *GetFrameStatisticsMedia)(
1603         IDXGISwapChainMedia *This,
1604         DXGI_FRAME_STATISTICS_MEDIA *stats);
1605 
1606     HRESULT (STDMETHODCALLTYPE *SetPresentDuration)(
1607         IDXGISwapChainMedia *This,
1608         UINT duration);
1609 
1610     HRESULT (STDMETHODCALLTYPE *CheckPresentDurationSupport)(
1611         IDXGISwapChainMedia *This,
1612         UINT desired_present_duration,
1613         UINT *closest_smaller_present_duration,
1614         UINT *closest_larger_present_duration);
1615 
1616     END_INTERFACE
1617 } IDXGISwapChainMediaVtbl;
1618 
1619 interface IDXGISwapChainMedia {
1620     CONST_VTBL IDXGISwapChainMediaVtbl* lpVtbl;
1621 };
1622 
1623 #ifdef COBJMACROS
1624 #ifndef WIDL_C_INLINE_WRAPPERS
1625 /*** IUnknown methods ***/
1626 #define IDXGISwapChainMedia_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1627 #define IDXGISwapChainMedia_AddRef(This) (This)->lpVtbl->AddRef(This)
1628 #define IDXGISwapChainMedia_Release(This) (This)->lpVtbl->Release(This)
1629 /*** IDXGISwapChainMedia methods ***/
1630 #define IDXGISwapChainMedia_GetFrameStatisticsMedia(This,stats) (This)->lpVtbl->GetFrameStatisticsMedia(This,stats)
1631 #define IDXGISwapChainMedia_SetPresentDuration(This,duration) (This)->lpVtbl->SetPresentDuration(This,duration)
1632 #define IDXGISwapChainMedia_CheckPresentDurationSupport(This,desired_present_duration,closest_smaller_present_duration,closest_larger_present_duration) (This)->lpVtbl->CheckPresentDurationSupport(This,desired_present_duration,closest_smaller_present_duration,closest_larger_present_duration)
1633 #else
1634 /*** IUnknown methods ***/
1635 static FORCEINLINE HRESULT IDXGISwapChainMedia_QueryInterface(IDXGISwapChainMedia* This,REFIID riid,void **ppvObject) {
1636     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1637 }
1638 static FORCEINLINE ULONG IDXGISwapChainMedia_AddRef(IDXGISwapChainMedia* This) {
1639     return This->lpVtbl->AddRef(This);
1640 }
1641 static FORCEINLINE ULONG IDXGISwapChainMedia_Release(IDXGISwapChainMedia* This) {
1642     return This->lpVtbl->Release(This);
1643 }
1644 /*** IDXGISwapChainMedia methods ***/
1645 static FORCEINLINE HRESULT IDXGISwapChainMedia_GetFrameStatisticsMedia(IDXGISwapChainMedia* This,DXGI_FRAME_STATISTICS_MEDIA *stats) {
1646     return This->lpVtbl->GetFrameStatisticsMedia(This,stats);
1647 }
1648 static FORCEINLINE HRESULT IDXGISwapChainMedia_SetPresentDuration(IDXGISwapChainMedia* This,UINT duration) {
1649     return This->lpVtbl->SetPresentDuration(This,duration);
1650 }
1651 static FORCEINLINE HRESULT IDXGISwapChainMedia_CheckPresentDurationSupport(IDXGISwapChainMedia* This,UINT desired_present_duration,UINT *closest_smaller_present_duration,UINT *closest_larger_present_duration) {
1652     return This->lpVtbl->CheckPresentDurationSupport(This,desired_present_duration,closest_smaller_present_duration,closest_larger_present_duration);
1653 }
1654 #endif
1655 #endif
1656 
1657 #endif
1658 
1659 
1660 #endif  /* __IDXGISwapChainMedia_INTERFACE_DEFINED__ */
1661 
1662 /*****************************************************************************
1663  * IDXGIOutput3 interface
1664  */
1665 #ifndef __IDXGIOutput3_INTERFACE_DEFINED__
1666 #define __IDXGIOutput3_INTERFACE_DEFINED__
1667 
1668 DEFINE_GUID(IID_IDXGIOutput3, 0x8a6bb301, 0x7e7e, 0x41f4, 0xa8,0xe0, 0x5b,0x32,0xf7,0xf9,0x9b,0x18);
1669 #if defined(__cplusplus) && !defined(CINTERFACE)
1670 MIDL_INTERFACE("8a6bb301-7e7e-41f4-a8e0-5b32f7f99b18")
1671 IDXGIOutput3 : public IDXGIOutput2
1672 {
1673     virtual HRESULT STDMETHODCALLTYPE CheckOverlaySupport(
1674         DXGI_FORMAT enum_format,
1675         IUnknown *concerned_device,
1676         UINT *flags) = 0;
1677 
1678 };
1679 #ifdef __CRT_UUID_DECL
1680 __CRT_UUID_DECL(IDXGIOutput3, 0x8a6bb301, 0x7e7e, 0x41f4, 0xa8,0xe0, 0x5b,0x32,0xf7,0xf9,0x9b,0x18)
1681 #endif
1682 #else
1683 typedef struct IDXGIOutput3Vtbl {
1684     BEGIN_INTERFACE
1685 
1686     /*** IUnknown methods ***/
1687     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1688         IDXGIOutput3 *This,
1689         REFIID riid,
1690         void **ppvObject);
1691 
1692     ULONG (STDMETHODCALLTYPE *AddRef)(
1693         IDXGIOutput3 *This);
1694 
1695     ULONG (STDMETHODCALLTYPE *Release)(
1696         IDXGIOutput3 *This);
1697 
1698     /*** IDXGIObject methods ***/
1699     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1700         IDXGIOutput3 *This,
1701         REFGUID guid,
1702         UINT data_size,
1703         const void *data);
1704 
1705     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1706         IDXGIOutput3 *This,
1707         REFGUID guid,
1708         const IUnknown *object);
1709 
1710     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1711         IDXGIOutput3 *This,
1712         REFGUID guid,
1713         UINT *data_size,
1714         void *data);
1715 
1716     HRESULT (STDMETHODCALLTYPE *GetParent)(
1717         IDXGIOutput3 *This,
1718         REFIID riid,
1719         void **parent);
1720 
1721     /*** IDXGIOutput methods ***/
1722     HRESULT (STDMETHODCALLTYPE *GetDesc)(
1723         IDXGIOutput3 *This,
1724         DXGI_OUTPUT_DESC *desc);
1725 
1726     HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)(
1727         IDXGIOutput3 *This,
1728         DXGI_FORMAT format,
1729         UINT flags,
1730         UINT *mode_count,
1731         DXGI_MODE_DESC *desc);
1732 
1733     HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)(
1734         IDXGIOutput3 *This,
1735         const DXGI_MODE_DESC *mode,
1736         DXGI_MODE_DESC *closest_match,
1737         IUnknown *device);
1738 
1739     HRESULT (STDMETHODCALLTYPE *WaitForVBlank)(
1740         IDXGIOutput3 *This);
1741 
1742     HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
1743         IDXGIOutput3 *This,
1744         IUnknown *device,
1745         WINBOOL exclusive);
1746 
1747     void (STDMETHODCALLTYPE *ReleaseOwnership)(
1748         IDXGIOutput3 *This);
1749 
1750     HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)(
1751         IDXGIOutput3 *This,
1752         DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps);
1753 
1754     HRESULT (STDMETHODCALLTYPE *SetGammaControl)(
1755         IDXGIOutput3 *This,
1756         const DXGI_GAMMA_CONTROL *gamma_control);
1757 
1758     HRESULT (STDMETHODCALLTYPE *GetGammaControl)(
1759         IDXGIOutput3 *This,
1760         DXGI_GAMMA_CONTROL *gamma_control);
1761 
1762     HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)(
1763         IDXGIOutput3 *This,
1764         IDXGISurface *surface);
1765 
1766     HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)(
1767         IDXGIOutput3 *This,
1768         IDXGISurface *surface);
1769 
1770     HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
1771         IDXGIOutput3 *This,
1772         DXGI_FRAME_STATISTICS *stats);
1773 
1774     /*** IDXGIOutput1 methods ***/
1775     HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)(
1776         IDXGIOutput3 *This,
1777         DXGI_FORMAT enum_format,
1778         UINT flags,
1779         UINT *num_modes,
1780         DXGI_MODE_DESC1 *desc);
1781 
1782     HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)(
1783         IDXGIOutput3 *This,
1784         const DXGI_MODE_DESC1 *mode_to_match,
1785         DXGI_MODE_DESC1 *closest_match,
1786         IUnknown *concerned_device);
1787 
1788     HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)(
1789         IDXGIOutput3 *This,
1790         IDXGIResource *destination);
1791 
1792     HRESULT (STDMETHODCALLTYPE *DuplicateOutput)(
1793         IDXGIOutput3 *This,
1794         IUnknown *device,
1795         IDXGIOutputDuplication **output_duplication);
1796 
1797     /*** IDXGIOutput2 methods ***/
1798     WINBOOL (STDMETHODCALLTYPE *SupportsOverlays)(
1799         IDXGIOutput3 *This);
1800 
1801     /*** IDXGIOutput3 methods ***/
1802     HRESULT (STDMETHODCALLTYPE *CheckOverlaySupport)(
1803         IDXGIOutput3 *This,
1804         DXGI_FORMAT enum_format,
1805         IUnknown *concerned_device,
1806         UINT *flags);
1807 
1808     END_INTERFACE
1809 } IDXGIOutput3Vtbl;
1810 
1811 interface IDXGIOutput3 {
1812     CONST_VTBL IDXGIOutput3Vtbl* lpVtbl;
1813 };
1814 
1815 #ifdef COBJMACROS
1816 #ifndef WIDL_C_INLINE_WRAPPERS
1817 /*** IUnknown methods ***/
1818 #define IDXGIOutput3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1819 #define IDXGIOutput3_AddRef(This) (This)->lpVtbl->AddRef(This)
1820 #define IDXGIOutput3_Release(This) (This)->lpVtbl->Release(This)
1821 /*** IDXGIObject methods ***/
1822 #define IDXGIOutput3_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1823 #define IDXGIOutput3_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
1824 #define IDXGIOutput3_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1825 #define IDXGIOutput3_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
1826 /*** IDXGIOutput methods ***/
1827 #define IDXGIOutput3_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
1828 #define IDXGIOutput3_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc)
1829 #define IDXGIOutput3_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device)
1830 #define IDXGIOutput3_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This)
1831 #define IDXGIOutput3_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive)
1832 #define IDXGIOutput3_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This)
1833 #define IDXGIOutput3_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps)
1834 #define IDXGIOutput3_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control)
1835 #define IDXGIOutput3_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control)
1836 #define IDXGIOutput3_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface)
1837 #define IDXGIOutput3_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface)
1838 #define IDXGIOutput3_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
1839 /*** IDXGIOutput1 methods ***/
1840 #define IDXGIOutput3_GetDisplayModeList1(This,enum_format,flags,num_modes,desc) (This)->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc)
1841 #define IDXGIOutput3_FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device)
1842 #define IDXGIOutput3_GetDisplaySurfaceData1(This,destination) (This)->lpVtbl->GetDisplaySurfaceData1(This,destination)
1843 #define IDXGIOutput3_DuplicateOutput(This,device,output_duplication) (This)->lpVtbl->DuplicateOutput(This,device,output_duplication)
1844 /*** IDXGIOutput2 methods ***/
1845 #define IDXGIOutput3_SupportsOverlays(This) (This)->lpVtbl->SupportsOverlays(This)
1846 /*** IDXGIOutput3 methods ***/
1847 #define IDXGIOutput3_CheckOverlaySupport(This,enum_format,concerned_device,flags) (This)->lpVtbl->CheckOverlaySupport(This,enum_format,concerned_device,flags)
1848 #else
1849 /*** IUnknown methods ***/
1850 static FORCEINLINE HRESULT IDXGIOutput3_QueryInterface(IDXGIOutput3* This,REFIID riid,void **ppvObject) {
1851     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1852 }
1853 static FORCEINLINE ULONG IDXGIOutput3_AddRef(IDXGIOutput3* This) {
1854     return This->lpVtbl->AddRef(This);
1855 }
1856 static FORCEINLINE ULONG IDXGIOutput3_Release(IDXGIOutput3* This) {
1857     return This->lpVtbl->Release(This);
1858 }
1859 /*** IDXGIObject methods ***/
1860 static FORCEINLINE HRESULT IDXGIOutput3_SetPrivateData(IDXGIOutput3* This,REFGUID guid,UINT data_size,const void *data) {
1861     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1862 }
1863 static FORCEINLINE HRESULT IDXGIOutput3_SetPrivateDataInterface(IDXGIOutput3* This,REFGUID guid,const IUnknown *object) {
1864     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1865 }
1866 static FORCEINLINE HRESULT IDXGIOutput3_GetPrivateData(IDXGIOutput3* This,REFGUID guid,UINT *data_size,void *data) {
1867     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1868 }
1869 static FORCEINLINE HRESULT IDXGIOutput3_GetParent(IDXGIOutput3* This,REFIID riid,void **parent) {
1870     return This->lpVtbl->GetParent(This,riid,parent);
1871 }
1872 /*** IDXGIOutput methods ***/
1873 static FORCEINLINE HRESULT IDXGIOutput3_GetDesc(IDXGIOutput3* This,DXGI_OUTPUT_DESC *desc) {
1874     return This->lpVtbl->GetDesc(This,desc);
1875 }
1876 static FORCEINLINE HRESULT IDXGIOutput3_GetDisplayModeList(IDXGIOutput3* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) {
1877     return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc);
1878 }
1879 static FORCEINLINE HRESULT IDXGIOutput3_FindClosestMatchingMode(IDXGIOutput3* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) {
1880     return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device);
1881 }
1882 static FORCEINLINE HRESULT IDXGIOutput3_WaitForVBlank(IDXGIOutput3* This) {
1883     return This->lpVtbl->WaitForVBlank(This);
1884 }
1885 static FORCEINLINE HRESULT IDXGIOutput3_TakeOwnership(IDXGIOutput3* This,IUnknown *device,WINBOOL exclusive) {
1886     return This->lpVtbl->TakeOwnership(This,device,exclusive);
1887 }
1888 static FORCEINLINE void IDXGIOutput3_ReleaseOwnership(IDXGIOutput3* This) {
1889     This->lpVtbl->ReleaseOwnership(This);
1890 }
1891 static FORCEINLINE HRESULT IDXGIOutput3_GetGammaControlCapabilities(IDXGIOutput3* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) {
1892     return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps);
1893 }
1894 static FORCEINLINE HRESULT IDXGIOutput3_SetGammaControl(IDXGIOutput3* This,const DXGI_GAMMA_CONTROL *gamma_control) {
1895     return This->lpVtbl->SetGammaControl(This,gamma_control);
1896 }
1897 static FORCEINLINE HRESULT IDXGIOutput3_GetGammaControl(IDXGIOutput3* This,DXGI_GAMMA_CONTROL *gamma_control) {
1898     return This->lpVtbl->GetGammaControl(This,gamma_control);
1899 }
1900 static FORCEINLINE HRESULT IDXGIOutput3_SetDisplaySurface(IDXGIOutput3* This,IDXGISurface *surface) {
1901     return This->lpVtbl->SetDisplaySurface(This,surface);
1902 }
1903 static FORCEINLINE HRESULT IDXGIOutput3_GetDisplaySurfaceData(IDXGIOutput3* This,IDXGISurface *surface) {
1904     return This->lpVtbl->GetDisplaySurfaceData(This,surface);
1905 }
1906 static FORCEINLINE HRESULT IDXGIOutput3_GetFrameStatistics(IDXGIOutput3* This,DXGI_FRAME_STATISTICS *stats) {
1907     return This->lpVtbl->GetFrameStatistics(This,stats);
1908 }
1909 /*** IDXGIOutput1 methods ***/
1910 static FORCEINLINE HRESULT IDXGIOutput3_GetDisplayModeList1(IDXGIOutput3* This,DXGI_FORMAT enum_format,UINT flags,UINT *num_modes,DXGI_MODE_DESC1 *desc) {
1911     return This->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc);
1912 }
1913 static FORCEINLINE HRESULT IDXGIOutput3_FindClosestMatchingMode1(IDXGIOutput3* This,const DXGI_MODE_DESC1 *mode_to_match,DXGI_MODE_DESC1 *closest_match,IUnknown *concerned_device) {
1914     return This->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device);
1915 }
1916 static FORCEINLINE HRESULT IDXGIOutput3_GetDisplaySurfaceData1(IDXGIOutput3* This,IDXGIResource *destination) {
1917     return This->lpVtbl->GetDisplaySurfaceData1(This,destination);
1918 }
1919 static FORCEINLINE HRESULT IDXGIOutput3_DuplicateOutput(IDXGIOutput3* This,IUnknown *device,IDXGIOutputDuplication **output_duplication) {
1920     return This->lpVtbl->DuplicateOutput(This,device,output_duplication);
1921 }
1922 /*** IDXGIOutput2 methods ***/
1923 static FORCEINLINE WINBOOL IDXGIOutput3_SupportsOverlays(IDXGIOutput3* This) {
1924     return This->lpVtbl->SupportsOverlays(This);
1925 }
1926 /*** IDXGIOutput3 methods ***/
1927 static FORCEINLINE HRESULT IDXGIOutput3_CheckOverlaySupport(IDXGIOutput3* This,DXGI_FORMAT enum_format,IUnknown *concerned_device,UINT *flags) {
1928     return This->lpVtbl->CheckOverlaySupport(This,enum_format,concerned_device,flags);
1929 }
1930 #endif
1931 #endif
1932 
1933 #endif
1934 
1935 
1936 #endif  /* __IDXGIOutput3_INTERFACE_DEFINED__ */
1937 
1938 #define DXGI_CREATE_FACTORY_DEBUG (0x1)
1939 
1940 HRESULT __stdcall  CreateDXGIFactory2(UINT flags,REFIID iid,void **factory);
1941 
1942 HRESULT __stdcall  DXGIGetDebugInterface1(UINT flags,REFIID iid,void **debug);
1943 
1944 /* Begin additional prototypes for all interfaces */
1945 
1946 
1947 /* End additional prototypes */
1948 
1949 #ifdef __cplusplus
1950 }
1951 #endif
1952 
1953 #endif /* __dxgi1_3_h__ */
1954