1 /*** Autogenerated by WIDL 1.6 from direct-x/include/dxgi1_2.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_2_h__ 16 #define __dxgi1_2_h__ 17 18 /* Forward declarations */ 19 20 #ifndef __IDXGIDevice2_FWD_DEFINED__ 21 #define __IDXGIDevice2_FWD_DEFINED__ 22 typedef interface IDXGIDevice2 IDXGIDevice2; 23 #endif 24 25 #ifndef __IDXGISwapChain1_FWD_DEFINED__ 26 #define __IDXGISwapChain1_FWD_DEFINED__ 27 typedef interface IDXGISwapChain1 IDXGISwapChain1; 28 #endif 29 30 #ifndef __IDXGIFactory2_FWD_DEFINED__ 31 #define __IDXGIFactory2_FWD_DEFINED__ 32 typedef interface IDXGIFactory2 IDXGIFactory2; 33 #endif 34 35 #ifndef __IDXGIAdapter2_FWD_DEFINED__ 36 #define __IDXGIAdapter2_FWD_DEFINED__ 37 typedef interface IDXGIAdapter2 IDXGIAdapter2; 38 #endif 39 40 /* Headers for imported files */ 41 42 #include <dxgi.h> 43 44 #ifdef __cplusplus 45 extern "C" { 46 #endif 47 48 typedef enum _DXGI_OFFER_RESOURCE_PRIORITY { 49 DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1, 50 DXGI_OFFER_RESOURCE_PRIORITY_NORMAL = 2, 51 DXGI_OFFER_RESOURCE_PRIORITY_HIGH = 3 52 } DXGI_OFFER_RESOURCE_PRIORITY; 53 typedef enum DXGI_ALPHA_MODE { 54 DXGI_ALPHA_MODE_UNSPECIFIED = 0, 55 DXGI_ALPHA_MODE_PREMULTIPLIED = 1, 56 DXGI_ALPHA_MODE_STRAIGHT = 2, 57 DXGI_ALPHA_MODE_IGNORE = 3, 58 DXGI_ALPHA_MODE_FORCE_DWORD = 0xffffffff 59 } DXGI_ALPHA_MODE; 60 /***************************************************************************** 61 * IDXGIDevice2 interface 62 */ 63 #ifndef __IDXGIDevice2_INTERFACE_DEFINED__ 64 #define __IDXGIDevice2_INTERFACE_DEFINED__ 65 66 DEFINE_GUID(IID_IDXGIDevice2, 0x05008617, 0xfbfd, 0x4051, 0xa7,0x90, 0x14,0x48,0x84,0xb4,0xf6,0xa9); 67 #if defined(__cplusplus) && !defined(CINTERFACE) 68 MIDL_INTERFACE("05008617-fbfd-4051-a790-144884b4f6a9") 69 IDXGIDevice2 : public IDXGIDevice1 70 { 71 virtual HRESULT STDMETHODCALLTYPE OfferResources( 72 UINT NumResources, 73 IDXGIResource *const *ppResources, 74 DXGI_OFFER_RESOURCE_PRIORITY Priority) = 0; 75 76 virtual HRESULT STDMETHODCALLTYPE ReclaimResources( 77 UINT NumResources, 78 IDXGIResource *const *ppResources, 79 WINBOOL *pDiscarded) = 0; 80 81 virtual HRESULT STDMETHODCALLTYPE EnqueueSetEvent( 82 HANDLE hEvent) = 0; 83 84 }; 85 #ifdef __CRT_UUID_DECL 86 __CRT_UUID_DECL(IDXGIDevice2, 0x05008617, 0xfbfd, 0x4051, 0xa7,0x90, 0x14,0x48,0x84,0xb4,0xf6,0xa9) 87 #endif 88 #else 89 typedef struct IDXGIDevice2Vtbl { 90 BEGIN_INTERFACE 91 92 /*** IUnknown methods ***/ 93 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 94 IDXGIDevice2* This, 95 REFIID riid, 96 void **ppvObject); 97 98 ULONG (STDMETHODCALLTYPE *AddRef)( 99 IDXGIDevice2* This); 100 101 ULONG (STDMETHODCALLTYPE *Release)( 102 IDXGIDevice2* This); 103 104 /*** IDXGIObject methods ***/ 105 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 106 IDXGIDevice2* This, 107 REFGUID guid, 108 UINT data_size, 109 const void *data); 110 111 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 112 IDXGIDevice2* This, 113 REFGUID guid, 114 const IUnknown *object); 115 116 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 117 IDXGIDevice2* This, 118 REFGUID guid, 119 UINT *data_size, 120 void *data); 121 122 HRESULT (STDMETHODCALLTYPE *GetParent)( 123 IDXGIDevice2* This, 124 REFIID riid, 125 void **parent); 126 127 /*** IDXGIDevice methods ***/ 128 HRESULT (STDMETHODCALLTYPE *GetAdapter)( 129 IDXGIDevice2* This, 130 IDXGIAdapter **adapter); 131 132 HRESULT (STDMETHODCALLTYPE *CreateSurface)( 133 IDXGIDevice2* This, 134 const DXGI_SURFACE_DESC *desc, 135 UINT surface_count, 136 DXGI_USAGE usage, 137 const DXGI_SHARED_RESOURCE *shared_resource, 138 IDXGISurface **surface); 139 140 HRESULT (STDMETHODCALLTYPE *QueryResourceResidency)( 141 IDXGIDevice2* This, 142 IUnknown *const *resources, 143 DXGI_RESIDENCY *residency, 144 UINT resource_count); 145 146 HRESULT (STDMETHODCALLTYPE *SetGPUThreadPriority)( 147 IDXGIDevice2* This, 148 INT priority); 149 150 HRESULT (STDMETHODCALLTYPE *GetGPUThreadPriority)( 151 IDXGIDevice2* This, 152 INT *priority); 153 154 /*** IDXGIDevice1 methods ***/ 155 HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)( 156 IDXGIDevice2* This, 157 UINT MaxLatency); 158 159 HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)( 160 IDXGIDevice2* This, 161 UINT *pMaxLatency); 162 163 /*** IDXGIDevice2 methods ***/ 164 HRESULT (STDMETHODCALLTYPE *OfferResources)( 165 IDXGIDevice2* This, 166 UINT NumResources, 167 IDXGIResource *const *ppResources, 168 DXGI_OFFER_RESOURCE_PRIORITY Priority); 169 170 HRESULT (STDMETHODCALLTYPE *ReclaimResources)( 171 IDXGIDevice2* This, 172 UINT NumResources, 173 IDXGIResource *const *ppResources, 174 WINBOOL *pDiscarded); 175 176 HRESULT (STDMETHODCALLTYPE *EnqueueSetEvent)( 177 IDXGIDevice2* This, 178 HANDLE hEvent); 179 180 END_INTERFACE 181 } IDXGIDevice2Vtbl; 182 interface IDXGIDevice2 { 183 CONST_VTBL IDXGIDevice2Vtbl* lpVtbl; 184 }; 185 186 #ifdef COBJMACROS 187 #ifndef WIDL_C_INLINE_WRAPPERS 188 /*** IUnknown methods ***/ 189 #define IDXGIDevice2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 190 #define IDXGIDevice2_AddRef(This) (This)->lpVtbl->AddRef(This) 191 #define IDXGIDevice2_Release(This) (This)->lpVtbl->Release(This) 192 /*** IDXGIObject methods ***/ 193 #define IDXGIDevice2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 194 #define IDXGIDevice2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 195 #define IDXGIDevice2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 196 #define IDXGIDevice2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 197 /*** IDXGIDevice methods ***/ 198 #define IDXGIDevice2_GetAdapter(This,adapter) (This)->lpVtbl->GetAdapter(This,adapter) 199 #define IDXGIDevice2_CreateSurface(This,desc,surface_count,usage,shared_resource,surface) (This)->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface) 200 #define IDXGIDevice2_QueryResourceResidency(This,resources,residency,resource_count) (This)->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count) 201 #define IDXGIDevice2_SetGPUThreadPriority(This,priority) (This)->lpVtbl->SetGPUThreadPriority(This,priority) 202 #define IDXGIDevice2_GetGPUThreadPriority(This,priority) (This)->lpVtbl->GetGPUThreadPriority(This,priority) 203 /*** IDXGIDevice1 methods ***/ 204 #define IDXGIDevice2_SetMaximumFrameLatency(This,MaxLatency) (This)->lpVtbl->SetMaximumFrameLatency(This,MaxLatency) 205 #define IDXGIDevice2_GetMaximumFrameLatency(This,pMaxLatency) (This)->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency) 206 /*** IDXGIDevice2 methods ***/ 207 #define IDXGIDevice2_OfferResources(This,NumResources,ppResources,Priority) (This)->lpVtbl->OfferResources(This,NumResources,ppResources,Priority) 208 #define IDXGIDevice2_ReclaimResources(This,NumResources,ppResources,pDiscarded) (This)->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded) 209 #define IDXGIDevice2_EnqueueSetEvent(This,hEvent) (This)->lpVtbl->EnqueueSetEvent(This,hEvent) 210 #else 211 /*** IUnknown methods ***/ 212 static FORCEINLINE HRESULT IDXGIDevice2_QueryInterface(IDXGIDevice2* This,REFIID riid,void **ppvObject) { 213 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 214 } 215 static FORCEINLINE ULONG IDXGIDevice2_AddRef(IDXGIDevice2* This) { 216 return This->lpVtbl->AddRef(This); 217 } 218 static FORCEINLINE ULONG IDXGIDevice2_Release(IDXGIDevice2* This) { 219 return This->lpVtbl->Release(This); 220 } 221 /*** IDXGIObject methods ***/ 222 static FORCEINLINE HRESULT IDXGIDevice2_SetPrivateData(IDXGIDevice2* This,REFGUID guid,UINT data_size,const void *data) { 223 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 224 } 225 static FORCEINLINE HRESULT IDXGIDevice2_SetPrivateDataInterface(IDXGIDevice2* This,REFGUID guid,const IUnknown *object) { 226 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 227 } 228 static FORCEINLINE HRESULT IDXGIDevice2_GetPrivateData(IDXGIDevice2* This,REFGUID guid,UINT *data_size,void *data) { 229 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 230 } 231 static FORCEINLINE HRESULT IDXGIDevice2_GetParent(IDXGIDevice2* This,REFIID riid,void **parent) { 232 return This->lpVtbl->GetParent(This,riid,parent); 233 } 234 /*** IDXGIDevice methods ***/ 235 static FORCEINLINE HRESULT IDXGIDevice2_GetAdapter(IDXGIDevice2* This,IDXGIAdapter **adapter) { 236 return This->lpVtbl->GetAdapter(This,adapter); 237 } 238 static FORCEINLINE HRESULT IDXGIDevice2_CreateSurface(IDXGIDevice2* This,const DXGI_SURFACE_DESC *desc,UINT surface_count,DXGI_USAGE usage,const DXGI_SHARED_RESOURCE *shared_resource,IDXGISurface **surface) { 239 return This->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface); 240 } 241 static FORCEINLINE HRESULT IDXGIDevice2_QueryResourceResidency(IDXGIDevice2* This,IUnknown *const *resources,DXGI_RESIDENCY *residency,UINT resource_count) { 242 return This->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count); 243 } 244 static FORCEINLINE HRESULT IDXGIDevice2_SetGPUThreadPriority(IDXGIDevice2* This,INT priority) { 245 return This->lpVtbl->SetGPUThreadPriority(This,priority); 246 } 247 static FORCEINLINE HRESULT IDXGIDevice2_GetGPUThreadPriority(IDXGIDevice2* This,INT *priority) { 248 return This->lpVtbl->GetGPUThreadPriority(This,priority); 249 } 250 /*** IDXGIDevice1 methods ***/ 251 static FORCEINLINE HRESULT IDXGIDevice2_SetMaximumFrameLatency(IDXGIDevice2* This,UINT MaxLatency) { 252 return This->lpVtbl->SetMaximumFrameLatency(This,MaxLatency); 253 } 254 static FORCEINLINE HRESULT IDXGIDevice2_GetMaximumFrameLatency(IDXGIDevice2* This,UINT *pMaxLatency) { 255 return This->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency); 256 } 257 /*** IDXGIDevice2 methods ***/ 258 static FORCEINLINE HRESULT IDXGIDevice2_OfferResources(IDXGIDevice2* This,UINT NumResources,IDXGIResource *const *ppResources,DXGI_OFFER_RESOURCE_PRIORITY Priority) { 259 return This->lpVtbl->OfferResources(This,NumResources,ppResources,Priority); 260 } 261 static FORCEINLINE HRESULT IDXGIDevice2_ReclaimResources(IDXGIDevice2* This,UINT NumResources,IDXGIResource *const *ppResources,WINBOOL *pDiscarded) { 262 return This->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded); 263 } 264 static FORCEINLINE HRESULT IDXGIDevice2_EnqueueSetEvent(IDXGIDevice2* This,HANDLE hEvent) { 265 return This->lpVtbl->EnqueueSetEvent(This,hEvent); 266 } 267 #endif 268 #endif 269 270 #endif 271 272 HRESULT STDMETHODCALLTYPE IDXGIDevice2_OfferResources_Proxy( 273 IDXGIDevice2* This, 274 UINT NumResources, 275 IDXGIResource *const *ppResources, 276 DXGI_OFFER_RESOURCE_PRIORITY Priority); 277 void __RPC_STUB IDXGIDevice2_OfferResources_Stub( 278 IRpcStubBuffer* This, 279 IRpcChannelBuffer* pRpcChannelBuffer, 280 PRPC_MESSAGE pRpcMessage, 281 DWORD* pdwStubPhase); 282 HRESULT STDMETHODCALLTYPE IDXGIDevice2_ReclaimResources_Proxy( 283 IDXGIDevice2* This, 284 UINT NumResources, 285 IDXGIResource *const *ppResources, 286 WINBOOL *pDiscarded); 287 void __RPC_STUB IDXGIDevice2_ReclaimResources_Stub( 288 IRpcStubBuffer* This, 289 IRpcChannelBuffer* pRpcChannelBuffer, 290 PRPC_MESSAGE pRpcMessage, 291 DWORD* pdwStubPhase); 292 HRESULT STDMETHODCALLTYPE IDXGIDevice2_EnqueueSetEvent_Proxy( 293 IDXGIDevice2* This, 294 HANDLE hEvent); 295 void __RPC_STUB IDXGIDevice2_EnqueueSetEvent_Stub( 296 IRpcStubBuffer* This, 297 IRpcChannelBuffer* pRpcChannelBuffer, 298 PRPC_MESSAGE pRpcMessage, 299 DWORD* pdwStubPhase); 300 301 #endif /* __IDXGIDevice2_INTERFACE_DEFINED__ */ 302 303 typedef enum DXGI_SCALING { 304 DXGI_SCALING_STRETCH = 0, 305 DXGI_SCALING_NONE = 1 306 } DXGI_SCALING; 307 typedef struct DXGI_SWAP_CHAIN_DESC1 { 308 UINT Width; 309 UINT Height; 310 DXGI_FORMAT Format; 311 WINBOOL Stereo; 312 DXGI_SAMPLE_DESC SampleDesc; 313 DXGI_USAGE BufferUsage; 314 UINT BufferCount; 315 DXGI_SCALING Scaling; 316 DXGI_SWAP_EFFECT SwapEffect; 317 DXGI_ALPHA_MODE AlphaMode; 318 UINT Flags; 319 } DXGI_SWAP_CHAIN_DESC1; 320 typedef struct DXGI_SWAP_CHAIN_FULLSCREEN_DESC { 321 DXGI_RATIONAL RefreshRate; 322 DXGI_MODE_SCANLINE_ORDER ScanlineOrdering; 323 DXGI_MODE_SCALING Scaling; 324 WINBOOL Windowed; 325 } DXGI_SWAP_CHAIN_FULLSCREEN_DESC; 326 typedef struct DXGI_PRESENT_PARAMETERS { 327 UINT DirtyRectsCount; 328 RECT *pDirtyRects; 329 RECT *pScrollRect; 330 POINT *pScrollOffset; 331 } DXGI_PRESENT_PARAMETERS; 332 /***************************************************************************** 333 * IDXGISwapChain1 interface 334 */ 335 #ifndef __IDXGISwapChain1_INTERFACE_DEFINED__ 336 #define __IDXGISwapChain1_INTERFACE_DEFINED__ 337 338 DEFINE_GUID(IID_IDXGISwapChain1, 0x790a45f7, 0x0d42, 0x4876, 0x98,0x3a, 0x0a,0x55,0xcf,0xe6,0xf4,0xaa); 339 #if defined(__cplusplus) && !defined(CINTERFACE) 340 MIDL_INTERFACE("790a45f7-0d42-4876-983a-0a55cfe6f4aa") 341 IDXGISwapChain1 : public IDXGISwapChain 342 { 343 virtual HRESULT STDMETHODCALLTYPE GetDesc1( 344 DXGI_SWAP_CHAIN_DESC1 *pDesc) = 0; 345 346 virtual HRESULT STDMETHODCALLTYPE GetFullscreenDesc( 347 DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) = 0; 348 349 virtual HRESULT STDMETHODCALLTYPE GetHwnd( 350 HWND *pHwnd) = 0; 351 352 virtual HRESULT STDMETHODCALLTYPE GetCoreWindow( 353 REFIID refiid, 354 void **ppUnk) = 0; 355 356 virtual HRESULT STDMETHODCALLTYPE Present1( 357 UINT SyncInterval, 358 UINT PresentFlags, 359 const DXGI_PRESENT_PARAMETERS *pPresentParameters) = 0; 360 361 virtual WINBOOL STDMETHODCALLTYPE IsTemporaryMonoSupported( 362 ) = 0; 363 364 virtual HRESULT STDMETHODCALLTYPE GetRestrictToOutput( 365 IDXGIOutput **ppRestrictToOutput) = 0; 366 367 virtual HRESULT STDMETHODCALLTYPE SetBackgroundColor( 368 const DXGI_RGBA *pColor) = 0; 369 370 virtual HRESULT STDMETHODCALLTYPE GetBackgroundColor( 371 DXGI_RGBA *pColor) = 0; 372 373 virtual HRESULT STDMETHODCALLTYPE SetRotation( 374 DXGI_MODE_ROTATION Rotation) = 0; 375 376 virtual HRESULT STDMETHODCALLTYPE GetRotation( 377 DXGI_MODE_ROTATION *pRotation) = 0; 378 379 }; 380 #ifdef __CRT_UUID_DECL 381 __CRT_UUID_DECL(IDXGISwapChain1, 0x790a45f7, 0x0d42, 0x4876, 0x98,0x3a, 0x0a,0x55,0xcf,0xe6,0xf4,0xaa) 382 #endif 383 #else 384 typedef struct IDXGISwapChain1Vtbl { 385 BEGIN_INTERFACE 386 387 /*** IUnknown methods ***/ 388 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 389 IDXGISwapChain1* This, 390 REFIID riid, 391 void **ppvObject); 392 393 ULONG (STDMETHODCALLTYPE *AddRef)( 394 IDXGISwapChain1* This); 395 396 ULONG (STDMETHODCALLTYPE *Release)( 397 IDXGISwapChain1* This); 398 399 /*** IDXGIObject methods ***/ 400 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 401 IDXGISwapChain1* This, 402 REFGUID guid, 403 UINT data_size, 404 const void *data); 405 406 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 407 IDXGISwapChain1* This, 408 REFGUID guid, 409 const IUnknown *object); 410 411 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 412 IDXGISwapChain1* This, 413 REFGUID guid, 414 UINT *data_size, 415 void *data); 416 417 HRESULT (STDMETHODCALLTYPE *GetParent)( 418 IDXGISwapChain1* This, 419 REFIID riid, 420 void **parent); 421 422 /*** IDXGIDeviceSubObject methods ***/ 423 HRESULT (STDMETHODCALLTYPE *GetDevice)( 424 IDXGISwapChain1* This, 425 REFIID riid, 426 void **device); 427 428 /*** IDXGISwapChain methods ***/ 429 HRESULT (STDMETHODCALLTYPE *Present)( 430 IDXGISwapChain1* This, 431 UINT sync_interval, 432 UINT flags); 433 434 HRESULT (STDMETHODCALLTYPE *GetBuffer)( 435 IDXGISwapChain1* This, 436 UINT buffer_idx, 437 REFIID riid, 438 void **surface); 439 440 HRESULT (STDMETHODCALLTYPE *SetFullscreenState)( 441 IDXGISwapChain1* This, 442 WINBOOL fullscreen, 443 IDXGIOutput *target); 444 445 HRESULT (STDMETHODCALLTYPE *GetFullscreenState)( 446 IDXGISwapChain1* This, 447 WINBOOL *fullscreen, 448 IDXGIOutput **target); 449 450 HRESULT (STDMETHODCALLTYPE *GetDesc)( 451 IDXGISwapChain1* This, 452 DXGI_SWAP_CHAIN_DESC *desc); 453 454 HRESULT (STDMETHODCALLTYPE *ResizeBuffers)( 455 IDXGISwapChain1* This, 456 UINT buffer_count, 457 UINT width, 458 UINT height, 459 DXGI_FORMAT format, 460 UINT flags); 461 462 HRESULT (STDMETHODCALLTYPE *ResizeTarget)( 463 IDXGISwapChain1* This, 464 const DXGI_MODE_DESC *target_mode_desc); 465 466 HRESULT (STDMETHODCALLTYPE *GetContainingOutput)( 467 IDXGISwapChain1* This, 468 IDXGIOutput **output); 469 470 HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)( 471 IDXGISwapChain1* This, 472 DXGI_FRAME_STATISTICS *stats); 473 474 HRESULT (STDMETHODCALLTYPE *GetLastPresentCount)( 475 IDXGISwapChain1* This, 476 UINT *last_present_count); 477 478 /*** IDXGISwapChain1 methods ***/ 479 HRESULT (STDMETHODCALLTYPE *GetDesc1)( 480 IDXGISwapChain1* This, 481 DXGI_SWAP_CHAIN_DESC1 *pDesc); 482 483 HRESULT (STDMETHODCALLTYPE *GetFullscreenDesc)( 484 IDXGISwapChain1* This, 485 DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc); 486 487 HRESULT (STDMETHODCALLTYPE *GetHwnd)( 488 IDXGISwapChain1* This, 489 HWND *pHwnd); 490 491 HRESULT (STDMETHODCALLTYPE *GetCoreWindow)( 492 IDXGISwapChain1* This, 493 REFIID refiid, 494 void **ppUnk); 495 496 HRESULT (STDMETHODCALLTYPE *Present1)( 497 IDXGISwapChain1* This, 498 UINT SyncInterval, 499 UINT PresentFlags, 500 const DXGI_PRESENT_PARAMETERS *pPresentParameters); 501 502 WINBOOL (STDMETHODCALLTYPE *IsTemporaryMonoSupported)( 503 IDXGISwapChain1* This); 504 505 HRESULT (STDMETHODCALLTYPE *GetRestrictToOutput)( 506 IDXGISwapChain1* This, 507 IDXGIOutput **ppRestrictToOutput); 508 509 HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)( 510 IDXGISwapChain1* This, 511 const DXGI_RGBA *pColor); 512 513 HRESULT (STDMETHODCALLTYPE *GetBackgroundColor)( 514 IDXGISwapChain1* This, 515 DXGI_RGBA *pColor); 516 517 HRESULT (STDMETHODCALLTYPE *SetRotation)( 518 IDXGISwapChain1* This, 519 DXGI_MODE_ROTATION Rotation); 520 521 HRESULT (STDMETHODCALLTYPE *GetRotation)( 522 IDXGISwapChain1* This, 523 DXGI_MODE_ROTATION *pRotation); 524 525 END_INTERFACE 526 } IDXGISwapChain1Vtbl; 527 interface IDXGISwapChain1 { 528 CONST_VTBL IDXGISwapChain1Vtbl* lpVtbl; 529 }; 530 531 #ifdef COBJMACROS 532 #ifndef WIDL_C_INLINE_WRAPPERS 533 /*** IUnknown methods ***/ 534 #define IDXGISwapChain1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 535 #define IDXGISwapChain1_AddRef(This) (This)->lpVtbl->AddRef(This) 536 #define IDXGISwapChain1_Release(This) (This)->lpVtbl->Release(This) 537 /*** IDXGIObject methods ***/ 538 #define IDXGISwapChain1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 539 #define IDXGISwapChain1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 540 #define IDXGISwapChain1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 541 #define IDXGISwapChain1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 542 /*** IDXGIDeviceSubObject methods ***/ 543 #define IDXGISwapChain1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device) 544 /*** IDXGISwapChain methods ***/ 545 #define IDXGISwapChain1_Present(This,sync_interval,flags) (This)->lpVtbl->Present(This,sync_interval,flags) 546 #define IDXGISwapChain1_GetBuffer(This,buffer_idx,riid,surface) (This)->lpVtbl->GetBuffer(This,buffer_idx,riid,surface) 547 #define IDXGISwapChain1_SetFullscreenState(This,fullscreen,target) (This)->lpVtbl->SetFullscreenState(This,fullscreen,target) 548 #define IDXGISwapChain1_GetFullscreenState(This,fullscreen,target) (This)->lpVtbl->GetFullscreenState(This,fullscreen,target) 549 #define IDXGISwapChain1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) 550 #define IDXGISwapChain1_ResizeBuffers(This,buffer_count,width,height,format,flags) (This)->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags) 551 #define IDXGISwapChain1_ResizeTarget(This,target_mode_desc) (This)->lpVtbl->ResizeTarget(This,target_mode_desc) 552 #define IDXGISwapChain1_GetContainingOutput(This,output) (This)->lpVtbl->GetContainingOutput(This,output) 553 #define IDXGISwapChain1_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats) 554 #define IDXGISwapChain1_GetLastPresentCount(This,last_present_count) (This)->lpVtbl->GetLastPresentCount(This,last_present_count) 555 /*** IDXGISwapChain1 methods ***/ 556 #define IDXGISwapChain1_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc) 557 #define IDXGISwapChain1_GetFullscreenDesc(This,pDesc) (This)->lpVtbl->GetFullscreenDesc(This,pDesc) 558 #define IDXGISwapChain1_GetHwnd(This,pHwnd) (This)->lpVtbl->GetHwnd(This,pHwnd) 559 #define IDXGISwapChain1_GetCoreWindow(This,refiid,ppUnk) (This)->lpVtbl->GetCoreWindow(This,refiid,ppUnk) 560 #define IDXGISwapChain1_Present1(This,SyncInterval,PresentFlags,pPresentParameters) (This)->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters) 561 #define IDXGISwapChain1_IsTemporaryMonoSupported(This) (This)->lpVtbl->IsTemporaryMonoSupported(This) 562 #define IDXGISwapChain1_GetRestrictToOutput(This,ppRestrictToOutput) (This)->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput) 563 #define IDXGISwapChain1_SetBackgroundColor(This,pColor) (This)->lpVtbl->SetBackgroundColor(This,pColor) 564 #define IDXGISwapChain1_GetBackgroundColor(This,pColor) (This)->lpVtbl->GetBackgroundColor(This,pColor) 565 #define IDXGISwapChain1_SetRotation(This,Rotation) (This)->lpVtbl->SetRotation(This,Rotation) 566 #define IDXGISwapChain1_GetRotation(This,pRotation) (This)->lpVtbl->GetRotation(This,pRotation) 567 #else 568 /*** IUnknown methods ***/ 569 static FORCEINLINE HRESULT IDXGISwapChain1_QueryInterface(IDXGISwapChain1* This,REFIID riid,void **ppvObject) { 570 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 571 } 572 static FORCEINLINE ULONG IDXGISwapChain1_AddRef(IDXGISwapChain1* This) { 573 return This->lpVtbl->AddRef(This); 574 } 575 static FORCEINLINE ULONG IDXGISwapChain1_Release(IDXGISwapChain1* This) { 576 return This->lpVtbl->Release(This); 577 } 578 /*** IDXGIObject methods ***/ 579 static FORCEINLINE HRESULT IDXGISwapChain1_SetPrivateData(IDXGISwapChain1* This,REFGUID guid,UINT data_size,const void *data) { 580 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 581 } 582 static FORCEINLINE HRESULT IDXGISwapChain1_SetPrivateDataInterface(IDXGISwapChain1* This,REFGUID guid,const IUnknown *object) { 583 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 584 } 585 static FORCEINLINE HRESULT IDXGISwapChain1_GetPrivateData(IDXGISwapChain1* This,REFGUID guid,UINT *data_size,void *data) { 586 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 587 } 588 static FORCEINLINE HRESULT IDXGISwapChain1_GetParent(IDXGISwapChain1* This,REFIID riid,void **parent) { 589 return This->lpVtbl->GetParent(This,riid,parent); 590 } 591 /*** IDXGIDeviceSubObject methods ***/ 592 static FORCEINLINE HRESULT IDXGISwapChain1_GetDevice(IDXGISwapChain1* This,REFIID riid,void **device) { 593 return This->lpVtbl->GetDevice(This,riid,device); 594 } 595 /*** IDXGISwapChain methods ***/ 596 static FORCEINLINE HRESULT IDXGISwapChain1_Present(IDXGISwapChain1* This,UINT sync_interval,UINT flags) { 597 return This->lpVtbl->Present(This,sync_interval,flags); 598 } 599 static FORCEINLINE HRESULT IDXGISwapChain1_GetBuffer(IDXGISwapChain1* This,UINT buffer_idx,REFIID riid,void **surface) { 600 return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface); 601 } 602 static FORCEINLINE HRESULT IDXGISwapChain1_SetFullscreenState(IDXGISwapChain1* This,WINBOOL fullscreen,IDXGIOutput *target) { 603 return This->lpVtbl->SetFullscreenState(This,fullscreen,target); 604 } 605 static FORCEINLINE HRESULT IDXGISwapChain1_GetFullscreenState(IDXGISwapChain1* This,WINBOOL *fullscreen,IDXGIOutput **target) { 606 return This->lpVtbl->GetFullscreenState(This,fullscreen,target); 607 } 608 static FORCEINLINE HRESULT IDXGISwapChain1_GetDesc(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_DESC *desc) { 609 return This->lpVtbl->GetDesc(This,desc); 610 } 611 static FORCEINLINE HRESULT IDXGISwapChain1_ResizeBuffers(IDXGISwapChain1* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags) { 612 return This->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags); 613 } 614 static FORCEINLINE HRESULT IDXGISwapChain1_ResizeTarget(IDXGISwapChain1* This,const DXGI_MODE_DESC *target_mode_desc) { 615 return This->lpVtbl->ResizeTarget(This,target_mode_desc); 616 } 617 static FORCEINLINE HRESULT IDXGISwapChain1_GetContainingOutput(IDXGISwapChain1* This,IDXGIOutput **output) { 618 return This->lpVtbl->GetContainingOutput(This,output); 619 } 620 static FORCEINLINE HRESULT IDXGISwapChain1_GetFrameStatistics(IDXGISwapChain1* This,DXGI_FRAME_STATISTICS *stats) { 621 return This->lpVtbl->GetFrameStatistics(This,stats); 622 } 623 static FORCEINLINE HRESULT IDXGISwapChain1_GetLastPresentCount(IDXGISwapChain1* This,UINT *last_present_count) { 624 return This->lpVtbl->GetLastPresentCount(This,last_present_count); 625 } 626 /*** IDXGISwapChain1 methods ***/ 627 static FORCEINLINE HRESULT IDXGISwapChain1_GetDesc1(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_DESC1 *pDesc) { 628 return This->lpVtbl->GetDesc1(This,pDesc); 629 } 630 static FORCEINLINE HRESULT IDXGISwapChain1_GetFullscreenDesc(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) { 631 return This->lpVtbl->GetFullscreenDesc(This,pDesc); 632 } 633 static FORCEINLINE HRESULT IDXGISwapChain1_GetHwnd(IDXGISwapChain1* This,HWND *pHwnd) { 634 return This->lpVtbl->GetHwnd(This,pHwnd); 635 } 636 static FORCEINLINE HRESULT IDXGISwapChain1_GetCoreWindow(IDXGISwapChain1* This,REFIID refiid,void **ppUnk) { 637 return This->lpVtbl->GetCoreWindow(This,refiid,ppUnk); 638 } 639 static FORCEINLINE HRESULT IDXGISwapChain1_Present1(IDXGISwapChain1* This,UINT SyncInterval,UINT PresentFlags,const DXGI_PRESENT_PARAMETERS *pPresentParameters) { 640 return This->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters); 641 } 642 static FORCEINLINE WINBOOL IDXGISwapChain1_IsTemporaryMonoSupported(IDXGISwapChain1* This) { 643 return This->lpVtbl->IsTemporaryMonoSupported(This); 644 } 645 static FORCEINLINE HRESULT IDXGISwapChain1_GetRestrictToOutput(IDXGISwapChain1* This,IDXGIOutput **ppRestrictToOutput) { 646 return This->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput); 647 } 648 static FORCEINLINE HRESULT IDXGISwapChain1_SetBackgroundColor(IDXGISwapChain1* This,const DXGI_RGBA *pColor) { 649 return This->lpVtbl->SetBackgroundColor(This,pColor); 650 } 651 static FORCEINLINE HRESULT IDXGISwapChain1_GetBackgroundColor(IDXGISwapChain1* This,DXGI_RGBA *pColor) { 652 return This->lpVtbl->GetBackgroundColor(This,pColor); 653 } 654 static FORCEINLINE HRESULT IDXGISwapChain1_SetRotation(IDXGISwapChain1* This,DXGI_MODE_ROTATION Rotation) { 655 return This->lpVtbl->SetRotation(This,Rotation); 656 } 657 static FORCEINLINE HRESULT IDXGISwapChain1_GetRotation(IDXGISwapChain1* This,DXGI_MODE_ROTATION *pRotation) { 658 return This->lpVtbl->GetRotation(This,pRotation); 659 } 660 #endif 661 #endif 662 663 #endif 664 665 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_GetDesc1_Proxy( 666 IDXGISwapChain1* This, 667 DXGI_SWAP_CHAIN_DESC1 *pDesc); 668 void __RPC_STUB IDXGISwapChain1_GetDesc1_Stub( 669 IRpcStubBuffer* This, 670 IRpcChannelBuffer* pRpcChannelBuffer, 671 PRPC_MESSAGE pRpcMessage, 672 DWORD* pdwStubPhase); 673 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_GetFullscreenDesc_Proxy( 674 IDXGISwapChain1* This, 675 DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc); 676 void __RPC_STUB IDXGISwapChain1_GetFullscreenDesc_Stub( 677 IRpcStubBuffer* This, 678 IRpcChannelBuffer* pRpcChannelBuffer, 679 PRPC_MESSAGE pRpcMessage, 680 DWORD* pdwStubPhase); 681 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_GetHwnd_Proxy( 682 IDXGISwapChain1* This, 683 HWND *pHwnd); 684 void __RPC_STUB IDXGISwapChain1_GetHwnd_Stub( 685 IRpcStubBuffer* This, 686 IRpcChannelBuffer* pRpcChannelBuffer, 687 PRPC_MESSAGE pRpcMessage, 688 DWORD* pdwStubPhase); 689 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_GetCoreWindow_Proxy( 690 IDXGISwapChain1* This, 691 REFIID refiid, 692 void **ppUnk); 693 void __RPC_STUB IDXGISwapChain1_GetCoreWindow_Stub( 694 IRpcStubBuffer* This, 695 IRpcChannelBuffer* pRpcChannelBuffer, 696 PRPC_MESSAGE pRpcMessage, 697 DWORD* pdwStubPhase); 698 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_Present1_Proxy( 699 IDXGISwapChain1* This, 700 UINT SyncInterval, 701 UINT PresentFlags, 702 const DXGI_PRESENT_PARAMETERS *pPresentParameters); 703 void __RPC_STUB IDXGISwapChain1_Present1_Stub( 704 IRpcStubBuffer* This, 705 IRpcChannelBuffer* pRpcChannelBuffer, 706 PRPC_MESSAGE pRpcMessage, 707 DWORD* pdwStubPhase); 708 WINBOOL STDMETHODCALLTYPE IDXGISwapChain1_IsTemporaryMonoSupported_Proxy( 709 IDXGISwapChain1* This); 710 void __RPC_STUB IDXGISwapChain1_IsTemporaryMonoSupported_Stub( 711 IRpcStubBuffer* This, 712 IRpcChannelBuffer* pRpcChannelBuffer, 713 PRPC_MESSAGE pRpcMessage, 714 DWORD* pdwStubPhase); 715 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_GetRestrictToOutput_Proxy( 716 IDXGISwapChain1* This, 717 IDXGIOutput **ppRestrictToOutput); 718 void __RPC_STUB IDXGISwapChain1_GetRestrictToOutput_Stub( 719 IRpcStubBuffer* This, 720 IRpcChannelBuffer* pRpcChannelBuffer, 721 PRPC_MESSAGE pRpcMessage, 722 DWORD* pdwStubPhase); 723 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_SetBackgroundColor_Proxy( 724 IDXGISwapChain1* This, 725 const DXGI_RGBA *pColor); 726 void __RPC_STUB IDXGISwapChain1_SetBackgroundColor_Stub( 727 IRpcStubBuffer* This, 728 IRpcChannelBuffer* pRpcChannelBuffer, 729 PRPC_MESSAGE pRpcMessage, 730 DWORD* pdwStubPhase); 731 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_GetBackgroundColor_Proxy( 732 IDXGISwapChain1* This, 733 DXGI_RGBA *pColor); 734 void __RPC_STUB IDXGISwapChain1_GetBackgroundColor_Stub( 735 IRpcStubBuffer* This, 736 IRpcChannelBuffer* pRpcChannelBuffer, 737 PRPC_MESSAGE pRpcMessage, 738 DWORD* pdwStubPhase); 739 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_SetRotation_Proxy( 740 IDXGISwapChain1* This, 741 DXGI_MODE_ROTATION Rotation); 742 void __RPC_STUB IDXGISwapChain1_SetRotation_Stub( 743 IRpcStubBuffer* This, 744 IRpcChannelBuffer* pRpcChannelBuffer, 745 PRPC_MESSAGE pRpcMessage, 746 DWORD* pdwStubPhase); 747 HRESULT STDMETHODCALLTYPE IDXGISwapChain1_GetRotation_Proxy( 748 IDXGISwapChain1* This, 749 DXGI_MODE_ROTATION *pRotation); 750 void __RPC_STUB IDXGISwapChain1_GetRotation_Stub( 751 IRpcStubBuffer* This, 752 IRpcChannelBuffer* pRpcChannelBuffer, 753 PRPC_MESSAGE pRpcMessage, 754 DWORD* pdwStubPhase); 755 756 #endif /* __IDXGISwapChain1_INTERFACE_DEFINED__ */ 757 758 /***************************************************************************** 759 * IDXGIFactory2 interface 760 */ 761 #ifndef __IDXGIFactory2_INTERFACE_DEFINED__ 762 #define __IDXGIFactory2_INTERFACE_DEFINED__ 763 764 DEFINE_GUID(IID_IDXGIFactory2, 0x50c83a1c, 0xe072, 0x4c48, 0x87,0xb0, 0x36,0x30,0xfa,0x36,0xa6,0xd0); 765 #if defined(__cplusplus) && !defined(CINTERFACE) 766 MIDL_INTERFACE("50c83a1c-e072-4c48-87b0-3630fa36a6d0") 767 IDXGIFactory2 : public IDXGIFactory1 768 { 769 virtual WINBOOL STDMETHODCALLTYPE IsWindowedStereoEnabled( 770 ) = 0; 771 772 virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForHwnd( 773 IUnknown *pDevice, 774 HWND hWnd, 775 const DXGI_SWAP_CHAIN_DESC1 *pDesc, 776 const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc, 777 IDXGIOutput *pRestrictToOutput, 778 IDXGISwapChain1 **ppSwapChain) = 0; 779 780 virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForCoreWindow( 781 IUnknown *pDevice, 782 IUnknown *pWindow, 783 const DXGI_SWAP_CHAIN_DESC1 *pDesc, 784 IDXGIOutput *pRestrictToOutput, 785 IDXGISwapChain1 **ppSwapChain) = 0; 786 787 virtual HRESULT STDMETHODCALLTYPE GetSharedResourceAdapterLuid( 788 HANDLE hResource, 789 LUID *pLuid) = 0; 790 791 virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusWindow( 792 HWND WindowHandle, 793 UINT wMsg, 794 DWORD *pdwCookie) = 0; 795 796 virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusEvent( 797 HANDLE hEvent, 798 DWORD *pdwCookie) = 0; 799 800 virtual void STDMETHODCALLTYPE UnregisterStereoStatus( 801 DWORD dwCookie) = 0; 802 803 virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusWindow( 804 HWND WindowHandle, 805 UINT wMsg, 806 DWORD *pdwCookie) = 0; 807 808 virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusEvent( 809 HANDLE hEvent, 810 DWORD *pdwCookie) = 0; 811 812 virtual void STDMETHODCALLTYPE UnregisterOcclusionStatus( 813 DWORD dwCookie) = 0; 814 815 virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForComposition( 816 IUnknown *pDevice, 817 const DXGI_SWAP_CHAIN_DESC1 *pDesc, 818 IDXGIOutput *pRestrictToOutput, 819 IDXGISwapChain1 **ppSwapChain) = 0; 820 821 }; 822 #ifdef __CRT_UUID_DECL 823 __CRT_UUID_DECL(IDXGIFactory2, 0x50c83a1c, 0xe072, 0x4c48, 0x87,0xb0, 0x36,0x30,0xfa,0x36,0xa6,0xd0) 824 #endif 825 #else 826 typedef struct IDXGIFactory2Vtbl { 827 BEGIN_INTERFACE 828 829 /*** IUnknown methods ***/ 830 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 831 IDXGIFactory2* This, 832 REFIID riid, 833 void **ppvObject); 834 835 ULONG (STDMETHODCALLTYPE *AddRef)( 836 IDXGIFactory2* This); 837 838 ULONG (STDMETHODCALLTYPE *Release)( 839 IDXGIFactory2* This); 840 841 /*** IDXGIObject methods ***/ 842 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 843 IDXGIFactory2* This, 844 REFGUID guid, 845 UINT data_size, 846 const void *data); 847 848 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 849 IDXGIFactory2* This, 850 REFGUID guid, 851 const IUnknown *object); 852 853 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 854 IDXGIFactory2* This, 855 REFGUID guid, 856 UINT *data_size, 857 void *data); 858 859 HRESULT (STDMETHODCALLTYPE *GetParent)( 860 IDXGIFactory2* This, 861 REFIID riid, 862 void **parent); 863 864 /*** IDXGIFactory methods ***/ 865 HRESULT (STDMETHODCALLTYPE *EnumAdapters)( 866 IDXGIFactory2* This, 867 UINT adapter_idx, 868 IDXGIAdapter **adapter); 869 870 HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)( 871 IDXGIFactory2* This, 872 HWND window, 873 UINT flags); 874 875 HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)( 876 IDXGIFactory2* This, 877 HWND *window); 878 879 HRESULT (STDMETHODCALLTYPE *CreateSwapChain)( 880 IDXGIFactory2* This, 881 IUnknown *device, 882 DXGI_SWAP_CHAIN_DESC *desc, 883 IDXGISwapChain **swapchain); 884 885 HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)( 886 IDXGIFactory2* This, 887 HMODULE swrast, 888 IDXGIAdapter **adapter); 889 890 /*** IDXGIFactory1 methods ***/ 891 HRESULT (STDMETHODCALLTYPE *EnumAdapters1)( 892 IDXGIFactory2* This, 893 UINT Adapter, 894 IDXGIAdapter1 **ppAdapter); 895 896 WINBOOL (STDMETHODCALLTYPE *IsCurrent)( 897 IDXGIFactory2* This); 898 899 /*** IDXGIFactory2 methods ***/ 900 WINBOOL (STDMETHODCALLTYPE *IsWindowedStereoEnabled)( 901 IDXGIFactory2* This); 902 903 HRESULT (STDMETHODCALLTYPE *CreateSwapChainForHwnd)( 904 IDXGIFactory2* This, 905 IUnknown *pDevice, 906 HWND hWnd, 907 const DXGI_SWAP_CHAIN_DESC1 *pDesc, 908 const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc, 909 IDXGIOutput *pRestrictToOutput, 910 IDXGISwapChain1 **ppSwapChain); 911 912 HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCoreWindow)( 913 IDXGIFactory2* This, 914 IUnknown *pDevice, 915 IUnknown *pWindow, 916 const DXGI_SWAP_CHAIN_DESC1 *pDesc, 917 IDXGIOutput *pRestrictToOutput, 918 IDXGISwapChain1 **ppSwapChain); 919 920 HRESULT (STDMETHODCALLTYPE *GetSharedResourceAdapterLuid)( 921 IDXGIFactory2* This, 922 HANDLE hResource, 923 LUID *pLuid); 924 925 HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)( 926 IDXGIFactory2* This, 927 HWND WindowHandle, 928 UINT wMsg, 929 DWORD *pdwCookie); 930 931 HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusEvent)( 932 IDXGIFactory2* This, 933 HANDLE hEvent, 934 DWORD *pdwCookie); 935 936 void (STDMETHODCALLTYPE *UnregisterStereoStatus)( 937 IDXGIFactory2* This, 938 DWORD dwCookie); 939 940 HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)( 941 IDXGIFactory2* This, 942 HWND WindowHandle, 943 UINT wMsg, 944 DWORD *pdwCookie); 945 946 HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusEvent)( 947 IDXGIFactory2* This, 948 HANDLE hEvent, 949 DWORD *pdwCookie); 950 951 void (STDMETHODCALLTYPE *UnregisterOcclusionStatus)( 952 IDXGIFactory2* This, 953 DWORD dwCookie); 954 955 HRESULT (STDMETHODCALLTYPE *CreateSwapChainForComposition)( 956 IDXGIFactory2* This, 957 IUnknown *pDevice, 958 const DXGI_SWAP_CHAIN_DESC1 *pDesc, 959 IDXGIOutput *pRestrictToOutput, 960 IDXGISwapChain1 **ppSwapChain); 961 962 END_INTERFACE 963 } IDXGIFactory2Vtbl; 964 interface IDXGIFactory2 { 965 CONST_VTBL IDXGIFactory2Vtbl* lpVtbl; 966 }; 967 968 #ifdef COBJMACROS 969 #ifndef WIDL_C_INLINE_WRAPPERS 970 /*** IUnknown methods ***/ 971 #define IDXGIFactory2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 972 #define IDXGIFactory2_AddRef(This) (This)->lpVtbl->AddRef(This) 973 #define IDXGIFactory2_Release(This) (This)->lpVtbl->Release(This) 974 /*** IDXGIObject methods ***/ 975 #define IDXGIFactory2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 976 #define IDXGIFactory2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 977 #define IDXGIFactory2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 978 #define IDXGIFactory2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 979 /*** IDXGIFactory methods ***/ 980 #define IDXGIFactory2_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter) 981 #define IDXGIFactory2_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags) 982 #define IDXGIFactory2_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window) 983 #define IDXGIFactory2_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain) 984 #define IDXGIFactory2_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter) 985 /*** IDXGIFactory1 methods ***/ 986 #define IDXGIFactory2_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter) 987 #define IDXGIFactory2_IsCurrent(This) (This)->lpVtbl->IsCurrent(This) 988 /*** IDXGIFactory2 methods ***/ 989 #define IDXGIFactory2_IsWindowedStereoEnabled(This) (This)->lpVtbl->IsWindowedStereoEnabled(This) 990 #define IDXGIFactory2_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) 991 #define IDXGIFactory2_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) 992 #define IDXGIFactory2_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid) 993 #define IDXGIFactory2_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) 994 #define IDXGIFactory2_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie) 995 #define IDXGIFactory2_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie) 996 #define IDXGIFactory2_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) 997 #define IDXGIFactory2_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) 998 #define IDXGIFactory2_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie) 999 #define IDXGIFactory2_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) 1000 #else 1001 /*** IUnknown methods ***/ 1002 static FORCEINLINE HRESULT IDXGIFactory2_QueryInterface(IDXGIFactory2* This,REFIID riid,void **ppvObject) { 1003 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 1004 } 1005 static FORCEINLINE ULONG IDXGIFactory2_AddRef(IDXGIFactory2* This) { 1006 return This->lpVtbl->AddRef(This); 1007 } 1008 static FORCEINLINE ULONG IDXGIFactory2_Release(IDXGIFactory2* This) { 1009 return This->lpVtbl->Release(This); 1010 } 1011 /*** IDXGIObject methods ***/ 1012 static FORCEINLINE HRESULT IDXGIFactory2_SetPrivateData(IDXGIFactory2* This,REFGUID guid,UINT data_size,const void *data) { 1013 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 1014 } 1015 static FORCEINLINE HRESULT IDXGIFactory2_SetPrivateDataInterface(IDXGIFactory2* This,REFGUID guid,const IUnknown *object) { 1016 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 1017 } 1018 static FORCEINLINE HRESULT IDXGIFactory2_GetPrivateData(IDXGIFactory2* This,REFGUID guid,UINT *data_size,void *data) { 1019 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 1020 } 1021 static FORCEINLINE HRESULT IDXGIFactory2_GetParent(IDXGIFactory2* This,REFIID riid,void **parent) { 1022 return This->lpVtbl->GetParent(This,riid,parent); 1023 } 1024 /*** IDXGIFactory methods ***/ 1025 static FORCEINLINE HRESULT IDXGIFactory2_EnumAdapters(IDXGIFactory2* This,UINT adapter_idx,IDXGIAdapter **adapter) { 1026 return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter); 1027 } 1028 static FORCEINLINE HRESULT IDXGIFactory2_MakeWindowAssociation(IDXGIFactory2* This,HWND window,UINT flags) { 1029 return This->lpVtbl->MakeWindowAssociation(This,window,flags); 1030 } 1031 static FORCEINLINE HRESULT IDXGIFactory2_GetWindowAssociation(IDXGIFactory2* This,HWND *window) { 1032 return This->lpVtbl->GetWindowAssociation(This,window); 1033 } 1034 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChain(IDXGIFactory2* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) { 1035 return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain); 1036 } 1037 static FORCEINLINE HRESULT IDXGIFactory2_CreateSoftwareAdapter(IDXGIFactory2* This,HMODULE swrast,IDXGIAdapter **adapter) { 1038 return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter); 1039 } 1040 /*** IDXGIFactory1 methods ***/ 1041 static FORCEINLINE HRESULT IDXGIFactory2_EnumAdapters1(IDXGIFactory2* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) { 1042 return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter); 1043 } 1044 static FORCEINLINE WINBOOL IDXGIFactory2_IsCurrent(IDXGIFactory2* This) { 1045 return This->lpVtbl->IsCurrent(This); 1046 } 1047 /*** IDXGIFactory2 methods ***/ 1048 static FORCEINLINE WINBOOL IDXGIFactory2_IsWindowedStereoEnabled(IDXGIFactory2* This) { 1049 return This->lpVtbl->IsWindowedStereoEnabled(This); 1050 } 1051 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChainForHwnd(IDXGIFactory2* This,IUnknown *pDevice,HWND hWnd,const DXGI_SWAP_CHAIN_DESC1 *pDesc,const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) { 1052 return This->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain); 1053 } 1054 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChainForCoreWindow(IDXGIFactory2* This,IUnknown *pDevice,IUnknown *pWindow,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) { 1055 return This->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain); 1056 } 1057 static FORCEINLINE HRESULT IDXGIFactory2_GetSharedResourceAdapterLuid(IDXGIFactory2* This,HANDLE hResource,LUID *pLuid) { 1058 return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid); 1059 } 1060 static FORCEINLINE HRESULT IDXGIFactory2_RegisterOcclusionStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) { 1061 return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie); 1062 } 1063 static FORCEINLINE HRESULT IDXGIFactory2_RegisterStereoStatusEvent(IDXGIFactory2* This,HANDLE hEvent,DWORD *pdwCookie) { 1064 return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie); 1065 } 1066 static FORCEINLINE void IDXGIFactory2_UnregisterStereoStatus(IDXGIFactory2* This,DWORD dwCookie) { 1067 This->lpVtbl->UnregisterStereoStatus(This,dwCookie); 1068 } 1069 static FORCEINLINE HRESULT IDXGIFactory2_RegisterStereoStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) { 1070 return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie); 1071 } 1072 static FORCEINLINE HRESULT IDXGIFactory2_RegisterOcclusionStatusEvent(IDXGIFactory2* This,HANDLE hEvent,DWORD *pdwCookie) { 1073 return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie); 1074 } 1075 static FORCEINLINE void IDXGIFactory2_UnregisterOcclusionStatus(IDXGIFactory2* This,DWORD dwCookie) { 1076 This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie); 1077 } 1078 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChainForComposition(IDXGIFactory2* This,IUnknown *pDevice,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) { 1079 return This->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain); 1080 } 1081 #endif 1082 #endif 1083 1084 #endif 1085 1086 WINBOOL STDMETHODCALLTYPE IDXGIFactory2_IsWindowedStereoEnabled_Proxy( 1087 IDXGIFactory2* This); 1088 void __RPC_STUB IDXGIFactory2_IsWindowedStereoEnabled_Stub( 1089 IRpcStubBuffer* This, 1090 IRpcChannelBuffer* pRpcChannelBuffer, 1091 PRPC_MESSAGE pRpcMessage, 1092 DWORD* pdwStubPhase); 1093 HRESULT STDMETHODCALLTYPE IDXGIFactory2_CreateSwapChainForHwnd_Proxy( 1094 IDXGIFactory2* This, 1095 IUnknown *pDevice, 1096 HWND hWnd, 1097 const DXGI_SWAP_CHAIN_DESC1 *pDesc, 1098 const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc, 1099 IDXGIOutput *pRestrictToOutput, 1100 IDXGISwapChain1 **ppSwapChain); 1101 void __RPC_STUB IDXGIFactory2_CreateSwapChainForHwnd_Stub( 1102 IRpcStubBuffer* This, 1103 IRpcChannelBuffer* pRpcChannelBuffer, 1104 PRPC_MESSAGE pRpcMessage, 1105 DWORD* pdwStubPhase); 1106 HRESULT STDMETHODCALLTYPE IDXGIFactory2_CreateSwapChainForCoreWindow_Proxy( 1107 IDXGIFactory2* This, 1108 IUnknown *pDevice, 1109 IUnknown *pWindow, 1110 const DXGI_SWAP_CHAIN_DESC1 *pDesc, 1111 IDXGIOutput *pRestrictToOutput, 1112 IDXGISwapChain1 **ppSwapChain); 1113 void __RPC_STUB IDXGIFactory2_CreateSwapChainForCoreWindow_Stub( 1114 IRpcStubBuffer* This, 1115 IRpcChannelBuffer* pRpcChannelBuffer, 1116 PRPC_MESSAGE pRpcMessage, 1117 DWORD* pdwStubPhase); 1118 HRESULT STDMETHODCALLTYPE IDXGIFactory2_GetSharedResourceAdapterLuid_Proxy( 1119 IDXGIFactory2* This, 1120 HANDLE hResource, 1121 LUID *pLuid); 1122 void __RPC_STUB IDXGIFactory2_GetSharedResourceAdapterLuid_Stub( 1123 IRpcStubBuffer* This, 1124 IRpcChannelBuffer* pRpcChannelBuffer, 1125 PRPC_MESSAGE pRpcMessage, 1126 DWORD* pdwStubPhase); 1127 HRESULT STDMETHODCALLTYPE IDXGIFactory2_RegisterOcclusionStatusWindow_Proxy( 1128 IDXGIFactory2* This, 1129 HWND WindowHandle, 1130 UINT wMsg, 1131 DWORD *pdwCookie); 1132 void __RPC_STUB IDXGIFactory2_RegisterOcclusionStatusWindow_Stub( 1133 IRpcStubBuffer* This, 1134 IRpcChannelBuffer* pRpcChannelBuffer, 1135 PRPC_MESSAGE pRpcMessage, 1136 DWORD* pdwStubPhase); 1137 HRESULT STDMETHODCALLTYPE IDXGIFactory2_RegisterStereoStatusEvent_Proxy( 1138 IDXGIFactory2* This, 1139 HANDLE hEvent, 1140 DWORD *pdwCookie); 1141 void __RPC_STUB IDXGIFactory2_RegisterStereoStatusEvent_Stub( 1142 IRpcStubBuffer* This, 1143 IRpcChannelBuffer* pRpcChannelBuffer, 1144 PRPC_MESSAGE pRpcMessage, 1145 DWORD* pdwStubPhase); 1146 void STDMETHODCALLTYPE IDXGIFactory2_UnregisterStereoStatus_Proxy( 1147 IDXGIFactory2* This, 1148 DWORD dwCookie); 1149 void __RPC_STUB IDXGIFactory2_UnregisterStereoStatus_Stub( 1150 IRpcStubBuffer* This, 1151 IRpcChannelBuffer* pRpcChannelBuffer, 1152 PRPC_MESSAGE pRpcMessage, 1153 DWORD* pdwStubPhase); 1154 HRESULT STDMETHODCALLTYPE IDXGIFactory2_RegisterStereoStatusWindow_Proxy( 1155 IDXGIFactory2* This, 1156 HWND WindowHandle, 1157 UINT wMsg, 1158 DWORD *pdwCookie); 1159 void __RPC_STUB IDXGIFactory2_RegisterStereoStatusWindow_Stub( 1160 IRpcStubBuffer* This, 1161 IRpcChannelBuffer* pRpcChannelBuffer, 1162 PRPC_MESSAGE pRpcMessage, 1163 DWORD* pdwStubPhase); 1164 HRESULT STDMETHODCALLTYPE IDXGIFactory2_RegisterOcclusionStatusEvent_Proxy( 1165 IDXGIFactory2* This, 1166 HANDLE hEvent, 1167 DWORD *pdwCookie); 1168 void __RPC_STUB IDXGIFactory2_RegisterOcclusionStatusEvent_Stub( 1169 IRpcStubBuffer* This, 1170 IRpcChannelBuffer* pRpcChannelBuffer, 1171 PRPC_MESSAGE pRpcMessage, 1172 DWORD* pdwStubPhase); 1173 void STDMETHODCALLTYPE IDXGIFactory2_UnregisterOcclusionStatus_Proxy( 1174 IDXGIFactory2* This, 1175 DWORD dwCookie); 1176 void __RPC_STUB IDXGIFactory2_UnregisterOcclusionStatus_Stub( 1177 IRpcStubBuffer* This, 1178 IRpcChannelBuffer* pRpcChannelBuffer, 1179 PRPC_MESSAGE pRpcMessage, 1180 DWORD* pdwStubPhase); 1181 HRESULT STDMETHODCALLTYPE IDXGIFactory2_CreateSwapChainForComposition_Proxy( 1182 IDXGIFactory2* This, 1183 IUnknown *pDevice, 1184 const DXGI_SWAP_CHAIN_DESC1 *pDesc, 1185 IDXGIOutput *pRestrictToOutput, 1186 IDXGISwapChain1 **ppSwapChain); 1187 void __RPC_STUB IDXGIFactory2_CreateSwapChainForComposition_Stub( 1188 IRpcStubBuffer* This, 1189 IRpcChannelBuffer* pRpcChannelBuffer, 1190 PRPC_MESSAGE pRpcMessage, 1191 DWORD* pdwStubPhase); 1192 1193 #endif /* __IDXGIFactory2_INTERFACE_DEFINED__ */ 1194 1195 typedef enum DXGI_GRAPHICS_PREEMPTION_GRANULARITY { 1196 DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY = 0, 1197 DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY = 1, 1198 DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY = 2, 1199 DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY = 3, 1200 DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY = 4 1201 } DXGI_GRAPHICS_PREEMPTION_GRANULARITY; 1202 typedef enum DXGI_COMPUTE_PREEMPTION_GRANULARITY { 1203 DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY = 0, 1204 DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY = 1, 1205 DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY = 2, 1206 DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY = 3, 1207 DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY = 4 1208 } DXGI_COMPUTE_PREEMPTION_GRANULARITY; 1209 typedef struct DXGI_ADAPTER_DESC2 { 1210 WCHAR Description[128]; 1211 UINT VendorId; 1212 UINT DeviceId; 1213 UINT SubSysId; 1214 UINT Revision; 1215 SIZE_T DedicatedVideoMemory; 1216 SIZE_T DedicatedSystemMemory; 1217 SIZE_T SharedSystemMemory; 1218 LUID AdapterLuid; 1219 UINT Flags; 1220 DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity; 1221 DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity; 1222 } DXGI_ADAPTER_DESC2; 1223 /***************************************************************************** 1224 * IDXGIAdapter2 interface 1225 */ 1226 #ifndef __IDXGIAdapter2_INTERFACE_DEFINED__ 1227 #define __IDXGIAdapter2_INTERFACE_DEFINED__ 1228 1229 DEFINE_GUID(IID_IDXGIAdapter2, 0x0aa1ae0a, 0xfa0e, 0x4b84, 0x86,0x44, 0xe0,0x5f,0xf8,0xe5,0xac,0xb5); 1230 #if defined(__cplusplus) && !defined(CINTERFACE) 1231 MIDL_INTERFACE("0aa1ae0a-fa0e-4b84-8644-e05ff8e5acb5") 1232 IDXGIAdapter2 : public IDXGIAdapter1 1233 { 1234 virtual HRESULT STDMETHODCALLTYPE GetDesc2( 1235 DXGI_ADAPTER_DESC2 *pDesc) = 0; 1236 1237 }; 1238 #ifdef __CRT_UUID_DECL 1239 __CRT_UUID_DECL(IDXGIAdapter2, 0x0aa1ae0a, 0xfa0e, 0x4b84, 0x86,0x44, 0xe0,0x5f,0xf8,0xe5,0xac,0xb5) 1240 #endif 1241 #else 1242 typedef struct IDXGIAdapter2Vtbl { 1243 BEGIN_INTERFACE 1244 1245 /*** IUnknown methods ***/ 1246 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 1247 IDXGIAdapter2* This, 1248 REFIID riid, 1249 void **ppvObject); 1250 1251 ULONG (STDMETHODCALLTYPE *AddRef)( 1252 IDXGIAdapter2* This); 1253 1254 ULONG (STDMETHODCALLTYPE *Release)( 1255 IDXGIAdapter2* This); 1256 1257 /*** IDXGIObject methods ***/ 1258 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 1259 IDXGIAdapter2* This, 1260 REFGUID guid, 1261 UINT data_size, 1262 const void *data); 1263 1264 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 1265 IDXGIAdapter2* This, 1266 REFGUID guid, 1267 const IUnknown *object); 1268 1269 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 1270 IDXGIAdapter2* This, 1271 REFGUID guid, 1272 UINT *data_size, 1273 void *data); 1274 1275 HRESULT (STDMETHODCALLTYPE *GetParent)( 1276 IDXGIAdapter2* This, 1277 REFIID riid, 1278 void **parent); 1279 1280 /*** IDXGIAdapter methods ***/ 1281 HRESULT (STDMETHODCALLTYPE *EnumOutputs)( 1282 IDXGIAdapter2* This, 1283 UINT output_idx, 1284 IDXGIOutput **output); 1285 1286 HRESULT (STDMETHODCALLTYPE *GetDesc)( 1287 IDXGIAdapter2* This, 1288 DXGI_ADAPTER_DESC *desc); 1289 1290 HRESULT (STDMETHODCALLTYPE *CheckInterfaceSupport)( 1291 IDXGIAdapter2* This, 1292 REFGUID guid, 1293 LARGE_INTEGER *umd_version); 1294 1295 /*** IDXGIAdapter1 methods ***/ 1296 HRESULT (STDMETHODCALLTYPE *GetDesc1)( 1297 IDXGIAdapter2* This, 1298 DXGI_ADAPTER_DESC1 *pDesc); 1299 1300 /*** IDXGIAdapter2 methods ***/ 1301 HRESULT (STDMETHODCALLTYPE *GetDesc2)( 1302 IDXGIAdapter2* This, 1303 DXGI_ADAPTER_DESC2 *pDesc); 1304 1305 END_INTERFACE 1306 } IDXGIAdapter2Vtbl; 1307 interface IDXGIAdapter2 { 1308 CONST_VTBL IDXGIAdapter2Vtbl* lpVtbl; 1309 }; 1310 1311 #ifdef COBJMACROS 1312 #ifndef WIDL_C_INLINE_WRAPPERS 1313 /*** IUnknown methods ***/ 1314 #define IDXGIAdapter2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 1315 #define IDXGIAdapter2_AddRef(This) (This)->lpVtbl->AddRef(This) 1316 #define IDXGIAdapter2_Release(This) (This)->lpVtbl->Release(This) 1317 /*** IDXGIObject methods ***/ 1318 #define IDXGIAdapter2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 1319 #define IDXGIAdapter2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 1320 #define IDXGIAdapter2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 1321 #define IDXGIAdapter2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 1322 /*** IDXGIAdapter methods ***/ 1323 #define IDXGIAdapter2_EnumOutputs(This,output_idx,output) (This)->lpVtbl->EnumOutputs(This,output_idx,output) 1324 #define IDXGIAdapter2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) 1325 #define IDXGIAdapter2_CheckInterfaceSupport(This,guid,umd_version) (This)->lpVtbl->CheckInterfaceSupport(This,guid,umd_version) 1326 /*** IDXGIAdapter1 methods ***/ 1327 #define IDXGIAdapter2_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc) 1328 /*** IDXGIAdapter2 methods ***/ 1329 #define IDXGIAdapter2_GetDesc2(This,pDesc) (This)->lpVtbl->GetDesc2(This,pDesc) 1330 #else 1331 /*** IUnknown methods ***/ 1332 static FORCEINLINE HRESULT IDXGIAdapter2_QueryInterface(IDXGIAdapter2* This,REFIID riid,void **ppvObject) { 1333 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 1334 } 1335 static FORCEINLINE ULONG IDXGIAdapter2_AddRef(IDXGIAdapter2* This) { 1336 return This->lpVtbl->AddRef(This); 1337 } 1338 static FORCEINLINE ULONG IDXGIAdapter2_Release(IDXGIAdapter2* This) { 1339 return This->lpVtbl->Release(This); 1340 } 1341 /*** IDXGIObject methods ***/ 1342 static FORCEINLINE HRESULT IDXGIAdapter2_SetPrivateData(IDXGIAdapter2* This,REFGUID guid,UINT data_size,const void *data) { 1343 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 1344 } 1345 static FORCEINLINE HRESULT IDXGIAdapter2_SetPrivateDataInterface(IDXGIAdapter2* This,REFGUID guid,const IUnknown *object) { 1346 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 1347 } 1348 static FORCEINLINE HRESULT IDXGIAdapter2_GetPrivateData(IDXGIAdapter2* This,REFGUID guid,UINT *data_size,void *data) { 1349 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 1350 } 1351 static FORCEINLINE HRESULT IDXGIAdapter2_GetParent(IDXGIAdapter2* This,REFIID riid,void **parent) { 1352 return This->lpVtbl->GetParent(This,riid,parent); 1353 } 1354 /*** IDXGIAdapter methods ***/ 1355 static FORCEINLINE HRESULT IDXGIAdapter2_EnumOutputs(IDXGIAdapter2* This,UINT output_idx,IDXGIOutput **output) { 1356 return This->lpVtbl->EnumOutputs(This,output_idx,output); 1357 } 1358 static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc(IDXGIAdapter2* This,DXGI_ADAPTER_DESC *desc) { 1359 return This->lpVtbl->GetDesc(This,desc); 1360 } 1361 static FORCEINLINE HRESULT IDXGIAdapter2_CheckInterfaceSupport(IDXGIAdapter2* This,REFGUID guid,LARGE_INTEGER *umd_version) { 1362 return This->lpVtbl->CheckInterfaceSupport(This,guid,umd_version); 1363 } 1364 /*** IDXGIAdapter1 methods ***/ 1365 static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc1(IDXGIAdapter2* This,DXGI_ADAPTER_DESC1 *pDesc) { 1366 return This->lpVtbl->GetDesc1(This,pDesc); 1367 } 1368 /*** IDXGIAdapter2 methods ***/ 1369 static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc2(IDXGIAdapter2* This,DXGI_ADAPTER_DESC2 *pDesc) { 1370 return This->lpVtbl->GetDesc2(This,pDesc); 1371 } 1372 #endif 1373 #endif 1374 1375 #endif 1376 1377 HRESULT STDMETHODCALLTYPE IDXGIAdapter2_GetDesc2_Proxy( 1378 IDXGIAdapter2* This, 1379 DXGI_ADAPTER_DESC2 *pDesc); 1380 void __RPC_STUB IDXGIAdapter2_GetDesc2_Stub( 1381 IRpcStubBuffer* This, 1382 IRpcChannelBuffer* pRpcChannelBuffer, 1383 PRPC_MESSAGE pRpcMessage, 1384 DWORD* pdwStubPhase); 1385 1386 #endif /* __IDXGIAdapter2_INTERFACE_DEFINED__ */ 1387 1388 /* Begin additional prototypes for all interfaces */ 1389 1390 1391 /* End additional prototypes */ 1392 1393 #ifdef __cplusplus 1394 } 1395 #endif 1396 1397 #endif /* __dxgi1_2_h__ */ 1398