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