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