1 /*** Autogenerated by WIDL 6.4 from include/dxgi1_4.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_4_h__
17 #define __dxgi1_4_h__
18 
19 /* Forward declarations */
20 
21 #ifndef __IDXGISwapChain3_FWD_DEFINED__
22 #define __IDXGISwapChain3_FWD_DEFINED__
23 typedef interface IDXGISwapChain3 IDXGISwapChain3;
24 #ifdef __cplusplus
25 interface IDXGISwapChain3;
26 #endif /* __cplusplus */
27 #endif
28 
29 #ifndef __IDXGIOutput4_FWD_DEFINED__
30 #define __IDXGIOutput4_FWD_DEFINED__
31 typedef interface IDXGIOutput4 IDXGIOutput4;
32 #ifdef __cplusplus
33 interface IDXGIOutput4;
34 #endif /* __cplusplus */
35 #endif
36 
37 #ifndef __IDXGIFactory4_FWD_DEFINED__
38 #define __IDXGIFactory4_FWD_DEFINED__
39 typedef interface IDXGIFactory4 IDXGIFactory4;
40 #ifdef __cplusplus
41 interface IDXGIFactory4;
42 #endif /* __cplusplus */
43 #endif
44 
45 #ifndef __IDXGIAdapter3_FWD_DEFINED__
46 #define __IDXGIAdapter3_FWD_DEFINED__
47 typedef interface IDXGIAdapter3 IDXGIAdapter3;
48 #ifdef __cplusplus
49 interface IDXGIAdapter3;
50 #endif /* __cplusplus */
51 #endif
52 
53 /* Headers for imported files */
54 
55 #include <dxgi1_3.h>
56 
57 #ifdef __cplusplus
58 extern "C" {
59 #endif
60 
61 typedef enum DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG {
62     DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_PRESENT = 0x1,
63     DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_OVERLAY_PRESENT = 0x2
64 } DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG;
65 typedef enum DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG {
66     DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG_PRESENT = 0x1
67 } DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG;
68 typedef enum DXGI_MEMORY_SEGMENT_GROUP {
69     DXGI_MEMORY_SEGMENT_GROUP_LOCAL = 0x0,
70     DXGI_MEMORY_SEGMENT_GROUP_NON_LOCAL = 0x1
71 } DXGI_MEMORY_SEGMENT_GROUP;
72 typedef struct DXGI_QUERY_VIDEO_MEMORY_INFO {
73     UINT64 Budget;
74     UINT64 CurrentUsage;
75     UINT64 AvailableForReservation;
76     UINT64 CurrentReservation;
77 } DXGI_QUERY_VIDEO_MEMORY_INFO;
78 /*****************************************************************************
79  * IDXGISwapChain3 interface
80  */
81 #ifndef __IDXGISwapChain3_INTERFACE_DEFINED__
82 #define __IDXGISwapChain3_INTERFACE_DEFINED__
83 
84 DEFINE_GUID(IID_IDXGISwapChain3, 0x94d99bdb, 0xf1f8, 0x4ab0, 0xb2,0x36, 0x7d,0xa0,0x17,0x0e,0xda,0xb1);
85 #if defined(__cplusplus) && !defined(CINTERFACE)
86 MIDL_INTERFACE("94d99bdb-f1f8-4ab0-b236-7da0170edab1")
87 IDXGISwapChain3 : public IDXGISwapChain2
88 {
89     virtual UINT STDMETHODCALLTYPE GetCurrentBackBufferIndex(
90         ) = 0;
91 
92     virtual HRESULT STDMETHODCALLTYPE CheckColorSpaceSupport(
93         DXGI_COLOR_SPACE_TYPE colour_space,
94         UINT *colour_space_support) = 0;
95 
96     virtual HRESULT STDMETHODCALLTYPE SetColorSpace1(
97         DXGI_COLOR_SPACE_TYPE colour_space) = 0;
98 
99     virtual HRESULT STDMETHODCALLTYPE ResizeBuffers1(
100         UINT buffer_count,
101         UINT width,
102         UINT height,
103         DXGI_FORMAT format,
104         UINT flags,
105         const UINT *node_mask,
106         IUnknown *const *present_queue) = 0;
107 
108 };
109 #ifdef __CRT_UUID_DECL
110 __CRT_UUID_DECL(IDXGISwapChain3, 0x94d99bdb, 0xf1f8, 0x4ab0, 0xb2,0x36, 0x7d,0xa0,0x17,0x0e,0xda,0xb1)
111 #endif
112 #else
113 typedef struct IDXGISwapChain3Vtbl {
114     BEGIN_INTERFACE
115 
116     /*** IUnknown methods ***/
117     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
118         IDXGISwapChain3 *This,
119         REFIID riid,
120         void **ppvObject);
121 
122     ULONG (STDMETHODCALLTYPE *AddRef)(
123         IDXGISwapChain3 *This);
124 
125     ULONG (STDMETHODCALLTYPE *Release)(
126         IDXGISwapChain3 *This);
127 
128     /*** IDXGIObject methods ***/
129     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
130         IDXGISwapChain3 *This,
131         REFGUID guid,
132         UINT data_size,
133         const void *data);
134 
135     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
136         IDXGISwapChain3 *This,
137         REFGUID guid,
138         const IUnknown *object);
139 
140     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
141         IDXGISwapChain3 *This,
142         REFGUID guid,
143         UINT *data_size,
144         void *data);
145 
146     HRESULT (STDMETHODCALLTYPE *GetParent)(
147         IDXGISwapChain3 *This,
148         REFIID riid,
149         void **parent);
150 
151     /*** IDXGIDeviceSubObject methods ***/
152     HRESULT (STDMETHODCALLTYPE *GetDevice)(
153         IDXGISwapChain3 *This,
154         REFIID riid,
155         void **device);
156 
157     /*** IDXGISwapChain methods ***/
158     HRESULT (STDMETHODCALLTYPE *Present)(
159         IDXGISwapChain3 *This,
160         UINT sync_interval,
161         UINT flags);
162 
163     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
164         IDXGISwapChain3 *This,
165         UINT buffer_idx,
166         REFIID riid,
167         void **surface);
168 
169     HRESULT (STDMETHODCALLTYPE *SetFullscreenState)(
170         IDXGISwapChain3 *This,
171         WINBOOL fullscreen,
172         IDXGIOutput *target);
173 
174     HRESULT (STDMETHODCALLTYPE *GetFullscreenState)(
175         IDXGISwapChain3 *This,
176         WINBOOL *fullscreen,
177         IDXGIOutput **target);
178 
179     HRESULT (STDMETHODCALLTYPE *GetDesc)(
180         IDXGISwapChain3 *This,
181         DXGI_SWAP_CHAIN_DESC *desc);
182 
183     HRESULT (STDMETHODCALLTYPE *ResizeBuffers)(
184         IDXGISwapChain3 *This,
185         UINT buffer_count,
186         UINT width,
187         UINT height,
188         DXGI_FORMAT format,
189         UINT flags);
190 
191     HRESULT (STDMETHODCALLTYPE *ResizeTarget)(
192         IDXGISwapChain3 *This,
193         const DXGI_MODE_DESC *target_mode_desc);
194 
195     HRESULT (STDMETHODCALLTYPE *GetContainingOutput)(
196         IDXGISwapChain3 *This,
197         IDXGIOutput **output);
198 
199     HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
200         IDXGISwapChain3 *This,
201         DXGI_FRAME_STATISTICS *stats);
202 
203     HRESULT (STDMETHODCALLTYPE *GetLastPresentCount)(
204         IDXGISwapChain3 *This,
205         UINT *last_present_count);
206 
207     /*** IDXGISwapChain1 methods ***/
208     HRESULT (STDMETHODCALLTYPE *GetDesc1)(
209         IDXGISwapChain3 *This,
210         DXGI_SWAP_CHAIN_DESC1 *pDesc);
211 
212     HRESULT (STDMETHODCALLTYPE *GetFullscreenDesc)(
213         IDXGISwapChain3 *This,
214         DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc);
215 
216     HRESULT (STDMETHODCALLTYPE *GetHwnd)(
217         IDXGISwapChain3 *This,
218         HWND *pHwnd);
219 
220     HRESULT (STDMETHODCALLTYPE *GetCoreWindow)(
221         IDXGISwapChain3 *This,
222         REFIID refiid,
223         void **ppUnk);
224 
225     HRESULT (STDMETHODCALLTYPE *Present1)(
226         IDXGISwapChain3 *This,
227         UINT SyncInterval,
228         UINT PresentFlags,
229         const DXGI_PRESENT_PARAMETERS *pPresentParameters);
230 
231     WINBOOL (STDMETHODCALLTYPE *IsTemporaryMonoSupported)(
232         IDXGISwapChain3 *This);
233 
234     HRESULT (STDMETHODCALLTYPE *GetRestrictToOutput)(
235         IDXGISwapChain3 *This,
236         IDXGIOutput **ppRestrictToOutput);
237 
238     HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)(
239         IDXGISwapChain3 *This,
240         const DXGI_RGBA *pColor);
241 
242     HRESULT (STDMETHODCALLTYPE *GetBackgroundColor)(
243         IDXGISwapChain3 *This,
244         DXGI_RGBA *pColor);
245 
246     HRESULT (STDMETHODCALLTYPE *SetRotation)(
247         IDXGISwapChain3 *This,
248         DXGI_MODE_ROTATION Rotation);
249 
250     HRESULT (STDMETHODCALLTYPE *GetRotation)(
251         IDXGISwapChain3 *This,
252         DXGI_MODE_ROTATION *pRotation);
253 
254     /*** IDXGISwapChain2 methods ***/
255     HRESULT (STDMETHODCALLTYPE *SetSourceSize)(
256         IDXGISwapChain3 *This,
257         UINT width,
258         UINT height);
259 
260     HRESULT (STDMETHODCALLTYPE *GetSourceSize)(
261         IDXGISwapChain3 *This,
262         UINT *width,
263         UINT *height);
264 
265     HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)(
266         IDXGISwapChain3 *This,
267         UINT max_latency);
268 
269     HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)(
270         IDXGISwapChain3 *This,
271         UINT *max_latency);
272 
273     HANDLE (STDMETHODCALLTYPE *GetFrameLatencyWaitableObject)(
274         IDXGISwapChain3 *This);
275 
276     HRESULT (STDMETHODCALLTYPE *SetMatrixTransform)(
277         IDXGISwapChain3 *This,
278         const DXGI_MATRIX_3X2_F *matrix);
279 
280     HRESULT (STDMETHODCALLTYPE *GetMatrixTransform)(
281         IDXGISwapChain3 *This,
282         DXGI_MATRIX_3X2_F *matrix);
283 
284     /*** IDXGISwapChain3 methods ***/
285     UINT (STDMETHODCALLTYPE *GetCurrentBackBufferIndex)(
286         IDXGISwapChain3 *This);
287 
288     HRESULT (STDMETHODCALLTYPE *CheckColorSpaceSupport)(
289         IDXGISwapChain3 *This,
290         DXGI_COLOR_SPACE_TYPE colour_space,
291         UINT *colour_space_support);
292 
293     HRESULT (STDMETHODCALLTYPE *SetColorSpace1)(
294         IDXGISwapChain3 *This,
295         DXGI_COLOR_SPACE_TYPE colour_space);
296 
297     HRESULT (STDMETHODCALLTYPE *ResizeBuffers1)(
298         IDXGISwapChain3 *This,
299         UINT buffer_count,
300         UINT width,
301         UINT height,
302         DXGI_FORMAT format,
303         UINT flags,
304         const UINT *node_mask,
305         IUnknown *const *present_queue);
306 
307     END_INTERFACE
308 } IDXGISwapChain3Vtbl;
309 
310 interface IDXGISwapChain3 {
311     CONST_VTBL IDXGISwapChain3Vtbl* lpVtbl;
312 };
313 
314 #ifdef COBJMACROS
315 #ifndef WIDL_C_INLINE_WRAPPERS
316 /*** IUnknown methods ***/
317 #define IDXGISwapChain3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
318 #define IDXGISwapChain3_AddRef(This) (This)->lpVtbl->AddRef(This)
319 #define IDXGISwapChain3_Release(This) (This)->lpVtbl->Release(This)
320 /*** IDXGIObject methods ***/
321 #define IDXGISwapChain3_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
322 #define IDXGISwapChain3_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
323 #define IDXGISwapChain3_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
324 #define IDXGISwapChain3_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
325 /*** IDXGIDeviceSubObject methods ***/
326 #define IDXGISwapChain3_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
327 /*** IDXGISwapChain methods ***/
328 #define IDXGISwapChain3_Present(This,sync_interval,flags) (This)->lpVtbl->Present(This,sync_interval,flags)
329 #define IDXGISwapChain3_GetBuffer(This,buffer_idx,riid,surface) (This)->lpVtbl->GetBuffer(This,buffer_idx,riid,surface)
330 #define IDXGISwapChain3_SetFullscreenState(This,fullscreen,target) (This)->lpVtbl->SetFullscreenState(This,fullscreen,target)
331 #define IDXGISwapChain3_GetFullscreenState(This,fullscreen,target) (This)->lpVtbl->GetFullscreenState(This,fullscreen,target)
332 #define IDXGISwapChain3_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
333 #define IDXGISwapChain3_ResizeBuffers(This,buffer_count,width,height,format,flags) (This)->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags)
334 #define IDXGISwapChain3_ResizeTarget(This,target_mode_desc) (This)->lpVtbl->ResizeTarget(This,target_mode_desc)
335 #define IDXGISwapChain3_GetContainingOutput(This,output) (This)->lpVtbl->GetContainingOutput(This,output)
336 #define IDXGISwapChain3_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
337 #define IDXGISwapChain3_GetLastPresentCount(This,last_present_count) (This)->lpVtbl->GetLastPresentCount(This,last_present_count)
338 /*** IDXGISwapChain1 methods ***/
339 #define IDXGISwapChain3_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
340 #define IDXGISwapChain3_GetFullscreenDesc(This,pDesc) (This)->lpVtbl->GetFullscreenDesc(This,pDesc)
341 #define IDXGISwapChain3_GetHwnd(This,pHwnd) (This)->lpVtbl->GetHwnd(This,pHwnd)
342 #define IDXGISwapChain3_GetCoreWindow(This,refiid,ppUnk) (This)->lpVtbl->GetCoreWindow(This,refiid,ppUnk)
343 #define IDXGISwapChain3_Present1(This,SyncInterval,PresentFlags,pPresentParameters) (This)->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters)
344 #define IDXGISwapChain3_IsTemporaryMonoSupported(This) (This)->lpVtbl->IsTemporaryMonoSupported(This)
345 #define IDXGISwapChain3_GetRestrictToOutput(This,ppRestrictToOutput) (This)->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput)
346 #define IDXGISwapChain3_SetBackgroundColor(This,pColor) (This)->lpVtbl->SetBackgroundColor(This,pColor)
347 #define IDXGISwapChain3_GetBackgroundColor(This,pColor) (This)->lpVtbl->GetBackgroundColor(This,pColor)
348 #define IDXGISwapChain3_SetRotation(This,Rotation) (This)->lpVtbl->SetRotation(This,Rotation)
349 #define IDXGISwapChain3_GetRotation(This,pRotation) (This)->lpVtbl->GetRotation(This,pRotation)
350 /*** IDXGISwapChain2 methods ***/
351 #define IDXGISwapChain3_SetSourceSize(This,width,height) (This)->lpVtbl->SetSourceSize(This,width,height)
352 #define IDXGISwapChain3_GetSourceSize(This,width,height) (This)->lpVtbl->GetSourceSize(This,width,height)
353 #define IDXGISwapChain3_SetMaximumFrameLatency(This,max_latency) (This)->lpVtbl->SetMaximumFrameLatency(This,max_latency)
354 #define IDXGISwapChain3_GetMaximumFrameLatency(This,max_latency) (This)->lpVtbl->GetMaximumFrameLatency(This,max_latency)
355 #define IDXGISwapChain3_GetFrameLatencyWaitableObject(This) (This)->lpVtbl->GetFrameLatencyWaitableObject(This)
356 #define IDXGISwapChain3_SetMatrixTransform(This,matrix) (This)->lpVtbl->SetMatrixTransform(This,matrix)
357 #define IDXGISwapChain3_GetMatrixTransform(This,matrix) (This)->lpVtbl->GetMatrixTransform(This,matrix)
358 /*** IDXGISwapChain3 methods ***/
359 #define IDXGISwapChain3_GetCurrentBackBufferIndex(This) (This)->lpVtbl->GetCurrentBackBufferIndex(This)
360 #define IDXGISwapChain3_CheckColorSpaceSupport(This,colour_space,colour_space_support) (This)->lpVtbl->CheckColorSpaceSupport(This,colour_space,colour_space_support)
361 #define IDXGISwapChain3_SetColorSpace1(This,colour_space) (This)->lpVtbl->SetColorSpace1(This,colour_space)
362 #define IDXGISwapChain3_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)
363 #else
364 /*** IUnknown methods ***/
365 static FORCEINLINE HRESULT IDXGISwapChain3_QueryInterface(IDXGISwapChain3* This,REFIID riid,void **ppvObject) {
366     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
367 }
368 static FORCEINLINE ULONG IDXGISwapChain3_AddRef(IDXGISwapChain3* This) {
369     return This->lpVtbl->AddRef(This);
370 }
371 static FORCEINLINE ULONG IDXGISwapChain3_Release(IDXGISwapChain3* This) {
372     return This->lpVtbl->Release(This);
373 }
374 /*** IDXGIObject methods ***/
375 static FORCEINLINE HRESULT IDXGISwapChain3_SetPrivateData(IDXGISwapChain3* This,REFGUID guid,UINT data_size,const void *data) {
376     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
377 }
378 static FORCEINLINE HRESULT IDXGISwapChain3_SetPrivateDataInterface(IDXGISwapChain3* This,REFGUID guid,const IUnknown *object) {
379     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
380 }
381 static FORCEINLINE HRESULT IDXGISwapChain3_GetPrivateData(IDXGISwapChain3* This,REFGUID guid,UINT *data_size,void *data) {
382     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
383 }
384 static FORCEINLINE HRESULT IDXGISwapChain3_GetParent(IDXGISwapChain3* This,REFIID riid,void **parent) {
385     return This->lpVtbl->GetParent(This,riid,parent);
386 }
387 /*** IDXGIDeviceSubObject methods ***/
388 static FORCEINLINE HRESULT IDXGISwapChain3_GetDevice(IDXGISwapChain3* This,REFIID riid,void **device) {
389     return This->lpVtbl->GetDevice(This,riid,device);
390 }
391 /*** IDXGISwapChain methods ***/
392 static FORCEINLINE HRESULT IDXGISwapChain3_Present(IDXGISwapChain3* This,UINT sync_interval,UINT flags) {
393     return This->lpVtbl->Present(This,sync_interval,flags);
394 }
395 static FORCEINLINE HRESULT IDXGISwapChain3_GetBuffer(IDXGISwapChain3* This,UINT buffer_idx,REFIID riid,void **surface) {
396     return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface);
397 }
398 static FORCEINLINE HRESULT IDXGISwapChain3_SetFullscreenState(IDXGISwapChain3* This,WINBOOL fullscreen,IDXGIOutput *target) {
399     return This->lpVtbl->SetFullscreenState(This,fullscreen,target);
400 }
401 static FORCEINLINE HRESULT IDXGISwapChain3_GetFullscreenState(IDXGISwapChain3* This,WINBOOL *fullscreen,IDXGIOutput **target) {
402     return This->lpVtbl->GetFullscreenState(This,fullscreen,target);
403 }
404 static FORCEINLINE HRESULT IDXGISwapChain3_GetDesc(IDXGISwapChain3* This,DXGI_SWAP_CHAIN_DESC *desc) {
405     return This->lpVtbl->GetDesc(This,desc);
406 }
407 static FORCEINLINE HRESULT IDXGISwapChain3_ResizeBuffers(IDXGISwapChain3* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags) {
408     return This->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags);
409 }
410 static FORCEINLINE HRESULT IDXGISwapChain3_ResizeTarget(IDXGISwapChain3* This,const DXGI_MODE_DESC *target_mode_desc) {
411     return This->lpVtbl->ResizeTarget(This,target_mode_desc);
412 }
413 static FORCEINLINE HRESULT IDXGISwapChain3_GetContainingOutput(IDXGISwapChain3* This,IDXGIOutput **output) {
414     return This->lpVtbl->GetContainingOutput(This,output);
415 }
416 static FORCEINLINE HRESULT IDXGISwapChain3_GetFrameStatistics(IDXGISwapChain3* This,DXGI_FRAME_STATISTICS *stats) {
417     return This->lpVtbl->GetFrameStatistics(This,stats);
418 }
419 static FORCEINLINE HRESULT IDXGISwapChain3_GetLastPresentCount(IDXGISwapChain3* This,UINT *last_present_count) {
420     return This->lpVtbl->GetLastPresentCount(This,last_present_count);
421 }
422 /*** IDXGISwapChain1 methods ***/
423 static FORCEINLINE HRESULT IDXGISwapChain3_GetDesc1(IDXGISwapChain3* This,DXGI_SWAP_CHAIN_DESC1 *pDesc) {
424     return This->lpVtbl->GetDesc1(This,pDesc);
425 }
426 static FORCEINLINE HRESULT IDXGISwapChain3_GetFullscreenDesc(IDXGISwapChain3* This,DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) {
427     return This->lpVtbl->GetFullscreenDesc(This,pDesc);
428 }
429 static FORCEINLINE HRESULT IDXGISwapChain3_GetHwnd(IDXGISwapChain3* This,HWND *pHwnd) {
430     return This->lpVtbl->GetHwnd(This,pHwnd);
431 }
432 static FORCEINLINE HRESULT IDXGISwapChain3_GetCoreWindow(IDXGISwapChain3* This,REFIID refiid,void **ppUnk) {
433     return This->lpVtbl->GetCoreWindow(This,refiid,ppUnk);
434 }
435 static FORCEINLINE HRESULT IDXGISwapChain3_Present1(IDXGISwapChain3* This,UINT SyncInterval,UINT PresentFlags,const DXGI_PRESENT_PARAMETERS *pPresentParameters) {
436     return This->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters);
437 }
438 static FORCEINLINE WINBOOL IDXGISwapChain3_IsTemporaryMonoSupported(IDXGISwapChain3* This) {
439     return This->lpVtbl->IsTemporaryMonoSupported(This);
440 }
441 static FORCEINLINE HRESULT IDXGISwapChain3_GetRestrictToOutput(IDXGISwapChain3* This,IDXGIOutput **ppRestrictToOutput) {
442     return This->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput);
443 }
444 static FORCEINLINE HRESULT IDXGISwapChain3_SetBackgroundColor(IDXGISwapChain3* This,const DXGI_RGBA *pColor) {
445     return This->lpVtbl->SetBackgroundColor(This,pColor);
446 }
447 static FORCEINLINE HRESULT IDXGISwapChain3_GetBackgroundColor(IDXGISwapChain3* This,DXGI_RGBA *pColor) {
448     return This->lpVtbl->GetBackgroundColor(This,pColor);
449 }
450 static FORCEINLINE HRESULT IDXGISwapChain3_SetRotation(IDXGISwapChain3* This,DXGI_MODE_ROTATION Rotation) {
451     return This->lpVtbl->SetRotation(This,Rotation);
452 }
453 static FORCEINLINE HRESULT IDXGISwapChain3_GetRotation(IDXGISwapChain3* This,DXGI_MODE_ROTATION *pRotation) {
454     return This->lpVtbl->GetRotation(This,pRotation);
455 }
456 /*** IDXGISwapChain2 methods ***/
457 static FORCEINLINE HRESULT IDXGISwapChain3_SetSourceSize(IDXGISwapChain3* This,UINT width,UINT height) {
458     return This->lpVtbl->SetSourceSize(This,width,height);
459 }
460 static FORCEINLINE HRESULT IDXGISwapChain3_GetSourceSize(IDXGISwapChain3* This,UINT *width,UINT *height) {
461     return This->lpVtbl->GetSourceSize(This,width,height);
462 }
463 static FORCEINLINE HRESULT IDXGISwapChain3_SetMaximumFrameLatency(IDXGISwapChain3* This,UINT max_latency) {
464     return This->lpVtbl->SetMaximumFrameLatency(This,max_latency);
465 }
466 static FORCEINLINE HRESULT IDXGISwapChain3_GetMaximumFrameLatency(IDXGISwapChain3* This,UINT *max_latency) {
467     return This->lpVtbl->GetMaximumFrameLatency(This,max_latency);
468 }
469 static FORCEINLINE HANDLE IDXGISwapChain3_GetFrameLatencyWaitableObject(IDXGISwapChain3* This) {
470     return This->lpVtbl->GetFrameLatencyWaitableObject(This);
471 }
472 static FORCEINLINE HRESULT IDXGISwapChain3_SetMatrixTransform(IDXGISwapChain3* This,const DXGI_MATRIX_3X2_F *matrix) {
473     return This->lpVtbl->SetMatrixTransform(This,matrix);
474 }
475 static FORCEINLINE HRESULT IDXGISwapChain3_GetMatrixTransform(IDXGISwapChain3* This,DXGI_MATRIX_3X2_F *matrix) {
476     return This->lpVtbl->GetMatrixTransform(This,matrix);
477 }
478 /*** IDXGISwapChain3 methods ***/
479 static FORCEINLINE UINT IDXGISwapChain3_GetCurrentBackBufferIndex(IDXGISwapChain3* This) {
480     return This->lpVtbl->GetCurrentBackBufferIndex(This);
481 }
482 static FORCEINLINE HRESULT IDXGISwapChain3_CheckColorSpaceSupport(IDXGISwapChain3* This,DXGI_COLOR_SPACE_TYPE colour_space,UINT *colour_space_support) {
483     return This->lpVtbl->CheckColorSpaceSupport(This,colour_space,colour_space_support);
484 }
485 static FORCEINLINE HRESULT IDXGISwapChain3_SetColorSpace1(IDXGISwapChain3* This,DXGI_COLOR_SPACE_TYPE colour_space) {
486     return This->lpVtbl->SetColorSpace1(This,colour_space);
487 }
488 static FORCEINLINE HRESULT IDXGISwapChain3_ResizeBuffers1(IDXGISwapChain3* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags,const UINT *node_mask,IUnknown *const *present_queue) {
489     return This->lpVtbl->ResizeBuffers1(This,buffer_count,width,height,format,flags,node_mask,present_queue);
490 }
491 #endif
492 #endif
493 
494 #endif
495 
496 
497 #endif  /* __IDXGISwapChain3_INTERFACE_DEFINED__ */
498 
499 /*****************************************************************************
500  * IDXGIOutput4 interface
501  */
502 #ifndef __IDXGIOutput4_INTERFACE_DEFINED__
503 #define __IDXGIOutput4_INTERFACE_DEFINED__
504 
505 DEFINE_GUID(IID_IDXGIOutput4, 0xdc7dca35, 0x2196, 0x414d, 0x9f,0x53, 0x61,0x78,0x84,0x03,0x2a,0x60);
506 #if defined(__cplusplus) && !defined(CINTERFACE)
507 MIDL_INTERFACE("dc7dca35-2196-414d-9f53-617884032a60")
508 IDXGIOutput4 : public IDXGIOutput3
509 {
510     virtual HRESULT STDMETHODCALLTYPE CheckOverlayColorSpaceSupport(
511         DXGI_FORMAT format,
512         DXGI_COLOR_SPACE_TYPE colour_space,
513         IUnknown *device,
514         UINT *flags) = 0;
515 
516 };
517 #ifdef __CRT_UUID_DECL
518 __CRT_UUID_DECL(IDXGIOutput4, 0xdc7dca35, 0x2196, 0x414d, 0x9f,0x53, 0x61,0x78,0x84,0x03,0x2a,0x60)
519 #endif
520 #else
521 typedef struct IDXGIOutput4Vtbl {
522     BEGIN_INTERFACE
523 
524     /*** IUnknown methods ***/
525     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
526         IDXGIOutput4 *This,
527         REFIID riid,
528         void **ppvObject);
529 
530     ULONG (STDMETHODCALLTYPE *AddRef)(
531         IDXGIOutput4 *This);
532 
533     ULONG (STDMETHODCALLTYPE *Release)(
534         IDXGIOutput4 *This);
535 
536     /*** IDXGIObject methods ***/
537     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
538         IDXGIOutput4 *This,
539         REFGUID guid,
540         UINT data_size,
541         const void *data);
542 
543     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
544         IDXGIOutput4 *This,
545         REFGUID guid,
546         const IUnknown *object);
547 
548     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
549         IDXGIOutput4 *This,
550         REFGUID guid,
551         UINT *data_size,
552         void *data);
553 
554     HRESULT (STDMETHODCALLTYPE *GetParent)(
555         IDXGIOutput4 *This,
556         REFIID riid,
557         void **parent);
558 
559     /*** IDXGIOutput methods ***/
560     HRESULT (STDMETHODCALLTYPE *GetDesc)(
561         IDXGIOutput4 *This,
562         DXGI_OUTPUT_DESC *desc);
563 
564     HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)(
565         IDXGIOutput4 *This,
566         DXGI_FORMAT format,
567         UINT flags,
568         UINT *mode_count,
569         DXGI_MODE_DESC *desc);
570 
571     HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)(
572         IDXGIOutput4 *This,
573         const DXGI_MODE_DESC *mode,
574         DXGI_MODE_DESC *closest_match,
575         IUnknown *device);
576 
577     HRESULT (STDMETHODCALLTYPE *WaitForVBlank)(
578         IDXGIOutput4 *This);
579 
580     HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
581         IDXGIOutput4 *This,
582         IUnknown *device,
583         WINBOOL exclusive);
584 
585     void (STDMETHODCALLTYPE *ReleaseOwnership)(
586         IDXGIOutput4 *This);
587 
588     HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)(
589         IDXGIOutput4 *This,
590         DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps);
591 
592     HRESULT (STDMETHODCALLTYPE *SetGammaControl)(
593         IDXGIOutput4 *This,
594         const DXGI_GAMMA_CONTROL *gamma_control);
595 
596     HRESULT (STDMETHODCALLTYPE *GetGammaControl)(
597         IDXGIOutput4 *This,
598         DXGI_GAMMA_CONTROL *gamma_control);
599 
600     HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)(
601         IDXGIOutput4 *This,
602         IDXGISurface *surface);
603 
604     HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)(
605         IDXGIOutput4 *This,
606         IDXGISurface *surface);
607 
608     HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
609         IDXGIOutput4 *This,
610         DXGI_FRAME_STATISTICS *stats);
611 
612     /*** IDXGIOutput1 methods ***/
613     HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)(
614         IDXGIOutput4 *This,
615         DXGI_FORMAT enum_format,
616         UINT flags,
617         UINT *num_modes,
618         DXGI_MODE_DESC1 *desc);
619 
620     HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)(
621         IDXGIOutput4 *This,
622         const DXGI_MODE_DESC1 *mode_to_match,
623         DXGI_MODE_DESC1 *closest_match,
624         IUnknown *concerned_device);
625 
626     HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)(
627         IDXGIOutput4 *This,
628         IDXGIResource *destination);
629 
630     HRESULT (STDMETHODCALLTYPE *DuplicateOutput)(
631         IDXGIOutput4 *This,
632         IUnknown *device,
633         IDXGIOutputDuplication **output_duplication);
634 
635     /*** IDXGIOutput2 methods ***/
636     WINBOOL (STDMETHODCALLTYPE *SupportsOverlays)(
637         IDXGIOutput4 *This);
638 
639     /*** IDXGIOutput3 methods ***/
640     HRESULT (STDMETHODCALLTYPE *CheckOverlaySupport)(
641         IDXGIOutput4 *This,
642         DXGI_FORMAT enum_format,
643         IUnknown *concerned_device,
644         UINT *flags);
645 
646     /*** IDXGIOutput4 methods ***/
647     HRESULT (STDMETHODCALLTYPE *CheckOverlayColorSpaceSupport)(
648         IDXGIOutput4 *This,
649         DXGI_FORMAT format,
650         DXGI_COLOR_SPACE_TYPE colour_space,
651         IUnknown *device,
652         UINT *flags);
653 
654     END_INTERFACE
655 } IDXGIOutput4Vtbl;
656 
657 interface IDXGIOutput4 {
658     CONST_VTBL IDXGIOutput4Vtbl* lpVtbl;
659 };
660 
661 #ifdef COBJMACROS
662 #ifndef WIDL_C_INLINE_WRAPPERS
663 /*** IUnknown methods ***/
664 #define IDXGIOutput4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
665 #define IDXGIOutput4_AddRef(This) (This)->lpVtbl->AddRef(This)
666 #define IDXGIOutput4_Release(This) (This)->lpVtbl->Release(This)
667 /*** IDXGIObject methods ***/
668 #define IDXGIOutput4_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
669 #define IDXGIOutput4_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
670 #define IDXGIOutput4_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
671 #define IDXGIOutput4_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
672 /*** IDXGIOutput methods ***/
673 #define IDXGIOutput4_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
674 #define IDXGIOutput4_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc)
675 #define IDXGIOutput4_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device)
676 #define IDXGIOutput4_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This)
677 #define IDXGIOutput4_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive)
678 #define IDXGIOutput4_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This)
679 #define IDXGIOutput4_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps)
680 #define IDXGIOutput4_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control)
681 #define IDXGIOutput4_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control)
682 #define IDXGIOutput4_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface)
683 #define IDXGIOutput4_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface)
684 #define IDXGIOutput4_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
685 /*** IDXGIOutput1 methods ***/
686 #define IDXGIOutput4_GetDisplayModeList1(This,enum_format,flags,num_modes,desc) (This)->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc)
687 #define IDXGIOutput4_FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device)
688 #define IDXGIOutput4_GetDisplaySurfaceData1(This,destination) (This)->lpVtbl->GetDisplaySurfaceData1(This,destination)
689 #define IDXGIOutput4_DuplicateOutput(This,device,output_duplication) (This)->lpVtbl->DuplicateOutput(This,device,output_duplication)
690 /*** IDXGIOutput2 methods ***/
691 #define IDXGIOutput4_SupportsOverlays(This) (This)->lpVtbl->SupportsOverlays(This)
692 /*** IDXGIOutput3 methods ***/
693 #define IDXGIOutput4_CheckOverlaySupport(This,enum_format,concerned_device,flags) (This)->lpVtbl->CheckOverlaySupport(This,enum_format,concerned_device,flags)
694 /*** IDXGIOutput4 methods ***/
695 #define IDXGIOutput4_CheckOverlayColorSpaceSupport(This,format,colour_space,device,flags) (This)->lpVtbl->CheckOverlayColorSpaceSupport(This,format,colour_space,device,flags)
696 #else
697 /*** IUnknown methods ***/
698 static FORCEINLINE HRESULT IDXGIOutput4_QueryInterface(IDXGIOutput4* This,REFIID riid,void **ppvObject) {
699     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
700 }
701 static FORCEINLINE ULONG IDXGIOutput4_AddRef(IDXGIOutput4* This) {
702     return This->lpVtbl->AddRef(This);
703 }
704 static FORCEINLINE ULONG IDXGIOutput4_Release(IDXGIOutput4* This) {
705     return This->lpVtbl->Release(This);
706 }
707 /*** IDXGIObject methods ***/
708 static FORCEINLINE HRESULT IDXGIOutput4_SetPrivateData(IDXGIOutput4* This,REFGUID guid,UINT data_size,const void *data) {
709     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
710 }
711 static FORCEINLINE HRESULT IDXGIOutput4_SetPrivateDataInterface(IDXGIOutput4* This,REFGUID guid,const IUnknown *object) {
712     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
713 }
714 static FORCEINLINE HRESULT IDXGIOutput4_GetPrivateData(IDXGIOutput4* This,REFGUID guid,UINT *data_size,void *data) {
715     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
716 }
717 static FORCEINLINE HRESULT IDXGIOutput4_GetParent(IDXGIOutput4* This,REFIID riid,void **parent) {
718     return This->lpVtbl->GetParent(This,riid,parent);
719 }
720 /*** IDXGIOutput methods ***/
721 static FORCEINLINE HRESULT IDXGIOutput4_GetDesc(IDXGIOutput4* This,DXGI_OUTPUT_DESC *desc) {
722     return This->lpVtbl->GetDesc(This,desc);
723 }
724 static FORCEINLINE HRESULT IDXGIOutput4_GetDisplayModeList(IDXGIOutput4* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) {
725     return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc);
726 }
727 static FORCEINLINE HRESULT IDXGIOutput4_FindClosestMatchingMode(IDXGIOutput4* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) {
728     return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device);
729 }
730 static FORCEINLINE HRESULT IDXGIOutput4_WaitForVBlank(IDXGIOutput4* This) {
731     return This->lpVtbl->WaitForVBlank(This);
732 }
733 static FORCEINLINE HRESULT IDXGIOutput4_TakeOwnership(IDXGIOutput4* This,IUnknown *device,WINBOOL exclusive) {
734     return This->lpVtbl->TakeOwnership(This,device,exclusive);
735 }
736 static FORCEINLINE void IDXGIOutput4_ReleaseOwnership(IDXGIOutput4* This) {
737     This->lpVtbl->ReleaseOwnership(This);
738 }
739 static FORCEINLINE HRESULT IDXGIOutput4_GetGammaControlCapabilities(IDXGIOutput4* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) {
740     return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps);
741 }
742 static FORCEINLINE HRESULT IDXGIOutput4_SetGammaControl(IDXGIOutput4* This,const DXGI_GAMMA_CONTROL *gamma_control) {
743     return This->lpVtbl->SetGammaControl(This,gamma_control);
744 }
745 static FORCEINLINE HRESULT IDXGIOutput4_GetGammaControl(IDXGIOutput4* This,DXGI_GAMMA_CONTROL *gamma_control) {
746     return This->lpVtbl->GetGammaControl(This,gamma_control);
747 }
748 static FORCEINLINE HRESULT IDXGIOutput4_SetDisplaySurface(IDXGIOutput4* This,IDXGISurface *surface) {
749     return This->lpVtbl->SetDisplaySurface(This,surface);
750 }
751 static FORCEINLINE HRESULT IDXGIOutput4_GetDisplaySurfaceData(IDXGIOutput4* This,IDXGISurface *surface) {
752     return This->lpVtbl->GetDisplaySurfaceData(This,surface);
753 }
754 static FORCEINLINE HRESULT IDXGIOutput4_GetFrameStatistics(IDXGIOutput4* This,DXGI_FRAME_STATISTICS *stats) {
755     return This->lpVtbl->GetFrameStatistics(This,stats);
756 }
757 /*** IDXGIOutput1 methods ***/
758 static FORCEINLINE HRESULT IDXGIOutput4_GetDisplayModeList1(IDXGIOutput4* This,DXGI_FORMAT enum_format,UINT flags,UINT *num_modes,DXGI_MODE_DESC1 *desc) {
759     return This->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc);
760 }
761 static FORCEINLINE HRESULT IDXGIOutput4_FindClosestMatchingMode1(IDXGIOutput4* This,const DXGI_MODE_DESC1 *mode_to_match,DXGI_MODE_DESC1 *closest_match,IUnknown *concerned_device) {
762     return This->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device);
763 }
764 static FORCEINLINE HRESULT IDXGIOutput4_GetDisplaySurfaceData1(IDXGIOutput4* This,IDXGIResource *destination) {
765     return This->lpVtbl->GetDisplaySurfaceData1(This,destination);
766 }
767 static FORCEINLINE HRESULT IDXGIOutput4_DuplicateOutput(IDXGIOutput4* This,IUnknown *device,IDXGIOutputDuplication **output_duplication) {
768     return This->lpVtbl->DuplicateOutput(This,device,output_duplication);
769 }
770 /*** IDXGIOutput2 methods ***/
771 static FORCEINLINE WINBOOL IDXGIOutput4_SupportsOverlays(IDXGIOutput4* This) {
772     return This->lpVtbl->SupportsOverlays(This);
773 }
774 /*** IDXGIOutput3 methods ***/
775 static FORCEINLINE HRESULT IDXGIOutput4_CheckOverlaySupport(IDXGIOutput4* This,DXGI_FORMAT enum_format,IUnknown *concerned_device,UINT *flags) {
776     return This->lpVtbl->CheckOverlaySupport(This,enum_format,concerned_device,flags);
777 }
778 /*** IDXGIOutput4 methods ***/
779 static FORCEINLINE HRESULT IDXGIOutput4_CheckOverlayColorSpaceSupport(IDXGIOutput4* This,DXGI_FORMAT format,DXGI_COLOR_SPACE_TYPE colour_space,IUnknown *device,UINT *flags) {
780     return This->lpVtbl->CheckOverlayColorSpaceSupport(This,format,colour_space,device,flags);
781 }
782 #endif
783 #endif
784 
785 #endif
786 
787 
788 #endif  /* __IDXGIOutput4_INTERFACE_DEFINED__ */
789 
790 /*****************************************************************************
791  * IDXGIFactory4 interface
792  */
793 #ifndef __IDXGIFactory4_INTERFACE_DEFINED__
794 #define __IDXGIFactory4_INTERFACE_DEFINED__
795 
796 DEFINE_GUID(IID_IDXGIFactory4, 0x1bc6ea02, 0xef36, 0x464f, 0xbf,0x0c, 0x21,0xca,0x39,0xe5,0x16,0x8a);
797 #if defined(__cplusplus) && !defined(CINTERFACE)
798 MIDL_INTERFACE("1bc6ea02-ef36-464f-bf0c-21ca39e5168a")
799 IDXGIFactory4 : public IDXGIFactory3
800 {
801     virtual HRESULT STDMETHODCALLTYPE EnumAdapterByLuid(
802         LUID luid,
803         REFIID iid,
804         void **adapter) = 0;
805 
806     virtual HRESULT STDMETHODCALLTYPE EnumWarpAdapter(
807         REFIID iid,
808         void **adapter) = 0;
809 
810 };
811 #ifdef __CRT_UUID_DECL
812 __CRT_UUID_DECL(IDXGIFactory4, 0x1bc6ea02, 0xef36, 0x464f, 0xbf,0x0c, 0x21,0xca,0x39,0xe5,0x16,0x8a)
813 #endif
814 #else
815 typedef struct IDXGIFactory4Vtbl {
816     BEGIN_INTERFACE
817 
818     /*** IUnknown methods ***/
819     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
820         IDXGIFactory4 *This,
821         REFIID riid,
822         void **ppvObject);
823 
824     ULONG (STDMETHODCALLTYPE *AddRef)(
825         IDXGIFactory4 *This);
826 
827     ULONG (STDMETHODCALLTYPE *Release)(
828         IDXGIFactory4 *This);
829 
830     /*** IDXGIObject methods ***/
831     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
832         IDXGIFactory4 *This,
833         REFGUID guid,
834         UINT data_size,
835         const void *data);
836 
837     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
838         IDXGIFactory4 *This,
839         REFGUID guid,
840         const IUnknown *object);
841 
842     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
843         IDXGIFactory4 *This,
844         REFGUID guid,
845         UINT *data_size,
846         void *data);
847 
848     HRESULT (STDMETHODCALLTYPE *GetParent)(
849         IDXGIFactory4 *This,
850         REFIID riid,
851         void **parent);
852 
853     /*** IDXGIFactory methods ***/
854     HRESULT (STDMETHODCALLTYPE *EnumAdapters)(
855         IDXGIFactory4 *This,
856         UINT adapter_idx,
857         IDXGIAdapter **adapter);
858 
859     HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)(
860         IDXGIFactory4 *This,
861         HWND window,
862         UINT flags);
863 
864     HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)(
865         IDXGIFactory4 *This,
866         HWND *window);
867 
868     HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
869         IDXGIFactory4 *This,
870         IUnknown *device,
871         DXGI_SWAP_CHAIN_DESC *desc,
872         IDXGISwapChain **swapchain);
873 
874     HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)(
875         IDXGIFactory4 *This,
876         HMODULE swrast,
877         IDXGIAdapter **adapter);
878 
879     /*** IDXGIFactory1 methods ***/
880     HRESULT (STDMETHODCALLTYPE *EnumAdapters1)(
881         IDXGIFactory4 *This,
882         UINT Adapter,
883         IDXGIAdapter1 **ppAdapter);
884 
885     WINBOOL (STDMETHODCALLTYPE *IsCurrent)(
886         IDXGIFactory4 *This);
887 
888     /*** IDXGIFactory2 methods ***/
889     WINBOOL (STDMETHODCALLTYPE *IsWindowedStereoEnabled)(
890         IDXGIFactory4 *This);
891 
892     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForHwnd)(
893         IDXGIFactory4 *This,
894         IUnknown *pDevice,
895         HWND hWnd,
896         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
897         const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
898         IDXGIOutput *pRestrictToOutput,
899         IDXGISwapChain1 **ppSwapChain);
900 
901     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCoreWindow)(
902         IDXGIFactory4 *This,
903         IUnknown *pDevice,
904         IUnknown *pWindow,
905         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
906         IDXGIOutput *pRestrictToOutput,
907         IDXGISwapChain1 **ppSwapChain);
908 
909     HRESULT (STDMETHODCALLTYPE *GetSharedResourceAdapterLuid)(
910         IDXGIFactory4 *This,
911         HANDLE hResource,
912         LUID *pLuid);
913 
914     HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
915         IDXGIFactory4 *This,
916         HWND WindowHandle,
917         UINT wMsg,
918         DWORD *pdwCookie);
919 
920     HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusEvent)(
921         IDXGIFactory4 *This,
922         HANDLE hEvent,
923         DWORD *pdwCookie);
924 
925     void (STDMETHODCALLTYPE *UnregisterStereoStatus)(
926         IDXGIFactory4 *This,
927         DWORD dwCookie);
928 
929     HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
930         IDXGIFactory4 *This,
931         HWND WindowHandle,
932         UINT wMsg,
933         DWORD *pdwCookie);
934 
935     HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusEvent)(
936         IDXGIFactory4 *This,
937         HANDLE hEvent,
938         DWORD *pdwCookie);
939 
940     void (STDMETHODCALLTYPE *UnregisterOcclusionStatus)(
941         IDXGIFactory4 *This,
942         DWORD dwCookie);
943 
944     HRESULT (STDMETHODCALLTYPE *CreateSwapChainForComposition)(
945         IDXGIFactory4 *This,
946         IUnknown *pDevice,
947         const DXGI_SWAP_CHAIN_DESC1 *pDesc,
948         IDXGIOutput *pRestrictToOutput,
949         IDXGISwapChain1 **ppSwapChain);
950 
951     /*** IDXGIFactory3 methods ***/
952     UINT (STDMETHODCALLTYPE *GetCreationFlags)(
953         IDXGIFactory4 *This);
954 
955     /*** IDXGIFactory4 methods ***/
956     HRESULT (STDMETHODCALLTYPE *EnumAdapterByLuid)(
957         IDXGIFactory4 *This,
958         LUID luid,
959         REFIID iid,
960         void **adapter);
961 
962     HRESULT (STDMETHODCALLTYPE *EnumWarpAdapter)(
963         IDXGIFactory4 *This,
964         REFIID iid,
965         void **adapter);
966 
967     END_INTERFACE
968 } IDXGIFactory4Vtbl;
969 
970 interface IDXGIFactory4 {
971     CONST_VTBL IDXGIFactory4Vtbl* lpVtbl;
972 };
973 
974 #ifdef COBJMACROS
975 #ifndef WIDL_C_INLINE_WRAPPERS
976 /*** IUnknown methods ***/
977 #define IDXGIFactory4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
978 #define IDXGIFactory4_AddRef(This) (This)->lpVtbl->AddRef(This)
979 #define IDXGIFactory4_Release(This) (This)->lpVtbl->Release(This)
980 /*** IDXGIObject methods ***/
981 #define IDXGIFactory4_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
982 #define IDXGIFactory4_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
983 #define IDXGIFactory4_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
984 #define IDXGIFactory4_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
985 /*** IDXGIFactory methods ***/
986 #define IDXGIFactory4_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter)
987 #define IDXGIFactory4_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags)
988 #define IDXGIFactory4_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window)
989 #define IDXGIFactory4_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain)
990 #define IDXGIFactory4_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter)
991 /*** IDXGIFactory1 methods ***/
992 #define IDXGIFactory4_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter)
993 #define IDXGIFactory4_IsCurrent(This) (This)->lpVtbl->IsCurrent(This)
994 /*** IDXGIFactory2 methods ***/
995 #define IDXGIFactory4_IsWindowedStereoEnabled(This) (This)->lpVtbl->IsWindowedStereoEnabled(This)
996 #define IDXGIFactory4_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
997 #define IDXGIFactory4_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
998 #define IDXGIFactory4_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
999 #define IDXGIFactory4_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
1000 #define IDXGIFactory4_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
1001 #define IDXGIFactory4_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
1002 #define IDXGIFactory4_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
1003 #define IDXGIFactory4_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
1004 #define IDXGIFactory4_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
1005 #define IDXGIFactory4_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
1006 /*** IDXGIFactory3 methods ***/
1007 #define IDXGIFactory4_GetCreationFlags(This) (This)->lpVtbl->GetCreationFlags(This)
1008 /*** IDXGIFactory4 methods ***/
1009 #define IDXGIFactory4_EnumAdapterByLuid(This,luid,iid,adapter) (This)->lpVtbl->EnumAdapterByLuid(This,luid,iid,adapter)
1010 #define IDXGIFactory4_EnumWarpAdapter(This,iid,adapter) (This)->lpVtbl->EnumWarpAdapter(This,iid,adapter)
1011 #else
1012 /*** IUnknown methods ***/
1013 static FORCEINLINE HRESULT IDXGIFactory4_QueryInterface(IDXGIFactory4* This,REFIID riid,void **ppvObject) {
1014     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1015 }
1016 static FORCEINLINE ULONG IDXGIFactory4_AddRef(IDXGIFactory4* This) {
1017     return This->lpVtbl->AddRef(This);
1018 }
1019 static FORCEINLINE ULONG IDXGIFactory4_Release(IDXGIFactory4* This) {
1020     return This->lpVtbl->Release(This);
1021 }
1022 /*** IDXGIObject methods ***/
1023 static FORCEINLINE HRESULT IDXGIFactory4_SetPrivateData(IDXGIFactory4* This,REFGUID guid,UINT data_size,const void *data) {
1024     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1025 }
1026 static FORCEINLINE HRESULT IDXGIFactory4_SetPrivateDataInterface(IDXGIFactory4* This,REFGUID guid,const IUnknown *object) {
1027     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1028 }
1029 static FORCEINLINE HRESULT IDXGIFactory4_GetPrivateData(IDXGIFactory4* This,REFGUID guid,UINT *data_size,void *data) {
1030     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1031 }
1032 static FORCEINLINE HRESULT IDXGIFactory4_GetParent(IDXGIFactory4* This,REFIID riid,void **parent) {
1033     return This->lpVtbl->GetParent(This,riid,parent);
1034 }
1035 /*** IDXGIFactory methods ***/
1036 static FORCEINLINE HRESULT IDXGIFactory4_EnumAdapters(IDXGIFactory4* This,UINT adapter_idx,IDXGIAdapter **adapter) {
1037     return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter);
1038 }
1039 static FORCEINLINE HRESULT IDXGIFactory4_MakeWindowAssociation(IDXGIFactory4* This,HWND window,UINT flags) {
1040     return This->lpVtbl->MakeWindowAssociation(This,window,flags);
1041 }
1042 static FORCEINLINE HRESULT IDXGIFactory4_GetWindowAssociation(IDXGIFactory4* This,HWND *window) {
1043     return This->lpVtbl->GetWindowAssociation(This,window);
1044 }
1045 static FORCEINLINE HRESULT IDXGIFactory4_CreateSwapChain(IDXGIFactory4* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) {
1046     return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain);
1047 }
1048 static FORCEINLINE HRESULT IDXGIFactory4_CreateSoftwareAdapter(IDXGIFactory4* This,HMODULE swrast,IDXGIAdapter **adapter) {
1049     return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter);
1050 }
1051 /*** IDXGIFactory1 methods ***/
1052 static FORCEINLINE HRESULT IDXGIFactory4_EnumAdapters1(IDXGIFactory4* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) {
1053     return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter);
1054 }
1055 static FORCEINLINE WINBOOL IDXGIFactory4_IsCurrent(IDXGIFactory4* This) {
1056     return This->lpVtbl->IsCurrent(This);
1057 }
1058 /*** IDXGIFactory2 methods ***/
1059 static FORCEINLINE WINBOOL IDXGIFactory4_IsWindowedStereoEnabled(IDXGIFactory4* This) {
1060     return This->lpVtbl->IsWindowedStereoEnabled(This);
1061 }
1062 static FORCEINLINE HRESULT IDXGIFactory4_CreateSwapChainForHwnd(IDXGIFactory4* This,IUnknown *pDevice,HWND hWnd,const DXGI_SWAP_CHAIN_DESC1 *pDesc,const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1063     return This->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain);
1064 }
1065 static FORCEINLINE HRESULT IDXGIFactory4_CreateSwapChainForCoreWindow(IDXGIFactory4* This,IUnknown *pDevice,IUnknown *pWindow,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1066     return This->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain);
1067 }
1068 static FORCEINLINE HRESULT IDXGIFactory4_GetSharedResourceAdapterLuid(IDXGIFactory4* This,HANDLE hResource,LUID *pLuid) {
1069     return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
1070 }
1071 static FORCEINLINE HRESULT IDXGIFactory4_RegisterStereoStatusWindow(IDXGIFactory4* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1072     return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1073 }
1074 static FORCEINLINE HRESULT IDXGIFactory4_RegisterStereoStatusEvent(IDXGIFactory4* This,HANDLE hEvent,DWORD *pdwCookie) {
1075     return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
1076 }
1077 static FORCEINLINE void IDXGIFactory4_UnregisterStereoStatus(IDXGIFactory4* This,DWORD dwCookie) {
1078     This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
1079 }
1080 static FORCEINLINE HRESULT IDXGIFactory4_RegisterOcclusionStatusWindow(IDXGIFactory4* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1081     return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1082 }
1083 static FORCEINLINE HRESULT IDXGIFactory4_RegisterOcclusionStatusEvent(IDXGIFactory4* This,HANDLE hEvent,DWORD *pdwCookie) {
1084     return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
1085 }
1086 static FORCEINLINE void IDXGIFactory4_UnregisterOcclusionStatus(IDXGIFactory4* This,DWORD dwCookie) {
1087     This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie);
1088 }
1089 static FORCEINLINE HRESULT IDXGIFactory4_CreateSwapChainForComposition(IDXGIFactory4* This,IUnknown *pDevice,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1090     return This->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain);
1091 }
1092 /*** IDXGIFactory3 methods ***/
1093 static FORCEINLINE UINT IDXGIFactory4_GetCreationFlags(IDXGIFactory4* This) {
1094     return This->lpVtbl->GetCreationFlags(This);
1095 }
1096 /*** IDXGIFactory4 methods ***/
1097 static FORCEINLINE HRESULT IDXGIFactory4_EnumAdapterByLuid(IDXGIFactory4* This,LUID luid,REFIID iid,void **adapter) {
1098     return This->lpVtbl->EnumAdapterByLuid(This,luid,iid,adapter);
1099 }
1100 static FORCEINLINE HRESULT IDXGIFactory4_EnumWarpAdapter(IDXGIFactory4* This,REFIID iid,void **adapter) {
1101     return This->lpVtbl->EnumWarpAdapter(This,iid,adapter);
1102 }
1103 #endif
1104 #endif
1105 
1106 #endif
1107 
1108 
1109 #endif  /* __IDXGIFactory4_INTERFACE_DEFINED__ */
1110 
1111 /*****************************************************************************
1112  * IDXGIAdapter3 interface
1113  */
1114 #ifndef __IDXGIAdapter3_INTERFACE_DEFINED__
1115 #define __IDXGIAdapter3_INTERFACE_DEFINED__
1116 
1117 DEFINE_GUID(IID_IDXGIAdapter3, 0x645967a4, 0x1392, 0x4310, 0xa7,0x98, 0x80,0x53,0xce,0x3e,0x93,0xfd);
1118 #if defined(__cplusplus) && !defined(CINTERFACE)
1119 MIDL_INTERFACE("645967a4-1392-4310-a798-8053ce3e93fd")
1120 IDXGIAdapter3 : public IDXGIAdapter2
1121 {
1122     virtual HRESULT STDMETHODCALLTYPE RegisterHardwareContentProtectionTeardownStatusEvent(
1123         HANDLE event,
1124         DWORD *cookie) = 0;
1125 
1126     virtual void STDMETHODCALLTYPE UnregisterHardwareContentProtectionTeardownStatus(
1127         DWORD cookie) = 0;
1128 
1129     virtual HRESULT STDMETHODCALLTYPE QueryVideoMemoryInfo(
1130         UINT node_index,
1131         DXGI_MEMORY_SEGMENT_GROUP segment_group,
1132         DXGI_QUERY_VIDEO_MEMORY_INFO *memory_info) = 0;
1133 
1134     virtual HRESULT STDMETHODCALLTYPE SetVideoMemoryReservation(
1135         UINT node_index,
1136         DXGI_MEMORY_SEGMENT_GROUP segment_group,
1137         UINT64 reservation) = 0;
1138 
1139     virtual HRESULT STDMETHODCALLTYPE RegisterVideoMemoryBudgetChangeNotificationEvent(
1140         HANDLE event,
1141         DWORD *cookie) = 0;
1142 
1143     virtual void STDMETHODCALLTYPE UnregisterVideoMemoryBudgetChangeNotification(
1144         DWORD cookie) = 0;
1145 
1146 };
1147 #ifdef __CRT_UUID_DECL
1148 __CRT_UUID_DECL(IDXGIAdapter3, 0x645967a4, 0x1392, 0x4310, 0xa7,0x98, 0x80,0x53,0xce,0x3e,0x93,0xfd)
1149 #endif
1150 #else
1151 typedef struct IDXGIAdapter3Vtbl {
1152     BEGIN_INTERFACE
1153 
1154     /*** IUnknown methods ***/
1155     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1156         IDXGIAdapter3 *This,
1157         REFIID riid,
1158         void **ppvObject);
1159 
1160     ULONG (STDMETHODCALLTYPE *AddRef)(
1161         IDXGIAdapter3 *This);
1162 
1163     ULONG (STDMETHODCALLTYPE *Release)(
1164         IDXGIAdapter3 *This);
1165 
1166     /*** IDXGIObject methods ***/
1167     HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1168         IDXGIAdapter3 *This,
1169         REFGUID guid,
1170         UINT data_size,
1171         const void *data);
1172 
1173     HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1174         IDXGIAdapter3 *This,
1175         REFGUID guid,
1176         const IUnknown *object);
1177 
1178     HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1179         IDXGIAdapter3 *This,
1180         REFGUID guid,
1181         UINT *data_size,
1182         void *data);
1183 
1184     HRESULT (STDMETHODCALLTYPE *GetParent)(
1185         IDXGIAdapter3 *This,
1186         REFIID riid,
1187         void **parent);
1188 
1189     /*** IDXGIAdapter methods ***/
1190     HRESULT (STDMETHODCALLTYPE *EnumOutputs)(
1191         IDXGIAdapter3 *This,
1192         UINT output_idx,
1193         IDXGIOutput **output);
1194 
1195     HRESULT (STDMETHODCALLTYPE *GetDesc)(
1196         IDXGIAdapter3 *This,
1197         DXGI_ADAPTER_DESC *desc);
1198 
1199     HRESULT (STDMETHODCALLTYPE *CheckInterfaceSupport)(
1200         IDXGIAdapter3 *This,
1201         REFGUID guid,
1202         LARGE_INTEGER *umd_version);
1203 
1204     /*** IDXGIAdapter1 methods ***/
1205     HRESULT (STDMETHODCALLTYPE *GetDesc1)(
1206         IDXGIAdapter3 *This,
1207         DXGI_ADAPTER_DESC1 *pDesc);
1208 
1209     /*** IDXGIAdapter2 methods ***/
1210     HRESULT (STDMETHODCALLTYPE *GetDesc2)(
1211         IDXGIAdapter3 *This,
1212         DXGI_ADAPTER_DESC2 *pDesc);
1213 
1214     /*** IDXGIAdapter3 methods ***/
1215     HRESULT (STDMETHODCALLTYPE *RegisterHardwareContentProtectionTeardownStatusEvent)(
1216         IDXGIAdapter3 *This,
1217         HANDLE event,
1218         DWORD *cookie);
1219 
1220     void (STDMETHODCALLTYPE *UnregisterHardwareContentProtectionTeardownStatus)(
1221         IDXGIAdapter3 *This,
1222         DWORD cookie);
1223 
1224     HRESULT (STDMETHODCALLTYPE *QueryVideoMemoryInfo)(
1225         IDXGIAdapter3 *This,
1226         UINT node_index,
1227         DXGI_MEMORY_SEGMENT_GROUP segment_group,
1228         DXGI_QUERY_VIDEO_MEMORY_INFO *memory_info);
1229 
1230     HRESULT (STDMETHODCALLTYPE *SetVideoMemoryReservation)(
1231         IDXGIAdapter3 *This,
1232         UINT node_index,
1233         DXGI_MEMORY_SEGMENT_GROUP segment_group,
1234         UINT64 reservation);
1235 
1236     HRESULT (STDMETHODCALLTYPE *RegisterVideoMemoryBudgetChangeNotificationEvent)(
1237         IDXGIAdapter3 *This,
1238         HANDLE event,
1239         DWORD *cookie);
1240 
1241     void (STDMETHODCALLTYPE *UnregisterVideoMemoryBudgetChangeNotification)(
1242         IDXGIAdapter3 *This,
1243         DWORD cookie);
1244 
1245     END_INTERFACE
1246 } IDXGIAdapter3Vtbl;
1247 
1248 interface IDXGIAdapter3 {
1249     CONST_VTBL IDXGIAdapter3Vtbl* lpVtbl;
1250 };
1251 
1252 #ifdef COBJMACROS
1253 #ifndef WIDL_C_INLINE_WRAPPERS
1254 /*** IUnknown methods ***/
1255 #define IDXGIAdapter3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1256 #define IDXGIAdapter3_AddRef(This) (This)->lpVtbl->AddRef(This)
1257 #define IDXGIAdapter3_Release(This) (This)->lpVtbl->Release(This)
1258 /*** IDXGIObject methods ***/
1259 #define IDXGIAdapter3_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1260 #define IDXGIAdapter3_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
1261 #define IDXGIAdapter3_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1262 #define IDXGIAdapter3_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
1263 /*** IDXGIAdapter methods ***/
1264 #define IDXGIAdapter3_EnumOutputs(This,output_idx,output) (This)->lpVtbl->EnumOutputs(This,output_idx,output)
1265 #define IDXGIAdapter3_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
1266 #define IDXGIAdapter3_CheckInterfaceSupport(This,guid,umd_version) (This)->lpVtbl->CheckInterfaceSupport(This,guid,umd_version)
1267 /*** IDXGIAdapter1 methods ***/
1268 #define IDXGIAdapter3_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
1269 /*** IDXGIAdapter2 methods ***/
1270 #define IDXGIAdapter3_GetDesc2(This,pDesc) (This)->lpVtbl->GetDesc2(This,pDesc)
1271 /*** IDXGIAdapter3 methods ***/
1272 #define IDXGIAdapter3_RegisterHardwareContentProtectionTeardownStatusEvent(This,event,cookie) (This)->lpVtbl->RegisterHardwareContentProtectionTeardownStatusEvent(This,event,cookie)
1273 #define IDXGIAdapter3_UnregisterHardwareContentProtectionTeardownStatus(This,cookie) (This)->lpVtbl->UnregisterHardwareContentProtectionTeardownStatus(This,cookie)
1274 #define IDXGIAdapter3_QueryVideoMemoryInfo(This,node_index,segment_group,memory_info) (This)->lpVtbl->QueryVideoMemoryInfo(This,node_index,segment_group,memory_info)
1275 #define IDXGIAdapter3_SetVideoMemoryReservation(This,node_index,segment_group,reservation) (This)->lpVtbl->SetVideoMemoryReservation(This,node_index,segment_group,reservation)
1276 #define IDXGIAdapter3_RegisterVideoMemoryBudgetChangeNotificationEvent(This,event,cookie) (This)->lpVtbl->RegisterVideoMemoryBudgetChangeNotificationEvent(This,event,cookie)
1277 #define IDXGIAdapter3_UnregisterVideoMemoryBudgetChangeNotification(This,cookie) (This)->lpVtbl->UnregisterVideoMemoryBudgetChangeNotification(This,cookie)
1278 #else
1279 /*** IUnknown methods ***/
1280 static FORCEINLINE HRESULT IDXGIAdapter3_QueryInterface(IDXGIAdapter3* This,REFIID riid,void **ppvObject) {
1281     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1282 }
1283 static FORCEINLINE ULONG IDXGIAdapter3_AddRef(IDXGIAdapter3* This) {
1284     return This->lpVtbl->AddRef(This);
1285 }
1286 static FORCEINLINE ULONG IDXGIAdapter3_Release(IDXGIAdapter3* This) {
1287     return This->lpVtbl->Release(This);
1288 }
1289 /*** IDXGIObject methods ***/
1290 static FORCEINLINE HRESULT IDXGIAdapter3_SetPrivateData(IDXGIAdapter3* This,REFGUID guid,UINT data_size,const void *data) {
1291     return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1292 }
1293 static FORCEINLINE HRESULT IDXGIAdapter3_SetPrivateDataInterface(IDXGIAdapter3* This,REFGUID guid,const IUnknown *object) {
1294     return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1295 }
1296 static FORCEINLINE HRESULT IDXGIAdapter3_GetPrivateData(IDXGIAdapter3* This,REFGUID guid,UINT *data_size,void *data) {
1297     return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1298 }
1299 static FORCEINLINE HRESULT IDXGIAdapter3_GetParent(IDXGIAdapter3* This,REFIID riid,void **parent) {
1300     return This->lpVtbl->GetParent(This,riid,parent);
1301 }
1302 /*** IDXGIAdapter methods ***/
1303 static FORCEINLINE HRESULT IDXGIAdapter3_EnumOutputs(IDXGIAdapter3* This,UINT output_idx,IDXGIOutput **output) {
1304     return This->lpVtbl->EnumOutputs(This,output_idx,output);
1305 }
1306 static FORCEINLINE HRESULT IDXGIAdapter3_GetDesc(IDXGIAdapter3* This,DXGI_ADAPTER_DESC *desc) {
1307     return This->lpVtbl->GetDesc(This,desc);
1308 }
1309 static FORCEINLINE HRESULT IDXGIAdapter3_CheckInterfaceSupport(IDXGIAdapter3* This,REFGUID guid,LARGE_INTEGER *umd_version) {
1310     return This->lpVtbl->CheckInterfaceSupport(This,guid,umd_version);
1311 }
1312 /*** IDXGIAdapter1 methods ***/
1313 static FORCEINLINE HRESULT IDXGIAdapter3_GetDesc1(IDXGIAdapter3* This,DXGI_ADAPTER_DESC1 *pDesc) {
1314     return This->lpVtbl->GetDesc1(This,pDesc);
1315 }
1316 /*** IDXGIAdapter2 methods ***/
1317 static FORCEINLINE HRESULT IDXGIAdapter3_GetDesc2(IDXGIAdapter3* This,DXGI_ADAPTER_DESC2 *pDesc) {
1318     return This->lpVtbl->GetDesc2(This,pDesc);
1319 }
1320 /*** IDXGIAdapter3 methods ***/
1321 static FORCEINLINE HRESULT IDXGIAdapter3_RegisterHardwareContentProtectionTeardownStatusEvent(IDXGIAdapter3* This,HANDLE event,DWORD *cookie) {
1322     return This->lpVtbl->RegisterHardwareContentProtectionTeardownStatusEvent(This,event,cookie);
1323 }
1324 static FORCEINLINE void IDXGIAdapter3_UnregisterHardwareContentProtectionTeardownStatus(IDXGIAdapter3* This,DWORD cookie) {
1325     This->lpVtbl->UnregisterHardwareContentProtectionTeardownStatus(This,cookie);
1326 }
1327 static FORCEINLINE HRESULT IDXGIAdapter3_QueryVideoMemoryInfo(IDXGIAdapter3* This,UINT node_index,DXGI_MEMORY_SEGMENT_GROUP segment_group,DXGI_QUERY_VIDEO_MEMORY_INFO *memory_info) {
1328     return This->lpVtbl->QueryVideoMemoryInfo(This,node_index,segment_group,memory_info);
1329 }
1330 static FORCEINLINE HRESULT IDXGIAdapter3_SetVideoMemoryReservation(IDXGIAdapter3* This,UINT node_index,DXGI_MEMORY_SEGMENT_GROUP segment_group,UINT64 reservation) {
1331     return This->lpVtbl->SetVideoMemoryReservation(This,node_index,segment_group,reservation);
1332 }
1333 static FORCEINLINE HRESULT IDXGIAdapter3_RegisterVideoMemoryBudgetChangeNotificationEvent(IDXGIAdapter3* This,HANDLE event,DWORD *cookie) {
1334     return This->lpVtbl->RegisterVideoMemoryBudgetChangeNotificationEvent(This,event,cookie);
1335 }
1336 static FORCEINLINE void IDXGIAdapter3_UnregisterVideoMemoryBudgetChangeNotification(IDXGIAdapter3* This,DWORD cookie) {
1337     This->lpVtbl->UnregisterVideoMemoryBudgetChangeNotification(This,cookie);
1338 }
1339 #endif
1340 #endif
1341 
1342 #endif
1343 
1344 
1345 #endif  /* __IDXGIAdapter3_INTERFACE_DEFINED__ */
1346 
1347 /* Begin additional prototypes for all interfaces */
1348 
1349 
1350 /* End additional prototypes */
1351 
1352 #ifdef __cplusplus
1353 }
1354 #endif
1355 
1356 #endif /* __dxgi1_4_h__ */
1357