• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*** Autogenerated by WIDL 3.19 from direct-x/include/dxgi1_5.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_5_h__
16 #define __dxgi1_5_h__
17 
18 /* Forward declarations */
19 
20 #ifndef __IDXGIOutput5_FWD_DEFINED__
21 #define __IDXGIOutput5_FWD_DEFINED__
22 typedef interface IDXGIOutput5 IDXGIOutput5;
23 #ifdef __cplusplus
24 interface IDXGIOutput5;
25 #endif /* __cplusplus */
26 #endif
27 
28 #ifndef __IDXGISwapChain4_FWD_DEFINED__
29 #define __IDXGISwapChain4_FWD_DEFINED__
30 typedef interface IDXGISwapChain4 IDXGISwapChain4;
31 #ifdef __cplusplus
32 interface IDXGISwapChain4;
33 #endif /* __cplusplus */
34 #endif
35 
36 #ifndef __IDXGIDevice4_FWD_DEFINED__
37 #define __IDXGIDevice4_FWD_DEFINED__
38 typedef interface IDXGIDevice4 IDXGIDevice4;
39 #ifdef __cplusplus
40 interface IDXGIDevice4;
41 #endif /* __cplusplus */
42 #endif
43 
44 #ifndef __IDXGIFactory5_FWD_DEFINED__
45 #define __IDXGIFactory5_FWD_DEFINED__
46 typedef interface IDXGIFactory5 IDXGIFactory5;
47 #ifdef __cplusplus
48 interface IDXGIFactory5;
49 #endif /* __cplusplus */
50 #endif
51 
52 /* Headers for imported files */
53 
54 #include <dxgi1_4.h>
55 
56 #ifdef __cplusplus
57 extern "C" {
58 #endif
59 
60 typedef enum DXGI_OUTDUPL_FLAG {
61     DXGI_OUTDUPL_COMPOSITED_UI_CAPTURE_ONLY = 0x1
62 } DXGI_OUTDUPL_FLAG;
63 typedef enum DXGI_HDR_METADATA_TYPE {
64     DXGI_HDR_METADATA_TYPE_NONE = 0x0,
65     DXGI_HDR_METADATA_TYPE_HDR10 = 0x1
66 } DXGI_HDR_METADATA_TYPE;
67 typedef enum _DXGI_OFFER_RESOURCE_FLAGS {
68     DXGI_OFFER_RESOURCE_FLAG_ALLOW_DECOMMIT = 0x1
69 } DXGI_OFFER_RESOURCE_FLAGS;
70 typedef enum _DXGI_RECLAIM_RESOURCE_RESULTS {
71     DXGI_RECLAIM_RESOURCE_RESULT_OK = 0x0,
72     DXGI_RECLAIM_RESOURCE_RESULT_DISCARDED = 0x1,
73     DXGI_RECLAIM_RESOURCE_RESULT_NOT_COMMITTED = 0x2
74 } DXGI_RECLAIM_RESOURCE_RESULTS;
75 typedef enum DXGI_FEATURE {
76     DXGI_FEATURE_PRESENT_ALLOW_TEARING = 0x0
77 } DXGI_FEATURE;
78 typedef struct DXGI_HDR_METADATA_HDR10 {
79     UINT16 RedPrimary[2];
80     UINT16 GreenPrimary[2];
81     UINT16 BluePrimary[2];
82     UINT16 WhitePoint[2];
83     UINT MaxMasteringLuminance;
84     UINT MinMasteringLuminance;
85     UINT16 MaxContentLightLevel;
86     UINT16 MaxFrameAverageLightLevel;
87 } DXGI_HDR_METADATA_HDR10;
88 /*****************************************************************************
89  * IDXGIOutput5 interface
90  */
91 #ifndef __IDXGIOutput5_INTERFACE_DEFINED__
92 #define __IDXGIOutput5_INTERFACE_DEFINED__
93 
94 DEFINE_GUID(IID_IDXGIOutput5, 0x80a07424, 0xab52, 0x42eb, 0x83,0x3c, 0x0c,0x42,0xfd,0x28,0x2d,0x98);
95 #if defined(__cplusplus) && !defined(CINTERFACE)
96 MIDL_INTERFACE("80a07424-ab52-42eb-833c-0c42fd282d98")
97 IDXGIOutput5 : public IDXGIOutput4
98 {
99     virtual HRESULT STDMETHODCALLTYPE DuplicateOutput1(
100         IUnknown *device,
101         UINT flags,
102         UINT format_count,
103         const DXGI_FORMAT *formats,
104         IDXGIOutputDuplication **duplication) = 0;
105 
106 };
107 #ifdef __CRT_UUID_DECL
108 __CRT_UUID_DECL(IDXGIOutput5, 0x80a07424, 0xab52, 0x42eb, 0x83,0x3c, 0x0c,0x42,0xfd,0x28,0x2d,0x98)
109 #endif
110 #else
111 typedef struct IDXGIOutput5Vtbl {
112     BEGIN_INTERFACE
113 
114     /*** IUnknown methods ***/
115     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
116         IDXGIOutput5 *This,
117         REFIID riid,
118         void **ppvObject);
119 
120     ULONG (STDMETHODCALLTYPE *AddRef)(
121         IDXGIOutput5 *This);
122 
123     ULONG (STDMETHODCALLTYPE *Release)(
124         IDXGIOutput5 *This);
125 
126     /*** IDXGIObject methods ***/
127     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
128         IDXGIOutput5 *This,
129         REFGUID guid,
130         UINT data_size,
131         const void *data);
132 
133     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
134         IDXGIOutput5 *This,
135         REFGUID guid,
136         const IUnknown *object);
137 
138     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
139         IDXGIOutput5 *This,
140         REFGUID guid,
141         UINT *data_size,
142         void *data);
143 
144     HRESULT (STDMETHODCALLTYPE *GetParent)(
145         IDXGIOutput5 *This,
146         REFIID riid,
147         void **parent);
148 
149     /*** IDXGIOutput methods ***/
150     HRESULT (STDMETHODCALLTYPE *GetDesc)(
151         IDXGIOutput5 *This,
152         DXGI_OUTPUT_DESC *desc);
153 
154     HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)(
155         IDXGIOutput5 *This,
156         DXGI_FORMAT format,
157         UINT flags,
158         UINT *mode_count,
159         DXGI_MODE_DESC *desc);
160 
161     HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)(
162         IDXGIOutput5 *This,
163         const DXGI_MODE_DESC *mode,
164         DXGI_MODE_DESC *closest_match,
165         IUnknown *device);
166 
167     HRESULT (STDMETHODCALLTYPE *WaitForVBlank)(
168         IDXGIOutput5 *This);
169 
170     HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
171         IDXGIOutput5 *This,
172         IUnknown *device,
173         WINBOOL exclusive);
174 
175     void (STDMETHODCALLTYPE *ReleaseOwnership)(
176         IDXGIOutput5 *This);
177 
178     HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)(
179         IDXGIOutput5 *This,
180         DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps);
181 
182     HRESULT (STDMETHODCALLTYPE *SetGammaControl)(
183         IDXGIOutput5 *This,
184         const DXGI_GAMMA_CONTROL *gamma_control);
185 
186     HRESULT (STDMETHODCALLTYPE *GetGammaControl)(
187         IDXGIOutput5 *This,
188         DXGI_GAMMA_CONTROL *gamma_control);
189 
190     HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)(
191         IDXGIOutput5 *This,
192         IDXGISurface *surface);
193 
194     HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)(
195         IDXGIOutput5 *This,
196         IDXGISurface *surface);
197 
198     HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
199         IDXGIOutput5 *This,
200         DXGI_FRAME_STATISTICS *stats);
201 
202     /*** IDXGIOutput1 methods ***/
203     HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)(
204         IDXGIOutput5 *This,
205         DXGI_FORMAT enum_format,
206         UINT flags,
207         UINT *num_modes,
208         DXGI_MODE_DESC1 *desc);
209 
210     HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)(
211         IDXGIOutput5 *This,
212         const DXGI_MODE_DESC1 *mode_to_match,
213         DXGI_MODE_DESC1 *closest_match,
214         IUnknown *concerned_device);
215 
216     HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)(
217         IDXGIOutput5 *This,
218         IDXGIResource *destination);
219 
220     HRESULT (STDMETHODCALLTYPE *DuplicateOutput)(
221         IDXGIOutput5 *This,
222         IUnknown *device,
223         IDXGIOutputDuplication **output_duplication);
224 
225     /*** IDXGIOutput2 methods ***/
226     WINBOOL (STDMETHODCALLTYPE *SupportsOverlays)(
227         IDXGIOutput5 *This);
228 
229     /*** IDXGIOutput3 methods ***/
230     HRESULT (STDMETHODCALLTYPE *CheckOverlaySupport)(
231         IDXGIOutput5 *This,
232         DXGI_FORMAT enum_format,
233         IUnknown *concerned_device,
234         UINT *flags);
235 
236     /*** IDXGIOutput4 methods ***/
237     HRESULT (STDMETHODCALLTYPE *CheckOverlayColorSpaceSupport)(
238         IDXGIOutput5 *This,
239         DXGI_FORMAT format,
240         DXGI_COLOR_SPACE_TYPE colour_space,
241         IUnknown *device,
242         UINT *flags);
243 
244     /*** IDXGIOutput5 methods ***/
245     HRESULT (STDMETHODCALLTYPE *DuplicateOutput1)(
246         IDXGIOutput5 *This,
247         IUnknown *device,
248         UINT flags,
249         UINT format_count,
250         const DXGI_FORMAT *formats,
251         IDXGIOutputDuplication **duplication);
252 
253     END_INTERFACE
254 } IDXGIOutput5Vtbl;
255 
256 interface IDXGIOutput5 {
257     CONST_VTBL IDXGIOutput5Vtbl* lpVtbl;
258 };
259 
260 #ifdef COBJMACROS
261 #ifndef WIDL_C_INLINE_WRAPPERS
262 /*** IUnknown methods ***/
263 #define IDXGIOutput5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
264 #define IDXGIOutput5_AddRef(This) (This)->lpVtbl->AddRef(This)
265 #define IDXGIOutput5_Release(This) (This)->lpVtbl->Release(This)
266 /*** IDXGIObject methods ***/
267 #define IDXGIOutput5_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
268 #define IDXGIOutput5_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
269 #define IDXGIOutput5_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
270 #define IDXGIOutput5_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
271 /*** IDXGIOutput methods ***/
272 #define IDXGIOutput5_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
273 #define IDXGIOutput5_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc)
274 #define IDXGIOutput5_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device)
275 #define IDXGIOutput5_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This)
276 #define IDXGIOutput5_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive)
277 #define IDXGIOutput5_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This)
278 #define IDXGIOutput5_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps)
279 #define IDXGIOutput5_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control)
280 #define IDXGIOutput5_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control)
281 #define IDXGIOutput5_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface)
282 #define IDXGIOutput5_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface)
283 #define IDXGIOutput5_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
284 /*** IDXGIOutput1 methods ***/
285 #define IDXGIOutput5_GetDisplayModeList1(This,enum_format,flags,num_modes,desc) (This)->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc)
286 #define IDXGIOutput5_FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device)
287 #define IDXGIOutput5_GetDisplaySurfaceData1(This,destination) (This)->lpVtbl->GetDisplaySurfaceData1(This,destination)
288 #define IDXGIOutput5_DuplicateOutput(This,device,output_duplication) (This)->lpVtbl->DuplicateOutput(This,device,output_duplication)
289 /*** IDXGIOutput2 methods ***/
290 #define IDXGIOutput5_SupportsOverlays(This) (This)->lpVtbl->SupportsOverlays(This)
291 /*** IDXGIOutput3 methods ***/
292 #define IDXGIOutput5_CheckOverlaySupport(This,enum_format,concerned_device,flags) (This)->lpVtbl->CheckOverlaySupport(This,enum_format,concerned_device,flags)
293 /*** IDXGIOutput4 methods ***/
294 #define IDXGIOutput5_CheckOverlayColorSpaceSupport(This,format,colour_space,device,flags) (This)->lpVtbl->CheckOverlayColorSpaceSupport(This,format,colour_space,device,flags)
295 /*** IDXGIOutput5 methods ***/
296 #define IDXGIOutput5_DuplicateOutput1(This,device,flags,format_count,formats,duplication) (This)->lpVtbl->DuplicateOutput1(This,device,flags,format_count,formats,duplication)
297 #else
298 /*** IUnknown methods ***/
299 static FORCEINLINE HRESULT IDXGIOutput5_QueryInterface(IDXGIOutput5* This,REFIID riid,void **ppvObject) {
300     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
301 }
302 static FORCEINLINE ULONG IDXGIOutput5_AddRef(IDXGIOutput5* This) {
303     return This->lpVtbl->AddRef(This);
304 }
305 static FORCEINLINE ULONG IDXGIOutput5_Release(IDXGIOutput5* This) {
306     return This->lpVtbl->Release(This);
307 }
308 /*** IDXGIObject methods ***/
309 static FORCEINLINE HRESULT IDXGIOutput5_SetPrivateData(IDXGIOutput5* This,REFGUID guid,UINT data_size,const void *data) {
310     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
311 }
312 static FORCEINLINE HRESULT IDXGIOutput5_SetPrivateDataInterface(IDXGIOutput5* This,REFGUID guid,const IUnknown *object) {
313     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
314 }
315 static FORCEINLINE HRESULT IDXGIOutput5_GetPrivateData(IDXGIOutput5* This,REFGUID guid,UINT *data_size,void *data) {
316     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
317 }
318 static FORCEINLINE HRESULT IDXGIOutput5_GetParent(IDXGIOutput5* This,REFIID riid,void **parent) {
319     return This->lpVtbl->GetParent(This,riid,parent);
320 }
321 /*** IDXGIOutput methods ***/
322 static FORCEINLINE HRESULT IDXGIOutput5_GetDesc(IDXGIOutput5* This,DXGI_OUTPUT_DESC *desc) {
323     return This->lpVtbl->GetDesc(This,desc);
324 }
325 static FORCEINLINE HRESULT IDXGIOutput5_GetDisplayModeList(IDXGIOutput5* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) {
326     return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc);
327 }
328 static FORCEINLINE HRESULT IDXGIOutput5_FindClosestMatchingMode(IDXGIOutput5* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) {
329     return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device);
330 }
331 static FORCEINLINE HRESULT IDXGIOutput5_WaitForVBlank(IDXGIOutput5* This) {
332     return This->lpVtbl->WaitForVBlank(This);
333 }
334 static FORCEINLINE HRESULT IDXGIOutput5_TakeOwnership(IDXGIOutput5* This,IUnknown *device,WINBOOL exclusive) {
335     return This->lpVtbl->TakeOwnership(This,device,exclusive);
336 }
337 static FORCEINLINE void IDXGIOutput5_ReleaseOwnership(IDXGIOutput5* This) {
338     This->lpVtbl->ReleaseOwnership(This);
339 }
340 static FORCEINLINE HRESULT IDXGIOutput5_GetGammaControlCapabilities(IDXGIOutput5* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) {
341     return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps);
342 }
343 static FORCEINLINE HRESULT IDXGIOutput5_SetGammaControl(IDXGIOutput5* This,const DXGI_GAMMA_CONTROL *gamma_control) {
344     return This->lpVtbl->SetGammaControl(This,gamma_control);
345 }
346 static FORCEINLINE HRESULT IDXGIOutput5_GetGammaControl(IDXGIOutput5* This,DXGI_GAMMA_CONTROL *gamma_control) {
347     return This->lpVtbl->GetGammaControl(This,gamma_control);
348 }
349 static FORCEINLINE HRESULT IDXGIOutput5_SetDisplaySurface(IDXGIOutput5* This,IDXGISurface *surface) {
350     return This->lpVtbl->SetDisplaySurface(This,surface);
351 }
352 static FORCEINLINE HRESULT IDXGIOutput5_GetDisplaySurfaceData(IDXGIOutput5* This,IDXGISurface *surface) {
353     return This->lpVtbl->GetDisplaySurfaceData(This,surface);
354 }
355 static FORCEINLINE HRESULT IDXGIOutput5_GetFrameStatistics(IDXGIOutput5* This,DXGI_FRAME_STATISTICS *stats) {
356     return This->lpVtbl->GetFrameStatistics(This,stats);
357 }
358 /*** IDXGIOutput1 methods ***/
359 static FORCEINLINE HRESULT IDXGIOutput5_GetDisplayModeList1(IDXGIOutput5* This,DXGI_FORMAT enum_format,UINT flags,UINT *num_modes,DXGI_MODE_DESC1 *desc) {
360     return This->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc);
361 }
362 static FORCEINLINE HRESULT IDXGIOutput5_FindClosestMatchingMode1(IDXGIOutput5* This,const DXGI_MODE_DESC1 *mode_to_match,DXGI_MODE_DESC1 *closest_match,IUnknown *concerned_device) {
363     return This->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device);
364 }
365 static FORCEINLINE HRESULT IDXGIOutput5_GetDisplaySurfaceData1(IDXGIOutput5* This,IDXGIResource *destination) {
366     return This->lpVtbl->GetDisplaySurfaceData1(This,destination);
367 }
368 static FORCEINLINE HRESULT IDXGIOutput5_DuplicateOutput(IDXGIOutput5* This,IUnknown *device,IDXGIOutputDuplication **output_duplication) {
369     return This->lpVtbl->DuplicateOutput(This,device,output_duplication);
370 }
371 /*** IDXGIOutput2 methods ***/
372 static FORCEINLINE WINBOOL IDXGIOutput5_SupportsOverlays(IDXGIOutput5* This) {
373     return This->lpVtbl->SupportsOverlays(This);
374 }
375 /*** IDXGIOutput3 methods ***/
376 static FORCEINLINE HRESULT IDXGIOutput5_CheckOverlaySupport(IDXGIOutput5* This,DXGI_FORMAT enum_format,IUnknown *concerned_device,UINT *flags) {
377     return This->lpVtbl->CheckOverlaySupport(This,enum_format,concerned_device,flags);
378 }
379 /*** IDXGIOutput4 methods ***/
380 static FORCEINLINE HRESULT IDXGIOutput5_CheckOverlayColorSpaceSupport(IDXGIOutput5* This,DXGI_FORMAT format,DXGI_COLOR_SPACE_TYPE colour_space,IUnknown *device,UINT *flags) {
381     return This->lpVtbl->CheckOverlayColorSpaceSupport(This,format,colour_space,device,flags);
382 }
383 /*** IDXGIOutput5 methods ***/
384 static FORCEINLINE HRESULT IDXGIOutput5_DuplicateOutput1(IDXGIOutput5* This,IUnknown *device,UINT flags,UINT format_count,const DXGI_FORMAT *formats,IDXGIOutputDuplication **duplication) {
385     return This->lpVtbl->DuplicateOutput1(This,device,flags,format_count,formats,duplication);
386 }
387 #endif
388 #endif
389 
390 #endif
391 
392 
393 #endif  /* __IDXGIOutput5_INTERFACE_DEFINED__ */
394 
395 /*****************************************************************************
396  * IDXGISwapChain4 interface
397  */
398 #ifndef __IDXGISwapChain4_INTERFACE_DEFINED__
399 #define __IDXGISwapChain4_INTERFACE_DEFINED__
400 
401 DEFINE_GUID(IID_IDXGISwapChain4, 0x3d585d5a, 0xbd4a, 0x489e, 0xb1,0xf4, 0x3d,0xbc,0xb6,0x45,0x2f,0xfb);
402 #if defined(__cplusplus) && !defined(CINTERFACE)
403 MIDL_INTERFACE("3d585d5a-bd4a-489e-b1f4-3dbcb6452ffb")
404 IDXGISwapChain4 : public IDXGISwapChain3
405 {
406     virtual HRESULT STDMETHODCALLTYPE SetHDRMetaData(
407         DXGI_HDR_METADATA_TYPE type,
408         UINT size,
409         void *metadata) = 0;
410 
411 };
412 #ifdef __CRT_UUID_DECL
413 __CRT_UUID_DECL(IDXGISwapChain4, 0x3d585d5a, 0xbd4a, 0x489e, 0xb1,0xf4, 0x3d,0xbc,0xb6,0x45,0x2f,0xfb)
414 #endif
415 #else
416 typedef struct IDXGISwapChain4Vtbl {
417     BEGIN_INTERFACE
418 
419     /*** IUnknown methods ***/
420     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
421         IDXGISwapChain4 *This,
422         REFIID riid,
423         void **ppvObject);
424 
425     ULONG (STDMETHODCALLTYPE *AddRef)(
426         IDXGISwapChain4 *This);
427 
428     ULONG (STDMETHODCALLTYPE *Release)(
429         IDXGISwapChain4 *This);
430 
431     /*** IDXGIObject methods ***/
432     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
433         IDXGISwapChain4 *This,
434         REFGUID guid,
435         UINT data_size,
436         const void *data);
437 
438     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
439         IDXGISwapChain4 *This,
440         REFGUID guid,
441         const IUnknown *object);
442 
443     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
444         IDXGISwapChain4 *This,
445         REFGUID guid,
446         UINT *data_size,
447         void *data);
448 
449     HRESULT (STDMETHODCALLTYPE *GetParent)(
450         IDXGISwapChain4 *This,
451         REFIID riid,
452         void **parent);
453 
454     /*** IDXGIDeviceSubObject methods ***/
455     HRESULT (STDMETHODCALLTYPE *GetDevice)(
456         IDXGISwapChain4 *This,
457         REFIID riid,
458         void **device);
459 
460     /*** IDXGISwapChain methods ***/
461     HRESULT (STDMETHODCALLTYPE *Present)(
462         IDXGISwapChain4 *This,
463         UINT sync_interval,
464         UINT flags);
465 
466     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
467         IDXGISwapChain4 *This,
468         UINT buffer_idx,
469         REFIID riid,
470         void **surface);
471 
472     HRESULT (STDMETHODCALLTYPE *SetFullscreenState)(
473         IDXGISwapChain4 *This,
474         WINBOOL fullscreen,
475         IDXGIOutput *target);
476 
477     HRESULT (STDMETHODCALLTYPE *GetFullscreenState)(
478         IDXGISwapChain4 *This,
479         WINBOOL *fullscreen,
480         IDXGIOutput **target);
481 
482     HRESULT (STDMETHODCALLTYPE *GetDesc)(
483         IDXGISwapChain4 *This,
484         DXGI_SWAP_CHAIN_DESC *desc);
485 
486     HRESULT (STDMETHODCALLTYPE *ResizeBuffers)(
487         IDXGISwapChain4 *This,
488         UINT buffer_count,
489         UINT width,
490         UINT height,
491         DXGI_FORMAT format,
492         UINT flags);
493 
494     HRESULT (STDMETHODCALLTYPE *ResizeTarget)(
495         IDXGISwapChain4 *This,
496         const DXGI_MODE_DESC *target_mode_desc);
497 
498     HRESULT (STDMETHODCALLTYPE *GetContainingOutput)(
499         IDXGISwapChain4 *This,
500         IDXGIOutput **output);
501 
502     HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
503         IDXGISwapChain4 *This,
504         DXGI_FRAME_STATISTICS *stats);
505 
506     HRESULT (STDMETHODCALLTYPE *GetLastPresentCount)(
507         IDXGISwapChain4 *This,
508         UINT *last_present_count);
509 
510     /*** IDXGISwapChain1 methods ***/
511     HRESULT (STDMETHODCALLTYPE *GetDesc1)(
512         IDXGISwapChain4 *This,
513         DXGI_SWAP_CHAIN_DESC1 *pDesc);
514 
515     HRESULT (STDMETHODCALLTYPE *GetFullscreenDesc)(
516         IDXGISwapChain4 *This,
517         DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc);
518 
519     HRESULT (STDMETHODCALLTYPE *GetHwnd)(
520         IDXGISwapChain4 *This,
521         HWND *pHwnd);
522 
523     HRESULT (STDMETHODCALLTYPE *GetCoreWindow)(
524         IDXGISwapChain4 *This,
525         REFIID refiid,
526         void **ppUnk);
527 
528     HRESULT (STDMETHODCALLTYPE *Present1)(
529         IDXGISwapChain4 *This,
530         UINT SyncInterval,
531         UINT PresentFlags,
532         const DXGI_PRESENT_PARAMETERS *pPresentParameters);
533 
534     WINBOOL (STDMETHODCALLTYPE *IsTemporaryMonoSupported)(
535         IDXGISwapChain4 *This);
536 
537     HRESULT (STDMETHODCALLTYPE *GetRestrictToOutput)(
538         IDXGISwapChain4 *This,
539         IDXGIOutput **ppRestrictToOutput);
540 
541     HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)(
542         IDXGISwapChain4 *This,
543         const DXGI_RGBA *pColor);
544 
545     HRESULT (STDMETHODCALLTYPE *GetBackgroundColor)(
546         IDXGISwapChain4 *This,
547         DXGI_RGBA *pColor);
548 
549     HRESULT (STDMETHODCALLTYPE *SetRotation)(
550         IDXGISwapChain4 *This,
551         DXGI_MODE_ROTATION Rotation);
552 
553     HRESULT (STDMETHODCALLTYPE *GetRotation)(
554         IDXGISwapChain4 *This,
555         DXGI_MODE_ROTATION *pRotation);
556 
557     /*** IDXGISwapChain2 methods ***/
558     HRESULT (STDMETHODCALLTYPE *SetSourceSize)(
559         IDXGISwapChain4 *This,
560         UINT width,
561         UINT height);
562 
563     HRESULT (STDMETHODCALLTYPE *GetSourceSize)(
564         IDXGISwapChain4 *This,
565         UINT *width,
566         UINT *height);
567 
568     HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)(
569         IDXGISwapChain4 *This,
570         UINT max_latency);
571 
572     HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)(
573         IDXGISwapChain4 *This,
574         UINT *max_latency);
575 
576     HANDLE (STDMETHODCALLTYPE *GetFrameLatencyWaitableObject)(
577         IDXGISwapChain4 *This);
578 
579     HRESULT (STDMETHODCALLTYPE *SetMatrixTransform)(
580         IDXGISwapChain4 *This,
581         const DXGI_MATRIX_3X2_F *matrix);
582 
583     HRESULT (STDMETHODCALLTYPE *GetMatrixTransform)(
584         IDXGISwapChain4 *This,
585         DXGI_MATRIX_3X2_F *matrix);
586 
587     /*** IDXGISwapChain3 methods ***/
588     UINT (STDMETHODCALLTYPE *GetCurrentBackBufferIndex)(
589         IDXGISwapChain4 *This);
590 
591     HRESULT (STDMETHODCALLTYPE *CheckColorSpaceSupport)(
592         IDXGISwapChain4 *This,
593         DXGI_COLOR_SPACE_TYPE colour_space,
594         UINT *colour_space_support);
595 
596     HRESULT (STDMETHODCALLTYPE *SetColorSpace1)(
597         IDXGISwapChain4 *This,
598         DXGI_COLOR_SPACE_TYPE colour_space);
599 
600     HRESULT (STDMETHODCALLTYPE *ResizeBuffers1)(
601         IDXGISwapChain4 *This,
602         UINT buffer_count,
603         UINT width,
604         UINT height,
605         DXGI_FORMAT format,
606         UINT flags,
607         const UINT *node_mask,
608         IUnknown *const *present_queue);
609 
610     /*** IDXGISwapChain4 methods ***/
611     HRESULT (STDMETHODCALLTYPE *SetHDRMetaData)(
612         IDXGISwapChain4 *This,
613         DXGI_HDR_METADATA_TYPE type,
614         UINT size,
615         void *metadata);
616 
617     END_INTERFACE
618 } IDXGISwapChain4Vtbl;
619 
620 interface IDXGISwapChain4 {
621     CONST_VTBL IDXGISwapChain4Vtbl* lpVtbl;
622 };
623 
624 #ifdef COBJMACROS
625 #ifndef WIDL_C_INLINE_WRAPPERS
626 /*** IUnknown methods ***/
627 #define IDXGISwapChain4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
628 #define IDXGISwapChain4_AddRef(This) (This)->lpVtbl->AddRef(This)
629 #define IDXGISwapChain4_Release(This) (This)->lpVtbl->Release(This)
630 /*** IDXGIObject methods ***/
631 #define IDXGISwapChain4_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
632 #define IDXGISwapChain4_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
633 #define IDXGISwapChain4_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
634 #define IDXGISwapChain4_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
635 /*** IDXGIDeviceSubObject methods ***/
636 #define IDXGISwapChain4_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
637 /*** IDXGISwapChain methods ***/
638 #define IDXGISwapChain4_Present(This,sync_interval,flags) (This)->lpVtbl->Present(This,sync_interval,flags)
639 #define IDXGISwapChain4_GetBuffer(This,buffer_idx,riid,surface) (This)->lpVtbl->GetBuffer(This,buffer_idx,riid,surface)
640 #define IDXGISwapChain4_SetFullscreenState(This,fullscreen,target) (This)->lpVtbl->SetFullscreenState(This,fullscreen,target)
641 #define IDXGISwapChain4_GetFullscreenState(This,fullscreen,target) (This)->lpVtbl->GetFullscreenState(This,fullscreen,target)
642 #define IDXGISwapChain4_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
643 #define IDXGISwapChain4_ResizeBuffers(This,buffer_count,width,height,format,flags) (This)->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags)
644 #define IDXGISwapChain4_ResizeTarget(This,target_mode_desc) (This)->lpVtbl->ResizeTarget(This,target_mode_desc)
645 #define IDXGISwapChain4_GetContainingOutput(This,output) (This)->lpVtbl->GetContainingOutput(This,output)
646 #define IDXGISwapChain4_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
647 #define IDXGISwapChain4_GetLastPresentCount(This,last_present_count) (This)->lpVtbl->GetLastPresentCount(This,last_present_count)
648 /*** IDXGISwapChain1 methods ***/
649 #define IDXGISwapChain4_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
650 #define IDXGISwapChain4_GetFullscreenDesc(This,pDesc) (This)->lpVtbl->GetFullscreenDesc(This,pDesc)
651 #define IDXGISwapChain4_GetHwnd(This,pHwnd) (This)->lpVtbl->GetHwnd(This,pHwnd)
652 #define IDXGISwapChain4_GetCoreWindow(This,refiid,ppUnk) (This)->lpVtbl->GetCoreWindow(This,refiid,ppUnk)
653 #define IDXGISwapChain4_Present1(This,SyncInterval,PresentFlags,pPresentParameters) (This)->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters)
654 #define IDXGISwapChain4_IsTemporaryMonoSupported(This) (This)->lpVtbl->IsTemporaryMonoSupported(This)
655 #define IDXGISwapChain4_GetRestrictToOutput(This,ppRestrictToOutput) (This)->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput)
656 #define IDXGISwapChain4_SetBackgroundColor(This,pColor) (This)->lpVtbl->SetBackgroundColor(This,pColor)
657 #define IDXGISwapChain4_GetBackgroundColor(This,pColor) (This)->lpVtbl->GetBackgroundColor(This,pColor)
658 #define IDXGISwapChain4_SetRotation(This,Rotation) (This)->lpVtbl->SetRotation(This,Rotation)
659 #define IDXGISwapChain4_GetRotation(This,pRotation) (This)->lpVtbl->GetRotation(This,pRotation)
660 /*** IDXGISwapChain2 methods ***/
661 #define IDXGISwapChain4_SetSourceSize(This,width,height) (This)->lpVtbl->SetSourceSize(This,width,height)
662 #define IDXGISwapChain4_GetSourceSize(This,width,height) (This)->lpVtbl->GetSourceSize(This,width,height)
663 #define IDXGISwapChain4_SetMaximumFrameLatency(This,max_latency) (This)->lpVtbl->SetMaximumFrameLatency(This,max_latency)
664 #define IDXGISwapChain4_GetMaximumFrameLatency(This,max_latency) (This)->lpVtbl->GetMaximumFrameLatency(This,max_latency)
665 #define IDXGISwapChain4_GetFrameLatencyWaitableObject(This) (This)->lpVtbl->GetFrameLatencyWaitableObject(This)
666 #define IDXGISwapChain4_SetMatrixTransform(This,matrix) (This)->lpVtbl->SetMatrixTransform(This,matrix)
667 #define IDXGISwapChain4_GetMatrixTransform(This,matrix) (This)->lpVtbl->GetMatrixTransform(This,matrix)
668 /*** IDXGISwapChain3 methods ***/
669 #define IDXGISwapChain4_GetCurrentBackBufferIndex(This) (This)->lpVtbl->GetCurrentBackBufferIndex(This)
670 #define IDXGISwapChain4_CheckColorSpaceSupport(This,colour_space,colour_space_support) (This)->lpVtbl->CheckColorSpaceSupport(This,colour_space,colour_space_support)
671 #define IDXGISwapChain4_SetColorSpace1(This,colour_space) (This)->lpVtbl->SetColorSpace1(This,colour_space)
672 #define IDXGISwapChain4_ResizeBuffers1(This,buffer_count,width,height,format,flags,node_mask,present_queue) (This)->lpVtbl->ResizeBuffers1(This,buffer_count,width,height,format,flags,node_mask,present_queue)
673 /*** IDXGISwapChain4 methods ***/
674 #define IDXGISwapChain4_SetHDRMetaData(This,type,size,metadata) (This)->lpVtbl->SetHDRMetaData(This,type,size,metadata)
675 #else
676 /*** IUnknown methods ***/
677 static FORCEINLINE HRESULT IDXGISwapChain4_QueryInterface(IDXGISwapChain4* This,REFIID riid,void **ppvObject) {
678     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
679 }
680 static FORCEINLINE ULONG IDXGISwapChain4_AddRef(IDXGISwapChain4* This) {
681     return This->lpVtbl->AddRef(This);
682 }
683 static FORCEINLINE ULONG IDXGISwapChain4_Release(IDXGISwapChain4* This) {
684     return This->lpVtbl->Release(This);
685 }
686 /*** IDXGIObject methods ***/
687 static FORCEINLINE HRESULT IDXGISwapChain4_SetPrivateData(IDXGISwapChain4* This,REFGUID guid,UINT data_size,const void *data) {
688     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
689 }
690 static FORCEINLINE HRESULT IDXGISwapChain4_SetPrivateDataInterface(IDXGISwapChain4* This,REFGUID guid,const IUnknown *object) {
691     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
692 }
693 static FORCEINLINE HRESULT IDXGISwapChain4_GetPrivateData(IDXGISwapChain4* This,REFGUID guid,UINT *data_size,void *data) {
694     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
695 }
696 static FORCEINLINE HRESULT IDXGISwapChain4_GetParent(IDXGISwapChain4* This,REFIID riid,void **parent) {
697     return This->lpVtbl->GetParent(This,riid,parent);
698 }
699 /*** IDXGIDeviceSubObject methods ***/
700 static FORCEINLINE HRESULT IDXGISwapChain4_GetDevice(IDXGISwapChain4* This,REFIID riid,void **device) {
701     return This->lpVtbl->GetDevice(This,riid,device);
702 }
703 /*** IDXGISwapChain methods ***/
704 static FORCEINLINE HRESULT IDXGISwapChain4_Present(IDXGISwapChain4* This,UINT sync_interval,UINT flags) {
705     return This->lpVtbl->Present(This,sync_interval,flags);
706 }
707 static FORCEINLINE HRESULT IDXGISwapChain4_GetBuffer(IDXGISwapChain4* This,UINT buffer_idx,REFIID riid,void **surface) {
708     return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface);
709 }
710 static FORCEINLINE HRESULT IDXGISwapChain4_SetFullscreenState(IDXGISwapChain4* This,WINBOOL fullscreen,IDXGIOutput *target) {
711     return This->lpVtbl->SetFullscreenState(This,fullscreen,target);
712 }
713 static FORCEINLINE HRESULT IDXGISwapChain4_GetFullscreenState(IDXGISwapChain4* This,WINBOOL *fullscreen,IDXGIOutput **target) {
714     return This->lpVtbl->GetFullscreenState(This,fullscreen,target);
715 }
716 static FORCEINLINE HRESULT IDXGISwapChain4_GetDesc(IDXGISwapChain4* This,DXGI_SWAP_CHAIN_DESC *desc) {
717     return This->lpVtbl->GetDesc(This,desc);
718 }
719 static FORCEINLINE HRESULT IDXGISwapChain4_ResizeBuffers(IDXGISwapChain4* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags) {
720     return This->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags);
721 }
722 static FORCEINLINE HRESULT IDXGISwapChain4_ResizeTarget(IDXGISwapChain4* This,const DXGI_MODE_DESC *target_mode_desc) {
723     return This->lpVtbl->ResizeTarget(This,target_mode_desc);
724 }
725 static FORCEINLINE HRESULT IDXGISwapChain4_GetContainingOutput(IDXGISwapChain4* This,IDXGIOutput **output) {
726     return This->lpVtbl->GetContainingOutput(This,output);
727 }
728 static FORCEINLINE HRESULT IDXGISwapChain4_GetFrameStatistics(IDXGISwapChain4* This,DXGI_FRAME_STATISTICS *stats) {
729     return This->lpVtbl->GetFrameStatistics(This,stats);
730 }
731 static FORCEINLINE HRESULT IDXGISwapChain4_GetLastPresentCount(IDXGISwapChain4* This,UINT *last_present_count) {
732     return This->lpVtbl->GetLastPresentCount(This,last_present_count);
733 }
734 /*** IDXGISwapChain1 methods ***/
735 static FORCEINLINE HRESULT IDXGISwapChain4_GetDesc1(IDXGISwapChain4* This,DXGI_SWAP_CHAIN_DESC1 *pDesc) {
736     return This->lpVtbl->GetDesc1(This,pDesc);
737 }
738 static FORCEINLINE HRESULT IDXGISwapChain4_GetFullscreenDesc(IDXGISwapChain4* This,DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) {
739     return This->lpVtbl->GetFullscreenDesc(This,pDesc);
740 }
741 static FORCEINLINE HRESULT IDXGISwapChain4_GetHwnd(IDXGISwapChain4* This,HWND *pHwnd) {
742     return This->lpVtbl->GetHwnd(This,pHwnd);
743 }
744 static FORCEINLINE HRESULT IDXGISwapChain4_GetCoreWindow(IDXGISwapChain4* This,REFIID refiid,void **ppUnk) {
745     return This->lpVtbl->GetCoreWindow(This,refiid,ppUnk);
746 }
747 static FORCEINLINE HRESULT IDXGISwapChain4_Present1(IDXGISwapChain4* This,UINT SyncInterval,UINT PresentFlags,const DXGI_PRESENT_PARAMETERS *pPresentParameters) {
748     return This->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters);
749 }
750 static FORCEINLINE WINBOOL IDXGISwapChain4_IsTemporaryMonoSupported(IDXGISwapChain4* This) {
751     return This->lpVtbl->IsTemporaryMonoSupported(This);
752 }
753 static FORCEINLINE HRESULT IDXGISwapChain4_GetRestrictToOutput(IDXGISwapChain4* This,IDXGIOutput **ppRestrictToOutput) {
754     return This->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput);
755 }
756 static FORCEINLINE HRESULT IDXGISwapChain4_SetBackgroundColor(IDXGISwapChain4* This,const DXGI_RGBA *pColor) {
757     return This->lpVtbl->SetBackgroundColor(This,pColor);
758 }
759 static FORCEINLINE HRESULT IDXGISwapChain4_GetBackgroundColor(IDXGISwapChain4* This,DXGI_RGBA *pColor) {
760     return This->lpVtbl->GetBackgroundColor(This,pColor);
761 }
762 static FORCEINLINE HRESULT IDXGISwapChain4_SetRotation(IDXGISwapChain4* This,DXGI_MODE_ROTATION Rotation) {
763     return This->lpVtbl->SetRotation(This,Rotation);
764 }
765 static FORCEINLINE HRESULT IDXGISwapChain4_GetRotation(IDXGISwapChain4* This,DXGI_MODE_ROTATION *pRotation) {
766     return This->lpVtbl->GetRotation(This,pRotation);
767 }
768 /*** IDXGISwapChain2 methods ***/
769 static FORCEINLINE HRESULT IDXGISwapChain4_SetSourceSize(IDXGISwapChain4* This,UINT width,UINT height) {
770     return This->lpVtbl->SetSourceSize(This,width,height);
771 }
772 static FORCEINLINE HRESULT IDXGISwapChain4_GetSourceSize(IDXGISwapChain4* This,UINT *width,UINT *height) {
773     return This->lpVtbl->GetSourceSize(This,width,height);
774 }
775 static FORCEINLINE HRESULT IDXGISwapChain4_SetMaximumFrameLatency(IDXGISwapChain4* This,UINT max_latency) {
776     return This->lpVtbl->SetMaximumFrameLatency(This,max_latency);
777 }
778 static FORCEINLINE HRESULT IDXGISwapChain4_GetMaximumFrameLatency(IDXGISwapChain4* This,UINT *max_latency) {
779     return This->lpVtbl->GetMaximumFrameLatency(This,max_latency);
780 }
781 static FORCEINLINE HANDLE IDXGISwapChain4_GetFrameLatencyWaitableObject(IDXGISwapChain4* This) {
782     return This->lpVtbl->GetFrameLatencyWaitableObject(This);
783 }
784 static FORCEINLINE HRESULT IDXGISwapChain4_SetMatrixTransform(IDXGISwapChain4* This,const DXGI_MATRIX_3X2_F *matrix) {
785     return This->lpVtbl->SetMatrixTransform(This,matrix);
786 }
787 static FORCEINLINE HRESULT IDXGISwapChain4_GetMatrixTransform(IDXGISwapChain4* This,DXGI_MATRIX_3X2_F *matrix) {
788     return This->lpVtbl->GetMatrixTransform(This,matrix);
789 }
790 /*** IDXGISwapChain3 methods ***/
791 static FORCEINLINE UINT IDXGISwapChain4_GetCurrentBackBufferIndex(IDXGISwapChain4* This) {
792     return This->lpVtbl->GetCurrentBackBufferIndex(This);
793 }
794 static FORCEINLINE HRESULT IDXGISwapChain4_CheckColorSpaceSupport(IDXGISwapChain4* This,DXGI_COLOR_SPACE_TYPE colour_space,UINT *colour_space_support) {
795     return This->lpVtbl->CheckColorSpaceSupport(This,colour_space,colour_space_support);
796 }
797 static FORCEINLINE HRESULT IDXGISwapChain4_SetColorSpace1(IDXGISwapChain4* This,DXGI_COLOR_SPACE_TYPE colour_space) {
798     return This->lpVtbl->SetColorSpace1(This,colour_space);
799 }
800 static FORCEINLINE HRESULT IDXGISwapChain4_ResizeBuffers1(IDXGISwapChain4* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags,const UINT *node_mask,IUnknown *const *present_queue) {
801     return This->lpVtbl->ResizeBuffers1(This,buffer_count,width,height,format,flags,node_mask,present_queue);
802 }
803 /*** IDXGISwapChain4 methods ***/
804 static FORCEINLINE HRESULT IDXGISwapChain4_SetHDRMetaData(IDXGISwapChain4* This,DXGI_HDR_METADATA_TYPE type,UINT size,void *metadata) {
805     return This->lpVtbl->SetHDRMetaData(This,type,size,metadata);
806 }
807 #endif
808 #endif
809 
810 #endif
811 
812 
813 #endif  /* __IDXGISwapChain4_INTERFACE_DEFINED__ */
814 
815 /*****************************************************************************
816  * IDXGIDevice4 interface
817  */
818 #ifndef __IDXGIDevice4_INTERFACE_DEFINED__
819 #define __IDXGIDevice4_INTERFACE_DEFINED__
820 
821 DEFINE_GUID(IID_IDXGIDevice4, 0x95b4f95f, 0xd8da, 0x4ca4, 0x9e,0xe6, 0x3b,0x76,0xd5,0x96,0x8a,0x10);
822 #if defined(__cplusplus) && !defined(CINTERFACE)
823 MIDL_INTERFACE("95b4f95f-d8da-4ca4-9ee6-3b76d5968a10")
824 IDXGIDevice4 : public IDXGIDevice3
825 {
826     virtual HRESULT STDMETHODCALLTYPE OfferResources1(
827         UINT resource_count,
828         IDXGIResource *const *resources,
829         DXGI_OFFER_RESOURCE_PRIORITY priority,
830         UINT flags) = 0;
831 
832     virtual HRESULT STDMETHODCALLTYPE ReclaimResources1(
833         UINT resource_count,
834         IDXGIResource *const *resources,
835         DXGI_RECLAIM_RESOURCE_RESULTS *results) = 0;
836 
837 };
838 #ifdef __CRT_UUID_DECL
839 __CRT_UUID_DECL(IDXGIDevice4, 0x95b4f95f, 0xd8da, 0x4ca4, 0x9e,0xe6, 0x3b,0x76,0xd5,0x96,0x8a,0x10)
840 #endif
841 #else
842 typedef struct IDXGIDevice4Vtbl {
843     BEGIN_INTERFACE
844 
845     /*** IUnknown methods ***/
846     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
847         IDXGIDevice4 *This,
848         REFIID riid,
849         void **ppvObject);
850 
851     ULONG (STDMETHODCALLTYPE *AddRef)(
852         IDXGIDevice4 *This);
853 
854     ULONG (STDMETHODCALLTYPE *Release)(
855         IDXGIDevice4 *This);
856 
857     /*** IDXGIObject methods ***/
858     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
859         IDXGIDevice4 *This,
860         REFGUID guid,
861         UINT data_size,
862         const void *data);
863 
864     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
865         IDXGIDevice4 *This,
866         REFGUID guid,
867         const IUnknown *object);
868 
869     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
870         IDXGIDevice4 *This,
871         REFGUID guid,
872         UINT *data_size,
873         void *data);
874 
875     HRESULT (STDMETHODCALLTYPE *GetParent)(
876         IDXGIDevice4 *This,
877         REFIID riid,
878         void **parent);
879 
880     /*** IDXGIDevice methods ***/
881     HRESULT (STDMETHODCALLTYPE *GetAdapter)(
882         IDXGIDevice4 *This,
883         IDXGIAdapter **adapter);
884 
885     HRESULT (STDMETHODCALLTYPE *CreateSurface)(
886         IDXGIDevice4 *This,
887         const DXGI_SURFACE_DESC *desc,
888         UINT surface_count,
889         DXGI_USAGE usage,
890         const DXGI_SHARED_RESOURCE *shared_resource,
891         IDXGISurface **surface);
892 
893     HRESULT (STDMETHODCALLTYPE *QueryResourceResidency)(
894         IDXGIDevice4 *This,
895         IUnknown *const *resources,
896         DXGI_RESIDENCY *residency,
897         UINT resource_count);
898 
899     HRESULT (STDMETHODCALLTYPE *SetGPUThreadPriority)(
900         IDXGIDevice4 *This,
901         INT priority);
902 
903     HRESULT (STDMETHODCALLTYPE *GetGPUThreadPriority)(
904         IDXGIDevice4 *This,
905         INT *priority);
906 
907     /*** IDXGIDevice1 methods ***/
908     HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)(
909         IDXGIDevice4 *This,
910         UINT MaxLatency);
911 
912     HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)(
913         IDXGIDevice4 *This,
914         UINT *pMaxLatency);
915 
916     /*** IDXGIDevice2 methods ***/
917     HRESULT (STDMETHODCALLTYPE *OfferResources)(
918         IDXGIDevice4 *This,
919         UINT NumResources,
920         IDXGIResource *const *ppResources,
921         DXGI_OFFER_RESOURCE_PRIORITY Priority);
922 
923     HRESULT (STDMETHODCALLTYPE *ReclaimResources)(
924         IDXGIDevice4 *This,
925         UINT NumResources,
926         IDXGIResource *const *ppResources,
927         WINBOOL *pDiscarded);
928 
929     HRESULT (STDMETHODCALLTYPE *EnqueueSetEvent)(
930         IDXGIDevice4 *This,
931         HANDLE hEvent);
932 
933     /*** IDXGIDevice3 methods ***/
934     void (STDMETHODCALLTYPE *Trim)(
935         IDXGIDevice4 *This);
936 
937     /*** IDXGIDevice4 methods ***/
938     HRESULT (STDMETHODCALLTYPE *OfferResources1)(
939         IDXGIDevice4 *This,
940         UINT resource_count,
941         IDXGIResource *const *resources,
942         DXGI_OFFER_RESOURCE_PRIORITY priority,
943         UINT flags);
944 
945     HRESULT (STDMETHODCALLTYPE *ReclaimResources1)(
946         IDXGIDevice4 *This,
947         UINT resource_count,
948         IDXGIResource *const *resources,
949         DXGI_RECLAIM_RESOURCE_RESULTS *results);
950 
951     END_INTERFACE
952 } IDXGIDevice4Vtbl;
953 
954 interface IDXGIDevice4 {
955     CONST_VTBL IDXGIDevice4Vtbl* lpVtbl;
956 };
957 
958 #ifdef COBJMACROS
959 #ifndef WIDL_C_INLINE_WRAPPERS
960 /*** IUnknown methods ***/
961 #define IDXGIDevice4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
962 #define IDXGIDevice4_AddRef(This) (This)->lpVtbl->AddRef(This)
963 #define IDXGIDevice4_Release(This) (This)->lpVtbl->Release(This)
964 /*** IDXGIObject methods ***/
965 #define IDXGIDevice4_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
966 #define IDXGIDevice4_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
967 #define IDXGIDevice4_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
968 #define IDXGIDevice4_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
969 /*** IDXGIDevice methods ***/
970 #define IDXGIDevice4_GetAdapter(This,adapter) (This)->lpVtbl->GetAdapter(This,adapter)
971 #define IDXGIDevice4_CreateSurface(This,desc,surface_count,usage,shared_resource,surface) (This)->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface)
972 #define IDXGIDevice4_QueryResourceResidency(This,resources,residency,resource_count) (This)->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count)
973 #define IDXGIDevice4_SetGPUThreadPriority(This,priority) (This)->lpVtbl->SetGPUThreadPriority(This,priority)
974 #define IDXGIDevice4_GetGPUThreadPriority(This,priority) (This)->lpVtbl->GetGPUThreadPriority(This,priority)
975 /*** IDXGIDevice1 methods ***/
976 #define IDXGIDevice4_SetMaximumFrameLatency(This,MaxLatency) (This)->lpVtbl->SetMaximumFrameLatency(This,MaxLatency)
977 #define IDXGIDevice4_GetMaximumFrameLatency(This,pMaxLatency) (This)->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency)
978 /*** IDXGIDevice2 methods ***/
979 #define IDXGIDevice4_OfferResources(This,NumResources,ppResources,Priority) (This)->lpVtbl->OfferResources(This,NumResources,ppResources,Priority)
980 #define IDXGIDevice4_ReclaimResources(This,NumResources,ppResources,pDiscarded) (This)->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded)
981 #define IDXGIDevice4_EnqueueSetEvent(This,hEvent) (This)->lpVtbl->EnqueueSetEvent(This,hEvent)
982 /*** IDXGIDevice3 methods ***/
983 #define IDXGIDevice4_Trim(This) (This)->lpVtbl->Trim(This)
984 /*** IDXGIDevice4 methods ***/
985 #define IDXGIDevice4_OfferResources1(This,resource_count,resources,priority,flags) (This)->lpVtbl->OfferResources1(This,resource_count,resources,priority,flags)
986 #define IDXGIDevice4_ReclaimResources1(This,resource_count,resources,results) (This)->lpVtbl->ReclaimResources1(This,resource_count,resources,results)
987 #else
988 /*** IUnknown methods ***/
989 static FORCEINLINE HRESULT IDXGIDevice4_QueryInterface(IDXGIDevice4* This,REFIID riid,void **ppvObject) {
990     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
991 }
992 static FORCEINLINE ULONG IDXGIDevice4_AddRef(IDXGIDevice4* This) {
993     return This->lpVtbl->AddRef(This);
994 }
995 static FORCEINLINE ULONG IDXGIDevice4_Release(IDXGIDevice4* This) {
996     return This->lpVtbl->Release(This);
997 }
998 /*** IDXGIObject methods ***/
999 static FORCEINLINE HRESULT IDXGIDevice4_SetPrivateData(IDXGIDevice4* This,REFGUID guid,UINT data_size,const void *data) {
1000     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1001 }
1002 static FORCEINLINE HRESULT IDXGIDevice4_SetPrivateDataInterface(IDXGIDevice4* This,REFGUID guid,const IUnknown *object) {
1003     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1004 }
1005 static FORCEINLINE HRESULT IDXGIDevice4_GetPrivateData(IDXGIDevice4* This,REFGUID guid,UINT *data_size,void *data) {
1006     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1007 }
1008 static FORCEINLINE HRESULT IDXGIDevice4_GetParent(IDXGIDevice4* This,REFIID riid,void **parent) {
1009     return This->lpVtbl->GetParent(This,riid,parent);
1010 }
1011 /*** IDXGIDevice methods ***/
1012 static FORCEINLINE HRESULT IDXGIDevice4_GetAdapter(IDXGIDevice4* This,IDXGIAdapter **adapter) {
1013     return This->lpVtbl->GetAdapter(This,adapter);
1014 }
1015 static FORCEINLINE HRESULT IDXGIDevice4_CreateSurface(IDXGIDevice4* This,const DXGI_SURFACE_DESC *desc,UINT surface_count,DXGI_USAGE usage,const DXGI_SHARED_RESOURCE *shared_resource,IDXGISurface **surface) {
1016     return This->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface);
1017 }
1018 static FORCEINLINE HRESULT IDXGIDevice4_QueryResourceResidency(IDXGIDevice4* This,IUnknown *const *resources,DXGI_RESIDENCY *residency,UINT resource_count) {
1019     return This->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count);
1020 }
1021 static FORCEINLINE HRESULT IDXGIDevice4_SetGPUThreadPriority(IDXGIDevice4* This,INT priority) {
1022     return This->lpVtbl->SetGPUThreadPriority(This,priority);
1023 }
1024 static FORCEINLINE HRESULT IDXGIDevice4_GetGPUThreadPriority(IDXGIDevice4* This,INT *priority) {
1025     return This->lpVtbl->GetGPUThreadPriority(This,priority);
1026 }
1027 /*** IDXGIDevice1 methods ***/
1028 static FORCEINLINE HRESULT IDXGIDevice4_SetMaximumFrameLatency(IDXGIDevice4* This,UINT MaxLatency) {
1029     return This->lpVtbl->SetMaximumFrameLatency(This,MaxLatency);
1030 }
1031 static FORCEINLINE HRESULT IDXGIDevice4_GetMaximumFrameLatency(IDXGIDevice4* This,UINT *pMaxLatency) {
1032     return This->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency);
1033 }
1034 /*** IDXGIDevice2 methods ***/
1035 static FORCEINLINE HRESULT IDXGIDevice4_OfferResources(IDXGIDevice4* This,UINT NumResources,IDXGIResource *const *ppResources,DXGI_OFFER_RESOURCE_PRIORITY Priority) {
1036     return This->lpVtbl->OfferResources(This,NumResources,ppResources,Priority);
1037 }
1038 static FORCEINLINE HRESULT IDXGIDevice4_ReclaimResources(IDXGIDevice4* This,UINT NumResources,IDXGIResource *const *ppResources,WINBOOL *pDiscarded) {
1039     return This->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded);
1040 }
1041 static FORCEINLINE HRESULT IDXGIDevice4_EnqueueSetEvent(IDXGIDevice4* This,HANDLE hEvent) {
1042     return This->lpVtbl->EnqueueSetEvent(This,hEvent);
1043 }
1044 /*** IDXGIDevice3 methods ***/
1045 static FORCEINLINE void IDXGIDevice4_Trim(IDXGIDevice4* This) {
1046     This->lpVtbl->Trim(This);
1047 }
1048 /*** IDXGIDevice4 methods ***/
1049 static FORCEINLINE HRESULT IDXGIDevice4_OfferResources1(IDXGIDevice4* This,UINT resource_count,IDXGIResource *const *resources,DXGI_OFFER_RESOURCE_PRIORITY priority,UINT flags) {
1050     return This->lpVtbl->OfferResources1(This,resource_count,resources,priority,flags);
1051 }
1052 static FORCEINLINE HRESULT IDXGIDevice4_ReclaimResources1(IDXGIDevice4* This,UINT resource_count,IDXGIResource *const *resources,DXGI_RECLAIM_RESOURCE_RESULTS *results) {
1053     return This->lpVtbl->ReclaimResources1(This,resource_count,resources,results);
1054 }
1055 #endif
1056 #endif
1057 
1058 #endif
1059 
1060 
1061 #endif  /* __IDXGIDevice4_INTERFACE_DEFINED__ */
1062 
1063 /*****************************************************************************
1064  * IDXGIFactory5 interface
1065  */
1066 #ifndef __IDXGIFactory5_INTERFACE_DEFINED__
1067 #define __IDXGIFactory5_INTERFACE_DEFINED__
1068 
1069 DEFINE_GUID(IID_IDXGIFactory5, 0x7632e1f5, 0xee65, 0x4dca, 0x87,0xfd, 0x84,0xcd,0x75,0xf8,0x83,0x8d);
1070 #if defined(__cplusplus) && !defined(CINTERFACE)
1071 MIDL_INTERFACE("7632e1f5-ee65-4dca-87fd-84cd75f8838d")
1072 IDXGIFactory5 : public IDXGIFactory4
1073 {
1074     virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
1075         DXGI_FEATURE feature,
1076         void *support_data,
1077         UINT support_data_size) = 0;
1078 
1079 };
1080 #ifdef __CRT_UUID_DECL
1081 __CRT_UUID_DECL(IDXGIFactory5, 0x7632e1f5, 0xee65, 0x4dca, 0x87,0xfd, 0x84,0xcd,0x75,0xf8,0x83,0x8d)
1082 #endif
1083 #else
1084 typedef struct IDXGIFactory5Vtbl {
1085     BEGIN_INTERFACE
1086 
1087     /*** IUnknown methods ***/
1088     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1089         IDXGIFactory5 *This,
1090         REFIID riid,
1091         void **ppvObject);
1092 
1093     ULONG (STDMETHODCALLTYPE *AddRef)(
1094         IDXGIFactory5 *This);
1095 
1096     ULONG (STDMETHODCALLTYPE *Release)(
1097         IDXGIFactory5 *This);
1098 
1099     /*** IDXGIObject methods ***/
1100     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1101         IDXGIFactory5 *This,
1102         REFGUID guid,
1103         UINT data_size,
1104         const void *data);
1105 
1106     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1107         IDXGIFactory5 *This,
1108         REFGUID guid,
1109         const IUnknown *object);
1110 
1111     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1112         IDXGIFactory5 *This,
1113         REFGUID guid,
1114         UINT *data_size,
1115         void *data);
1116 
1117     HRESULT (STDMETHODCALLTYPE *GetParent)(
1118         IDXGIFactory5 *This,
1119         REFIID riid,
1120         void **parent);
1121 
1122     /*** IDXGIFactory methods ***/
1123     HRESULT (STDMETHODCALLTYPE *EnumAdapters)(
1124         IDXGIFactory5 *This,
1125         UINT adapter_idx,
1126         IDXGIAdapter **adapter);
1127 
1128     HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)(
1129         IDXGIFactory5 *This,
1130         HWND window,
1131         UINT flags);
1132 
1133     HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)(
1134         IDXGIFactory5 *This,
1135         HWND *window);
1136 
1137     HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
1138         IDXGIFactory5 *This,
1139         IUnknown *device,
1140         DXGI_SWAP_CHAIN_DESC *desc,
1141         IDXGISwapChain **swapchain);
1142 
1143     HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)(
1144         IDXGIFactory5 *This,
1145         HMODULE swrast,
1146         IDXGIAdapter **adapter);
1147 
1148     /*** IDXGIFactory1 methods ***/
1149     HRESULT (STDMETHODCALLTYPE *EnumAdapters1)(
1150         IDXGIFactory5 *This,
1151         UINT Adapter,
1152         IDXGIAdapter1 **ppAdapter);
1153 
1154     WINBOOL (STDMETHODCALLTYPE *IsCurrent)(
1155         IDXGIFactory5 *This);
1156 
1157     /*** IDXGIFactory2 methods ***/
1158     WINBOOL (STDMETHODCALLTYPE *IsWindowedStereoEnabled)(
1159         IDXGIFactory5 *This);
1160 
1161     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForHwnd)(
1162         IDXGIFactory5 *This,
1163         IUnknown *pDevice,
1164         HWND hWnd,
1165         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1166         const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
1167         IDXGIOutput *pRestrictToOutput,
1168         IDXGISwapChain1 **ppSwapChain);
1169 
1170     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCoreWindow)(
1171         IDXGIFactory5 *This,
1172         IUnknown *pDevice,
1173         IUnknown *pWindow,
1174         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1175         IDXGIOutput *pRestrictToOutput,
1176         IDXGISwapChain1 **ppSwapChain);
1177 
1178     HRESULT (STDMETHODCALLTYPE *GetSharedResourceAdapterLuid)(
1179         IDXGIFactory5 *This,
1180         HANDLE hResource,
1181         LUID *pLuid);
1182 
1183     HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
1184         IDXGIFactory5 *This,
1185         HWND WindowHandle,
1186         UINT wMsg,
1187         DWORD *pdwCookie);
1188 
1189     HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusEvent)(
1190         IDXGIFactory5 *This,
1191         HANDLE hEvent,
1192         DWORD *pdwCookie);
1193 
1194     void (STDMETHODCALLTYPE *UnregisterStereoStatus)(
1195         IDXGIFactory5 *This,
1196         DWORD dwCookie);
1197 
1198     HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
1199         IDXGIFactory5 *This,
1200         HWND WindowHandle,
1201         UINT wMsg,
1202         DWORD *pdwCookie);
1203 
1204     HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusEvent)(
1205         IDXGIFactory5 *This,
1206         HANDLE hEvent,
1207         DWORD *pdwCookie);
1208 
1209     void (STDMETHODCALLTYPE *UnregisterOcclusionStatus)(
1210         IDXGIFactory5 *This,
1211         DWORD dwCookie);
1212 
1213     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForComposition)(
1214         IDXGIFactory5 *This,
1215         IUnknown *pDevice,
1216         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1217         IDXGIOutput *pRestrictToOutput,
1218         IDXGISwapChain1 **ppSwapChain);
1219 
1220     /*** IDXGIFactory3 methods ***/
1221     UINT (STDMETHODCALLTYPE *GetCreationFlags)(
1222         IDXGIFactory5 *This);
1223 
1224     /*** IDXGIFactory4 methods ***/
1225     HRESULT (STDMETHODCALLTYPE *EnumAdapterByLuid)(
1226         IDXGIFactory5 *This,
1227         LUID luid,
1228         REFIID iid,
1229         void **adapter);
1230 
1231     HRESULT (STDMETHODCALLTYPE *EnumWarpAdapter)(
1232         IDXGIFactory5 *This,
1233         REFIID iid,
1234         void **adapter);
1235 
1236     /*** IDXGIFactory5 methods ***/
1237     HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
1238         IDXGIFactory5 *This,
1239         DXGI_FEATURE feature,
1240         void *support_data,
1241         UINT support_data_size);
1242 
1243     END_INTERFACE
1244 } IDXGIFactory5Vtbl;
1245 
1246 interface IDXGIFactory5 {
1247     CONST_VTBL IDXGIFactory5Vtbl* lpVtbl;
1248 };
1249 
1250 #ifdef COBJMACROS
1251 #ifndef WIDL_C_INLINE_WRAPPERS
1252 /*** IUnknown methods ***/
1253 #define IDXGIFactory5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1254 #define IDXGIFactory5_AddRef(This) (This)->lpVtbl->AddRef(This)
1255 #define IDXGIFactory5_Release(This) (This)->lpVtbl->Release(This)
1256 /*** IDXGIObject methods ***/
1257 #define IDXGIFactory5_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1258 #define IDXGIFactory5_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
1259 #define IDXGIFactory5_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1260 #define IDXGIFactory5_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
1261 /*** IDXGIFactory methods ***/
1262 #define IDXGIFactory5_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter)
1263 #define IDXGIFactory5_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags)
1264 #define IDXGIFactory5_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window)
1265 #define IDXGIFactory5_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain)
1266 #define IDXGIFactory5_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter)
1267 /*** IDXGIFactory1 methods ***/
1268 #define IDXGIFactory5_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter)
1269 #define IDXGIFactory5_IsCurrent(This) (This)->lpVtbl->IsCurrent(This)
1270 /*** IDXGIFactory2 methods ***/
1271 #define IDXGIFactory5_IsWindowedStereoEnabled(This) (This)->lpVtbl->IsWindowedStereoEnabled(This)
1272 #define IDXGIFactory5_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
1273 #define IDXGIFactory5_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
1274 #define IDXGIFactory5_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
1275 #define IDXGIFactory5_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
1276 #define IDXGIFactory5_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
1277 #define IDXGIFactory5_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
1278 #define IDXGIFactory5_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
1279 #define IDXGIFactory5_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
1280 #define IDXGIFactory5_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
1281 #define IDXGIFactory5_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
1282 /*** IDXGIFactory3 methods ***/
1283 #define IDXGIFactory5_GetCreationFlags(This) (This)->lpVtbl->GetCreationFlags(This)
1284 /*** IDXGIFactory4 methods ***/
1285 #define IDXGIFactory5_EnumAdapterByLuid(This,luid,iid,adapter) (This)->lpVtbl->EnumAdapterByLuid(This,luid,iid,adapter)
1286 #define IDXGIFactory5_EnumWarpAdapter(This,iid,adapter) (This)->lpVtbl->EnumWarpAdapter(This,iid,adapter)
1287 /*** IDXGIFactory5 methods ***/
1288 #define IDXGIFactory5_CheckFeatureSupport(This,feature,support_data,support_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,support_data,support_data_size)
1289 #else
1290 /*** IUnknown methods ***/
1291 static FORCEINLINE HRESULT IDXGIFactory5_QueryInterface(IDXGIFactory5* This,REFIID riid,void **ppvObject) {
1292     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1293 }
1294 static FORCEINLINE ULONG IDXGIFactory5_AddRef(IDXGIFactory5* This) {
1295     return This->lpVtbl->AddRef(This);
1296 }
1297 static FORCEINLINE ULONG IDXGIFactory5_Release(IDXGIFactory5* This) {
1298     return This->lpVtbl->Release(This);
1299 }
1300 /*** IDXGIObject methods ***/
1301 static FORCEINLINE HRESULT IDXGIFactory5_SetPrivateData(IDXGIFactory5* This,REFGUID guid,UINT data_size,const void *data) {
1302     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1303 }
1304 static FORCEINLINE HRESULT IDXGIFactory5_SetPrivateDataInterface(IDXGIFactory5* This,REFGUID guid,const IUnknown *object) {
1305     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1306 }
1307 static FORCEINLINE HRESULT IDXGIFactory5_GetPrivateData(IDXGIFactory5* This,REFGUID guid,UINT *data_size,void *data) {
1308     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1309 }
1310 static FORCEINLINE HRESULT IDXGIFactory5_GetParent(IDXGIFactory5* This,REFIID riid,void **parent) {
1311     return This->lpVtbl->GetParent(This,riid,parent);
1312 }
1313 /*** IDXGIFactory methods ***/
1314 static FORCEINLINE HRESULT IDXGIFactory5_EnumAdapters(IDXGIFactory5* This,UINT adapter_idx,IDXGIAdapter **adapter) {
1315     return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter);
1316 }
1317 static FORCEINLINE HRESULT IDXGIFactory5_MakeWindowAssociation(IDXGIFactory5* This,HWND window,UINT flags) {
1318     return This->lpVtbl->MakeWindowAssociation(This,window,flags);
1319 }
1320 static FORCEINLINE HRESULT IDXGIFactory5_GetWindowAssociation(IDXGIFactory5* This,HWND *window) {
1321     return This->lpVtbl->GetWindowAssociation(This,window);
1322 }
1323 static FORCEINLINE HRESULT IDXGIFactory5_CreateSwapChain(IDXGIFactory5* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) {
1324     return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain);
1325 }
1326 static FORCEINLINE HRESULT IDXGIFactory5_CreateSoftwareAdapter(IDXGIFactory5* This,HMODULE swrast,IDXGIAdapter **adapter) {
1327     return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter);
1328 }
1329 /*** IDXGIFactory1 methods ***/
1330 static FORCEINLINE HRESULT IDXGIFactory5_EnumAdapters1(IDXGIFactory5* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) {
1331     return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter);
1332 }
1333 static FORCEINLINE WINBOOL IDXGIFactory5_IsCurrent(IDXGIFactory5* This) {
1334     return This->lpVtbl->IsCurrent(This);
1335 }
1336 /*** IDXGIFactory2 methods ***/
1337 static FORCEINLINE WINBOOL IDXGIFactory5_IsWindowedStereoEnabled(IDXGIFactory5* This) {
1338     return This->lpVtbl->IsWindowedStereoEnabled(This);
1339 }
1340 static FORCEINLINE HRESULT IDXGIFactory5_CreateSwapChainForHwnd(IDXGIFactory5* This,IUnknown *pDevice,HWND hWnd,const DXGI_SWAP_CHAIN_DESC1 *pDesc,const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1341     return This->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain);
1342 }
1343 static FORCEINLINE HRESULT IDXGIFactory5_CreateSwapChainForCoreWindow(IDXGIFactory5* This,IUnknown *pDevice,IUnknown *pWindow,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1344     return This->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain);
1345 }
1346 static FORCEINLINE HRESULT IDXGIFactory5_GetSharedResourceAdapterLuid(IDXGIFactory5* This,HANDLE hResource,LUID *pLuid) {
1347     return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
1348 }
1349 static FORCEINLINE HRESULT IDXGIFactory5_RegisterOcclusionStatusWindow(IDXGIFactory5* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1350     return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1351 }
1352 static FORCEINLINE HRESULT IDXGIFactory5_RegisterStereoStatusEvent(IDXGIFactory5* This,HANDLE hEvent,DWORD *pdwCookie) {
1353     return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
1354 }
1355 static FORCEINLINE void IDXGIFactory5_UnregisterStereoStatus(IDXGIFactory5* This,DWORD dwCookie) {
1356     This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
1357 }
1358 static FORCEINLINE HRESULT IDXGIFactory5_RegisterStereoStatusWindow(IDXGIFactory5* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1359     return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1360 }
1361 static FORCEINLINE HRESULT IDXGIFactory5_RegisterOcclusionStatusEvent(IDXGIFactory5* This,HANDLE hEvent,DWORD *pdwCookie) {
1362     return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
1363 }
1364 static FORCEINLINE void IDXGIFactory5_UnregisterOcclusionStatus(IDXGIFactory5* This,DWORD dwCookie) {
1365     This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie);
1366 }
1367 static FORCEINLINE HRESULT IDXGIFactory5_CreateSwapChainForComposition(IDXGIFactory5* This,IUnknown *pDevice,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1368     return This->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain);
1369 }
1370 /*** IDXGIFactory3 methods ***/
1371 static FORCEINLINE UINT IDXGIFactory5_GetCreationFlags(IDXGIFactory5* This) {
1372     return This->lpVtbl->GetCreationFlags(This);
1373 }
1374 /*** IDXGIFactory4 methods ***/
1375 static FORCEINLINE HRESULT IDXGIFactory5_EnumAdapterByLuid(IDXGIFactory5* This,LUID luid,REFIID iid,void **adapter) {
1376     return This->lpVtbl->EnumAdapterByLuid(This,luid,iid,adapter);
1377 }
1378 static FORCEINLINE HRESULT IDXGIFactory5_EnumWarpAdapter(IDXGIFactory5* This,REFIID iid,void **adapter) {
1379     return This->lpVtbl->EnumWarpAdapter(This,iid,adapter);
1380 }
1381 /*** IDXGIFactory5 methods ***/
1382 static FORCEINLINE HRESULT IDXGIFactory5_CheckFeatureSupport(IDXGIFactory5* This,DXGI_FEATURE feature,void *support_data,UINT support_data_size) {
1383     return This->lpVtbl->CheckFeatureSupport(This,feature,support_data,support_data_size);
1384 }
1385 #endif
1386 #endif
1387 
1388 #endif
1389 
1390 
1391 #endif  /* __IDXGIFactory5_INTERFACE_DEFINED__ */
1392 
1393 /* Begin additional prototypes for all interfaces */
1394 
1395 
1396 /* End additional prototypes */
1397 
1398 #ifdef __cplusplus
1399 }
1400 #endif
1401 
1402 #endif /* __dxgi1_5_h__ */
1403