master
   1/*** Autogenerated by WIDL 10.4 from 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__
  23typedef interface IDXGIDevice3 IDXGIDevice3;
  24#ifdef __cplusplus
  25interface IDXGIDevice3;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IDXGISwapChain2_FWD_DEFINED__
  30#define __IDXGISwapChain2_FWD_DEFINED__
  31typedef interface IDXGISwapChain2 IDXGISwapChain2;
  32#ifdef __cplusplus
  33interface IDXGISwapChain2;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IDXGIOutput2_FWD_DEFINED__
  38#define __IDXGIOutput2_FWD_DEFINED__
  39typedef interface IDXGIOutput2 IDXGIOutput2;
  40#ifdef __cplusplus
  41interface IDXGIOutput2;
  42#endif /* __cplusplus */
  43#endif
  44
  45#ifndef __IDXGIFactory3_FWD_DEFINED__
  46#define __IDXGIFactory3_FWD_DEFINED__
  47typedef interface IDXGIFactory3 IDXGIFactory3;
  48#ifdef __cplusplus
  49interface IDXGIFactory3;
  50#endif /* __cplusplus */
  51#endif
  52
  53#ifndef __IDXGIDecodeSwapChain_FWD_DEFINED__
  54#define __IDXGIDecodeSwapChain_FWD_DEFINED__
  55typedef interface IDXGIDecodeSwapChain IDXGIDecodeSwapChain;
  56#ifdef __cplusplus
  57interface IDXGIDecodeSwapChain;
  58#endif /* __cplusplus */
  59#endif
  60
  61#ifndef __IDXGIFactoryMedia_FWD_DEFINED__
  62#define __IDXGIFactoryMedia_FWD_DEFINED__
  63typedef interface IDXGIFactoryMedia IDXGIFactoryMedia;
  64#ifdef __cplusplus
  65interface IDXGIFactoryMedia;
  66#endif /* __cplusplus */
  67#endif
  68
  69#ifndef __IDXGISwapChainMedia_FWD_DEFINED__
  70#define __IDXGISwapChainMedia_FWD_DEFINED__
  71typedef interface IDXGISwapChainMedia IDXGISwapChainMedia;
  72#ifdef __cplusplus
  73interface IDXGISwapChainMedia;
  74#endif /* __cplusplus */
  75#endif
  76
  77#ifndef __IDXGIOutput3_FWD_DEFINED__
  78#define __IDXGIOutput3_FWD_DEFINED__
  79typedef interface IDXGIOutput3 IDXGIOutput3;
  80#ifdef __cplusplus
  81interface IDXGIOutput3;
  82#endif /* __cplusplus */
  83#endif
  84
  85/* Headers for imported files */
  86
  87#include <dxgi1_2.h>
  88
  89#ifdef __cplusplus
  90extern "C" {
  91#endif
  92
  93typedef 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;
 101typedef struct DXGI_DECODE_SWAP_CHAIN_DESC {
 102    UINT Flags;
 103} DXGI_DECODE_SWAP_CHAIN_DESC;
 104typedef 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;
 109typedef 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;
 115typedef 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;
 124typedef 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
 134DEFINE_GUID(IID_IDXGIDevice3, 0x6007896c, 0x3244, 0x4afd, 0xbf,0x18, 0xa6,0xd3,0xbe,0xda,0x50,0x23);
 135#if defined(__cplusplus) && !defined(CINTERFACE)
 136MIDL_INTERFACE("6007896c-3244-4afd-bf18-a6d3beda5023")
 137IDXGIDevice3 : 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
 147typedef 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
 245interface 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 ***/
 277static inline HRESULT IDXGIDevice3_QueryInterface(IDXGIDevice3* This,REFIID riid,void **ppvObject) {
 278    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 279}
 280static inline ULONG IDXGIDevice3_AddRef(IDXGIDevice3* This) {
 281    return This->lpVtbl->AddRef(This);
 282}
 283static inline ULONG IDXGIDevice3_Release(IDXGIDevice3* This) {
 284    return This->lpVtbl->Release(This);
 285}
 286/*** IDXGIObject methods ***/
 287static inline HRESULT IDXGIDevice3_SetPrivateData(IDXGIDevice3* This,REFGUID guid,UINT data_size,const void *data) {
 288    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
 289}
 290static inline HRESULT IDXGIDevice3_SetPrivateDataInterface(IDXGIDevice3* This,REFGUID guid,const IUnknown *object) {
 291    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
 292}
 293static inline HRESULT IDXGIDevice3_GetPrivateData(IDXGIDevice3* This,REFGUID guid,UINT *data_size,void *data) {
 294    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 295}
 296static inline HRESULT IDXGIDevice3_GetParent(IDXGIDevice3* This,REFIID riid,void **parent) {
 297    return This->lpVtbl->GetParent(This,riid,parent);
 298}
 299/*** IDXGIDevice methods ***/
 300static inline HRESULT IDXGIDevice3_GetAdapter(IDXGIDevice3* This,IDXGIAdapter **adapter) {
 301    return This->lpVtbl->GetAdapter(This,adapter);
 302}
 303static inline 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}
 306static inline 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}
 309static inline HRESULT IDXGIDevice3_SetGPUThreadPriority(IDXGIDevice3* This,INT priority) {
 310    return This->lpVtbl->SetGPUThreadPriority(This,priority);
 311}
 312static inline HRESULT IDXGIDevice3_GetGPUThreadPriority(IDXGIDevice3* This,INT *priority) {
 313    return This->lpVtbl->GetGPUThreadPriority(This,priority);
 314}
 315/*** IDXGIDevice1 methods ***/
 316static inline HRESULT IDXGIDevice3_SetMaximumFrameLatency(IDXGIDevice3* This,UINT MaxLatency) {
 317    return This->lpVtbl->SetMaximumFrameLatency(This,MaxLatency);
 318}
 319static inline HRESULT IDXGIDevice3_GetMaximumFrameLatency(IDXGIDevice3* This,UINT *pMaxLatency) {
 320    return This->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency);
 321}
 322/*** IDXGIDevice2 methods ***/
 323static inline 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}
 326static inline HRESULT IDXGIDevice3_ReclaimResources(IDXGIDevice3* This,UINT NumResources,IDXGIResource *const *ppResources,WINBOOL *pDiscarded) {
 327    return This->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded);
 328}
 329static inline HRESULT IDXGIDevice3_EnqueueSetEvent(IDXGIDevice3* This,HANDLE hEvent) {
 330    return This->lpVtbl->EnqueueSetEvent(This,hEvent);
 331}
 332/*** IDXGIDevice3 methods ***/
 333static inline 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
 350DEFINE_GUID(IID_IDXGISwapChain2, 0xa8be2ac4, 0x199f, 0x4946, 0xb3,0x31, 0x79,0x59,0x9f,0xb9,0x8d,0xe7);
 351#if defined(__cplusplus) && !defined(CINTERFACE)
 352MIDL_INTERFACE("a8be2ac4-199f-4946-b331-79599fb98de7")
 353IDXGISwapChain2 : 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
 383typedef 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
 557interface 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 ***/
 607static inline HRESULT IDXGISwapChain2_QueryInterface(IDXGISwapChain2* This,REFIID riid,void **ppvObject) {
 608    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 609}
 610static inline ULONG IDXGISwapChain2_AddRef(IDXGISwapChain2* This) {
 611    return This->lpVtbl->AddRef(This);
 612}
 613static inline ULONG IDXGISwapChain2_Release(IDXGISwapChain2* This) {
 614    return This->lpVtbl->Release(This);
 615}
 616/*** IDXGIObject methods ***/
 617static inline HRESULT IDXGISwapChain2_SetPrivateData(IDXGISwapChain2* This,REFGUID guid,UINT data_size,const void *data) {
 618    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
 619}
 620static inline HRESULT IDXGISwapChain2_SetPrivateDataInterface(IDXGISwapChain2* This,REFGUID guid,const IUnknown *object) {
 621    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
 622}
 623static inline HRESULT IDXGISwapChain2_GetPrivateData(IDXGISwapChain2* This,REFGUID guid,UINT *data_size,void *data) {
 624    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 625}
 626static inline HRESULT IDXGISwapChain2_GetParent(IDXGISwapChain2* This,REFIID riid,void **parent) {
 627    return This->lpVtbl->GetParent(This,riid,parent);
 628}
 629/*** IDXGIDeviceSubObject methods ***/
 630static inline HRESULT IDXGISwapChain2_GetDevice(IDXGISwapChain2* This,REFIID riid,void **device) {
 631    return This->lpVtbl->GetDevice(This,riid,device);
 632}
 633/*** IDXGISwapChain methods ***/
 634static inline HRESULT IDXGISwapChain2_Present(IDXGISwapChain2* This,UINT sync_interval,UINT flags) {
 635    return This->lpVtbl->Present(This,sync_interval,flags);
 636}
 637static inline HRESULT IDXGISwapChain2_GetBuffer(IDXGISwapChain2* This,UINT buffer_idx,REFIID riid,void **surface) {
 638    return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface);
 639}
 640static inline HRESULT IDXGISwapChain2_SetFullscreenState(IDXGISwapChain2* This,WINBOOL fullscreen,IDXGIOutput *target) {
 641    return This->lpVtbl->SetFullscreenState(This,fullscreen,target);
 642}
 643static inline HRESULT IDXGISwapChain2_GetFullscreenState(IDXGISwapChain2* This,WINBOOL *fullscreen,IDXGIOutput **target) {
 644    return This->lpVtbl->GetFullscreenState(This,fullscreen,target);
 645}
 646static inline HRESULT IDXGISwapChain2_GetDesc(IDXGISwapChain2* This,DXGI_SWAP_CHAIN_DESC *desc) {
 647    return This->lpVtbl->GetDesc(This,desc);
 648}
 649static inline 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}
 652static inline HRESULT IDXGISwapChain2_ResizeTarget(IDXGISwapChain2* This,const DXGI_MODE_DESC *target_mode_desc) {
 653    return This->lpVtbl->ResizeTarget(This,target_mode_desc);
 654}
 655static inline HRESULT IDXGISwapChain2_GetContainingOutput(IDXGISwapChain2* This,IDXGIOutput **output) {
 656    return This->lpVtbl->GetContainingOutput(This,output);
 657}
 658static inline HRESULT IDXGISwapChain2_GetFrameStatistics(IDXGISwapChain2* This,DXGI_FRAME_STATISTICS *stats) {
 659    return This->lpVtbl->GetFrameStatistics(This,stats);
 660}
 661static inline HRESULT IDXGISwapChain2_GetLastPresentCount(IDXGISwapChain2* This,UINT *last_present_count) {
 662    return This->lpVtbl->GetLastPresentCount(This,last_present_count);
 663}
 664/*** IDXGISwapChain1 methods ***/
 665static inline HRESULT IDXGISwapChain2_GetDesc1(IDXGISwapChain2* This,DXGI_SWAP_CHAIN_DESC1 *pDesc) {
 666    return This->lpVtbl->GetDesc1(This,pDesc);
 667}
 668static inline HRESULT IDXGISwapChain2_GetFullscreenDesc(IDXGISwapChain2* This,DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) {
 669    return This->lpVtbl->GetFullscreenDesc(This,pDesc);
 670}
 671static inline HRESULT IDXGISwapChain2_GetHwnd(IDXGISwapChain2* This,HWND *pHwnd) {
 672    return This->lpVtbl->GetHwnd(This,pHwnd);
 673}
 674static inline HRESULT IDXGISwapChain2_GetCoreWindow(IDXGISwapChain2* This,REFIID refiid,void **ppUnk) {
 675    return This->lpVtbl->GetCoreWindow(This,refiid,ppUnk);
 676}
 677static inline HRESULT IDXGISwapChain2_Present1(IDXGISwapChain2* This,UINT SyncInterval,UINT PresentFlags,const DXGI_PRESENT_PARAMETERS *pPresentParameters) {
 678    return This->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters);
 679}
 680static inline WINBOOL IDXGISwapChain2_IsTemporaryMonoSupported(IDXGISwapChain2* This) {
 681    return This->lpVtbl->IsTemporaryMonoSupported(This);
 682}
 683static inline HRESULT IDXGISwapChain2_GetRestrictToOutput(IDXGISwapChain2* This,IDXGIOutput **ppRestrictToOutput) {
 684    return This->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput);
 685}
 686static inline HRESULT IDXGISwapChain2_SetBackgroundColor(IDXGISwapChain2* This,const DXGI_RGBA *pColor) {
 687    return This->lpVtbl->SetBackgroundColor(This,pColor);
 688}
 689static inline HRESULT IDXGISwapChain2_GetBackgroundColor(IDXGISwapChain2* This,DXGI_RGBA *pColor) {
 690    return This->lpVtbl->GetBackgroundColor(This,pColor);
 691}
 692static inline HRESULT IDXGISwapChain2_SetRotation(IDXGISwapChain2* This,DXGI_MODE_ROTATION Rotation) {
 693    return This->lpVtbl->SetRotation(This,Rotation);
 694}
 695static inline HRESULT IDXGISwapChain2_GetRotation(IDXGISwapChain2* This,DXGI_MODE_ROTATION *pRotation) {
 696    return This->lpVtbl->GetRotation(This,pRotation);
 697}
 698/*** IDXGISwapChain2 methods ***/
 699static inline HRESULT IDXGISwapChain2_SetSourceSize(IDXGISwapChain2* This,UINT width,UINT height) {
 700    return This->lpVtbl->SetSourceSize(This,width,height);
 701}
 702static inline HRESULT IDXGISwapChain2_GetSourceSize(IDXGISwapChain2* This,UINT *width,UINT *height) {
 703    return This->lpVtbl->GetSourceSize(This,width,height);
 704}
 705static inline HRESULT IDXGISwapChain2_SetMaximumFrameLatency(IDXGISwapChain2* This,UINT max_latency) {
 706    return This->lpVtbl->SetMaximumFrameLatency(This,max_latency);
 707}
 708static inline HRESULT IDXGISwapChain2_GetMaximumFrameLatency(IDXGISwapChain2* This,UINT *max_latency) {
 709    return This->lpVtbl->GetMaximumFrameLatency(This,max_latency);
 710}
 711static inline HANDLE IDXGISwapChain2_GetFrameLatencyWaitableObject(IDXGISwapChain2* This) {
 712    return This->lpVtbl->GetFrameLatencyWaitableObject(This);
 713}
 714static inline HRESULT IDXGISwapChain2_SetMatrixTransform(IDXGISwapChain2* This,const DXGI_MATRIX_3X2_F *matrix) {
 715    return This->lpVtbl->SetMatrixTransform(This,matrix);
 716}
 717static inline 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
 734DEFINE_GUID(IID_IDXGIOutput2, 0x595e39d1, 0x2724, 0x4663, 0x99,0xb1, 0xda,0x96,0x9d,0xe2,0x83,0x64);
 735#if defined(__cplusplus) && !defined(CINTERFACE)
 736MIDL_INTERFACE("595e39d1-2724-4663-99b1-da969de28364")
 737IDXGIOutput2 : 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
 747typedef 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
 868interface 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 ***/
 905static inline HRESULT IDXGIOutput2_QueryInterface(IDXGIOutput2* This,REFIID riid,void **ppvObject) {
 906    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 907}
 908static inline ULONG IDXGIOutput2_AddRef(IDXGIOutput2* This) {
 909    return This->lpVtbl->AddRef(This);
 910}
 911static inline ULONG IDXGIOutput2_Release(IDXGIOutput2* This) {
 912    return This->lpVtbl->Release(This);
 913}
 914/*** IDXGIObject methods ***/
 915static inline HRESULT IDXGIOutput2_SetPrivateData(IDXGIOutput2* This,REFGUID guid,UINT data_size,const void *data) {
 916    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
 917}
 918static inline HRESULT IDXGIOutput2_SetPrivateDataInterface(IDXGIOutput2* This,REFGUID guid,const IUnknown *object) {
 919    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
 920}
 921static inline HRESULT IDXGIOutput2_GetPrivateData(IDXGIOutput2* This,REFGUID guid,UINT *data_size,void *data) {
 922    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
 923}
 924static inline HRESULT IDXGIOutput2_GetParent(IDXGIOutput2* This,REFIID riid,void **parent) {
 925    return This->lpVtbl->GetParent(This,riid,parent);
 926}
 927/*** IDXGIOutput methods ***/
 928static inline HRESULT IDXGIOutput2_GetDesc(IDXGIOutput2* This,DXGI_OUTPUT_DESC *desc) {
 929    return This->lpVtbl->GetDesc(This,desc);
 930}
 931static inline 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}
 934static inline 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}
 937static inline HRESULT IDXGIOutput2_WaitForVBlank(IDXGIOutput2* This) {
 938    return This->lpVtbl->WaitForVBlank(This);
 939}
 940static inline HRESULT IDXGIOutput2_TakeOwnership(IDXGIOutput2* This,IUnknown *device,WINBOOL exclusive) {
 941    return This->lpVtbl->TakeOwnership(This,device,exclusive);
 942}
 943static inline void IDXGIOutput2_ReleaseOwnership(IDXGIOutput2* This) {
 944    This->lpVtbl->ReleaseOwnership(This);
 945}
 946static inline HRESULT IDXGIOutput2_GetGammaControlCapabilities(IDXGIOutput2* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) {
 947    return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps);
 948}
 949static inline HRESULT IDXGIOutput2_SetGammaControl(IDXGIOutput2* This,const DXGI_GAMMA_CONTROL *gamma_control) {
 950    return This->lpVtbl->SetGammaControl(This,gamma_control);
 951}
 952static inline HRESULT IDXGIOutput2_GetGammaControl(IDXGIOutput2* This,DXGI_GAMMA_CONTROL *gamma_control) {
 953    return This->lpVtbl->GetGammaControl(This,gamma_control);
 954}
 955static inline HRESULT IDXGIOutput2_SetDisplaySurface(IDXGIOutput2* This,IDXGISurface *surface) {
 956    return This->lpVtbl->SetDisplaySurface(This,surface);
 957}
 958static inline HRESULT IDXGIOutput2_GetDisplaySurfaceData(IDXGIOutput2* This,IDXGISurface *surface) {
 959    return This->lpVtbl->GetDisplaySurfaceData(This,surface);
 960}
 961static inline HRESULT IDXGIOutput2_GetFrameStatistics(IDXGIOutput2* This,DXGI_FRAME_STATISTICS *stats) {
 962    return This->lpVtbl->GetFrameStatistics(This,stats);
 963}
 964/*** IDXGIOutput1 methods ***/
 965static inline 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}
 968static inline 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}
 971static inline HRESULT IDXGIOutput2_GetDisplaySurfaceData1(IDXGIOutput2* This,IDXGIResource *destination) {
 972    return This->lpVtbl->GetDisplaySurfaceData1(This,destination);
 973}
 974static inline HRESULT IDXGIOutput2_DuplicateOutput(IDXGIOutput2* This,IUnknown *device,IDXGIOutputDuplication **output_duplication) {
 975    return This->lpVtbl->DuplicateOutput(This,device,output_duplication);
 976}
 977/*** IDXGIOutput2 methods ***/
 978static inline 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
 995DEFINE_GUID(IID_IDXGIFactory3, 0x25483823, 0xcd46, 0x4c7d, 0x86,0xca, 0x47,0xaa,0x95,0xb8,0x37,0xbd);
 996#if defined(__cplusplus) && !defined(CINTERFACE)
 997MIDL_INTERFACE("25483823-cd46-4c7d-86ca-47aa95b837bd")
 998IDXGIFactory3 : 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
