1 /*** Autogenerated by WIDL 6.4 from include/dxgi1_6.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_6_h__
17 #define __dxgi1_6_h__
18 
19 /* Forward declarations */
20 
21 #ifndef __IDXGIAdapter4_FWD_DEFINED__
22 #define __IDXGIAdapter4_FWD_DEFINED__
23 typedef interface IDXGIAdapter4 IDXGIAdapter4;
24 #ifdef __cplusplus
25 interface IDXGIAdapter4;
26 #endif /* __cplusplus */
27 #endif
28 
29 #ifndef __IDXGIOutput6_FWD_DEFINED__
30 #define __IDXGIOutput6_FWD_DEFINED__
31 typedef interface IDXGIOutput6 IDXGIOutput6;
32 #ifdef __cplusplus
33 interface IDXGIOutput6;
34 #endif /* __cplusplus */
35 #endif
36 
37 #ifndef __IDXGIFactory6_FWD_DEFINED__
38 #define __IDXGIFactory6_FWD_DEFINED__
39 typedef interface IDXGIFactory6 IDXGIFactory6;
40 #ifdef __cplusplus
41 interface IDXGIFactory6;
42 #endif /* __cplusplus */
43 #endif
44 
45 #ifndef __IDXGIFactory7_FWD_DEFINED__
46 #define __IDXGIFactory7_FWD_DEFINED__
47 typedef interface IDXGIFactory7 IDXGIFactory7;
48 #ifdef __cplusplus
49 interface IDXGIFactory7;
50 #endif /* __cplusplus */
51 #endif
52 
53 /* Headers for imported files */
54 
55 #include <dxgi1_5.h>
56 
57 #ifdef __cplusplus
58 extern "C" {
59 #endif
60 
61 typedef enum DXGI_ADAPTER_FLAG3 {
62     DXGI_ADAPTER_FLAG3_NONE = 0x0,
63     DXGI_ADAPTER_FLAG3_REMOTE = 0x1,
64     DXGI_ADAPTER_FLAG3_SOFTWARE = 0x2,
65     DXGI_ADAPTER_FLAG3_ACG_COMPATIBLE = 0x4,
66     DXGI_ADAPTER_FLAG3_SUPPORT_MONITORED_FENCES = 0x8,
67     DXGI_ADAPTER_FLAG3_SUPPORT_NON_MONITORED_FENCES = 0x10,
68     DXGI_ADAPTER_FLAG3_KEYED_MUTEX_CONFORMANCE = 0x20,
69     DXGI_ADAPTER_FLAG3_FORCE_DWORD = 0xffffffff
70 } DXGI_ADAPTER_FLAG3;
71 typedef enum DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAGS {
72     DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_FULLSCREEN = 0x1,
73     DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_WINDOWED = 0x2,
74     DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_CURSOR_STRETCHED = 0x4
75 } DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAGS;
76 typedef enum DXGI_GPU_PREFERENCE {
77     DXGI_GPU_PREFERENCE_UNSPECIFIED = 0x0,
78     DXGI_GPU_PREFERENCE_MINIMUM_POWER = 0x1,
79     DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE = 0x2
80 } DXGI_GPU_PREFERENCE;
81 typedef struct DXGI_ADAPTER_DESC3 {
82     WCHAR Description[128];
83     UINT VendorId;
84     UINT DeviceId;
85     UINT SubSysId;
86     UINT Revision;
87     SIZE_T DedicatedVideoMemory;
88     SIZE_T DedicatedSystemMemory;
89     SIZE_T SharedSystemMemory;
90     LUID AdapterLuid;
91     DXGI_ADAPTER_FLAG3 Flags;
92     DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity;
93     DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity;
94 } DXGI_ADAPTER_DESC3;
95 typedef struct DXGI_OUTPUT_DESC1 {
96     WCHAR DeviceName[32];
97     RECT DesktopCoordinates;
98     WINBOOL AttachedToDesktop;
99     DXGI_MODE_ROTATION Rotation;
100     HMONITOR Monitor;
101     UINT BitsPerColor;
102     DXGI_COLOR_SPACE_TYPE ColorSpace;
103     FLOAT RedPrimary[2];
104     FLOAT GreenPrimary[2];
105     FLOAT BluePrimary[2];
106     FLOAT WhitePoint[2];
107     FLOAT MinLuminance;
108     FLOAT MaxLuminance;
109     FLOAT MaxFullFrameLuminance;
110 } DXGI_OUTPUT_DESC1;
111 /*****************************************************************************
112  * IDXGIAdapter4 interface
113  */
114 #ifndef __IDXGIAdapter4_INTERFACE_DEFINED__
115 #define __IDXGIAdapter4_INTERFACE_DEFINED__
116 
117 DEFINE_GUID(IID_IDXGIAdapter4, 0x3c8d99d1, 0x4fbf, 0x4181, 0xa8,0x2c, 0xaf,0x66,0xbf,0x7b,0xd2,0x4e);
118 #if defined(__cplusplus) && !defined(CINTERFACE)
119 MIDL_INTERFACE("3c8d99d1-4fbf-4181-a82c-af66bf7bd24e")
120 IDXGIAdapter4 : public IDXGIAdapter3
121 {
122     virtual HRESULT STDMETHODCALLTYPE GetDesc3(
123         DXGI_ADAPTER_DESC3 *desc) = 0;
124 
125 };
126 #ifdef __CRT_UUID_DECL
127 __CRT_UUID_DECL(IDXGIAdapter4, 0x3c8d99d1, 0x4fbf, 0x4181, 0xa8,0x2c, 0xaf,0x66,0xbf,0x7b,0xd2,0x4e)
128 #endif
129 #else
130 typedef struct IDXGIAdapter4Vtbl {
131     BEGIN_INTERFACE
132 
133     /*** IUnknown methods ***/
134     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
135         IDXGIAdapter4 *This,
136         REFIID riid,
137         void **ppvObject);
138 
139     ULONG (STDMETHODCALLTYPE *AddRef)(
140         IDXGIAdapter4 *This);
141 
142     ULONG (STDMETHODCALLTYPE *Release)(
143         IDXGIAdapter4 *This);
144 
145     /*** IDXGIObject methods ***/
146     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
147         IDXGIAdapter4 *This,
148         REFGUID guid,
149         UINT data_size,
150         const void *data);
151 
152     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
153         IDXGIAdapter4 *This,
154         REFGUID guid,
155         const IUnknown *object);
156 
157     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
158         IDXGIAdapter4 *This,
159         REFGUID guid,
160         UINT *data_size,
161         void *data);
162 
163     HRESULT (STDMETHODCALLTYPE *GetParent)(
164         IDXGIAdapter4 *This,
165         REFIID riid,
166         void **parent);
167 
168     /*** IDXGIAdapter methods ***/
169     HRESULT (STDMETHODCALLTYPE *EnumOutputs)(
170         IDXGIAdapter4 *This,
171         UINT output_idx,
172         IDXGIOutput **output);
173 
174     HRESULT (STDMETHODCALLTYPE *GetDesc)(
175         IDXGIAdapter4 *This,
176         DXGI_ADAPTER_DESC *desc);
177 
178     HRESULT (STDMETHODCALLTYPE *CheckInterfaceSupport)(
179         IDXGIAdapter4 *This,
180         REFGUID guid,
181         LARGE_INTEGER *umd_version);
182 
183     /*** IDXGIAdapter1 methods ***/
184     HRESULT (STDMETHODCALLTYPE *GetDesc1)(
185         IDXGIAdapter4 *This,
186         DXGI_ADAPTER_DESC1 *pDesc);
187 
188     /*** IDXGIAdapter2 methods ***/
189     HRESULT (STDMETHODCALLTYPE *GetDesc2)(
190         IDXGIAdapter4 *This,
191         DXGI_ADAPTER_DESC2 *pDesc);
192 
193     /*** IDXGIAdapter3 methods ***/
194     HRESULT (STDMETHODCALLTYPE *RegisterHardwareContentProtectionTeardownStatusEvent)(
195         IDXGIAdapter4 *This,
196         HANDLE event,
197         DWORD *cookie);
198 
199     void (STDMETHODCALLTYPE *UnregisterHardwareContentProtectionTeardownStatus)(
200         IDXGIAdapter4 *This,
201         DWORD cookie);
202 
203     HRESULT (STDMETHODCALLTYPE *QueryVideoMemoryInfo)(
204         IDXGIAdapter4 *This,
205         UINT node_index,
206         DXGI_MEMORY_SEGMENT_GROUP segment_group,
207         DXGI_QUERY_VIDEO_MEMORY_INFO *memory_info);
208 
209     HRESULT (STDMETHODCALLTYPE *SetVideoMemoryReservation)(
210         IDXGIAdapter4 *This,
211         UINT node_index,
212         DXGI_MEMORY_SEGMENT_GROUP segment_group,
213         UINT64 reservation);
214 
215     HRESULT (STDMETHODCALLTYPE *RegisterVideoMemoryBudgetChangeNotificationEvent)(
216         IDXGIAdapter4 *This,
217         HANDLE event,
218         DWORD *cookie);
219 
220     void (STDMETHODCALLTYPE *UnregisterVideoMemoryBudgetChangeNotification)(
221         IDXGIAdapter4 *This,
222         DWORD cookie);
223 
224     /*** IDXGIAdapter4 methods ***/
225     HRESULT (STDMETHODCALLTYPE *GetDesc3)(
226         IDXGIAdapter4 *This,
227         DXGI_ADAPTER_DESC3 *desc);
228 
229     END_INTERFACE
230 } IDXGIAdapter4Vtbl;
231 
232 interface IDXGIAdapter4 {
233     CONST_VTBL IDXGIAdapter4Vtbl* lpVtbl;
234 };
235 
236 #ifdef COBJMACROS
237 #ifndef WIDL_C_INLINE_WRAPPERS
238 /*** IUnknown methods ***/
239 #define IDXGIAdapter4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
240 #define IDXGIAdapter4_AddRef(This) (This)->lpVtbl->AddRef(This)
241 #define IDXGIAdapter4_Release(This) (This)->lpVtbl->Release(This)
242 /*** IDXGIObject methods ***/
243 #define IDXGIAdapter4_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
244 #define IDXGIAdapter4_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
245 #define IDXGIAdapter4_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
246 #define IDXGIAdapter4_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
247 /*** IDXGIAdapter methods ***/
248 #define IDXGIAdapter4_EnumOutputs(This,output_idx,output) (This)->lpVtbl->EnumOutputs(This,output_idx,output)
249 #define IDXGIAdapter4_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
250 #define IDXGIAdapter4_CheckInterfaceSupport(This,guid,umd_version) (This)->lpVtbl->CheckInterfaceSupport(This,guid,umd_version)
251 /*** IDXGIAdapter1 methods ***/
252 #define IDXGIAdapter4_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
253 /*** IDXGIAdapter2 methods ***/
254 #define IDXGIAdapter4_GetDesc2(This,pDesc) (This)->lpVtbl->GetDesc2(This,pDesc)
255 /*** IDXGIAdapter3 methods ***/
256 #define IDXGIAdapter4_RegisterHardwareContentProtectionTeardownStatusEvent(This,event,cookie) (This)->lpVtbl->RegisterHardwareContentProtectionTeardownStatusEvent(This,event,cookie)
257 #define IDXGIAdapter4_UnregisterHardwareContentProtectionTeardownStatus(This,cookie) (This)->lpVtbl->UnregisterHardwareContentProtectionTeardownStatus(This,cookie)
258 #define IDXGIAdapter4_QueryVideoMemoryInfo(This,node_index,segment_group,memory_info) (This)->lpVtbl->QueryVideoMemoryInfo(This,node_index,segment_group,memory_info)
259 #define IDXGIAdapter4_SetVideoMemoryReservation(This,node_index,segment_group,reservation) (This)->lpVtbl->SetVideoMemoryReservation(This,node_index,segment_group,reservation)
260 #define IDXGIAdapter4_RegisterVideoMemoryBudgetChangeNotificationEvent(This,event,cookie) (This)->lpVtbl->RegisterVideoMemoryBudgetChangeNotificationEvent(This,event,cookie)
261 #define IDXGIAdapter4_UnregisterVideoMemoryBudgetChangeNotification(This,cookie) (This)->lpVtbl->UnregisterVideoMemoryBudgetChangeNotification(This,cookie)
262 /*** IDXGIAdapter4 methods ***/
263 #define IDXGIAdapter4_GetDesc3(This,desc) (This)->lpVtbl->GetDesc3(This,desc)
264 #else
265 /*** IUnknown methods ***/
266 static FORCEINLINE HRESULT IDXGIAdapter4_QueryInterface(IDXGIAdapter4* This,REFIID riid,void **ppvObject) {
267     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
268 }
269 static FORCEINLINE ULONG IDXGIAdapter4_AddRef(IDXGIAdapter4* This) {
270     return This->lpVtbl->AddRef(This);
271 }
272 static FORCEINLINE ULONG IDXGIAdapter4_Release(IDXGIAdapter4* This) {
273     return This->lpVtbl->Release(This);
274 }
275 /*** IDXGIObject methods ***/
276 static FORCEINLINE HRESULT IDXGIAdapter4_SetPrivateData(IDXGIAdapter4* This,REFGUID guid,UINT data_size,const void *data) {
277     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
278 }
279 static FORCEINLINE HRESULT IDXGIAdapter4_SetPrivateDataInterface(IDXGIAdapter4* This,REFGUID guid,const IUnknown *object) {
280     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
281 }
282 static FORCEINLINE HRESULT IDXGIAdapter4_GetPrivateData(IDXGIAdapter4* This,REFGUID guid,UINT *data_size,void *data) {
283     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
284 }
285 static FORCEINLINE HRESULT IDXGIAdapter4_GetParent(IDXGIAdapter4* This,REFIID riid,void **parent) {
286     return This->lpVtbl->GetParent(This,riid,parent);
287 }
288 /*** IDXGIAdapter methods ***/
289 static FORCEINLINE HRESULT IDXGIAdapter4_EnumOutputs(IDXGIAdapter4* This,UINT output_idx,IDXGIOutput **output) {
290     return This->lpVtbl->EnumOutputs(This,output_idx,output);
291 }
292 static FORCEINLINE HRESULT IDXGIAdapter4_GetDesc(IDXGIAdapter4* This,DXGI_ADAPTER_DESC *desc) {
293     return This->lpVtbl->GetDesc(This,desc);
294 }
295 static FORCEINLINE HRESULT IDXGIAdapter4_CheckInterfaceSupport(IDXGIAdapter4* This,REFGUID guid,LARGE_INTEGER *umd_version) {
296     return This->lpVtbl->CheckInterfaceSupport(This,guid,umd_version);
297 }
298 /*** IDXGIAdapter1 methods ***/
299 static FORCEINLINE HRESULT IDXGIAdapter4_GetDesc1(IDXGIAdapter4* This,DXGI_ADAPTER_DESC1 *pDesc) {
300     return This->lpVtbl->GetDesc1(This,pDesc);
301 }
302 /*** IDXGIAdapter2 methods ***/
303 static FORCEINLINE HRESULT IDXGIAdapter4_GetDesc2(IDXGIAdapter4* This,DXGI_ADAPTER_DESC2 *pDesc) {
304     return This->lpVtbl->GetDesc2(This,pDesc);
305 }
306 /*** IDXGIAdapter3 methods ***/
307 static FORCEINLINE HRESULT IDXGIAdapter4_RegisterHardwareContentProtectionTeardownStatusEvent(IDXGIAdapter4* This,HANDLE event,DWORD *cookie) {
308     return This->lpVtbl->RegisterHardwareContentProtectionTeardownStatusEvent(This,event,cookie);
309 }
310 static FORCEINLINE void IDXGIAdapter4_UnregisterHardwareContentProtectionTeardownStatus(IDXGIAdapter4* This,DWORD cookie) {
311     This->lpVtbl->UnregisterHardwareContentProtectionTeardownStatus(This,cookie);
312 }
313 static FORCEINLINE HRESULT IDXGIAdapter4_QueryVideoMemoryInfo(IDXGIAdapter4* This,UINT node_index,DXGI_MEMORY_SEGMENT_GROUP segment_group,DXGI_QUERY_VIDEO_MEMORY_INFO *memory_info) {
314     return This->lpVtbl->QueryVideoMemoryInfo(This,node_index,segment_group,memory_info);
315 }
316 static FORCEINLINE HRESULT IDXGIAdapter4_SetVideoMemoryReservation(IDXGIAdapter4* This,UINT node_index,DXGI_MEMORY_SEGMENT_GROUP segment_group,UINT64 reservation) {
317     return This->lpVtbl->SetVideoMemoryReservation(This,node_index,segment_group,reservation);
318 }
319 static FORCEINLINE HRESULT IDXGIAdapter4_RegisterVideoMemoryBudgetChangeNotificationEvent(IDXGIAdapter4* This,HANDLE event,DWORD *cookie) {
320     return This->lpVtbl->RegisterVideoMemoryBudgetChangeNotificationEvent(This,event,cookie);
321 }
322 static FORCEINLINE void IDXGIAdapter4_UnregisterVideoMemoryBudgetChangeNotification(IDXGIAdapter4* This,DWORD cookie) {
323     This->lpVtbl->UnregisterVideoMemoryBudgetChangeNotification(This,cookie);
324 }
325 /*** IDXGIAdapter4 methods ***/
326 static FORCEINLINE HRESULT IDXGIAdapter4_GetDesc3(IDXGIAdapter4* This,DXGI_ADAPTER_DESC3 *desc) {
327     return This->lpVtbl->GetDesc3(This,desc);
328 }
329 #endif
330 #endif
331 
332 #endif
333 
334 
335 #endif  /* __IDXGIAdapter4_INTERFACE_DEFINED__ */
336 
337 /*****************************************************************************
338  * IDXGIOutput6 interface
339  */
340 #ifndef __IDXGIOutput6_INTERFACE_DEFINED__
341 #define __IDXGIOutput6_INTERFACE_DEFINED__
342 
343 DEFINE_GUID(IID_IDXGIOutput6, 0x068346e8, 0xaaec, 0x4b84, 0xad,0xd7, 0x13,0x7f,0x51,0x3f,0x77,0xa1);
344 #if defined(__cplusplus) && !defined(CINTERFACE)
345 MIDL_INTERFACE("068346e8-aaec-4b84-add7-137f513f77a1")
346 IDXGIOutput6 : public IDXGIOutput5
347 {
348     virtual HRESULT STDMETHODCALLTYPE GetDesc1(
349         DXGI_OUTPUT_DESC1 *desc) = 0;
350 
351     virtual HRESULT STDMETHODCALLTYPE CheckHardwareCompositionSupport(
352         UINT *flags) = 0;
353 
354 };
355 #ifdef __CRT_UUID_DECL
356 __CRT_UUID_DECL(IDXGIOutput6, 0x068346e8, 0xaaec, 0x4b84, 0xad,0xd7, 0x13,0x7f,0x51,0x3f,0x77,0xa1)
357 #endif
358 #else
359 typedef struct IDXGIOutput6Vtbl {
360     BEGIN_INTERFACE
361 
362     /*** IUnknown methods ***/
363     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
364         IDXGIOutput6 *This,
365         REFIID riid,
366         void **ppvObject);
367 
368     ULONG (STDMETHODCALLTYPE *AddRef)(
369         IDXGIOutput6 *This);
370 
371     ULONG (STDMETHODCALLTYPE *Release)(
372         IDXGIOutput6 *This);
373 
374     /*** IDXGIObject methods ***/
375     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
376         IDXGIOutput6 *This,
377         REFGUID guid,
378         UINT data_size,
379         const void *data);
380 
381     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
382         IDXGIOutput6 *This,
383         REFGUID guid,
384         const IUnknown *object);
385 
386     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
387         IDXGIOutput6 *This,
388         REFGUID guid,
389         UINT *data_size,
390         void *data);
391 
392     HRESULT (STDMETHODCALLTYPE *GetParent)(
393         IDXGIOutput6 *This,
394         REFIID riid,
395         void **parent);
396 
397     /*** IDXGIOutput methods ***/
398     HRESULT (STDMETHODCALLTYPE *GetDesc)(
399         IDXGIOutput6 *This,
400         DXGI_OUTPUT_DESC *desc);
401 
402     HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)(
403         IDXGIOutput6 *This,
404         DXGI_FORMAT format,
405         UINT flags,
406         UINT *mode_count,
407         DXGI_MODE_DESC *desc);
408 
409     HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)(
410         IDXGIOutput6 *This,
411         const DXGI_MODE_DESC *mode,
412         DXGI_MODE_DESC *closest_match,
413         IUnknown *device);
414 
415     HRESULT (STDMETHODCALLTYPE *WaitForVBlank)(
416         IDXGIOutput6 *This);
417 
418     HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
419         IDXGIOutput6 *This,
420         IUnknown *device,
421         WINBOOL exclusive);
422 
423     void (STDMETHODCALLTYPE *ReleaseOwnership)(
424         IDXGIOutput6 *This);
425 
426     HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)(
427         IDXGIOutput6 *This,
428         DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps);
429 
430     HRESULT (STDMETHODCALLTYPE *SetGammaControl)(
431         IDXGIOutput6 *This,
432         const DXGI_GAMMA_CONTROL *gamma_control);
433 
434     HRESULT (STDMETHODCALLTYPE *GetGammaControl)(
435         IDXGIOutput6 *This,
436         DXGI_GAMMA_CONTROL *gamma_control);
437 
438     HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)(
439         IDXGIOutput6 *This,
440         IDXGISurface *surface);
441 
442     HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)(
443         IDXGIOutput6 *This,
444         IDXGISurface *surface);
445 
446     HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
447         IDXGIOutput6 *This,
448         DXGI_FRAME_STATISTICS *stats);
449 
450     /*** IDXGIOutput1 methods ***/
451     HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)(
452         IDXGIOutput6 *This,
453         DXGI_FORMAT enum_format,
454         UINT flags,
455         UINT *num_modes,
456         DXGI_MODE_DESC1 *desc);
457 
458     HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)(
459         IDXGIOutput6 *This,
460         const DXGI_MODE_DESC1 *mode_to_match,
461         DXGI_MODE_DESC1 *closest_match,
462         IUnknown *concerned_device);
463 
464     HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)(
465         IDXGIOutput6 *This,
466         IDXGIResource *destination);
467 
468     HRESULT (STDMETHODCALLTYPE *DuplicateOutput)(
469         IDXGIOutput6 *This,
470         IUnknown *device,
471         IDXGIOutputDuplication **output_duplication);
472 
473     /*** IDXGIOutput2 methods ***/
474     WINBOOL (STDMETHODCALLTYPE *SupportsOverlays)(
475         IDXGIOutput6 *This);
476 
477     /*** IDXGIOutput3 methods ***/
478     HRESULT (STDMETHODCALLTYPE *CheckOverlaySupport)(
479         IDXGIOutput6 *This,
480         DXGI_FORMAT enum_format,
481         IUnknown *concerned_device,
482         UINT *flags);
483 
484     /*** IDXGIOutput4 methods ***/
485     HRESULT (STDMETHODCALLTYPE *CheckOverlayColorSpaceSupport)(
486         IDXGIOutput6 *This,
487         DXGI_FORMAT format,
488         DXGI_COLOR_SPACE_TYPE colour_space,
489         IUnknown *device,
490         UINT *flags);
491 
492     /*** IDXGIOutput5 methods ***/
493     HRESULT (STDMETHODCALLTYPE *DuplicateOutput1)(
494         IDXGIOutput6 *This,
495         IUnknown *device,
496         UINT flags,
497         UINT format_count,
498         const DXGI_FORMAT *formats,
499         IDXGIOutputDuplication **duplication);
500 
501     /*** IDXGIOutput6 methods ***/
502     HRESULT (STDMETHODCALLTYPE *GetDesc1)(
503         IDXGIOutput6 *This,
504         DXGI_OUTPUT_DESC1 *desc);
505 
506     HRESULT (STDMETHODCALLTYPE *CheckHardwareCompositionSupport)(
507         IDXGIOutput6 *This,
508         UINT *flags);
509 
510     END_INTERFACE
511 } IDXGIOutput6Vtbl;
512 
513 interface IDXGIOutput6 {
514     CONST_VTBL IDXGIOutput6Vtbl* lpVtbl;
515 };
516 
517 #ifdef COBJMACROS
518 #ifndef WIDL_C_INLINE_WRAPPERS
519 /*** IUnknown methods ***/
520 #define IDXGIOutput6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
521 #define IDXGIOutput6_AddRef(This) (This)->lpVtbl->AddRef(This)
522 #define IDXGIOutput6_Release(This) (This)->lpVtbl->Release(This)
523 /*** IDXGIObject methods ***/
524 #define IDXGIOutput6_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
525 #define IDXGIOutput6_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
526 #define IDXGIOutput6_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
527 #define IDXGIOutput6_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
528 /*** IDXGIOutput methods ***/
529 #define IDXGIOutput6_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
530 #define IDXGIOutput6_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc)
531 #define IDXGIOutput6_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device)
532 #define IDXGIOutput6_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This)
533 #define IDXGIOutput6_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive)
534 #define IDXGIOutput6_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This)
535 #define IDXGIOutput6_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps)
536 #define IDXGIOutput6_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control)
537 #define IDXGIOutput6_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control)
538 #define IDXGIOutput6_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface)
539 #define IDXGIOutput6_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface)
540 #define IDXGIOutput6_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
541 /*** IDXGIOutput1 methods ***/
542 #define IDXGIOutput6_GetDisplayModeList1(This,enum_format,flags,num_modes,desc) (This)->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc)
543 #define IDXGIOutput6_FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device)
544 #define IDXGIOutput6_GetDisplaySurfaceData1(This,destination) (This)->lpVtbl->GetDisplaySurfaceData1(This,destination)
545 #define IDXGIOutput6_DuplicateOutput(This,device,output_duplication) (This)->lpVtbl->DuplicateOutput(This,device,output_duplication)
546 /*** IDXGIOutput2 methods ***/
547 #define IDXGIOutput6_SupportsOverlays(This) (This)->lpVtbl->SupportsOverlays(This)
548 /*** IDXGIOutput3 methods ***/
549 #define IDXGIOutput6_CheckOverlaySupport(This,enum_format,concerned_device,flags) (This)->lpVtbl->CheckOverlaySupport(This,enum_format,concerned_device,flags)
550 /*** IDXGIOutput4 methods ***/
551 #define IDXGIOutput6_CheckOverlayColorSpaceSupport(This,format,colour_space,device,flags) (This)->lpVtbl->CheckOverlayColorSpaceSupport(This,format,colour_space,device,flags)
552 /*** IDXGIOutput5 methods ***/
553 #define IDXGIOutput6_DuplicateOutput1(This,device,flags,format_count,formats,duplication) (This)->lpVtbl->DuplicateOutput1(This,device,flags,format_count,formats,duplication)
554 /*** IDXGIOutput6 methods ***/
555 #define IDXGIOutput6_GetDesc1(This,desc) (This)->lpVtbl->GetDesc1(This,desc)
556 #define IDXGIOutput6_CheckHardwareCompositionSupport(This,flags) (This)->lpVtbl->CheckHardwareCompositionSupport(This,flags)
557 #else
558 /*** IUnknown methods ***/
559 static FORCEINLINE HRESULT IDXGIOutput6_QueryInterface(IDXGIOutput6* This,REFIID riid,void **ppvObject) {
560     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
561 }
562 static FORCEINLINE ULONG IDXGIOutput6_AddRef(IDXGIOutput6* This) {
563     return This->lpVtbl->AddRef(This);
564 }
565 static FORCEINLINE ULONG IDXGIOutput6_Release(IDXGIOutput6* This) {
566     return This->lpVtbl->Release(This);
567 }
568 /*** IDXGIObject methods ***/
569 static FORCEINLINE HRESULT IDXGIOutput6_SetPrivateData(IDXGIOutput6* This,REFGUID guid,UINT data_size,const void *data) {
570     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
571 }
572 static FORCEINLINE HRESULT IDXGIOutput6_SetPrivateDataInterface(IDXGIOutput6* This,REFGUID guid,const IUnknown *object) {
573     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
574 }
575 static FORCEINLINE HRESULT IDXGIOutput6_GetPrivateData(IDXGIOutput6* This,REFGUID guid,UINT *data_size,void *data) {
576     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
577 }
578 static FORCEINLINE HRESULT IDXGIOutput6_GetParent(IDXGIOutput6* This,REFIID riid,void **parent) {
579     return This->lpVtbl->GetParent(This,riid,parent);
580 }
581 /*** IDXGIOutput methods ***/
582 static FORCEINLINE HRESULT IDXGIOutput6_GetDesc(IDXGIOutput6* This,DXGI_OUTPUT_DESC *desc) {
583     return This->lpVtbl->GetDesc(This,desc);
584 }
585 static FORCEINLINE HRESULT IDXGIOutput6_GetDisplayModeList(IDXGIOutput6* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) {
586     return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc);
587 }
588 static FORCEINLINE HRESULT IDXGIOutput6_FindClosestMatchingMode(IDXGIOutput6* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) {
589     return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device);
590 }
591 static FORCEINLINE HRESULT IDXGIOutput6_WaitForVBlank(IDXGIOutput6* This) {
592     return This->lpVtbl->WaitForVBlank(This);
593 }
594 static FORCEINLINE HRESULT IDXGIOutput6_TakeOwnership(IDXGIOutput6* This,IUnknown *device,WINBOOL exclusive) {
595     return This->lpVtbl->TakeOwnership(This,device,exclusive);
596 }
597 static FORCEINLINE void IDXGIOutput6_ReleaseOwnership(IDXGIOutput6* This) {
598     This->lpVtbl->ReleaseOwnership(This);
599 }
600 static FORCEINLINE HRESULT IDXGIOutput6_GetGammaControlCapabilities(IDXGIOutput6* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) {
601     return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps);
602 }
603 static FORCEINLINE HRESULT IDXGIOutput6_SetGammaControl(IDXGIOutput6* This,const DXGI_GAMMA_CONTROL *gamma_control) {
604     return This->lpVtbl->SetGammaControl(This,gamma_control);
605 }
606 static FORCEINLINE HRESULT IDXGIOutput6_GetGammaControl(IDXGIOutput6* This,DXGI_GAMMA_CONTROL *gamma_control) {
607     return This->lpVtbl->GetGammaControl(This,gamma_control);
608 }
609 static FORCEINLINE HRESULT IDXGIOutput6_SetDisplaySurface(IDXGIOutput6* This,IDXGISurface *surface) {
610     return This->lpVtbl->SetDisplaySurface(This,surface);
611 }
612 static FORCEINLINE HRESULT IDXGIOutput6_GetDisplaySurfaceData(IDXGIOutput6* This,IDXGISurface *surface) {
613     return This->lpVtbl->GetDisplaySurfaceData(This,surface);
614 }
615 static FORCEINLINE HRESULT IDXGIOutput6_GetFrameStatistics(IDXGIOutput6* This,DXGI_FRAME_STATISTICS *stats) {
616     return This->lpVtbl->GetFrameStatistics(This,stats);
617 }
618 /*** IDXGIOutput1 methods ***/
619 static FORCEINLINE HRESULT IDXGIOutput6_GetDisplayModeList1(IDXGIOutput6* This,DXGI_FORMAT enum_format,UINT flags,UINT *num_modes,DXGI_MODE_DESC1 *desc) {
620     return This->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc);
621 }
622 static FORCEINLINE HRESULT IDXGIOutput6_FindClosestMatchingMode1(IDXGIOutput6* This,const DXGI_MODE_DESC1 *mode_to_match,DXGI_MODE_DESC1 *closest_match,IUnknown *concerned_device) {
623     return This->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device);
624 }
625 static FORCEINLINE HRESULT IDXGIOutput6_GetDisplaySurfaceData1(IDXGIOutput6* This,IDXGIResource *destination) {
626     return This->lpVtbl->GetDisplaySurfaceData1(This,destination);
627 }
628 static FORCEINLINE HRESULT IDXGIOutput6_DuplicateOutput(IDXGIOutput6* This,IUnknown *device,IDXGIOutputDuplication **output_duplication) {
629     return This->lpVtbl->DuplicateOutput(This,device,output_duplication);
630 }
631 /*** IDXGIOutput2 methods ***/
632 static FORCEINLINE WINBOOL IDXGIOutput6_SupportsOverlays(IDXGIOutput6* This) {
633     return This->lpVtbl->SupportsOverlays(This);
634 }
635 /*** IDXGIOutput3 methods ***/
636 static FORCEINLINE HRESULT IDXGIOutput6_CheckOverlaySupport(IDXGIOutput6* This,DXGI_FORMAT enum_format,IUnknown *concerned_device,UINT *flags) {
637     return This->lpVtbl->CheckOverlaySupport(This,enum_format,concerned_device,flags);
638 }
639 /*** IDXGIOutput4 methods ***/
640 static FORCEINLINE HRESULT IDXGIOutput6_CheckOverlayColorSpaceSupport(IDXGIOutput6* This,DXGI_FORMAT format,DXGI_COLOR_SPACE_TYPE colour_space,IUnknown *device,UINT *flags) {
641     return This->lpVtbl->CheckOverlayColorSpaceSupport(This,format,colour_space,device,flags);
642 }
643 /*** IDXGIOutput5 methods ***/
644 static FORCEINLINE HRESULT IDXGIOutput6_DuplicateOutput1(IDXGIOutput6* This,IUnknown *device,UINT flags,UINT format_count,const DXGI_FORMAT *formats,IDXGIOutputDuplication **duplication) {
645     return This->lpVtbl->DuplicateOutput1(This,device,flags,format_count,formats,duplication);
646 }
647 /*** IDXGIOutput6 methods ***/
648 static FORCEINLINE HRESULT IDXGIOutput6_GetDesc1(IDXGIOutput6* This,DXGI_OUTPUT_DESC1 *desc) {
649     return This->lpVtbl->GetDesc1(This,desc);
650 }
651 static FORCEINLINE HRESULT IDXGIOutput6_CheckHardwareCompositionSupport(IDXGIOutput6* This,UINT *flags) {
652     return This->lpVtbl->CheckHardwareCompositionSupport(This,flags);
653 }
654 #endif
655 #endif
656 
657 #endif
658 
659 
660 #endif  /* __IDXGIOutput6_INTERFACE_DEFINED__ */
661 
662 /*****************************************************************************
663  * IDXGIFactory6 interface
664  */
665 #ifndef __IDXGIFactory6_INTERFACE_DEFINED__
666 #define __IDXGIFactory6_INTERFACE_DEFINED__
667 
668 DEFINE_GUID(IID_IDXGIFactory6, 0xc1b6694f, 0xff09, 0x44a9, 0xb0,0x3c, 0x77,0x90,0x0a,0x0a,0x1d,0x17);
669 #if defined(__cplusplus) && !defined(CINTERFACE)
670 MIDL_INTERFACE("c1b6694f-ff09-44a9-b03c-77900a0a1d17")
671 IDXGIFactory6 : public IDXGIFactory5
672 {
673     virtual HRESULT STDMETHODCALLTYPE EnumAdapterByGpuPreference(
674         UINT adapter_idx,
675         DXGI_GPU_PREFERENCE gpu_preference,
676         REFIID iid,
677         void **adapter) = 0;
678 
679 };
680 #ifdef __CRT_UUID_DECL
681 __CRT_UUID_DECL(IDXGIFactory6, 0xc1b6694f, 0xff09, 0x44a9, 0xb0,0x3c, 0x77,0x90,0x0a,0x0a,0x1d,0x17)
682 #endif
683 #else
684 typedef struct IDXGIFactory6Vtbl {
685     BEGIN_INTERFACE
686 
687     /*** IUnknown methods ***/
688     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
689         IDXGIFactory6 *This,
690         REFIID riid,
691         void **ppvObject);
692 
693     ULONG (STDMETHODCALLTYPE *AddRef)(
694         IDXGIFactory6 *This);
695 
696     ULONG (STDMETHODCALLTYPE *Release)(
697         IDXGIFactory6 *This);
698 
699     /*** IDXGIObject methods ***/
700     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
701         IDXGIFactory6 *This,
702         REFGUID guid,
703         UINT data_size,
704         const void *data);
705 
706     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
707         IDXGIFactory6 *This,
708         REFGUID guid,
709         const IUnknown *object);
710 
711     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
712         IDXGIFactory6 *This,
713         REFGUID guid,
714         UINT *data_size,
715         void *data);
716 
717     HRESULT (STDMETHODCALLTYPE *GetParent)(
718         IDXGIFactory6 *This,
719         REFIID riid,
720         void **parent);
721 
722     /*** IDXGIFactory methods ***/
723     HRESULT (STDMETHODCALLTYPE *EnumAdapters)(
724         IDXGIFactory6 *This,
725         UINT adapter_idx,
726         IDXGIAdapter **adapter);
727 
728     HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)(
729         IDXGIFactory6 *This,
730         HWND window,
731         UINT flags);
732 
733     HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)(
734         IDXGIFactory6 *This,
735         HWND *window);
736 
737     HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
738         IDXGIFactory6 *This,
739         IUnknown *device,
740         DXGI_SWAP_CHAIN_DESC *desc,
741         IDXGISwapChain **swapchain);
742 
743     HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)(
744         IDXGIFactory6 *This,
745         HMODULE swrast,
746         IDXGIAdapter **adapter);
747 
748     /*** IDXGIFactory1 methods ***/
749     HRESULT (STDMETHODCALLTYPE *EnumAdapters1)(
750         IDXGIFactory6 *This,
751         UINT Adapter,
752         IDXGIAdapter1 **ppAdapter);
753 
754     WINBOOL (STDMETHODCALLTYPE *IsCurrent)(
755         IDXGIFactory6 *This);
756 
757     /*** IDXGIFactory2 methods ***/
758     WINBOOL (STDMETHODCALLTYPE *IsWindowedStereoEnabled)(
759         IDXGIFactory6 *This);
760 
761     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForHwnd)(
762         IDXGIFactory6 *This,
763         IUnknown *pDevice,
764         HWND hWnd,
765         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
766         const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
767         IDXGIOutput *pRestrictToOutput,
768         IDXGISwapChain1 **ppSwapChain);
769 
770     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCoreWindow)(
771         IDXGIFactory6 *This,
772         IUnknown *pDevice,
773         IUnknown *pWindow,
774         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
775         IDXGIOutput *pRestrictToOutput,
776         IDXGISwapChain1 **ppSwapChain);
777 
778     HRESULT (STDMETHODCALLTYPE *GetSharedResourceAdapterLuid)(
779         IDXGIFactory6 *This,
780         HANDLE hResource,
781         LUID *pLuid);
782 
783     HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
784         IDXGIFactory6 *This,
785         HWND WindowHandle,
786         UINT wMsg,
787         DWORD *pdwCookie);
788 
789     HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusEvent)(
790         IDXGIFactory6 *This,
791         HANDLE hEvent,
792         DWORD *pdwCookie);
793 
794     void (STDMETHODCALLTYPE *UnregisterStereoStatus)(
795         IDXGIFactory6 *This,
796         DWORD dwCookie);
797 
798     HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
799         IDXGIFactory6 *This,
800         HWND WindowHandle,
801         UINT wMsg,
802         DWORD *pdwCookie);
803 
804     HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusEvent)(
805         IDXGIFactory6 *This,
806         HANDLE hEvent,
807         DWORD *pdwCookie);
808 
809     void (STDMETHODCALLTYPE *UnregisterOcclusionStatus)(
810         IDXGIFactory6 *This,
811         DWORD dwCookie);
812 
813     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForComposition)(
814         IDXGIFactory6 *This,
815         IUnknown *pDevice,
816         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
817         IDXGIOutput *pRestrictToOutput,
818         IDXGISwapChain1 **ppSwapChain);
819 
820     /*** IDXGIFactory3 methods ***/
821     UINT (STDMETHODCALLTYPE *GetCreationFlags)(
822         IDXGIFactory6 *This);
823 
824     /*** IDXGIFactory4 methods ***/
825     HRESULT (STDMETHODCALLTYPE *EnumAdapterByLuid)(
826         IDXGIFactory6 *This,
827         LUID luid,
828         REFIID iid,
829         void **adapter);
830 
831     HRESULT (STDMETHODCALLTYPE *EnumWarpAdapter)(
832         IDXGIFactory6 *This,
833         REFIID iid,
834         void **adapter);
835 
836     /*** IDXGIFactory5 methods ***/
837     HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
838         IDXGIFactory6 *This,
839         DXGI_FEATURE feature,
840         void *support_data,
841         UINT support_data_size);
842 
843     /*** IDXGIFactory6 methods ***/
844     HRESULT (STDMETHODCALLTYPE *EnumAdapterByGpuPreference)(
845         IDXGIFactory6 *This,
846         UINT adapter_idx,
847         DXGI_GPU_PREFERENCE gpu_preference,
848         REFIID iid,
849         void **adapter);
850 
851     END_INTERFACE
852 } IDXGIFactory6Vtbl;
853 
854 interface IDXGIFactory6 {
855     CONST_VTBL IDXGIFactory6Vtbl* lpVtbl;
856 };
857 
858 #ifdef COBJMACROS
859 #ifndef WIDL_C_INLINE_WRAPPERS
860 /*** IUnknown methods ***/
861 #define IDXGIFactory6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
862 #define IDXGIFactory6_AddRef(This) (This)->lpVtbl->AddRef(This)
863 #define IDXGIFactory6_Release(This) (This)->lpVtbl->Release(This)
864 /*** IDXGIObject methods ***/
865 #define IDXGIFactory6_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
866 #define IDXGIFactory6_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
867 #define IDXGIFactory6_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
868 #define IDXGIFactory6_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
869 /*** IDXGIFactory methods ***/
870 #define IDXGIFactory6_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter)
871 #define IDXGIFactory6_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags)
872 #define IDXGIFactory6_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window)
873 #define IDXGIFactory6_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain)
874 #define IDXGIFactory6_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter)
875 /*** IDXGIFactory1 methods ***/
876 #define IDXGIFactory6_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter)
877 #define IDXGIFactory6_IsCurrent(This) (This)->lpVtbl->IsCurrent(This)
878 /*** IDXGIFactory2 methods ***/
879 #define IDXGIFactory6_IsWindowedStereoEnabled(This) (This)->lpVtbl->IsWindowedStereoEnabled(This)
880 #define IDXGIFactory6_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
881 #define IDXGIFactory6_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
882 #define IDXGIFactory6_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
883 #define IDXGIFactory6_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
884 #define IDXGIFactory6_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
885 #define IDXGIFactory6_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
886 #define IDXGIFactory6_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
887 #define IDXGIFactory6_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
888 #define IDXGIFactory6_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
889 #define IDXGIFactory6_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
890 /*** IDXGIFactory3 methods ***/
891 #define IDXGIFactory6_GetCreationFlags(This) (This)->lpVtbl->GetCreationFlags(This)
892 /*** IDXGIFactory4 methods ***/
893 #define IDXGIFactory6_EnumAdapterByLuid(This,luid,iid,adapter) (This)->lpVtbl->EnumAdapterByLuid(This,luid,iid,adapter)
894 #define IDXGIFactory6_EnumWarpAdapter(This,iid,adapter) (This)->lpVtbl->EnumWarpAdapter(This,iid,adapter)
895 /*** IDXGIFactory5 methods ***/
896 #define IDXGIFactory6_CheckFeatureSupport(This,feature,support_data,support_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,support_data,support_data_size)
897 /*** IDXGIFactory6 methods ***/
898 #define IDXGIFactory6_EnumAdapterByGpuPreference(This,adapter_idx,gpu_preference,iid,adapter) (This)->lpVtbl->EnumAdapterByGpuPreference(This,adapter_idx,gpu_preference,iid,adapter)
899 #else
900 /*** IUnknown methods ***/
901 static FORCEINLINE HRESULT IDXGIFactory6_QueryInterface(IDXGIFactory6* This,REFIID riid,void **ppvObject) {
902     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
903 }
904 static FORCEINLINE ULONG IDXGIFactory6_AddRef(IDXGIFactory6* This) {
905     return This->lpVtbl->AddRef(This);
906 }
907 static FORCEINLINE ULONG IDXGIFactory6_Release(IDXGIFactory6* This) {
908     return This->lpVtbl->Release(This);
909 }
910 /*** IDXGIObject methods ***/
911 static FORCEINLINE HRESULT IDXGIFactory6_SetPrivateData(IDXGIFactory6* This,REFGUID guid,UINT data_size,const void *data) {
912     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
913 }
914 static FORCEINLINE HRESULT IDXGIFactory6_SetPrivateDataInterface(IDXGIFactory6* This,REFGUID guid,const IUnknown *object) {
915     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
916 }
917 static FORCEINLINE HRESULT IDXGIFactory6_GetPrivateData(IDXGIFactory6* This,REFGUID guid,UINT *data_size,void *data) {
918     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
919 }
920 static FORCEINLINE HRESULT IDXGIFactory6_GetParent(IDXGIFactory6* This,REFIID riid,void **parent) {
921     return This->lpVtbl->GetParent(This,riid,parent);
922 }
923 /*** IDXGIFactory methods ***/
924 static FORCEINLINE HRESULT IDXGIFactory6_EnumAdapters(IDXGIFactory6* This,UINT adapter_idx,IDXGIAdapter **adapter) {
925     return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter);
926 }
927 static FORCEINLINE HRESULT IDXGIFactory6_MakeWindowAssociation(IDXGIFactory6* This,HWND window,UINT flags) {
928     return This->lpVtbl->MakeWindowAssociation(This,window,flags);
929 }
930 static FORCEINLINE HRESULT IDXGIFactory6_GetWindowAssociation(IDXGIFactory6* This,HWND *window) {
931     return This->lpVtbl->GetWindowAssociation(This,window);
932 }
933 static FORCEINLINE HRESULT IDXGIFactory6_CreateSwapChain(IDXGIFactory6* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) {
934     return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain);
935 }
936 static FORCEINLINE HRESULT IDXGIFactory6_CreateSoftwareAdapter(IDXGIFactory6* This,HMODULE swrast,IDXGIAdapter **adapter) {
937     return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter);
938 }
939 /*** IDXGIFactory1 methods ***/
940 static FORCEINLINE HRESULT IDXGIFactory6_EnumAdapters1(IDXGIFactory6* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) {
941     return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter);
942 }
943 static FORCEINLINE WINBOOL IDXGIFactory6_IsCurrent(IDXGIFactory6* This) {
944     return This->lpVtbl->IsCurrent(This);
945 }
946 /*** IDXGIFactory2 methods ***/
947 static FORCEINLINE WINBOOL IDXGIFactory6_IsWindowedStereoEnabled(IDXGIFactory6* This) {
948     return This->lpVtbl->IsWindowedStereoEnabled(This);
949 }
950 static FORCEINLINE HRESULT IDXGIFactory6_CreateSwapChainForHwnd(IDXGIFactory6* This,IUnknown *pDevice,HWND hWnd,const DXGI_SWAP_CHAIN_DESC1 *pDesc,const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
951     return This->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain);
952 }
953 static FORCEINLINE HRESULT IDXGIFactory6_CreateSwapChainForCoreWindow(IDXGIFactory6* This,IUnknown *pDevice,IUnknown *pWindow,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
954     return This->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain);
955 }
956 static FORCEINLINE HRESULT IDXGIFactory6_GetSharedResourceAdapterLuid(IDXGIFactory6* This,HANDLE hResource,LUID *pLuid) {
957     return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
958 }
959 static FORCEINLINE HRESULT IDXGIFactory6_RegisterStereoStatusWindow(IDXGIFactory6* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
960     return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
961 }
962 static FORCEINLINE HRESULT IDXGIFactory6_RegisterStereoStatusEvent(IDXGIFactory6* This,HANDLE hEvent,DWORD *pdwCookie) {
963     return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
964 }
965 static FORCEINLINE void IDXGIFactory6_UnregisterStereoStatus(IDXGIFactory6* This,DWORD dwCookie) {
966     This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
967 }
968 static FORCEINLINE HRESULT IDXGIFactory6_RegisterOcclusionStatusWindow(IDXGIFactory6* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
969     return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
970 }
971 static FORCEINLINE HRESULT IDXGIFactory6_RegisterOcclusionStatusEvent(IDXGIFactory6* This,HANDLE hEvent,DWORD *pdwCookie) {
972     return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
973 }
974 static FORCEINLINE void IDXGIFactory6_UnregisterOcclusionStatus(IDXGIFactory6* This,DWORD dwCookie) {
975     This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie);
976 }
977 static FORCEINLINE HRESULT IDXGIFactory6_CreateSwapChainForComposition(IDXGIFactory6* This,IUnknown *pDevice,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
978     return This->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain);
979 }
980 /*** IDXGIFactory3 methods ***/
981 static FORCEINLINE UINT IDXGIFactory6_GetCreationFlags(IDXGIFactory6* This) {
982     return This->lpVtbl->GetCreationFlags(This);
983 }
984 /*** IDXGIFactory4 methods ***/
985 static FORCEINLINE HRESULT IDXGIFactory6_EnumAdapterByLuid(IDXGIFactory6* This,LUID luid,REFIID iid,void **adapter) {
986     return This->lpVtbl->EnumAdapterByLuid(This,luid,iid,adapter);
987 }
988 static FORCEINLINE HRESULT IDXGIFactory6_EnumWarpAdapter(IDXGIFactory6* This,REFIID iid,void **adapter) {
989     return This->lpVtbl->EnumWarpAdapter(This,iid,adapter);
990 }
991 /*** IDXGIFactory5 methods ***/
992 static FORCEINLINE HRESULT IDXGIFactory6_CheckFeatureSupport(IDXGIFactory6* This,DXGI_FEATURE feature,void *support_data,UINT support_data_size) {
993     return This->lpVtbl->CheckFeatureSupport(This,feature,support_data,support_data_size);
994 }
995 /*** IDXGIFactory6 methods ***/
996 static FORCEINLINE HRESULT IDXGIFactory6_EnumAdapterByGpuPreference(IDXGIFactory6* This,UINT adapter_idx,DXGI_GPU_PREFERENCE gpu_preference,REFIID iid,void **adapter) {
997     return This->lpVtbl->EnumAdapterByGpuPreference(This,adapter_idx,gpu_preference,iid,adapter);
998 }
999 #endif
1000 #endif
1001 
1002 #endif
1003 
1004 
1005 #endif  /* __IDXGIFactory6_INTERFACE_DEFINED__ */
1006 
1007 /*****************************************************************************
1008  * IDXGIFactory7 interface
1009  */
1010 #ifndef __IDXGIFactory7_INTERFACE_DEFINED__
1011 #define __IDXGIFactory7_INTERFACE_DEFINED__
1012 
1013 DEFINE_GUID(IID_IDXGIFactory7, 0xa4966eed, 0x76db, 0x44da, 0x84,0xc1, 0xee,0x9a,0x7a,0xfb,0x20,0xa8);
1014 #if defined(__cplusplus) && !defined(CINTERFACE)
1015 MIDL_INTERFACE("a4966eed-76db-44da-84c1-ee9a7afb20a8")
1016 IDXGIFactory7 : public IDXGIFactory6
1017 {
1018     virtual HRESULT STDMETHODCALLTYPE RegisterAdaptersChangedEvent(
1019         HANDLE event,
1020         DWORD *cookie) = 0;
1021 
1022     virtual HRESULT STDMETHODCALLTYPE UnregisterAdaptersChangedEvent(
1023         DWORD cookie) = 0;
1024 
1025 };
1026 #ifdef __CRT_UUID_DECL
1027 __CRT_UUID_DECL(IDXGIFactory7, 0xa4966eed, 0x76db, 0x44da, 0x84,0xc1, 0xee,0x9a,0x7a,0xfb,0x20,0xa8)
1028 #endif
1029 #else
1030 typedef struct IDXGIFactory7Vtbl {
1031     BEGIN_INTERFACE
1032 
1033     /*** IUnknown methods ***/
1034     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1035         IDXGIFactory7 *This,
1036         REFIID riid,
1037         void **ppvObject);
1038 
1039     ULONG (STDMETHODCALLTYPE *AddRef)(
1040         IDXGIFactory7 *This);
1041 
1042     ULONG (STDMETHODCALLTYPE *Release)(
1043         IDXGIFactory7 *This);
1044 
1045     /*** IDXGIObject methods ***/
1046     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1047         IDXGIFactory7 *This,
1048         REFGUID guid,
1049         UINT data_size,
1050         const void *data);
1051 
1052     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1053         IDXGIFactory7 *This,
1054         REFGUID guid,
1055         const IUnknown *object);
1056 
1057     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1058         IDXGIFactory7 *This,
1059         REFGUID guid,
1060         UINT *data_size,
1061         void *data);
1062 
1063     HRESULT (STDMETHODCALLTYPE *GetParent)(
1064         IDXGIFactory7 *This,
1065         REFIID riid,
1066         void **parent);
1067 
1068     /*** IDXGIFactory methods ***/
1069     HRESULT (STDMETHODCALLTYPE *EnumAdapters)(
1070         IDXGIFactory7 *This,
1071         UINT adapter_idx,
1072         IDXGIAdapter **adapter);
1073 
1074     HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)(
1075         IDXGIFactory7 *This,
1076         HWND window,
1077         UINT flags);
1078 
1079     HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)(
1080         IDXGIFactory7 *This,
1081         HWND *window);
1082 
1083     HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
1084         IDXGIFactory7 *This,
1085         IUnknown *device,
1086         DXGI_SWAP_CHAIN_DESC *desc,
1087         IDXGISwapChain **swapchain);
1088 
1089     HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)(
1090         IDXGIFactory7 *This,
1091         HMODULE swrast,
1092         IDXGIAdapter **adapter);
1093 
1094     /*** IDXGIFactory1 methods ***/
1095     HRESULT (STDMETHODCALLTYPE *EnumAdapters1)(
1096         IDXGIFactory7 *This,
1097         UINT Adapter,
1098         IDXGIAdapter1 **ppAdapter);
1099 
1100     WINBOOL (STDMETHODCALLTYPE *IsCurrent)(
1101         IDXGIFactory7 *This);
1102 
1103     /*** IDXGIFactory2 methods ***/
1104     WINBOOL (STDMETHODCALLTYPE *IsWindowedStereoEnabled)(
1105         IDXGIFactory7 *This);
1106 
1107     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForHwnd)(
1108         IDXGIFactory7 *This,
1109         IUnknown *pDevice,
1110         HWND hWnd,
1111         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1112         const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
1113         IDXGIOutput *pRestrictToOutput,
1114         IDXGISwapChain1 **ppSwapChain);
1115 
1116     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCoreWindow)(
1117         IDXGIFactory7 *This,
1118         IUnknown *pDevice,
1119         IUnknown *pWindow,
1120         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1121         IDXGIOutput *pRestrictToOutput,
1122         IDXGISwapChain1 **ppSwapChain);
1123 
1124     HRESULT (STDMETHODCALLTYPE *GetSharedResourceAdapterLuid)(
1125         IDXGIFactory7 *This,
1126         HANDLE hResource,
1127         LUID *pLuid);
1128 
1129     HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
1130         IDXGIFactory7 *This,
1131         HWND WindowHandle,
1132         UINT wMsg,
1133         DWORD *pdwCookie);
1134 
1135     HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusEvent)(
1136         IDXGIFactory7 *This,
1137         HANDLE hEvent,
1138         DWORD *pdwCookie);
1139 
1140     void (STDMETHODCALLTYPE *UnregisterStereoStatus)(
1141         IDXGIFactory7 *This,
1142         DWORD dwCookie);
1143 
1144     HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
1145         IDXGIFactory7 *This,
1146         HWND WindowHandle,
1147         UINT wMsg,
1148         DWORD *pdwCookie);
1149 
1150     HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusEvent)(
1151         IDXGIFactory7 *This,
1152         HANDLE hEvent,
1153         DWORD *pdwCookie);
1154 
1155     void (STDMETHODCALLTYPE *UnregisterOcclusionStatus)(
1156         IDXGIFactory7 *This,
1157         DWORD dwCookie);
1158 
1159     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForComposition)(
1160         IDXGIFactory7 *This,
1161         IUnknown *pDevice,
1162         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1163         IDXGIOutput *pRestrictToOutput,
1164         IDXGISwapChain1 **ppSwapChain);
1165 
1166     /*** IDXGIFactory3 methods ***/
1167     UINT (STDMETHODCALLTYPE *GetCreationFlags)(
1168         IDXGIFactory7 *This);
1169 
1170     /*** IDXGIFactory4 methods ***/
1171     HRESULT (STDMETHODCALLTYPE *EnumAdapterByLuid)(
1172         IDXGIFactory7 *This,
1173         LUID luid,
1174         REFIID iid,
1175         void **adapter);
1176 
1177     HRESULT (STDMETHODCALLTYPE *EnumWarpAdapter)(
1178         IDXGIFactory7 *This,
1179         REFIID iid,
1180         void **adapter);
1181 
1182     /*** IDXGIFactory5 methods ***/
1183     HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
1184         IDXGIFactory7 *This,
1185         DXGI_FEATURE feature,
1186         void *support_data,
1187         UINT support_data_size);
1188 
1189     /*** IDXGIFactory6 methods ***/
1190     HRESULT (STDMETHODCALLTYPE *EnumAdapterByGpuPreference)(
1191         IDXGIFactory7 *This,
1192         UINT adapter_idx,
1193         DXGI_GPU_PREFERENCE gpu_preference,
1194         REFIID iid,
1195         void **adapter);
1196 
1197     /*** IDXGIFactory7 methods ***/
1198     HRESULT (STDMETHODCALLTYPE *RegisterAdaptersChangedEvent)(
1199         IDXGIFactory7 *This,
1200         HANDLE event,
1201         DWORD *cookie);
1202 
1203     HRESULT (STDMETHODCALLTYPE *UnregisterAdaptersChangedEvent)(
1204         IDXGIFactory7 *This,
1205         DWORD cookie);
1206 
1207     END_INTERFACE
1208 } IDXGIFactory7Vtbl;
1209 
1210 interface IDXGIFactory7 {
1211     CONST_VTBL IDXGIFactory7Vtbl* lpVtbl;
1212 };
1213 
1214 #ifdef COBJMACROS
1215 #ifndef WIDL_C_INLINE_WRAPPERS
1216 /*** IUnknown methods ***/
1217 #define IDXGIFactory7_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1218 #define IDXGIFactory7_AddRef(This) (This)->lpVtbl->AddRef(This)
1219 #define IDXGIFactory7_Release(This) (This)->lpVtbl->Release(This)
1220 /*** IDXGIObject methods ***/
1221 #define IDXGIFactory7_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1222 #define IDXGIFactory7_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
1223 #define IDXGIFactory7_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1224 #define IDXGIFactory7_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
1225 /*** IDXGIFactory methods ***/
1226 #define IDXGIFactory7_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter)
1227 #define IDXGIFactory7_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags)
1228 #define IDXGIFactory7_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window)
1229 #define IDXGIFactory7_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain)
1230 #define IDXGIFactory7_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter)
1231 /*** IDXGIFactory1 methods ***/
1232 #define IDXGIFactory7_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter)
1233 #define IDXGIFactory7_IsCurrent(This) (This)->lpVtbl->IsCurrent(This)
1234 /*** IDXGIFactory2 methods ***/
1235 #define IDXGIFactory7_IsWindowedStereoEnabled(This) (This)->lpVtbl->IsWindowedStereoEnabled(This)
1236 #define IDXGIFactory7_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
1237 #define IDXGIFactory7_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
1238 #define IDXGIFactory7_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
1239 #define IDXGIFactory7_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
1240 #define IDXGIFactory7_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
1241 #define IDXGIFactory7_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
1242 #define IDXGIFactory7_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
1243 #define IDXGIFactory7_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
1244 #define IDXGIFactory7_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
1245 #define IDXGIFactory7_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
1246 /*** IDXGIFactory3 methods ***/
1247 #define IDXGIFactory7_GetCreationFlags(This) (This)->lpVtbl->GetCreationFlags(This)
1248 /*** IDXGIFactory4 methods ***/
1249 #define IDXGIFactory7_EnumAdapterByLuid(This,luid,iid,adapter) (This)->lpVtbl->EnumAdapterByLuid(This,luid,iid,adapter)
1250 #define IDXGIFactory7_EnumWarpAdapter(This,iid,adapter) (This)->lpVtbl->EnumWarpAdapter(This,iid,adapter)
1251 /*** IDXGIFactory5 methods ***/
1252 #define IDXGIFactory7_CheckFeatureSupport(This,feature,support_data,support_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,support_data,support_data_size)
1253 /*** IDXGIFactory6 methods ***/
1254 #define IDXGIFactory7_EnumAdapterByGpuPreference(This,adapter_idx,gpu_preference,iid,adapter) (This)->lpVtbl->EnumAdapterByGpuPreference(This,adapter_idx,gpu_preference,iid,adapter)
1255 /*** IDXGIFactory7 methods ***/
1256 #define IDXGIFactory7_RegisterAdaptersChangedEvent(This,event,cookie) (This)->lpVtbl->RegisterAdaptersChangedEvent(This,event,cookie)
1257 #define IDXGIFactory7_UnregisterAdaptersChangedEvent(This,cookie) (This)->lpVtbl->UnregisterAdaptersChangedEvent(This,cookie)
1258 #else
1259 /*** IUnknown methods ***/
1260 static FORCEINLINE HRESULT IDXGIFactory7_QueryInterface(IDXGIFactory7* This,REFIID riid,void **ppvObject) {
1261     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1262 }
1263 static FORCEINLINE ULONG IDXGIFactory7_AddRef(IDXGIFactory7* This) {
1264     return This->lpVtbl->AddRef(This);
1265 }
1266 static FORCEINLINE ULONG IDXGIFactory7_Release(IDXGIFactory7* This) {
1267     return This->lpVtbl->Release(This);
1268 }
1269 /*** IDXGIObject methods ***/
1270 static FORCEINLINE HRESULT IDXGIFactory7_SetPrivateData(IDXGIFactory7* This,REFGUID guid,UINT data_size,const void *data) {
1271     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1272 }
1273 static FORCEINLINE HRESULT IDXGIFactory7_SetPrivateDataInterface(IDXGIFactory7* This,REFGUID guid,const IUnknown *object) {
1274     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1275 }
1276 static FORCEINLINE HRESULT IDXGIFactory7_GetPrivateData(IDXGIFactory7* This,REFGUID guid,UINT *data_size,void *data) {
1277     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1278 }
1279 static FORCEINLINE HRESULT IDXGIFactory7_GetParent(IDXGIFactory7* This,REFIID riid,void **parent) {
1280     return This->lpVtbl->GetParent(This,riid,parent);
1281 }
1282 /*** IDXGIFactory methods ***/
1283 static FORCEINLINE HRESULT IDXGIFactory7_EnumAdapters(IDXGIFactory7* This,UINT adapter_idx,IDXGIAdapter **adapter) {
1284     return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter);
1285 }
1286 static FORCEINLINE HRESULT IDXGIFactory7_MakeWindowAssociation(IDXGIFactory7* This,HWND window,UINT flags) {
1287     return This->lpVtbl->MakeWindowAssociation(This,window,flags);
1288 }
1289 static FORCEINLINE HRESULT IDXGIFactory7_GetWindowAssociation(IDXGIFactory7* This,HWND *window) {
1290     return This->lpVtbl->GetWindowAssociation(This,window);
1291 }
1292 static FORCEINLINE HRESULT IDXGIFactory7_CreateSwapChain(IDXGIFactory7* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) {
1293     return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain);
1294 }
1295 static FORCEINLINE HRESULT IDXGIFactory7_CreateSoftwareAdapter(IDXGIFactory7* This,HMODULE swrast,IDXGIAdapter **adapter) {
1296     return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter);
1297 }
1298 /*** IDXGIFactory1 methods ***/
1299 static FORCEINLINE HRESULT IDXGIFactory7_EnumAdapters1(IDXGIFactory7* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) {
1300     return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter);
1301 }
1302 static FORCEINLINE WINBOOL IDXGIFactory7_IsCurrent(IDXGIFactory7* This) {
1303     return This->lpVtbl->IsCurrent(This);
1304 }
1305 /*** IDXGIFactory2 methods ***/
1306 static FORCEINLINE WINBOOL IDXGIFactory7_IsWindowedStereoEnabled(IDXGIFactory7* This) {
1307     return This->lpVtbl->IsWindowedStereoEnabled(This);
1308 }
1309 static FORCEINLINE HRESULT IDXGIFactory7_CreateSwapChainForHwnd(IDXGIFactory7* This,IUnknown *pDevice,HWND hWnd,const DXGI_SWAP_CHAIN_DESC1 *pDesc,const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1310     return This->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain);
1311 }
1312 static FORCEINLINE HRESULT IDXGIFactory7_CreateSwapChainForCoreWindow(IDXGIFactory7* This,IUnknown *pDevice,IUnknown *pWindow,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1313     return This->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain);
1314 }
1315 static FORCEINLINE HRESULT IDXGIFactory7_GetSharedResourceAdapterLuid(IDXGIFactory7* This,HANDLE hResource,LUID *pLuid) {
1316     return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
1317 }
1318 static FORCEINLINE HRESULT IDXGIFactory7_RegisterStereoStatusWindow(IDXGIFactory7* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1319     return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1320 }
1321 static FORCEINLINE HRESULT IDXGIFactory7_RegisterStereoStatusEvent(IDXGIFactory7* This,HANDLE hEvent,DWORD *pdwCookie) {
1322     return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
1323 }
1324 static FORCEINLINE void IDXGIFactory7_UnregisterStereoStatus(IDXGIFactory7* This,DWORD dwCookie) {
1325     This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
1326 }
1327 static FORCEINLINE HRESULT IDXGIFactory7_RegisterOcclusionStatusWindow(IDXGIFactory7* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1328     return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1329 }
1330 static FORCEINLINE HRESULT IDXGIFactory7_RegisterOcclusionStatusEvent(IDXGIFactory7* This,HANDLE hEvent,DWORD *pdwCookie) {
1331     return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
1332 }
1333 static FORCEINLINE void IDXGIFactory7_UnregisterOcclusionStatus(IDXGIFactory7* This,DWORD dwCookie) {
1334     This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie);
1335 }
1336 static FORCEINLINE HRESULT IDXGIFactory7_CreateSwapChainForComposition(IDXGIFactory7* This,IUnknown *pDevice,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1337     return This->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain);
1338 }
1339 /*** IDXGIFactory3 methods ***/
1340 static FORCEINLINE UINT IDXGIFactory7_GetCreationFlags(IDXGIFactory7* This) {
1341     return This->lpVtbl->GetCreationFlags(This);
1342 }
1343 /*** IDXGIFactory4 methods ***/
1344 static FORCEINLINE HRESULT IDXGIFactory7_EnumAdapterByLuid(IDXGIFactory7* This,LUID luid,REFIID iid,void **adapter) {
1345     return This->lpVtbl->EnumAdapterByLuid(This,luid,iid,adapter);
1346 }
1347 static FORCEINLINE HRESULT IDXGIFactory7_EnumWarpAdapter(IDXGIFactory7* This,REFIID iid,void **adapter) {
1348     return This->lpVtbl->EnumWarpAdapter(This,iid,adapter);
1349 }
1350 /*** IDXGIFactory5 methods ***/
1351 static FORCEINLINE HRESULT IDXGIFactory7_CheckFeatureSupport(IDXGIFactory7* This,DXGI_FEATURE feature,void *support_data,UINT support_data_size) {
1352     return This->lpVtbl->CheckFeatureSupport(This,feature,support_data,support_data_size);
1353 }
1354 /*** IDXGIFactory6 methods ***/
1355 static FORCEINLINE HRESULT IDXGIFactory7_EnumAdapterByGpuPreference(IDXGIFactory7* This,UINT adapter_idx,DXGI_GPU_PREFERENCE gpu_preference,REFIID iid,void **adapter) {
1356     return This->lpVtbl->EnumAdapterByGpuPreference(This,adapter_idx,gpu_preference,iid,adapter);
1357 }
1358 /*** IDXGIFactory7 methods ***/
1359 static FORCEINLINE HRESULT IDXGIFactory7_RegisterAdaptersChangedEvent(IDXGIFactory7* This,HANDLE event,DWORD *cookie) {
1360     return This->lpVtbl->RegisterAdaptersChangedEvent(This,event,cookie);
1361 }
1362 static FORCEINLINE HRESULT IDXGIFactory7_UnregisterAdaptersChangedEvent(IDXGIFactory7* This,DWORD cookie) {
1363     return This->lpVtbl->UnregisterAdaptersChangedEvent(This,cookie);
1364 }
1365 #endif
1366 #endif
1367 
1368 #endif
1369 
1370 
1371 #endif  /* __IDXGIFactory7_INTERFACE_DEFINED__ */
1372 
1373 /* Begin additional prototypes for all interfaces */
1374 
1375 
1376 /* End additional prototypes */
1377 
1378 #ifdef __cplusplus
1379 }
1380 #endif
1381 
1382 #endif /* __dxgi1_6_h__ */
1383