motiejus/zig

fork of https://codeberg.org/ziglang/zig
git clone https://git.jakstys.lt/motiejus/zig.git
Log | Tree | Refs | README | LICENSE

lib/libc/include/any-windows-any/dxgi1_3.h (82394B) - Raw


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