1008typedef 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 *RegisterStereoStatusWindow)(
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 *RegisterOcclusionStatusWindow)(
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
1151interface 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_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(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_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(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 ***/
1191static inline HRESULT IDXGIFactory3_QueryInterface(IDXGIFactory3* This,REFIID riid,void **ppvObject) {
1192    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1193}
1194static inline ULONG IDXGIFactory3_AddRef(IDXGIFactory3* This) {
1195    return This->lpVtbl->AddRef(This);
1196}
1197static inline ULONG IDXGIFactory3_Release(IDXGIFactory3* This) {
1198    return This->lpVtbl->Release(This);
1199}
1200/*** IDXGIObject methods ***/
1201static inline HRESULT IDXGIFactory3_SetPrivateData(IDXGIFactory3* This,REFGUID guid,UINT data_size,const void *data) {
1202    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1203}
1204static inline HRESULT IDXGIFactory3_SetPrivateDataInterface(IDXGIFactory3* This,REFGUID guid,const IUnknown *object) {
1205    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1206}
1207static inline HRESULT IDXGIFactory3_GetPrivateData(IDXGIFactory3* This,REFGUID guid,UINT *data_size,void *data) {
1208    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1209}
1210static inline HRESULT IDXGIFactory3_GetParent(IDXGIFactory3* This,REFIID riid,void **parent) {
1211    return This->lpVtbl->GetParent(This,riid,parent);
1212}
1213/*** IDXGIFactory methods ***/
1214static inline HRESULT IDXGIFactory3_EnumAdapters(IDXGIFactory3* This,UINT adapter_idx,IDXGIAdapter **adapter) {
1215    return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter);
1216}
1217static inline HRESULT IDXGIFactory3_MakeWindowAssociation(IDXGIFactory3* This,HWND window,UINT flags) {
1218    return This->lpVtbl->MakeWindowAssociation(This,window,flags);
1219}
1220static inline HRESULT IDXGIFactory3_GetWindowAssociation(IDXGIFactory3* This,HWND *window) {
1221    return This->lpVtbl->GetWindowAssociation(This,window);
1222}
1223static inline HRESULT IDXGIFactory3_CreateSwapChain(IDXGIFactory3* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) {
1224    return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain);
1225}
1226static inline HRESULT IDXGIFactory3_CreateSoftwareAdapter(IDXGIFactory3* This,HMODULE swrast,IDXGIAdapter **adapter) {
1227    return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter);
1228}
1229/*** IDXGIFactory1 methods ***/
1230static inline HRESULT IDXGIFactory3_EnumAdapters1(IDXGIFactory3* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) {
1231    return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter);
1232}
1233static inline WINBOOL IDXGIFactory3_IsCurrent(IDXGIFactory3* This) {
1234    return This->lpVtbl->IsCurrent(This);
1235}
1236/*** IDXGIFactory2 methods ***/
1237static inline WINBOOL IDXGIFactory3_IsWindowedStereoEnabled(IDXGIFactory3* This) {
1238    return This->lpVtbl->IsWindowedStereoEnabled(This);
1239}
1240static inline 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}
1243static inline 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}
1246static inline HRESULT IDXGIFactory3_GetSharedResourceAdapterLuid(IDXGIFactory3* This,HANDLE hResource,LUID *pLuid) {
1247    return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
1248}
1249static inline HRESULT IDXGIFactory3_RegisterStereoStatusWindow(IDXGIFactory3* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1250    return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1251}
1252static inline HRESULT IDXGIFactory3_RegisterStereoStatusEvent(IDXGIFactory3* This,HANDLE hEvent,DWORD *pdwCookie) {
1253    return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
1254}
1255static inline void IDXGIFactory3_UnregisterStereoStatus(IDXGIFactory3* This,DWORD dwCookie) {
1256    This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
1257}
1258static inline HRESULT IDXGIFactory3_RegisterOcclusionStatusWindow(IDXGIFactory3* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1259    return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1260}
1261static inline HRESULT IDXGIFactory3_RegisterOcclusionStatusEvent(IDXGIFactory3* This,HANDLE hEvent,DWORD *pdwCookie) {
1262    return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
1263}
1264static inline void IDXGIFactory3_UnregisterOcclusionStatus(IDXGIFactory3* This,DWORD dwCookie) {
1265    This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie);
1266}
1267static inline 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 ***/
1271static inline 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
1288DEFINE_GUID(IID_IDXGIDecodeSwapChain, 0x2633066b, 0x4514, 0x4c7a, 0x8f,0xd8, 0x12,0xea,0x98,0x05,0x9d,0x18);
1289#if defined(__cplusplus) && !defined(CINTERFACE)
1290MIDL_INTERFACE("2633066b-4514-4c7a-8fd8-12ea98059d18")
1291IDXGIDecodeSwapChain : 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
1329typedef 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
1387interface 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 ***/
1409static inline HRESULT IDXGIDecodeSwapChain_QueryInterface(IDXGIDecodeSwapChain* This,REFIID riid,void **ppvObject) {
1410    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1411}
1412static inline ULONG IDXGIDecodeSwapChain_AddRef(IDXGIDecodeSwapChain* This) {
1413    return This->lpVtbl->AddRef(This);
1414}
1415static inline ULONG IDXGIDecodeSwapChain_Release(IDXGIDecodeSwapChain* This) {
1416    return This->lpVtbl->Release(This);
1417}
1418/*** IDXGIDecodeSwapChain methods ***/
1419static inline 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}
1422static inline HRESULT IDXGIDecodeSwapChain_SetSourceRect(IDXGIDecodeSwapChain* This,const RECT *rect) {
1423    return This->lpVtbl->SetSourceRect(This,rect);
1424}
1425static inline HRESULT IDXGIDecodeSwapChain_SetTargetRect(IDXGIDecodeSwapChain* This,const RECT *rect) {
1426    return This->lpVtbl->SetTargetRect(This,rect);
1427}
1428static inline HRESULT IDXGIDecodeSwapChain_SetDestSize(IDXGIDecodeSwapChain* This,UINT width,UINT height) {
1429    return This->lpVtbl->SetDestSize(This,width,height);
1430}
1431static inline HRESULT IDXGIDecodeSwapChain_GetSourceRect(IDXGIDecodeSwapChain* This,RECT *rect) {
1432    return This->lpVtbl->GetSourceRect(This,rect);
1433}
1434static inline HRESULT IDXGIDecodeSwapChain_GetTargetRect(IDXGIDecodeSwapChain* This,RECT *rect) {
1435    return This->lpVtbl->GetTargetRect(This,rect);
1436}
1437static inline HRESULT IDXGIDecodeSwapChain_GetDestSize(IDXGIDecodeSwapChain* This,UINT *width,UINT *height) {
1438    return This->lpVtbl->GetDestSize(This,width,height);
1439}
1440static inline HRESULT IDXGIDecodeSwapChain_SetColorSpace(IDXGIDecodeSwapChain* This,DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS colorspace) {
1441    return This->lpVtbl->SetColorSpace(This,colorspace);
1442}
1443static inline 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
1460DEFINE_GUID(IID_IDXGIFactoryMedia, 0x41e7d1f2, 0xa591, 0x4f7b, 0xa2,0xe5, 0xfa,0x9c,0x84,0x3e,0x1c,0x12);
1461#if defined(__cplusplus) && !defined(CINTERFACE)
1462MIDL_INTERFACE("41e7d1f2-a591-4f7b-a2e5-fa9c843e1c12")
1463IDXGIFactoryMedia : 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
1485typedef 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
1521interface 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 ***/
1536static inline HRESULT IDXGIFactoryMedia_QueryInterface(IDXGIFactoryMedia* This,REFIID riid,void **ppvObject) {
1537    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1538}
1539static inline ULONG IDXGIFactoryMedia_AddRef(IDXGIFactoryMedia* This) {
1540    return This->lpVtbl->AddRef(This);
1541}
1542static inline ULONG IDXGIFactoryMedia_Release(IDXGIFactoryMedia* This) {
1543    return This->lpVtbl->Release(This);
1544}
1545/*** IDXGIFactoryMedia methods ***/
1546static inline 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}
1549static inline 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
1566DEFINE_GUID(IID_IDXGISwapChainMedia, 0xdd95b90b, 0xf05f, 0x4f6a, 0xbd,0x65, 0x25,0xbf,0xb2,0x64,0xbd,0x84);
1567#if defined(__cplusplus) && !defined(CINTERFACE)
1568MIDL_INTERFACE("dd95b90b-f05f-4f6a-bd65-25bfb264bd84")
1569IDXGISwapChainMedia : 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
1587typedef 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
1620interface 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 ***/
1636static inline HRESULT IDXGISwapChainMedia_QueryInterface(IDXGISwapChainMedia* This,REFIID riid,void **ppvObject) {
1637    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1638}
1639static inline ULONG IDXGISwapChainMedia_AddRef(IDXGISwapChainMedia* This) {
1640    return This->lpVtbl->AddRef(This);
1641}
1642static inline ULONG IDXGISwapChainMedia_Release(IDXGISwapChainMedia* This) {
1643    return This->lpVtbl->Release(This);
1644}
1645/*** IDXGISwapChainMedia methods ***/
1646static inline HRESULT IDXGISwapChainMedia_GetFrameStatisticsMedia(IDXGISwapChainMedia* This,DXGI_FRAME_STATISTICS_MEDIA *stats) {
1647    return This->lpVtbl->GetFrameStatisticsMedia(This,stats);
1648}
1649static inline HRESULT IDXGISwapChainMedia_SetPresentDuration(IDXGISwapChainMedia* This,UINT duration) {
1650    return This->lpVtbl->SetPresentDuration(This,duration);
1651}
1652static inline 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
1669DEFINE_GUID(IID_IDXGIOutput3, 0x8a6bb301, 0x7e7e, 0x41f4, 0xa8,0xe0, 0x5b,0x32,0xf7,0xf9,0x9b,0x18);
1670#if defined(__cplusplus) && !defined(CINTERFACE)
1671MIDL_INTERFACE("8a6bb301-7e7e-41f4-a8e0-5b32f7f99b18")
1672IDXGIOutput3 : 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
1684typedef 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
1812interface 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 ***/
1851static inline HRESULT IDXGIOutput3_QueryInterface(IDXGIOutput3* This,REFIID riid,void **ppvObject) {
1852    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1853}
1854static inline ULONG IDXGIOutput3_AddRef(IDXGIOutput3* This) {
1855    return This->lpVtbl->AddRef(This);
1856}
1857static inline ULONG IDXGIOutput3_Release(IDXGIOutput3* This) {
1858    return This->lpVtbl->Release(This);
1859}
1860/*** IDXGIObject methods ***/
1861static inline HRESULT IDXGIOutput3_SetPrivateData(IDXGIOutput3* This,REFGUID guid,UINT data_size,const void *data) {
1862    return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1863}
1864static inline HRESULT IDXGIOutput3_SetPrivateDataInterface(IDXGIOutput3* This,REFGUID guid,const IUnknown *object) {
1865    return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1866}
1867static inline HRESULT IDXGIOutput3_GetPrivateData(IDXGIOutput3* This,REFGUID guid,UINT *data_size,void *data) {
1868    return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1869}
1870static inline HRESULT IDXGIOutput3_GetParent(IDXGIOutput3* This,REFIID riid,void **parent) {
1871    return This->lpVtbl->GetParent(This,riid,parent);
1872}
1873/*** IDXGIOutput methods ***/
1874static inline HRESULT IDXGIOutput3_GetDesc(IDXGIOutput3* This,DXGI_OUTPUT_DESC *desc) {
1875    return This->lpVtbl->GetDesc(This,desc);
1876}
1877static inline 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}
1880static inline 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}
1883static inline HRESULT IDXGIOutput3_WaitForVBlank(IDXGIOutput3* This) {
1884    return This->lpVtbl->WaitForVBlank(This);
1885}
1886static inline HRESULT IDXGIOutput3_TakeOwnership(IDXGIOutput3* This,IUnknown *device,WINBOOL exclusive) {
1887    return This->lpVtbl->TakeOwnership(This,device,exclusive);
1888}
1889static inline void IDXGIOutput3_ReleaseOwnership(IDXGIOutput3* This) {
1890    This->lpVtbl->ReleaseOwnership(This);
1891}
1892static inline HRESULT IDXGIOutput3_GetGammaControlCapabilities(IDXGIOutput3* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) {
1893    return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps);
1894}
1895static inline HRESULT IDXGIOutput3_SetGammaControl(IDXGIOutput3* This,const DXGI_GAMMA_CONTROL *gamma_control) {
1896    return This->lpVtbl->SetGammaControl(This,gamma_control);
1897}
1898static inline HRESULT IDXGIOutput3_GetGammaControl(IDXGIOutput3* This,DXGI_GAMMA_CONTROL *gamma_control) {
1899    return This->lpVtbl->GetGammaControl(This,gamma_control);
1900}
1901static inline HRESULT IDXGIOutput3_SetDisplaySurface(IDXGIOutput3* This,IDXGISurface *surface) {
1902    return This->lpVtbl->SetDisplaySurface(This,surface);
1903}
1904static inline HRESULT IDXGIOutput3_GetDisplaySurfaceData(IDXGIOutput3* This,IDXGISurface *surface) {
1905    return This->lpVtbl->GetDisplaySurfaceData(This,surface);
1906}
1907static inline HRESULT IDXGIOutput3_GetFrameStatistics(IDXGIOutput3* This,DXGI_FRAME_STATISTICS *stats) {
1908    return This->lpVtbl->GetFrameStatistics(This,stats);
1909}
1910/*** IDXGIOutput1 methods ***/
1911static inline 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}
1914static inline 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}
1917static inline HRESULT IDXGIOutput3_GetDisplaySurfaceData1(IDXGIOutput3* This,IDXGIResource *destination) {
1918    return This->lpVtbl->GetDisplaySurfaceData1(This,destination);
1919}
1920static inline HRESULT IDXGIOutput3_DuplicateOutput(IDXGIOutput3* This,IUnknown *device,IDXGIOutputDuplication **output_duplication) {
1921    return This->lpVtbl->DuplicateOutput(This,device,output_duplication);
1922}
1923/*** IDXGIOutput2 methods ***/
1924static inline WINBOOL IDXGIOutput3_SupportsOverlays(IDXGIOutput3* This) {
1925    return This->lpVtbl->SupportsOverlays(This);
1926}
1927/*** IDXGIOutput3 methods ***/
1928static inline 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
1941HRESULT __stdcall  CreateDXGIFactory2(UINT flags,REFIID iid,void **factory);
1942
1943HRESULT __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__ */