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