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