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