1 /*** Autogenerated by WIDL 3.19 from direct-x/include/dxgi.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 __dxgi_h__ 16 #define __dxgi_h__ 17 18 /* Forward declarations */ 19 20 #ifndef __IDXGIObject_FWD_DEFINED__ 21 #define __IDXGIObject_FWD_DEFINED__ 22 typedef interface IDXGIObject IDXGIObject; 23 #ifdef __cplusplus 24 interface IDXGIObject; 25 #endif /* __cplusplus */ 26 #endif 27 28 #ifndef __IDXGIDeviceSubObject_FWD_DEFINED__ 29 #define __IDXGIDeviceSubObject_FWD_DEFINED__ 30 typedef interface IDXGIDeviceSubObject IDXGIDeviceSubObject; 31 #ifdef __cplusplus 32 interface IDXGIDeviceSubObject; 33 #endif /* __cplusplus */ 34 #endif 35 36 #ifndef __IDXGIResource_FWD_DEFINED__ 37 #define __IDXGIResource_FWD_DEFINED__ 38 typedef interface IDXGIResource IDXGIResource; 39 #ifdef __cplusplus 40 interface IDXGIResource; 41 #endif /* __cplusplus */ 42 #endif 43 44 #ifndef __IDXGIKeyedMutex_FWD_DEFINED__ 45 #define __IDXGIKeyedMutex_FWD_DEFINED__ 46 typedef interface IDXGIKeyedMutex IDXGIKeyedMutex; 47 #ifdef __cplusplus 48 interface IDXGIKeyedMutex; 49 #endif /* __cplusplus */ 50 #endif 51 52 #ifndef __IDXGISurface_FWD_DEFINED__ 53 #define __IDXGISurface_FWD_DEFINED__ 54 typedef interface IDXGISurface IDXGISurface; 55 #ifdef __cplusplus 56 interface IDXGISurface; 57 #endif /* __cplusplus */ 58 #endif 59 60 #ifndef __IDXGISurface1_FWD_DEFINED__ 61 #define __IDXGISurface1_FWD_DEFINED__ 62 typedef interface IDXGISurface1 IDXGISurface1; 63 #ifdef __cplusplus 64 interface IDXGISurface1; 65 #endif /* __cplusplus */ 66 #endif 67 68 #ifndef __IDXGIOutput_FWD_DEFINED__ 69 #define __IDXGIOutput_FWD_DEFINED__ 70 typedef interface IDXGIOutput IDXGIOutput; 71 #ifdef __cplusplus 72 interface IDXGIOutput; 73 #endif /* __cplusplus */ 74 #endif 75 76 #ifndef __IDXGIAdapter_FWD_DEFINED__ 77 #define __IDXGIAdapter_FWD_DEFINED__ 78 typedef interface IDXGIAdapter IDXGIAdapter; 79 #ifdef __cplusplus 80 interface IDXGIAdapter; 81 #endif /* __cplusplus */ 82 #endif 83 84 #ifndef __IDXGISwapChain_FWD_DEFINED__ 85 #define __IDXGISwapChain_FWD_DEFINED__ 86 typedef interface IDXGISwapChain IDXGISwapChain; 87 #ifdef __cplusplus 88 interface IDXGISwapChain; 89 #endif /* __cplusplus */ 90 #endif 91 92 #ifndef __IDXGIFactory_FWD_DEFINED__ 93 #define __IDXGIFactory_FWD_DEFINED__ 94 typedef interface IDXGIFactory IDXGIFactory; 95 #ifdef __cplusplus 96 interface IDXGIFactory; 97 #endif /* __cplusplus */ 98 #endif 99 100 #ifndef __IDXGIDevice_FWD_DEFINED__ 101 #define __IDXGIDevice_FWD_DEFINED__ 102 typedef interface IDXGIDevice IDXGIDevice; 103 #ifdef __cplusplus 104 interface IDXGIDevice; 105 #endif /* __cplusplus */ 106 #endif 107 108 #ifndef __IDXGIAdapter1_FWD_DEFINED__ 109 #define __IDXGIAdapter1_FWD_DEFINED__ 110 typedef interface IDXGIAdapter1 IDXGIAdapter1; 111 #ifdef __cplusplus 112 interface IDXGIAdapter1; 113 #endif /* __cplusplus */ 114 #endif 115 116 #ifndef __IDXGIDevice1_FWD_DEFINED__ 117 #define __IDXGIDevice1_FWD_DEFINED__ 118 typedef interface IDXGIDevice1 IDXGIDevice1; 119 #ifdef __cplusplus 120 interface IDXGIDevice1; 121 #endif /* __cplusplus */ 122 #endif 123 124 #ifndef __IDXGIFactory1_FWD_DEFINED__ 125 #define __IDXGIFactory1_FWD_DEFINED__ 126 typedef interface IDXGIFactory1 IDXGIFactory1; 127 #ifdef __cplusplus 128 interface IDXGIFactory1; 129 #endif /* __cplusplus */ 130 #endif 131 132 /* Headers for imported files */ 133 134 #include <oaidl.h> 135 #include <ocidl.h> 136 #include <dxgitype.h> 137 138 #ifdef __cplusplus 139 extern "C" { 140 #endif 141 142 #define _FACDXGI (0x87a) 143 144 #define MAKE_DXGI_STATUS(x) MAKE_HRESULT(0, _FACDXGI, x) 145 #define MAKE_DXGI_HRESULT(x) MAKE_HRESULT(1, _FACDXGI, x) 146 #if 0 147 typedef HANDLE HMONITOR; 148 typedef struct _LUID { 149 DWORD LowPart; 150 LONG HighPart; 151 } LUID; 152 typedef struct _LUID *PLUID; 153 #endif 154 typedef UINT DXGI_USAGE; 155 #define DXGI_USAGE_SHADER_INPUT (0x10) 156 157 #define DXGI_USAGE_RENDER_TARGET_OUTPUT (0x20) 158 159 #define DXGI_USAGE_BACK_BUFFER (0x40) 160 161 #define DXGI_USAGE_SHARED (0x80) 162 163 #define DXGI_USAGE_READ_ONLY (0x100) 164 165 #define DXGI_USAGE_DISCARD_ON_PRESENT (0x200) 166 167 #define DXGI_USAGE_UNORDERED_ACCESS (0x400) 168 169 #define DXGI_ENUM_MODES_INTERLACED (1) 170 171 #define DXGI_ENUM_MODES_SCALING (2) 172 173 #define DXGI_RESOURCE_PRIORITY_MINIMUM (0x28000000) 174 175 #define DXGI_RESOURCE_PRIORITY_LOW (0x50000000) 176 177 #define DXGI_RESOURCE_PRIORITY_NORMAL (0x78000000) 178 179 #define DXGI_RESOURCE_PRIORITY_HIGH (0xa0000000) 180 181 #define DXGI_RESOURCE_PRIORITY_MAXIMUM (0xc8000000) 182 183 #define DXGI_MAP_READ (0x1) 184 185 #define DXGI_MAP_WRITE (0x2) 186 187 #define DXGI_MAP_DISCARD (0x4) 188 189 typedef enum DXGI_SWAP_EFFECT { 190 DXGI_SWAP_EFFECT_DISCARD = 0, 191 DXGI_SWAP_EFFECT_SEQUENTIAL = 1, 192 DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL = 3, 193 DXGI_SWAP_EFFECT_FLIP_DISCARD = 4 194 } DXGI_SWAP_EFFECT; 195 typedef enum DXGI_RESIDENCY { 196 DXGI_RESIDENCY_FULLY_RESIDENT = 1, 197 DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY = 2, 198 DXGI_RESIDENCY_EVICTED_TO_DISK = 3 199 } DXGI_RESIDENCY; 200 typedef struct DXGI_SURFACE_DESC { 201 UINT Width; 202 UINT Height; 203 DXGI_FORMAT Format; 204 DXGI_SAMPLE_DESC SampleDesc; 205 } DXGI_SURFACE_DESC; 206 typedef struct DXGI_MAPPED_RECT { 207 INT Pitch; 208 BYTE *pBits; 209 } DXGI_MAPPED_RECT; 210 typedef struct DXGI_OUTPUT_DESC { 211 WCHAR DeviceName[32]; 212 RECT DesktopCoordinates; 213 WINBOOL AttachedToDesktop; 214 DXGI_MODE_ROTATION Rotation; 215 HMONITOR Monitor; 216 } DXGI_OUTPUT_DESC; 217 typedef struct DXGI_FRAME_STATISTICS { 218 UINT PresentCount; 219 UINT PresentRefreshCount; 220 UINT SyncRefreshCount; 221 LARGE_INTEGER SyncQPCTime; 222 LARGE_INTEGER SyncGPUTime; 223 } DXGI_FRAME_STATISTICS; 224 typedef struct DXGI_ADAPTER_DESC { 225 WCHAR Description[128]; 226 UINT VendorId; 227 UINT DeviceId; 228 UINT SubSysId; 229 UINT Revision; 230 SIZE_T DedicatedVideoMemory; 231 SIZE_T DedicatedSystemMemory; 232 SIZE_T SharedSystemMemory; 233 LUID AdapterLuid; 234 } DXGI_ADAPTER_DESC; 235 typedef enum DXGI_SWAP_CHAIN_FLAG { 236 DXGI_SWAP_CHAIN_FLAG_NONPREROTATED = 0x1, 237 DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH = 0x2, 238 DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE = 0x4, 239 DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTEXT = 0x8, 240 DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER = 0x10, 241 DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY = 0x20, 242 DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT = 0x40, 243 DXGI_SWAP_CHAIN_FLAG_FOREGROUND_LAYER = 0x80, 244 DXGI_SWAP_CHAIN_FLAG_FULLSCREEN_VIDEO = 0x100, 245 DXGI_SWAP_CHAIN_FLAG_YUV_VIDEO = 0x200, 246 DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED = 0x400, 247 DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING = 0x800, 248 DXGI_SWAP_CHAIN_FLAG_RESTRICTED_TO_ALL_HOLOGRAPHIC_DISPLAYS = 0x1000 249 } DXGI_SWAP_CHAIN_FLAG; 250 typedef struct DXGI_SWAP_CHAIN_DESC { 251 DXGI_MODE_DESC BufferDesc; 252 DXGI_SAMPLE_DESC SampleDesc; 253 DXGI_USAGE BufferUsage; 254 UINT BufferCount; 255 HWND OutputWindow; 256 WINBOOL Windowed; 257 DXGI_SWAP_EFFECT SwapEffect; 258 UINT Flags; 259 } DXGI_SWAP_CHAIN_DESC; 260 typedef struct DXGI_SHARED_RESOURCE { 261 HANDLE Handle; 262 } DXGI_SHARED_RESOURCE; 263 /***************************************************************************** 264 * IDXGIObject interface 265 */ 266 #ifndef __IDXGIObject_INTERFACE_DEFINED__ 267 #define __IDXGIObject_INTERFACE_DEFINED__ 268 269 DEFINE_GUID(IID_IDXGIObject, 0xaec22fb8, 0x76f3, 0x4639, 0x9b,0xe0, 0x28,0xeb,0x43,0xa6,0x7a,0x2e); 270 #if defined(__cplusplus) && !defined(CINTERFACE) 271 MIDL_INTERFACE("aec22fb8-76f3-4639-9be0-28eb43a67a2e") 272 IDXGIObject : public IUnknown 273 { 274 virtual HRESULT STDMETHODCALLTYPE SetPrivateData( 275 REFGUID guid, 276 UINT data_size, 277 const void *data) = 0; 278 279 virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface( 280 REFGUID guid, 281 const IUnknown *object) = 0; 282 283 virtual HRESULT STDMETHODCALLTYPE GetPrivateData( 284 REFGUID guid, 285 UINT *data_size, 286 void *data) = 0; 287 288 virtual HRESULT STDMETHODCALLTYPE GetParent( 289 REFIID riid, 290 void **parent) = 0; 291 292 }; 293 #ifdef __CRT_UUID_DECL 294 __CRT_UUID_DECL(IDXGIObject, 0xaec22fb8, 0x76f3, 0x4639, 0x9b,0xe0, 0x28,0xeb,0x43,0xa6,0x7a,0x2e) 295 #endif 296 #else 297 typedef struct IDXGIObjectVtbl { 298 BEGIN_INTERFACE 299 300 /*** IUnknown methods ***/ 301 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 302 IDXGIObject *This, 303 REFIID riid, 304 void **ppvObject); 305 306 ULONG (STDMETHODCALLTYPE *AddRef)( 307 IDXGIObject *This); 308 309 ULONG (STDMETHODCALLTYPE *Release)( 310 IDXGIObject *This); 311 312 /*** IDXGIObject methods ***/ 313 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 314 IDXGIObject *This, 315 REFGUID guid, 316 UINT data_size, 317 const void *data); 318 319 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 320 IDXGIObject *This, 321 REFGUID guid, 322 const IUnknown *object); 323 324 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 325 IDXGIObject *This, 326 REFGUID guid, 327 UINT *data_size, 328 void *data); 329 330 HRESULT (STDMETHODCALLTYPE *GetParent)( 331 IDXGIObject *This, 332 REFIID riid, 333 void **parent); 334 335 END_INTERFACE 336 } IDXGIObjectVtbl; 337 338 interface IDXGIObject { 339 CONST_VTBL IDXGIObjectVtbl* lpVtbl; 340 }; 341 342 #ifdef COBJMACROS 343 #ifndef WIDL_C_INLINE_WRAPPERS 344 /*** IUnknown methods ***/ 345 #define IDXGIObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 346 #define IDXGIObject_AddRef(This) (This)->lpVtbl->AddRef(This) 347 #define IDXGIObject_Release(This) (This)->lpVtbl->Release(This) 348 /*** IDXGIObject methods ***/ 349 #define IDXGIObject_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 350 #define IDXGIObject_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 351 #define IDXGIObject_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 352 #define IDXGIObject_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 353 #else 354 /*** IUnknown methods ***/ 355 static FORCEINLINE HRESULT IDXGIObject_QueryInterface(IDXGIObject* This,REFIID riid,void **ppvObject) { 356 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 357 } 358 static FORCEINLINE ULONG IDXGIObject_AddRef(IDXGIObject* This) { 359 return This->lpVtbl->AddRef(This); 360 } 361 static FORCEINLINE ULONG IDXGIObject_Release(IDXGIObject* This) { 362 return This->lpVtbl->Release(This); 363 } 364 /*** IDXGIObject methods ***/ 365 static FORCEINLINE HRESULT IDXGIObject_SetPrivateData(IDXGIObject* This,REFGUID guid,UINT data_size,const void *data) { 366 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 367 } 368 static FORCEINLINE HRESULT IDXGIObject_SetPrivateDataInterface(IDXGIObject* This,REFGUID guid,const IUnknown *object) { 369 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 370 } 371 static FORCEINLINE HRESULT IDXGIObject_GetPrivateData(IDXGIObject* This,REFGUID guid,UINT *data_size,void *data) { 372 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 373 } 374 static FORCEINLINE HRESULT IDXGIObject_GetParent(IDXGIObject* This,REFIID riid,void **parent) { 375 return This->lpVtbl->GetParent(This,riid,parent); 376 } 377 #endif 378 #endif 379 380 #endif 381 382 383 #endif /* __IDXGIObject_INTERFACE_DEFINED__ */ 384 385 /***************************************************************************** 386 * IDXGIDeviceSubObject interface 387 */ 388 #ifndef __IDXGIDeviceSubObject_INTERFACE_DEFINED__ 389 #define __IDXGIDeviceSubObject_INTERFACE_DEFINED__ 390 391 DEFINE_GUID(IID_IDXGIDeviceSubObject, 0x3d3e0379, 0xf9de, 0x4d58, 0xbb,0x6c, 0x18,0xd6,0x29,0x92,0xf1,0xa6); 392 #if defined(__cplusplus) && !defined(CINTERFACE) 393 MIDL_INTERFACE("3d3e0379-f9de-4d58-bb6c-18d62992f1a6") 394 IDXGIDeviceSubObject : public IDXGIObject 395 { 396 virtual HRESULT STDMETHODCALLTYPE GetDevice( 397 REFIID riid, 398 void **device) = 0; 399 400 }; 401 #ifdef __CRT_UUID_DECL 402 __CRT_UUID_DECL(IDXGIDeviceSubObject, 0x3d3e0379, 0xf9de, 0x4d58, 0xbb,0x6c, 0x18,0xd6,0x29,0x92,0xf1,0xa6) 403 #endif 404 #else 405 typedef struct IDXGIDeviceSubObjectVtbl { 406 BEGIN_INTERFACE 407 408 /*** IUnknown methods ***/ 409 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 410 IDXGIDeviceSubObject *This, 411 REFIID riid, 412 void **ppvObject); 413 414 ULONG (STDMETHODCALLTYPE *AddRef)( 415 IDXGIDeviceSubObject *This); 416 417 ULONG (STDMETHODCALLTYPE *Release)( 418 IDXGIDeviceSubObject *This); 419 420 /*** IDXGIObject methods ***/ 421 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 422 IDXGIDeviceSubObject *This, 423 REFGUID guid, 424 UINT data_size, 425 const void *data); 426 427 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 428 IDXGIDeviceSubObject *This, 429 REFGUID guid, 430 const IUnknown *object); 431 432 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 433 IDXGIDeviceSubObject *This, 434 REFGUID guid, 435 UINT *data_size, 436 void *data); 437 438 HRESULT (STDMETHODCALLTYPE *GetParent)( 439 IDXGIDeviceSubObject *This, 440 REFIID riid, 441 void **parent); 442 443 /*** IDXGIDeviceSubObject methods ***/ 444 HRESULT (STDMETHODCALLTYPE *GetDevice)( 445 IDXGIDeviceSubObject *This, 446 REFIID riid, 447 void **device); 448 449 END_INTERFACE 450 } IDXGIDeviceSubObjectVtbl; 451 452 interface IDXGIDeviceSubObject { 453 CONST_VTBL IDXGIDeviceSubObjectVtbl* lpVtbl; 454 }; 455 456 #ifdef COBJMACROS 457 #ifndef WIDL_C_INLINE_WRAPPERS 458 /*** IUnknown methods ***/ 459 #define IDXGIDeviceSubObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 460 #define IDXGIDeviceSubObject_AddRef(This) (This)->lpVtbl->AddRef(This) 461 #define IDXGIDeviceSubObject_Release(This) (This)->lpVtbl->Release(This) 462 /*** IDXGIObject methods ***/ 463 #define IDXGIDeviceSubObject_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 464 #define IDXGIDeviceSubObject_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 465 #define IDXGIDeviceSubObject_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 466 #define IDXGIDeviceSubObject_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 467 /*** IDXGIDeviceSubObject methods ***/ 468 #define IDXGIDeviceSubObject_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device) 469 #else 470 /*** IUnknown methods ***/ 471 static FORCEINLINE HRESULT IDXGIDeviceSubObject_QueryInterface(IDXGIDeviceSubObject* This,REFIID riid,void **ppvObject) { 472 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 473 } 474 static FORCEINLINE ULONG IDXGIDeviceSubObject_AddRef(IDXGIDeviceSubObject* This) { 475 return This->lpVtbl->AddRef(This); 476 } 477 static FORCEINLINE ULONG IDXGIDeviceSubObject_Release(IDXGIDeviceSubObject* This) { 478 return This->lpVtbl->Release(This); 479 } 480 /*** IDXGIObject methods ***/ 481 static FORCEINLINE HRESULT IDXGIDeviceSubObject_SetPrivateData(IDXGIDeviceSubObject* This,REFGUID guid,UINT data_size,const void *data) { 482 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 483 } 484 static FORCEINLINE HRESULT IDXGIDeviceSubObject_SetPrivateDataInterface(IDXGIDeviceSubObject* This,REFGUID guid,const IUnknown *object) { 485 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 486 } 487 static FORCEINLINE HRESULT IDXGIDeviceSubObject_GetPrivateData(IDXGIDeviceSubObject* This,REFGUID guid,UINT *data_size,void *data) { 488 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 489 } 490 static FORCEINLINE HRESULT IDXGIDeviceSubObject_GetParent(IDXGIDeviceSubObject* This,REFIID riid,void **parent) { 491 return This->lpVtbl->GetParent(This,riid,parent); 492 } 493 /*** IDXGIDeviceSubObject methods ***/ 494 static FORCEINLINE HRESULT IDXGIDeviceSubObject_GetDevice(IDXGIDeviceSubObject* This,REFIID riid,void **device) { 495 return This->lpVtbl->GetDevice(This,riid,device); 496 } 497 #endif 498 #endif 499 500 #endif 501 502 503 #endif /* __IDXGIDeviceSubObject_INTERFACE_DEFINED__ */ 504 505 /***************************************************************************** 506 * IDXGIResource interface 507 */ 508 #ifndef __IDXGIResource_INTERFACE_DEFINED__ 509 #define __IDXGIResource_INTERFACE_DEFINED__ 510 511 DEFINE_GUID(IID_IDXGIResource, 0x035f3ab4, 0x482e, 0x4e50, 0xb4,0x1f, 0x8a,0x7f,0x8b,0xd8,0x96,0x0b); 512 #if defined(__cplusplus) && !defined(CINTERFACE) 513 MIDL_INTERFACE("035f3ab4-482e-4e50-b41f-8a7f8bd8960b") 514 IDXGIResource : public IDXGIDeviceSubObject 515 { 516 virtual HRESULT STDMETHODCALLTYPE GetSharedHandle( 517 HANDLE *pSharedHandle) = 0; 518 519 virtual HRESULT STDMETHODCALLTYPE GetUsage( 520 DXGI_USAGE *pUsage) = 0; 521 522 virtual HRESULT STDMETHODCALLTYPE SetEvictionPriority( 523 UINT EvictionPriority) = 0; 524 525 virtual HRESULT STDMETHODCALLTYPE GetEvictionPriority( 526 UINT *pEvictionPriority) = 0; 527 528 }; 529 #ifdef __CRT_UUID_DECL 530 __CRT_UUID_DECL(IDXGIResource, 0x035f3ab4, 0x482e, 0x4e50, 0xb4,0x1f, 0x8a,0x7f,0x8b,0xd8,0x96,0x0b) 531 #endif 532 #else 533 typedef struct IDXGIResourceVtbl { 534 BEGIN_INTERFACE 535 536 /*** IUnknown methods ***/ 537 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 538 IDXGIResource *This, 539 REFIID riid, 540 void **ppvObject); 541 542 ULONG (STDMETHODCALLTYPE *AddRef)( 543 IDXGIResource *This); 544 545 ULONG (STDMETHODCALLTYPE *Release)( 546 IDXGIResource *This); 547 548 /*** IDXGIObject methods ***/ 549 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 550 IDXGIResource *This, 551 REFGUID guid, 552 UINT data_size, 553 const void *data); 554 555 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 556 IDXGIResource *This, 557 REFGUID guid, 558 const IUnknown *object); 559 560 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 561 IDXGIResource *This, 562 REFGUID guid, 563 UINT *data_size, 564 void *data); 565 566 HRESULT (STDMETHODCALLTYPE *GetParent)( 567 IDXGIResource *This, 568 REFIID riid, 569 void **parent); 570 571 /*** IDXGIDeviceSubObject methods ***/ 572 HRESULT (STDMETHODCALLTYPE *GetDevice)( 573 IDXGIResource *This, 574 REFIID riid, 575 void **device); 576 577 /*** IDXGIResource methods ***/ 578 HRESULT (STDMETHODCALLTYPE *GetSharedHandle)( 579 IDXGIResource *This, 580 HANDLE *pSharedHandle); 581 582 HRESULT (STDMETHODCALLTYPE *GetUsage)( 583 IDXGIResource *This, 584 DXGI_USAGE *pUsage); 585 586 HRESULT (STDMETHODCALLTYPE *SetEvictionPriority)( 587 IDXGIResource *This, 588 UINT EvictionPriority); 589 590 HRESULT (STDMETHODCALLTYPE *GetEvictionPriority)( 591 IDXGIResource *This, 592 UINT *pEvictionPriority); 593 594 END_INTERFACE 595 } IDXGIResourceVtbl; 596 597 interface IDXGIResource { 598 CONST_VTBL IDXGIResourceVtbl* lpVtbl; 599 }; 600 601 #ifdef COBJMACROS 602 #ifndef WIDL_C_INLINE_WRAPPERS 603 /*** IUnknown methods ***/ 604 #define IDXGIResource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 605 #define IDXGIResource_AddRef(This) (This)->lpVtbl->AddRef(This) 606 #define IDXGIResource_Release(This) (This)->lpVtbl->Release(This) 607 /*** IDXGIObject methods ***/ 608 #define IDXGIResource_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 609 #define IDXGIResource_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 610 #define IDXGIResource_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 611 #define IDXGIResource_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 612 /*** IDXGIDeviceSubObject methods ***/ 613 #define IDXGIResource_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device) 614 /*** IDXGIResource methods ***/ 615 #define IDXGIResource_GetSharedHandle(This,pSharedHandle) (This)->lpVtbl->GetSharedHandle(This,pSharedHandle) 616 #define IDXGIResource_GetUsage(This,pUsage) (This)->lpVtbl->GetUsage(This,pUsage) 617 #define IDXGIResource_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority) 618 #define IDXGIResource_GetEvictionPriority(This,pEvictionPriority) (This)->lpVtbl->GetEvictionPriority(This,pEvictionPriority) 619 #else 620 /*** IUnknown methods ***/ 621 static FORCEINLINE HRESULT IDXGIResource_QueryInterface(IDXGIResource* This,REFIID riid,void **ppvObject) { 622 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 623 } 624 static FORCEINLINE ULONG IDXGIResource_AddRef(IDXGIResource* This) { 625 return This->lpVtbl->AddRef(This); 626 } 627 static FORCEINLINE ULONG IDXGIResource_Release(IDXGIResource* This) { 628 return This->lpVtbl->Release(This); 629 } 630 /*** IDXGIObject methods ***/ 631 static FORCEINLINE HRESULT IDXGIResource_SetPrivateData(IDXGIResource* This,REFGUID guid,UINT data_size,const void *data) { 632 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 633 } 634 static FORCEINLINE HRESULT IDXGIResource_SetPrivateDataInterface(IDXGIResource* This,REFGUID guid,const IUnknown *object) { 635 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 636 } 637 static FORCEINLINE HRESULT IDXGIResource_GetPrivateData(IDXGIResource* This,REFGUID guid,UINT *data_size,void *data) { 638 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 639 } 640 static FORCEINLINE HRESULT IDXGIResource_GetParent(IDXGIResource* This,REFIID riid,void **parent) { 641 return This->lpVtbl->GetParent(This,riid,parent); 642 } 643 /*** IDXGIDeviceSubObject methods ***/ 644 static FORCEINLINE HRESULT IDXGIResource_GetDevice(IDXGIResource* This,REFIID riid,void **device) { 645 return This->lpVtbl->GetDevice(This,riid,device); 646 } 647 /*** IDXGIResource methods ***/ 648 static FORCEINLINE HRESULT IDXGIResource_GetSharedHandle(IDXGIResource* This,HANDLE *pSharedHandle) { 649 return This->lpVtbl->GetSharedHandle(This,pSharedHandle); 650 } 651 static FORCEINLINE HRESULT IDXGIResource_GetUsage(IDXGIResource* This,DXGI_USAGE *pUsage) { 652 return This->lpVtbl->GetUsage(This,pUsage); 653 } 654 static FORCEINLINE HRESULT IDXGIResource_SetEvictionPriority(IDXGIResource* This,UINT EvictionPriority) { 655 return This->lpVtbl->SetEvictionPriority(This,EvictionPriority); 656 } 657 static FORCEINLINE HRESULT IDXGIResource_GetEvictionPriority(IDXGIResource* This,UINT *pEvictionPriority) { 658 return This->lpVtbl->GetEvictionPriority(This,pEvictionPriority); 659 } 660 #endif 661 #endif 662 663 #endif 664 665 666 #endif /* __IDXGIResource_INTERFACE_DEFINED__ */ 667 668 /***************************************************************************** 669 * IDXGIKeyedMutex interface 670 */ 671 #ifndef __IDXGIKeyedMutex_INTERFACE_DEFINED__ 672 #define __IDXGIKeyedMutex_INTERFACE_DEFINED__ 673 674 DEFINE_GUID(IID_IDXGIKeyedMutex, 0x9d8e1289, 0xd7b3, 0x465f, 0x81,0x26, 0x25,0x0e,0x34,0x9a,0xf8,0x5d); 675 #if defined(__cplusplus) && !defined(CINTERFACE) 676 MIDL_INTERFACE("9d8e1289-d7b3-465f-8126-250e349af85d") 677 IDXGIKeyedMutex : public IDXGIDeviceSubObject 678 { 679 virtual HRESULT STDMETHODCALLTYPE AcquireSync( 680 UINT64 Key, 681 DWORD dwMilliseconds) = 0; 682 683 virtual HRESULT STDMETHODCALLTYPE ReleaseSync( 684 UINT64 Key) = 0; 685 686 }; 687 #ifdef __CRT_UUID_DECL 688 __CRT_UUID_DECL(IDXGIKeyedMutex, 0x9d8e1289, 0xd7b3, 0x465f, 0x81,0x26, 0x25,0x0e,0x34,0x9a,0xf8,0x5d) 689 #endif 690 #else 691 typedef struct IDXGIKeyedMutexVtbl { 692 BEGIN_INTERFACE 693 694 /*** IUnknown methods ***/ 695 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 696 IDXGIKeyedMutex *This, 697 REFIID riid, 698 void **ppvObject); 699 700 ULONG (STDMETHODCALLTYPE *AddRef)( 701 IDXGIKeyedMutex *This); 702 703 ULONG (STDMETHODCALLTYPE *Release)( 704 IDXGIKeyedMutex *This); 705 706 /*** IDXGIObject methods ***/ 707 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 708 IDXGIKeyedMutex *This, 709 REFGUID guid, 710 UINT data_size, 711 const void *data); 712 713 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 714 IDXGIKeyedMutex *This, 715 REFGUID guid, 716 const IUnknown *object); 717 718 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 719 IDXGIKeyedMutex *This, 720 REFGUID guid, 721 UINT *data_size, 722 void *data); 723 724 HRESULT (STDMETHODCALLTYPE *GetParent)( 725 IDXGIKeyedMutex *This, 726 REFIID riid, 727 void **parent); 728 729 /*** IDXGIDeviceSubObject methods ***/ 730 HRESULT (STDMETHODCALLTYPE *GetDevice)( 731 IDXGIKeyedMutex *This, 732 REFIID riid, 733 void **device); 734 735 /*** IDXGIKeyedMutex methods ***/ 736 HRESULT (STDMETHODCALLTYPE *AcquireSync)( 737 IDXGIKeyedMutex *This, 738 UINT64 Key, 739 DWORD dwMilliseconds); 740 741 HRESULT (STDMETHODCALLTYPE *ReleaseSync)( 742 IDXGIKeyedMutex *This, 743 UINT64 Key); 744 745 END_INTERFACE 746 } IDXGIKeyedMutexVtbl; 747 748 interface IDXGIKeyedMutex { 749 CONST_VTBL IDXGIKeyedMutexVtbl* lpVtbl; 750 }; 751 752 #ifdef COBJMACROS 753 #ifndef WIDL_C_INLINE_WRAPPERS 754 /*** IUnknown methods ***/ 755 #define IDXGIKeyedMutex_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 756 #define IDXGIKeyedMutex_AddRef(This) (This)->lpVtbl->AddRef(This) 757 #define IDXGIKeyedMutex_Release(This) (This)->lpVtbl->Release(This) 758 /*** IDXGIObject methods ***/ 759 #define IDXGIKeyedMutex_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 760 #define IDXGIKeyedMutex_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 761 #define IDXGIKeyedMutex_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 762 #define IDXGIKeyedMutex_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 763 /*** IDXGIDeviceSubObject methods ***/ 764 #define IDXGIKeyedMutex_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device) 765 /*** IDXGIKeyedMutex methods ***/ 766 #define IDXGIKeyedMutex_AcquireSync(This,Key,dwMilliseconds) (This)->lpVtbl->AcquireSync(This,Key,dwMilliseconds) 767 #define IDXGIKeyedMutex_ReleaseSync(This,Key) (This)->lpVtbl->ReleaseSync(This,Key) 768 #else 769 /*** IUnknown methods ***/ 770 static FORCEINLINE HRESULT IDXGIKeyedMutex_QueryInterface(IDXGIKeyedMutex* This,REFIID riid,void **ppvObject) { 771 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 772 } 773 static FORCEINLINE ULONG IDXGIKeyedMutex_AddRef(IDXGIKeyedMutex* This) { 774 return This->lpVtbl->AddRef(This); 775 } 776 static FORCEINLINE ULONG IDXGIKeyedMutex_Release(IDXGIKeyedMutex* This) { 777 return This->lpVtbl->Release(This); 778 } 779 /*** IDXGIObject methods ***/ 780 static FORCEINLINE HRESULT IDXGIKeyedMutex_SetPrivateData(IDXGIKeyedMutex* This,REFGUID guid,UINT data_size,const void *data) { 781 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 782 } 783 static FORCEINLINE HRESULT IDXGIKeyedMutex_SetPrivateDataInterface(IDXGIKeyedMutex* This,REFGUID guid,const IUnknown *object) { 784 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 785 } 786 static FORCEINLINE HRESULT IDXGIKeyedMutex_GetPrivateData(IDXGIKeyedMutex* This,REFGUID guid,UINT *data_size,void *data) { 787 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 788 } 789 static FORCEINLINE HRESULT IDXGIKeyedMutex_GetParent(IDXGIKeyedMutex* This,REFIID riid,void **parent) { 790 return This->lpVtbl->GetParent(This,riid,parent); 791 } 792 /*** IDXGIDeviceSubObject methods ***/ 793 static FORCEINLINE HRESULT IDXGIKeyedMutex_GetDevice(IDXGIKeyedMutex* This,REFIID riid,void **device) { 794 return This->lpVtbl->GetDevice(This,riid,device); 795 } 796 /*** IDXGIKeyedMutex methods ***/ 797 static FORCEINLINE HRESULT IDXGIKeyedMutex_AcquireSync(IDXGIKeyedMutex* This,UINT64 Key,DWORD dwMilliseconds) { 798 return This->lpVtbl->AcquireSync(This,Key,dwMilliseconds); 799 } 800 static FORCEINLINE HRESULT IDXGIKeyedMutex_ReleaseSync(IDXGIKeyedMutex* This,UINT64 Key) { 801 return This->lpVtbl->ReleaseSync(This,Key); 802 } 803 #endif 804 #endif 805 806 #endif 807 808 809 #endif /* __IDXGIKeyedMutex_INTERFACE_DEFINED__ */ 810 811 /***************************************************************************** 812 * IDXGISurface interface 813 */ 814 #ifndef __IDXGISurface_INTERFACE_DEFINED__ 815 #define __IDXGISurface_INTERFACE_DEFINED__ 816 817 DEFINE_GUID(IID_IDXGISurface, 0xcafcb56c, 0x6ac3, 0x4889, 0xbf,0x47, 0x9e,0x23,0xbb,0xd2,0x60,0xec); 818 #if defined(__cplusplus) && !defined(CINTERFACE) 819 MIDL_INTERFACE("cafcb56c-6ac3-4889-bf47-9e23bbd260ec") 820 IDXGISurface : public IDXGIDeviceSubObject 821 { 822 virtual HRESULT STDMETHODCALLTYPE GetDesc( 823 DXGI_SURFACE_DESC *desc) = 0; 824 825 virtual HRESULT STDMETHODCALLTYPE Map( 826 DXGI_MAPPED_RECT *mapped_rect, 827 UINT flags) = 0; 828 829 virtual HRESULT STDMETHODCALLTYPE Unmap( 830 ) = 0; 831 832 }; 833 #ifdef __CRT_UUID_DECL 834 __CRT_UUID_DECL(IDXGISurface, 0xcafcb56c, 0x6ac3, 0x4889, 0xbf,0x47, 0x9e,0x23,0xbb,0xd2,0x60,0xec) 835 #endif 836 #else 837 typedef struct IDXGISurfaceVtbl { 838 BEGIN_INTERFACE 839 840 /*** IUnknown methods ***/ 841 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 842 IDXGISurface *This, 843 REFIID riid, 844 void **ppvObject); 845 846 ULONG (STDMETHODCALLTYPE *AddRef)( 847 IDXGISurface *This); 848 849 ULONG (STDMETHODCALLTYPE *Release)( 850 IDXGISurface *This); 851 852 /*** IDXGIObject methods ***/ 853 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 854 IDXGISurface *This, 855 REFGUID guid, 856 UINT data_size, 857 const void *data); 858 859 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 860 IDXGISurface *This, 861 REFGUID guid, 862 const IUnknown *object); 863 864 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 865 IDXGISurface *This, 866 REFGUID guid, 867 UINT *data_size, 868 void *data); 869 870 HRESULT (STDMETHODCALLTYPE *GetParent)( 871 IDXGISurface *This, 872 REFIID riid, 873 void **parent); 874 875 /*** IDXGIDeviceSubObject methods ***/ 876 HRESULT (STDMETHODCALLTYPE *GetDevice)( 877 IDXGISurface *This, 878 REFIID riid, 879 void **device); 880 881 /*** IDXGISurface methods ***/ 882 HRESULT (STDMETHODCALLTYPE *GetDesc)( 883 IDXGISurface *This, 884 DXGI_SURFACE_DESC *desc); 885 886 HRESULT (STDMETHODCALLTYPE *Map)( 887 IDXGISurface *This, 888 DXGI_MAPPED_RECT *mapped_rect, 889 UINT flags); 890 891 HRESULT (STDMETHODCALLTYPE *Unmap)( 892 IDXGISurface *This); 893 894 END_INTERFACE 895 } IDXGISurfaceVtbl; 896 897 interface IDXGISurface { 898 CONST_VTBL IDXGISurfaceVtbl* lpVtbl; 899 }; 900 901 #ifdef COBJMACROS 902 #ifndef WIDL_C_INLINE_WRAPPERS 903 /*** IUnknown methods ***/ 904 #define IDXGISurface_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 905 #define IDXGISurface_AddRef(This) (This)->lpVtbl->AddRef(This) 906 #define IDXGISurface_Release(This) (This)->lpVtbl->Release(This) 907 /*** IDXGIObject methods ***/ 908 #define IDXGISurface_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 909 #define IDXGISurface_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 910 #define IDXGISurface_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 911 #define IDXGISurface_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 912 /*** IDXGIDeviceSubObject methods ***/ 913 #define IDXGISurface_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device) 914 /*** IDXGISurface methods ***/ 915 #define IDXGISurface_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) 916 #define IDXGISurface_Map(This,mapped_rect,flags) (This)->lpVtbl->Map(This,mapped_rect,flags) 917 #define IDXGISurface_Unmap(This) (This)->lpVtbl->Unmap(This) 918 #else 919 /*** IUnknown methods ***/ 920 static FORCEINLINE HRESULT IDXGISurface_QueryInterface(IDXGISurface* This,REFIID riid,void **ppvObject) { 921 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 922 } 923 static FORCEINLINE ULONG IDXGISurface_AddRef(IDXGISurface* This) { 924 return This->lpVtbl->AddRef(This); 925 } 926 static FORCEINLINE ULONG IDXGISurface_Release(IDXGISurface* This) { 927 return This->lpVtbl->Release(This); 928 } 929 /*** IDXGIObject methods ***/ 930 static FORCEINLINE HRESULT IDXGISurface_SetPrivateData(IDXGISurface* This,REFGUID guid,UINT data_size,const void *data) { 931 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 932 } 933 static FORCEINLINE HRESULT IDXGISurface_SetPrivateDataInterface(IDXGISurface* This,REFGUID guid,const IUnknown *object) { 934 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 935 } 936 static FORCEINLINE HRESULT IDXGISurface_GetPrivateData(IDXGISurface* This,REFGUID guid,UINT *data_size,void *data) { 937 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 938 } 939 static FORCEINLINE HRESULT IDXGISurface_GetParent(IDXGISurface* This,REFIID riid,void **parent) { 940 return This->lpVtbl->GetParent(This,riid,parent); 941 } 942 /*** IDXGIDeviceSubObject methods ***/ 943 static FORCEINLINE HRESULT IDXGISurface_GetDevice(IDXGISurface* This,REFIID riid,void **device) { 944 return This->lpVtbl->GetDevice(This,riid,device); 945 } 946 /*** IDXGISurface methods ***/ 947 static FORCEINLINE HRESULT IDXGISurface_GetDesc(IDXGISurface* This,DXGI_SURFACE_DESC *desc) { 948 return This->lpVtbl->GetDesc(This,desc); 949 } 950 static FORCEINLINE HRESULT IDXGISurface_Map(IDXGISurface* This,DXGI_MAPPED_RECT *mapped_rect,UINT flags) { 951 return This->lpVtbl->Map(This,mapped_rect,flags); 952 } 953 static FORCEINLINE HRESULT IDXGISurface_Unmap(IDXGISurface* This) { 954 return This->lpVtbl->Unmap(This); 955 } 956 #endif 957 #endif 958 959 #endif 960 961 962 #endif /* __IDXGISurface_INTERFACE_DEFINED__ */ 963 964 /***************************************************************************** 965 * IDXGISurface1 interface 966 */ 967 #ifndef __IDXGISurface1_INTERFACE_DEFINED__ 968 #define __IDXGISurface1_INTERFACE_DEFINED__ 969 970 DEFINE_GUID(IID_IDXGISurface1, 0x4ae63092, 0x6327, 0x4c1b, 0x80,0xae, 0xbf,0xe1,0x2e,0xa3,0x2b,0x86); 971 #if defined(__cplusplus) && !defined(CINTERFACE) 972 MIDL_INTERFACE("4ae63092-6327-4c1b-80ae-bfe12ea32b86") 973 IDXGISurface1 : public IDXGISurface 974 { 975 virtual HRESULT STDMETHODCALLTYPE GetDC( 976 WINBOOL discard, 977 HDC *hdc) = 0; 978 979 virtual HRESULT STDMETHODCALLTYPE ReleaseDC( 980 RECT *dirty_rect) = 0; 981 982 }; 983 #ifdef __CRT_UUID_DECL 984 __CRT_UUID_DECL(IDXGISurface1, 0x4ae63092, 0x6327, 0x4c1b, 0x80,0xae, 0xbf,0xe1,0x2e,0xa3,0x2b,0x86) 985 #endif 986 #else 987 typedef struct IDXGISurface1Vtbl { 988 BEGIN_INTERFACE 989 990 /*** IUnknown methods ***/ 991 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 992 IDXGISurface1 *This, 993 REFIID riid, 994 void **ppvObject); 995 996 ULONG (STDMETHODCALLTYPE *AddRef)( 997 IDXGISurface1 *This); 998 999 ULONG (STDMETHODCALLTYPE *Release)( 1000 IDXGISurface1 *This); 1001 1002 /*** IDXGIObject methods ***/ 1003 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 1004 IDXGISurface1 *This, 1005 REFGUID guid, 1006 UINT data_size, 1007 const void *data); 1008 1009 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 1010 IDXGISurface1 *This, 1011 REFGUID guid, 1012 const IUnknown *object); 1013 1014 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 1015 IDXGISurface1 *This, 1016 REFGUID guid, 1017 UINT *data_size, 1018 void *data); 1019 1020 HRESULT (STDMETHODCALLTYPE *GetParent)( 1021 IDXGISurface1 *This, 1022 REFIID riid, 1023 void **parent); 1024 1025 /*** IDXGIDeviceSubObject methods ***/ 1026 HRESULT (STDMETHODCALLTYPE *GetDevice)( 1027 IDXGISurface1 *This, 1028 REFIID riid, 1029 void **device); 1030 1031 /*** IDXGISurface methods ***/ 1032 HRESULT (STDMETHODCALLTYPE *GetDesc)( 1033 IDXGISurface1 *This, 1034 DXGI_SURFACE_DESC *desc); 1035 1036 HRESULT (STDMETHODCALLTYPE *Map)( 1037 IDXGISurface1 *This, 1038 DXGI_MAPPED_RECT *mapped_rect, 1039 UINT flags); 1040 1041 HRESULT (STDMETHODCALLTYPE *Unmap)( 1042 IDXGISurface1 *This); 1043 1044 /*** IDXGISurface1 methods ***/ 1045 HRESULT (STDMETHODCALLTYPE *GetDC)( 1046 IDXGISurface1 *This, 1047 WINBOOL discard, 1048 HDC *hdc); 1049 1050 HRESULT (STDMETHODCALLTYPE *ReleaseDC)( 1051 IDXGISurface1 *This, 1052 RECT *dirty_rect); 1053 1054 END_INTERFACE 1055 } IDXGISurface1Vtbl; 1056 1057 interface IDXGISurface1 { 1058 CONST_VTBL IDXGISurface1Vtbl* lpVtbl; 1059 }; 1060 1061 #ifdef COBJMACROS 1062 #ifndef WIDL_C_INLINE_WRAPPERS 1063 /*** IUnknown methods ***/ 1064 #define IDXGISurface1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 1065 #define IDXGISurface1_AddRef(This) (This)->lpVtbl->AddRef(This) 1066 #define IDXGISurface1_Release(This) (This)->lpVtbl->Release(This) 1067 /*** IDXGIObject methods ***/ 1068 #define IDXGISurface1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 1069 #define IDXGISurface1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 1070 #define IDXGISurface1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 1071 #define IDXGISurface1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 1072 /*** IDXGIDeviceSubObject methods ***/ 1073 #define IDXGISurface1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device) 1074 /*** IDXGISurface methods ***/ 1075 #define IDXGISurface1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) 1076 #define IDXGISurface1_Map(This,mapped_rect,flags) (This)->lpVtbl->Map(This,mapped_rect,flags) 1077 #define IDXGISurface1_Unmap(This) (This)->lpVtbl->Unmap(This) 1078 /*** IDXGISurface1 methods ***/ 1079 #define IDXGISurface1_GetDC(This,discard,hdc) (This)->lpVtbl->GetDC(This,discard,hdc) 1080 #define IDXGISurface1_ReleaseDC(This,dirty_rect) (This)->lpVtbl->ReleaseDC(This,dirty_rect) 1081 #else 1082 /*** IUnknown methods ***/ 1083 static FORCEINLINE HRESULT IDXGISurface1_QueryInterface(IDXGISurface1* This,REFIID riid,void **ppvObject) { 1084 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 1085 } 1086 static FORCEINLINE ULONG IDXGISurface1_AddRef(IDXGISurface1* This) { 1087 return This->lpVtbl->AddRef(This); 1088 } 1089 static FORCEINLINE ULONG IDXGISurface1_Release(IDXGISurface1* This) { 1090 return This->lpVtbl->Release(This); 1091 } 1092 /*** IDXGIObject methods ***/ 1093 static FORCEINLINE HRESULT IDXGISurface1_SetPrivateData(IDXGISurface1* This,REFGUID guid,UINT data_size,const void *data) { 1094 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 1095 } 1096 static FORCEINLINE HRESULT IDXGISurface1_SetPrivateDataInterface(IDXGISurface1* This,REFGUID guid,const IUnknown *object) { 1097 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 1098 } 1099 static FORCEINLINE HRESULT IDXGISurface1_GetPrivateData(IDXGISurface1* This,REFGUID guid,UINT *data_size,void *data) { 1100 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 1101 } 1102 static FORCEINLINE HRESULT IDXGISurface1_GetParent(IDXGISurface1* This,REFIID riid,void **parent) { 1103 return This->lpVtbl->GetParent(This,riid,parent); 1104 } 1105 /*** IDXGIDeviceSubObject methods ***/ 1106 static FORCEINLINE HRESULT IDXGISurface1_GetDevice(IDXGISurface1* This,REFIID riid,void **device) { 1107 return This->lpVtbl->GetDevice(This,riid,device); 1108 } 1109 /*** IDXGISurface methods ***/ 1110 static FORCEINLINE HRESULT IDXGISurface1_GetDesc(IDXGISurface1* This,DXGI_SURFACE_DESC *desc) { 1111 return This->lpVtbl->GetDesc(This,desc); 1112 } 1113 static FORCEINLINE HRESULT IDXGISurface1_Map(IDXGISurface1* This,DXGI_MAPPED_RECT *mapped_rect,UINT flags) { 1114 return This->lpVtbl->Map(This,mapped_rect,flags); 1115 } 1116 static FORCEINLINE HRESULT IDXGISurface1_Unmap(IDXGISurface1* This) { 1117 return This->lpVtbl->Unmap(This); 1118 } 1119 /*** IDXGISurface1 methods ***/ 1120 static FORCEINLINE HRESULT IDXGISurface1_GetDC(IDXGISurface1* This,WINBOOL discard,HDC *hdc) { 1121 return This->lpVtbl->GetDC(This,discard,hdc); 1122 } 1123 static FORCEINLINE HRESULT IDXGISurface1_ReleaseDC(IDXGISurface1* This,RECT *dirty_rect) { 1124 return This->lpVtbl->ReleaseDC(This,dirty_rect); 1125 } 1126 #endif 1127 #endif 1128 1129 #endif 1130 1131 1132 #endif /* __IDXGISurface1_INTERFACE_DEFINED__ */ 1133 1134 /***************************************************************************** 1135 * IDXGIOutput interface 1136 */ 1137 #ifndef __IDXGIOutput_INTERFACE_DEFINED__ 1138 #define __IDXGIOutput_INTERFACE_DEFINED__ 1139 1140 DEFINE_GUID(IID_IDXGIOutput, 0xae02eedb, 0xc735, 0x4690, 0x8d,0x52, 0x5a,0x8d,0xc2,0x02,0x13,0xaa); 1141 #if defined(__cplusplus) && !defined(CINTERFACE) 1142 MIDL_INTERFACE("ae02eedb-c735-4690-8d52-5a8dc20213aa") 1143 IDXGIOutput : public IDXGIObject 1144 { 1145 virtual HRESULT STDMETHODCALLTYPE GetDesc( 1146 DXGI_OUTPUT_DESC *desc) = 0; 1147 1148 virtual HRESULT STDMETHODCALLTYPE GetDisplayModeList( 1149 DXGI_FORMAT format, 1150 UINT flags, 1151 UINT *mode_count, 1152 DXGI_MODE_DESC *desc) = 0; 1153 1154 virtual HRESULT STDMETHODCALLTYPE FindClosestMatchingMode( 1155 const DXGI_MODE_DESC *mode, 1156 DXGI_MODE_DESC *closest_match, 1157 IUnknown *device) = 0; 1158 1159 virtual HRESULT STDMETHODCALLTYPE WaitForVBlank( 1160 ) = 0; 1161 1162 virtual HRESULT STDMETHODCALLTYPE TakeOwnership( 1163 IUnknown *device, 1164 WINBOOL exclusive) = 0; 1165 1166 virtual void STDMETHODCALLTYPE ReleaseOwnership( 1167 ) = 0; 1168 1169 virtual HRESULT STDMETHODCALLTYPE GetGammaControlCapabilities( 1170 DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) = 0; 1171 1172 virtual HRESULT STDMETHODCALLTYPE SetGammaControl( 1173 const DXGI_GAMMA_CONTROL *gamma_control) = 0; 1174 1175 virtual HRESULT STDMETHODCALLTYPE GetGammaControl( 1176 DXGI_GAMMA_CONTROL *gamma_control) = 0; 1177 1178 virtual HRESULT STDMETHODCALLTYPE SetDisplaySurface( 1179 IDXGISurface *surface) = 0; 1180 1181 virtual HRESULT STDMETHODCALLTYPE GetDisplaySurfaceData( 1182 IDXGISurface *surface) = 0; 1183 1184 virtual HRESULT STDMETHODCALLTYPE GetFrameStatistics( 1185 DXGI_FRAME_STATISTICS *stats) = 0; 1186 1187 }; 1188 #ifdef __CRT_UUID_DECL 1189 __CRT_UUID_DECL(IDXGIOutput, 0xae02eedb, 0xc735, 0x4690, 0x8d,0x52, 0x5a,0x8d,0xc2,0x02,0x13,0xaa) 1190 #endif 1191 #else 1192 typedef struct IDXGIOutputVtbl { 1193 BEGIN_INTERFACE 1194 1195 /*** IUnknown methods ***/ 1196 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 1197 IDXGIOutput *This, 1198 REFIID riid, 1199 void **ppvObject); 1200 1201 ULONG (STDMETHODCALLTYPE *AddRef)( 1202 IDXGIOutput *This); 1203 1204 ULONG (STDMETHODCALLTYPE *Release)( 1205 IDXGIOutput *This); 1206 1207 /*** IDXGIObject methods ***/ 1208 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 1209 IDXGIOutput *This, 1210 REFGUID guid, 1211 UINT data_size, 1212 const void *data); 1213 1214 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 1215 IDXGIOutput *This, 1216 REFGUID guid, 1217 const IUnknown *object); 1218 1219 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 1220 IDXGIOutput *This, 1221 REFGUID guid, 1222 UINT *data_size, 1223 void *data); 1224 1225 HRESULT (STDMETHODCALLTYPE *GetParent)( 1226 IDXGIOutput *This, 1227 REFIID riid, 1228 void **parent); 1229 1230 /*** IDXGIOutput methods ***/ 1231 HRESULT (STDMETHODCALLTYPE *GetDesc)( 1232 IDXGIOutput *This, 1233 DXGI_OUTPUT_DESC *desc); 1234 1235 HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)( 1236 IDXGIOutput *This, 1237 DXGI_FORMAT format, 1238 UINT flags, 1239 UINT *mode_count, 1240 DXGI_MODE_DESC *desc); 1241 1242 HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)( 1243 IDXGIOutput *This, 1244 const DXGI_MODE_DESC *mode, 1245 DXGI_MODE_DESC *closest_match, 1246 IUnknown *device); 1247 1248 HRESULT (STDMETHODCALLTYPE *WaitForVBlank)( 1249 IDXGIOutput *This); 1250 1251 HRESULT (STDMETHODCALLTYPE *TakeOwnership)( 1252 IDXGIOutput *This, 1253 IUnknown *device, 1254 WINBOOL exclusive); 1255 1256 void (STDMETHODCALLTYPE *ReleaseOwnership)( 1257 IDXGIOutput *This); 1258 1259 HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)( 1260 IDXGIOutput *This, 1261 DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps); 1262 1263 HRESULT (STDMETHODCALLTYPE *SetGammaControl)( 1264 IDXGIOutput *This, 1265 const DXGI_GAMMA_CONTROL *gamma_control); 1266 1267 HRESULT (STDMETHODCALLTYPE *GetGammaControl)( 1268 IDXGIOutput *This, 1269 DXGI_GAMMA_CONTROL *gamma_control); 1270 1271 HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)( 1272 IDXGIOutput *This, 1273 IDXGISurface *surface); 1274 1275 HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)( 1276 IDXGIOutput *This, 1277 IDXGISurface *surface); 1278 1279 HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)( 1280 IDXGIOutput *This, 1281 DXGI_FRAME_STATISTICS *stats); 1282 1283 END_INTERFACE 1284 } IDXGIOutputVtbl; 1285 1286 interface IDXGIOutput { 1287 CONST_VTBL IDXGIOutputVtbl* lpVtbl; 1288 }; 1289 1290 #ifdef COBJMACROS 1291 #ifndef WIDL_C_INLINE_WRAPPERS 1292 /*** IUnknown methods ***/ 1293 #define IDXGIOutput_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 1294 #define IDXGIOutput_AddRef(This) (This)->lpVtbl->AddRef(This) 1295 #define IDXGIOutput_Release(This) (This)->lpVtbl->Release(This) 1296 /*** IDXGIObject methods ***/ 1297 #define IDXGIOutput_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 1298 #define IDXGIOutput_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 1299 #define IDXGIOutput_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 1300 #define IDXGIOutput_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 1301 /*** IDXGIOutput methods ***/ 1302 #define IDXGIOutput_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) 1303 #define IDXGIOutput_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc) 1304 #define IDXGIOutput_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device) 1305 #define IDXGIOutput_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This) 1306 #define IDXGIOutput_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive) 1307 #define IDXGIOutput_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This) 1308 #define IDXGIOutput_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps) 1309 #define IDXGIOutput_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control) 1310 #define IDXGIOutput_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control) 1311 #define IDXGIOutput_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface) 1312 #define IDXGIOutput_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface) 1313 #define IDXGIOutput_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats) 1314 #else 1315 /*** IUnknown methods ***/ 1316 static FORCEINLINE HRESULT IDXGIOutput_QueryInterface(IDXGIOutput* This,REFIID riid,void **ppvObject) { 1317 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 1318 } 1319 static FORCEINLINE ULONG IDXGIOutput_AddRef(IDXGIOutput* This) { 1320 return This->lpVtbl->AddRef(This); 1321 } 1322 static FORCEINLINE ULONG IDXGIOutput_Release(IDXGIOutput* This) { 1323 return This->lpVtbl->Release(This); 1324 } 1325 /*** IDXGIObject methods ***/ 1326 static FORCEINLINE HRESULT IDXGIOutput_SetPrivateData(IDXGIOutput* This,REFGUID guid,UINT data_size,const void *data) { 1327 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 1328 } 1329 static FORCEINLINE HRESULT IDXGIOutput_SetPrivateDataInterface(IDXGIOutput* This,REFGUID guid,const IUnknown *object) { 1330 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 1331 } 1332 static FORCEINLINE HRESULT IDXGIOutput_GetPrivateData(IDXGIOutput* This,REFGUID guid,UINT *data_size,void *data) { 1333 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 1334 } 1335 static FORCEINLINE HRESULT IDXGIOutput_GetParent(IDXGIOutput* This,REFIID riid,void **parent) { 1336 return This->lpVtbl->GetParent(This,riid,parent); 1337 } 1338 /*** IDXGIOutput methods ***/ 1339 static FORCEINLINE HRESULT IDXGIOutput_GetDesc(IDXGIOutput* This,DXGI_OUTPUT_DESC *desc) { 1340 return This->lpVtbl->GetDesc(This,desc); 1341 } 1342 static FORCEINLINE HRESULT IDXGIOutput_GetDisplayModeList(IDXGIOutput* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) { 1343 return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc); 1344 } 1345 static FORCEINLINE HRESULT IDXGIOutput_FindClosestMatchingMode(IDXGIOutput* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) { 1346 return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device); 1347 } 1348 static FORCEINLINE HRESULT IDXGIOutput_WaitForVBlank(IDXGIOutput* This) { 1349 return This->lpVtbl->WaitForVBlank(This); 1350 } 1351 static FORCEINLINE HRESULT IDXGIOutput_TakeOwnership(IDXGIOutput* This,IUnknown *device,WINBOOL exclusive) { 1352 return This->lpVtbl->TakeOwnership(This,device,exclusive); 1353 } 1354 static FORCEINLINE void IDXGIOutput_ReleaseOwnership(IDXGIOutput* This) { 1355 This->lpVtbl->ReleaseOwnership(This); 1356 } 1357 static FORCEINLINE HRESULT IDXGIOutput_GetGammaControlCapabilities(IDXGIOutput* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) { 1358 return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps); 1359 } 1360 static FORCEINLINE HRESULT IDXGIOutput_SetGammaControl(IDXGIOutput* This,const DXGI_GAMMA_CONTROL *gamma_control) { 1361 return This->lpVtbl->SetGammaControl(This,gamma_control); 1362 } 1363 static FORCEINLINE HRESULT IDXGIOutput_GetGammaControl(IDXGIOutput* This,DXGI_GAMMA_CONTROL *gamma_control) { 1364 return This->lpVtbl->GetGammaControl(This,gamma_control); 1365 } 1366 static FORCEINLINE HRESULT IDXGIOutput_SetDisplaySurface(IDXGIOutput* This,IDXGISurface *surface) { 1367 return This->lpVtbl->SetDisplaySurface(This,surface); 1368 } 1369 static FORCEINLINE HRESULT IDXGIOutput_GetDisplaySurfaceData(IDXGIOutput* This,IDXGISurface *surface) { 1370 return This->lpVtbl->GetDisplaySurfaceData(This,surface); 1371 } 1372 static FORCEINLINE HRESULT IDXGIOutput_GetFrameStatistics(IDXGIOutput* This,DXGI_FRAME_STATISTICS *stats) { 1373 return This->lpVtbl->GetFrameStatistics(This,stats); 1374 } 1375 #endif 1376 #endif 1377 1378 #endif 1379 1380 1381 #endif /* __IDXGIOutput_INTERFACE_DEFINED__ */ 1382 1383 /***************************************************************************** 1384 * IDXGIAdapter interface 1385 */ 1386 #ifndef __IDXGIAdapter_INTERFACE_DEFINED__ 1387 #define __IDXGIAdapter_INTERFACE_DEFINED__ 1388 1389 DEFINE_GUID(IID_IDXGIAdapter, 0x2411e7e1, 0x12ac, 0x4ccf, 0xbd,0x14, 0x97,0x98,0xe8,0x53,0x4d,0xc0); 1390 #if defined(__cplusplus) && !defined(CINTERFACE) 1391 MIDL_INTERFACE("2411e7e1-12ac-4ccf-bd14-9798e8534dc0") 1392 IDXGIAdapter : public IDXGIObject 1393 { 1394 virtual HRESULT STDMETHODCALLTYPE EnumOutputs( 1395 UINT output_idx, 1396 IDXGIOutput **output) = 0; 1397 1398 virtual HRESULT STDMETHODCALLTYPE GetDesc( 1399 DXGI_ADAPTER_DESC *desc) = 0; 1400 1401 virtual HRESULT STDMETHODCALLTYPE CheckInterfaceSupport( 1402 REFGUID guid, 1403 LARGE_INTEGER *umd_version) = 0; 1404 1405 }; 1406 #ifdef __CRT_UUID_DECL 1407 __CRT_UUID_DECL(IDXGIAdapter, 0x2411e7e1, 0x12ac, 0x4ccf, 0xbd,0x14, 0x97,0x98,0xe8,0x53,0x4d,0xc0) 1408 #endif 1409 #else 1410 typedef struct IDXGIAdapterVtbl { 1411 BEGIN_INTERFACE 1412 1413 /*** IUnknown methods ***/ 1414 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 1415 IDXGIAdapter *This, 1416 REFIID riid, 1417 void **ppvObject); 1418 1419 ULONG (STDMETHODCALLTYPE *AddRef)( 1420 IDXGIAdapter *This); 1421 1422 ULONG (STDMETHODCALLTYPE *Release)( 1423 IDXGIAdapter *This); 1424 1425 /*** IDXGIObject methods ***/ 1426 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 1427 IDXGIAdapter *This, 1428 REFGUID guid, 1429 UINT data_size, 1430 const void *data); 1431 1432 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 1433 IDXGIAdapter *This, 1434 REFGUID guid, 1435 const IUnknown *object); 1436 1437 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 1438 IDXGIAdapter *This, 1439 REFGUID guid, 1440 UINT *data_size, 1441 void *data); 1442 1443 HRESULT (STDMETHODCALLTYPE *GetParent)( 1444 IDXGIAdapter *This, 1445 REFIID riid, 1446 void **parent); 1447 1448 /*** IDXGIAdapter methods ***/ 1449 HRESULT (STDMETHODCALLTYPE *EnumOutputs)( 1450 IDXGIAdapter *This, 1451 UINT output_idx, 1452 IDXGIOutput **output); 1453 1454 HRESULT (STDMETHODCALLTYPE *GetDesc)( 1455 IDXGIAdapter *This, 1456 DXGI_ADAPTER_DESC *desc); 1457 1458 HRESULT (STDMETHODCALLTYPE *CheckInterfaceSupport)( 1459 IDXGIAdapter *This, 1460 REFGUID guid, 1461 LARGE_INTEGER *umd_version); 1462 1463 END_INTERFACE 1464 } IDXGIAdapterVtbl; 1465 1466 interface IDXGIAdapter { 1467 CONST_VTBL IDXGIAdapterVtbl* lpVtbl; 1468 }; 1469 1470 #ifdef COBJMACROS 1471 #ifndef WIDL_C_INLINE_WRAPPERS 1472 /*** IUnknown methods ***/ 1473 #define IDXGIAdapter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 1474 #define IDXGIAdapter_AddRef(This) (This)->lpVtbl->AddRef(This) 1475 #define IDXGIAdapter_Release(This) (This)->lpVtbl->Release(This) 1476 /*** IDXGIObject methods ***/ 1477 #define IDXGIAdapter_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 1478 #define IDXGIAdapter_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 1479 #define IDXGIAdapter_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 1480 #define IDXGIAdapter_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 1481 /*** IDXGIAdapter methods ***/ 1482 #define IDXGIAdapter_EnumOutputs(This,output_idx,output) (This)->lpVtbl->EnumOutputs(This,output_idx,output) 1483 #define IDXGIAdapter_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) 1484 #define IDXGIAdapter_CheckInterfaceSupport(This,guid,umd_version) (This)->lpVtbl->CheckInterfaceSupport(This,guid,umd_version) 1485 #else 1486 /*** IUnknown methods ***/ 1487 static FORCEINLINE HRESULT IDXGIAdapter_QueryInterface(IDXGIAdapter* This,REFIID riid,void **ppvObject) { 1488 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 1489 } 1490 static FORCEINLINE ULONG IDXGIAdapter_AddRef(IDXGIAdapter* This) { 1491 return This->lpVtbl->AddRef(This); 1492 } 1493 static FORCEINLINE ULONG IDXGIAdapter_Release(IDXGIAdapter* This) { 1494 return This->lpVtbl->Release(This); 1495 } 1496 /*** IDXGIObject methods ***/ 1497 static FORCEINLINE HRESULT IDXGIAdapter_SetPrivateData(IDXGIAdapter* This,REFGUID guid,UINT data_size,const void *data) { 1498 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 1499 } 1500 static FORCEINLINE HRESULT IDXGIAdapter_SetPrivateDataInterface(IDXGIAdapter* This,REFGUID guid,const IUnknown *object) { 1501 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 1502 } 1503 static FORCEINLINE HRESULT IDXGIAdapter_GetPrivateData(IDXGIAdapter* This,REFGUID guid,UINT *data_size,void *data) { 1504 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 1505 } 1506 static FORCEINLINE HRESULT IDXGIAdapter_GetParent(IDXGIAdapter* This,REFIID riid,void **parent) { 1507 return This->lpVtbl->GetParent(This,riid,parent); 1508 } 1509 /*** IDXGIAdapter methods ***/ 1510 static FORCEINLINE HRESULT IDXGIAdapter_EnumOutputs(IDXGIAdapter* This,UINT output_idx,IDXGIOutput **output) { 1511 return This->lpVtbl->EnumOutputs(This,output_idx,output); 1512 } 1513 static FORCEINLINE HRESULT IDXGIAdapter_GetDesc(IDXGIAdapter* This,DXGI_ADAPTER_DESC *desc) { 1514 return This->lpVtbl->GetDesc(This,desc); 1515 } 1516 static FORCEINLINE HRESULT IDXGIAdapter_CheckInterfaceSupport(IDXGIAdapter* This,REFGUID guid,LARGE_INTEGER *umd_version) { 1517 return This->lpVtbl->CheckInterfaceSupport(This,guid,umd_version); 1518 } 1519 #endif 1520 #endif 1521 1522 #endif 1523 1524 1525 #endif /* __IDXGIAdapter_INTERFACE_DEFINED__ */ 1526 1527 #define DXGI_MAX_SWAP_CHAIN_BUFFERS (16) 1528 #define DXGI_PRESENT_TEST __MSABI_LONG(0x00000001U) 1529 #define DXGI_PRESENT_DO_NOT_SEQUENCE __MSABI_LONG(0x00000002U) 1530 #define DXGI_PRESENT_RESTART __MSABI_LONG(0x00000004U) 1531 #define DXGI_PRESENT_DO_NOT_WAIT __MSABI_LONG(0x00000008U) 1532 #define DXGI_PRESENT_STEREO_PREFER_RIGHT __MSABI_LONG(0x00000010U) 1533 #define DXGI_PRESENT_STEREO_TEMPORARY_MONO __MSABI_LONG(0x00000020U) 1534 #define DXGI_PRESENT_RESTRICT_TO_OUTPUT __MSABI_LONG(0x00000040U) 1535 #define DXGI_PRESENT_USE_DURATION __MSABI_LONG(0x00000100U) 1536 #define DXGI_PRESENT_ALLOW_TEARING __MSABI_LONG(0x00000200U) 1537 /***************************************************************************** 1538 * IDXGISwapChain interface 1539 */ 1540 #ifndef __IDXGISwapChain_INTERFACE_DEFINED__ 1541 #define __IDXGISwapChain_INTERFACE_DEFINED__ 1542 1543 DEFINE_GUID(IID_IDXGISwapChain, 0x310d36a0, 0xd2e7, 0x4c0a, 0xaa,0x04, 0x6a,0x9d,0x23,0xb8,0x88,0x6a); 1544 #if defined(__cplusplus) && !defined(CINTERFACE) 1545 MIDL_INTERFACE("310d36a0-d2e7-4c0a-aa04-6a9d23b8886a") 1546 IDXGISwapChain : public IDXGIDeviceSubObject 1547 { 1548 virtual HRESULT STDMETHODCALLTYPE Present( 1549 UINT sync_interval, 1550 UINT flags) = 0; 1551 1552 virtual HRESULT STDMETHODCALLTYPE GetBuffer( 1553 UINT buffer_idx, 1554 REFIID riid, 1555 void **surface) = 0; 1556 1557 virtual HRESULT STDMETHODCALLTYPE SetFullscreenState( 1558 WINBOOL fullscreen, 1559 IDXGIOutput *target) = 0; 1560 1561 virtual HRESULT STDMETHODCALLTYPE GetFullscreenState( 1562 WINBOOL *fullscreen, 1563 IDXGIOutput **target) = 0; 1564 1565 virtual HRESULT STDMETHODCALLTYPE GetDesc( 1566 DXGI_SWAP_CHAIN_DESC *desc) = 0; 1567 1568 virtual HRESULT STDMETHODCALLTYPE ResizeBuffers( 1569 UINT buffer_count, 1570 UINT width, 1571 UINT height, 1572 DXGI_FORMAT format, 1573 UINT flags) = 0; 1574 1575 virtual HRESULT STDMETHODCALLTYPE ResizeTarget( 1576 const DXGI_MODE_DESC *target_mode_desc) = 0; 1577 1578 virtual HRESULT STDMETHODCALLTYPE GetContainingOutput( 1579 IDXGIOutput **output) = 0; 1580 1581 virtual HRESULT STDMETHODCALLTYPE GetFrameStatistics( 1582 DXGI_FRAME_STATISTICS *stats) = 0; 1583 1584 virtual HRESULT STDMETHODCALLTYPE GetLastPresentCount( 1585 UINT *last_present_count) = 0; 1586 1587 }; 1588 #ifdef __CRT_UUID_DECL 1589 __CRT_UUID_DECL(IDXGISwapChain, 0x310d36a0, 0xd2e7, 0x4c0a, 0xaa,0x04, 0x6a,0x9d,0x23,0xb8,0x88,0x6a) 1590 #endif 1591 #else 1592 typedef struct IDXGISwapChainVtbl { 1593 BEGIN_INTERFACE 1594 1595 /*** IUnknown methods ***/ 1596 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 1597 IDXGISwapChain *This, 1598 REFIID riid, 1599 void **ppvObject); 1600 1601 ULONG (STDMETHODCALLTYPE *AddRef)( 1602 IDXGISwapChain *This); 1603 1604 ULONG (STDMETHODCALLTYPE *Release)( 1605 IDXGISwapChain *This); 1606 1607 /*** IDXGIObject methods ***/ 1608 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 1609 IDXGISwapChain *This, 1610 REFGUID guid, 1611 UINT data_size, 1612 const void *data); 1613 1614 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 1615 IDXGISwapChain *This, 1616 REFGUID guid, 1617 const IUnknown *object); 1618 1619 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 1620 IDXGISwapChain *This, 1621 REFGUID guid, 1622 UINT *data_size, 1623 void *data); 1624 1625 HRESULT (STDMETHODCALLTYPE *GetParent)( 1626 IDXGISwapChain *This, 1627 REFIID riid, 1628 void **parent); 1629 1630 /*** IDXGIDeviceSubObject methods ***/ 1631 HRESULT (STDMETHODCALLTYPE *GetDevice)( 1632 IDXGISwapChain *This, 1633 REFIID riid, 1634 void **device); 1635 1636 /*** IDXGISwapChain methods ***/ 1637 HRESULT (STDMETHODCALLTYPE *Present)( 1638 IDXGISwapChain *This, 1639 UINT sync_interval, 1640 UINT flags); 1641 1642 HRESULT (STDMETHODCALLTYPE *GetBuffer)( 1643 IDXGISwapChain *This, 1644 UINT buffer_idx, 1645 REFIID riid, 1646 void **surface); 1647 1648 HRESULT (STDMETHODCALLTYPE *SetFullscreenState)( 1649 IDXGISwapChain *This, 1650 WINBOOL fullscreen, 1651 IDXGIOutput *target); 1652 1653 HRESULT (STDMETHODCALLTYPE *GetFullscreenState)( 1654 IDXGISwapChain *This, 1655 WINBOOL *fullscreen, 1656 IDXGIOutput **target); 1657 1658 HRESULT (STDMETHODCALLTYPE *GetDesc)( 1659 IDXGISwapChain *This, 1660 DXGI_SWAP_CHAIN_DESC *desc); 1661 1662 HRESULT (STDMETHODCALLTYPE *ResizeBuffers)( 1663 IDXGISwapChain *This, 1664 UINT buffer_count, 1665 UINT width, 1666 UINT height, 1667 DXGI_FORMAT format, 1668 UINT flags); 1669 1670 HRESULT (STDMETHODCALLTYPE *ResizeTarget)( 1671 IDXGISwapChain *This, 1672 const DXGI_MODE_DESC *target_mode_desc); 1673 1674 HRESULT (STDMETHODCALLTYPE *GetContainingOutput)( 1675 IDXGISwapChain *This, 1676 IDXGIOutput **output); 1677 1678 HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)( 1679 IDXGISwapChain *This, 1680 DXGI_FRAME_STATISTICS *stats); 1681 1682 HRESULT (STDMETHODCALLTYPE *GetLastPresentCount)( 1683 IDXGISwapChain *This, 1684 UINT *last_present_count); 1685 1686 END_INTERFACE 1687 } IDXGISwapChainVtbl; 1688 1689 interface IDXGISwapChain { 1690 CONST_VTBL IDXGISwapChainVtbl* lpVtbl; 1691 }; 1692 1693 #ifdef COBJMACROS 1694 #ifndef WIDL_C_INLINE_WRAPPERS 1695 /*** IUnknown methods ***/ 1696 #define IDXGISwapChain_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 1697 #define IDXGISwapChain_AddRef(This) (This)->lpVtbl->AddRef(This) 1698 #define IDXGISwapChain_Release(This) (This)->lpVtbl->Release(This) 1699 /*** IDXGIObject methods ***/ 1700 #define IDXGISwapChain_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 1701 #define IDXGISwapChain_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 1702 #define IDXGISwapChain_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 1703 #define IDXGISwapChain_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 1704 /*** IDXGIDeviceSubObject methods ***/ 1705 #define IDXGISwapChain_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device) 1706 /*** IDXGISwapChain methods ***/ 1707 #define IDXGISwapChain_Present(This,sync_interval,flags) (This)->lpVtbl->Present(This,sync_interval,flags) 1708 #define IDXGISwapChain_GetBuffer(This,buffer_idx,riid,surface) (This)->lpVtbl->GetBuffer(This,buffer_idx,riid,surface) 1709 #define IDXGISwapChain_SetFullscreenState(This,fullscreen,target) (This)->lpVtbl->SetFullscreenState(This,fullscreen,target) 1710 #define IDXGISwapChain_GetFullscreenState(This,fullscreen,target) (This)->lpVtbl->GetFullscreenState(This,fullscreen,target) 1711 #define IDXGISwapChain_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) 1712 #define IDXGISwapChain_ResizeBuffers(This,buffer_count,width,height,format,flags) (This)->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags) 1713 #define IDXGISwapChain_ResizeTarget(This,target_mode_desc) (This)->lpVtbl->ResizeTarget(This,target_mode_desc) 1714 #define IDXGISwapChain_GetContainingOutput(This,output) (This)->lpVtbl->GetContainingOutput(This,output) 1715 #define IDXGISwapChain_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats) 1716 #define IDXGISwapChain_GetLastPresentCount(This,last_present_count) (This)->lpVtbl->GetLastPresentCount(This,last_present_count) 1717 #else 1718 /*** IUnknown methods ***/ 1719 static FORCEINLINE HRESULT IDXGISwapChain_QueryInterface(IDXGISwapChain* This,REFIID riid,void **ppvObject) { 1720 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 1721 } 1722 static FORCEINLINE ULONG IDXGISwapChain_AddRef(IDXGISwapChain* This) { 1723 return This->lpVtbl->AddRef(This); 1724 } 1725 static FORCEINLINE ULONG IDXGISwapChain_Release(IDXGISwapChain* This) { 1726 return This->lpVtbl->Release(This); 1727 } 1728 /*** IDXGIObject methods ***/ 1729 static FORCEINLINE HRESULT IDXGISwapChain_SetPrivateData(IDXGISwapChain* This,REFGUID guid,UINT data_size,const void *data) { 1730 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 1731 } 1732 static FORCEINLINE HRESULT IDXGISwapChain_SetPrivateDataInterface(IDXGISwapChain* This,REFGUID guid,const IUnknown *object) { 1733 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 1734 } 1735 static FORCEINLINE HRESULT IDXGISwapChain_GetPrivateData(IDXGISwapChain* This,REFGUID guid,UINT *data_size,void *data) { 1736 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 1737 } 1738 static FORCEINLINE HRESULT IDXGISwapChain_GetParent(IDXGISwapChain* This,REFIID riid,void **parent) { 1739 return This->lpVtbl->GetParent(This,riid,parent); 1740 } 1741 /*** IDXGIDeviceSubObject methods ***/ 1742 static FORCEINLINE HRESULT IDXGISwapChain_GetDevice(IDXGISwapChain* This,REFIID riid,void **device) { 1743 return This->lpVtbl->GetDevice(This,riid,device); 1744 } 1745 /*** IDXGISwapChain methods ***/ 1746 static FORCEINLINE HRESULT IDXGISwapChain_Present(IDXGISwapChain* This,UINT sync_interval,UINT flags) { 1747 return This->lpVtbl->Present(This,sync_interval,flags); 1748 } 1749 static FORCEINLINE HRESULT IDXGISwapChain_GetBuffer(IDXGISwapChain* This,UINT buffer_idx,REFIID riid,void **surface) { 1750 return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface); 1751 } 1752 static FORCEINLINE HRESULT IDXGISwapChain_SetFullscreenState(IDXGISwapChain* This,WINBOOL fullscreen,IDXGIOutput *target) { 1753 return This->lpVtbl->SetFullscreenState(This,fullscreen,target); 1754 } 1755 static FORCEINLINE HRESULT IDXGISwapChain_GetFullscreenState(IDXGISwapChain* This,WINBOOL *fullscreen,IDXGIOutput **target) { 1756 return This->lpVtbl->GetFullscreenState(This,fullscreen,target); 1757 } 1758 static FORCEINLINE HRESULT IDXGISwapChain_GetDesc(IDXGISwapChain* This,DXGI_SWAP_CHAIN_DESC *desc) { 1759 return This->lpVtbl->GetDesc(This,desc); 1760 } 1761 static FORCEINLINE HRESULT IDXGISwapChain_ResizeBuffers(IDXGISwapChain* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags) { 1762 return This->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags); 1763 } 1764 static FORCEINLINE HRESULT IDXGISwapChain_ResizeTarget(IDXGISwapChain* This,const DXGI_MODE_DESC *target_mode_desc) { 1765 return This->lpVtbl->ResizeTarget(This,target_mode_desc); 1766 } 1767 static FORCEINLINE HRESULT IDXGISwapChain_GetContainingOutput(IDXGISwapChain* This,IDXGIOutput **output) { 1768 return This->lpVtbl->GetContainingOutput(This,output); 1769 } 1770 static FORCEINLINE HRESULT IDXGISwapChain_GetFrameStatistics(IDXGISwapChain* This,DXGI_FRAME_STATISTICS *stats) { 1771 return This->lpVtbl->GetFrameStatistics(This,stats); 1772 } 1773 static FORCEINLINE HRESULT IDXGISwapChain_GetLastPresentCount(IDXGISwapChain* This,UINT *last_present_count) { 1774 return This->lpVtbl->GetLastPresentCount(This,last_present_count); 1775 } 1776 #endif 1777 #endif 1778 1779 #endif 1780 1781 1782 #endif /* __IDXGISwapChain_INTERFACE_DEFINED__ */ 1783 1784 #define DXGI_MWA_NO_WINDOW_CHANGES 0x1 1785 #define DXGI_MWA_NO_ALT_ENTER 0x2 1786 #define DXGI_MWA_NO_PRINT_SCREEN 0x4 1787 #define DXGI_MWA_VALID 0x7 1788 /***************************************************************************** 1789 * IDXGIFactory interface 1790 */ 1791 #ifndef __IDXGIFactory_INTERFACE_DEFINED__ 1792 #define __IDXGIFactory_INTERFACE_DEFINED__ 1793 1794 DEFINE_GUID(IID_IDXGIFactory, 0x7b7166ec, 0x21c7, 0x44ae, 0xb2,0x1a, 0xc9,0xae,0x32,0x1a,0xe3,0x69); 1795 #if defined(__cplusplus) && !defined(CINTERFACE) 1796 MIDL_INTERFACE("7b7166ec-21c7-44ae-b21a-c9ae321ae369") 1797 IDXGIFactory : public IDXGIObject 1798 { 1799 virtual HRESULT STDMETHODCALLTYPE EnumAdapters( 1800 UINT adapter_idx, 1801 IDXGIAdapter **adapter) = 0; 1802 1803 virtual HRESULT STDMETHODCALLTYPE MakeWindowAssociation( 1804 HWND window, 1805 UINT flags) = 0; 1806 1807 virtual HRESULT STDMETHODCALLTYPE GetWindowAssociation( 1808 HWND *window) = 0; 1809 1810 virtual HRESULT STDMETHODCALLTYPE CreateSwapChain( 1811 IUnknown *device, 1812 DXGI_SWAP_CHAIN_DESC *desc, 1813 IDXGISwapChain **swapchain) = 0; 1814 1815 virtual HRESULT STDMETHODCALLTYPE CreateSoftwareAdapter( 1816 HMODULE swrast, 1817 IDXGIAdapter **adapter) = 0; 1818 1819 }; 1820 #ifdef __CRT_UUID_DECL 1821 __CRT_UUID_DECL(IDXGIFactory, 0x7b7166ec, 0x21c7, 0x44ae, 0xb2,0x1a, 0xc9,0xae,0x32,0x1a,0xe3,0x69) 1822 #endif 1823 #else 1824 typedef struct IDXGIFactoryVtbl { 1825 BEGIN_INTERFACE 1826 1827 /*** IUnknown methods ***/ 1828 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 1829 IDXGIFactory *This, 1830 REFIID riid, 1831 void **ppvObject); 1832 1833 ULONG (STDMETHODCALLTYPE *AddRef)( 1834 IDXGIFactory *This); 1835 1836 ULONG (STDMETHODCALLTYPE *Release)( 1837 IDXGIFactory *This); 1838 1839 /*** IDXGIObject methods ***/ 1840 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 1841 IDXGIFactory *This, 1842 REFGUID guid, 1843 UINT data_size, 1844 const void *data); 1845 1846 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 1847 IDXGIFactory *This, 1848 REFGUID guid, 1849 const IUnknown *object); 1850 1851 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 1852 IDXGIFactory *This, 1853 REFGUID guid, 1854 UINT *data_size, 1855 void *data); 1856 1857 HRESULT (STDMETHODCALLTYPE *GetParent)( 1858 IDXGIFactory *This, 1859 REFIID riid, 1860 void **parent); 1861 1862 /*** IDXGIFactory methods ***/ 1863 HRESULT (STDMETHODCALLTYPE *EnumAdapters)( 1864 IDXGIFactory *This, 1865 UINT adapter_idx, 1866 IDXGIAdapter **adapter); 1867 1868 HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)( 1869 IDXGIFactory *This, 1870 HWND window, 1871 UINT flags); 1872 1873 HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)( 1874 IDXGIFactory *This, 1875 HWND *window); 1876 1877 HRESULT (STDMETHODCALLTYPE *CreateSwapChain)( 1878 IDXGIFactory *This, 1879 IUnknown *device, 1880 DXGI_SWAP_CHAIN_DESC *desc, 1881 IDXGISwapChain **swapchain); 1882 1883 HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)( 1884 IDXGIFactory *This, 1885 HMODULE swrast, 1886 IDXGIAdapter **adapter); 1887 1888 END_INTERFACE 1889 } IDXGIFactoryVtbl; 1890 1891 interface IDXGIFactory { 1892 CONST_VTBL IDXGIFactoryVtbl* lpVtbl; 1893 }; 1894 1895 #ifdef COBJMACROS 1896 #ifndef WIDL_C_INLINE_WRAPPERS 1897 /*** IUnknown methods ***/ 1898 #define IDXGIFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 1899 #define IDXGIFactory_AddRef(This) (This)->lpVtbl->AddRef(This) 1900 #define IDXGIFactory_Release(This) (This)->lpVtbl->Release(This) 1901 /*** IDXGIObject methods ***/ 1902 #define IDXGIFactory_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 1903 #define IDXGIFactory_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 1904 #define IDXGIFactory_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 1905 #define IDXGIFactory_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 1906 /*** IDXGIFactory methods ***/ 1907 #define IDXGIFactory_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter) 1908 #define IDXGIFactory_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags) 1909 #define IDXGIFactory_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window) 1910 #define IDXGIFactory_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain) 1911 #define IDXGIFactory_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter) 1912 #else 1913 /*** IUnknown methods ***/ 1914 static FORCEINLINE HRESULT IDXGIFactory_QueryInterface(IDXGIFactory* This,REFIID riid,void **ppvObject) { 1915 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 1916 } 1917 static FORCEINLINE ULONG IDXGIFactory_AddRef(IDXGIFactory* This) { 1918 return This->lpVtbl->AddRef(This); 1919 } 1920 static FORCEINLINE ULONG IDXGIFactory_Release(IDXGIFactory* This) { 1921 return This->lpVtbl->Release(This); 1922 } 1923 /*** IDXGIObject methods ***/ 1924 static FORCEINLINE HRESULT IDXGIFactory_SetPrivateData(IDXGIFactory* This,REFGUID guid,UINT data_size,const void *data) { 1925 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 1926 } 1927 static FORCEINLINE HRESULT IDXGIFactory_SetPrivateDataInterface(IDXGIFactory* This,REFGUID guid,const IUnknown *object) { 1928 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 1929 } 1930 static FORCEINLINE HRESULT IDXGIFactory_GetPrivateData(IDXGIFactory* This,REFGUID guid,UINT *data_size,void *data) { 1931 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 1932 } 1933 static FORCEINLINE HRESULT IDXGIFactory_GetParent(IDXGIFactory* This,REFIID riid,void **parent) { 1934 return This->lpVtbl->GetParent(This,riid,parent); 1935 } 1936 /*** IDXGIFactory methods ***/ 1937 static FORCEINLINE HRESULT IDXGIFactory_EnumAdapters(IDXGIFactory* This,UINT adapter_idx,IDXGIAdapter **adapter) { 1938 return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter); 1939 } 1940 static FORCEINLINE HRESULT IDXGIFactory_MakeWindowAssociation(IDXGIFactory* This,HWND window,UINT flags) { 1941 return This->lpVtbl->MakeWindowAssociation(This,window,flags); 1942 } 1943 static FORCEINLINE HRESULT IDXGIFactory_GetWindowAssociation(IDXGIFactory* This,HWND *window) { 1944 return This->lpVtbl->GetWindowAssociation(This,window); 1945 } 1946 static FORCEINLINE HRESULT IDXGIFactory_CreateSwapChain(IDXGIFactory* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) { 1947 return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain); 1948 } 1949 static FORCEINLINE HRESULT IDXGIFactory_CreateSoftwareAdapter(IDXGIFactory* This,HMODULE swrast,IDXGIAdapter **adapter) { 1950 return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter); 1951 } 1952 #endif 1953 #endif 1954 1955 #endif 1956 1957 1958 #endif /* __IDXGIFactory_INTERFACE_DEFINED__ */ 1959 1960 HRESULT __stdcall CreateDXGIFactory(REFIID riid,void **factory); 1961 1962 HRESULT __stdcall CreateDXGIFactory1(REFIID riid,void **factory); 1963 1964 /***************************************************************************** 1965 * IDXGIDevice interface 1966 */ 1967 #ifndef __IDXGIDevice_INTERFACE_DEFINED__ 1968 #define __IDXGIDevice_INTERFACE_DEFINED__ 1969 1970 DEFINE_GUID(IID_IDXGIDevice, 0x54ec77fa, 0x1377, 0x44e6, 0x8c,0x32, 0x88,0xfd,0x5f,0x44,0xc8,0x4c); 1971 #if defined(__cplusplus) && !defined(CINTERFACE) 1972 MIDL_INTERFACE("54ec77fa-1377-44e6-8c32-88fd5f44c84c") 1973 IDXGIDevice : public IDXGIObject 1974 { 1975 virtual HRESULT STDMETHODCALLTYPE GetAdapter( 1976 IDXGIAdapter **adapter) = 0; 1977 1978 virtual HRESULT STDMETHODCALLTYPE CreateSurface( 1979 const DXGI_SURFACE_DESC *desc, 1980 UINT surface_count, 1981 DXGI_USAGE usage, 1982 const DXGI_SHARED_RESOURCE *shared_resource, 1983 IDXGISurface **surface) = 0; 1984 1985 virtual HRESULT STDMETHODCALLTYPE QueryResourceResidency( 1986 IUnknown *const *resources, 1987 DXGI_RESIDENCY *residency, 1988 UINT resource_count) = 0; 1989 1990 virtual HRESULT STDMETHODCALLTYPE SetGPUThreadPriority( 1991 INT priority) = 0; 1992 1993 virtual HRESULT STDMETHODCALLTYPE GetGPUThreadPriority( 1994 INT *priority) = 0; 1995 1996 }; 1997 #ifdef __CRT_UUID_DECL 1998 __CRT_UUID_DECL(IDXGIDevice, 0x54ec77fa, 0x1377, 0x44e6, 0x8c,0x32, 0x88,0xfd,0x5f,0x44,0xc8,0x4c) 1999 #endif 2000 #else 2001 typedef struct IDXGIDeviceVtbl { 2002 BEGIN_INTERFACE 2003 2004 /*** IUnknown methods ***/ 2005 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 2006 IDXGIDevice *This, 2007 REFIID riid, 2008 void **ppvObject); 2009 2010 ULONG (STDMETHODCALLTYPE *AddRef)( 2011 IDXGIDevice *This); 2012 2013 ULONG (STDMETHODCALLTYPE *Release)( 2014 IDXGIDevice *This); 2015 2016 /*** IDXGIObject methods ***/ 2017 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 2018 IDXGIDevice *This, 2019 REFGUID guid, 2020 UINT data_size, 2021 const void *data); 2022 2023 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 2024 IDXGIDevice *This, 2025 REFGUID guid, 2026 const IUnknown *object); 2027 2028 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 2029 IDXGIDevice *This, 2030 REFGUID guid, 2031 UINT *data_size, 2032 void *data); 2033 2034 HRESULT (STDMETHODCALLTYPE *GetParent)( 2035 IDXGIDevice *This, 2036 REFIID riid, 2037 void **parent); 2038 2039 /*** IDXGIDevice methods ***/ 2040 HRESULT (STDMETHODCALLTYPE *GetAdapter)( 2041 IDXGIDevice *This, 2042 IDXGIAdapter **adapter); 2043 2044 HRESULT (STDMETHODCALLTYPE *CreateSurface)( 2045 IDXGIDevice *This, 2046 const DXGI_SURFACE_DESC *desc, 2047 UINT surface_count, 2048 DXGI_USAGE usage, 2049 const DXGI_SHARED_RESOURCE *shared_resource, 2050 IDXGISurface **surface); 2051 2052 HRESULT (STDMETHODCALLTYPE *QueryResourceResidency)( 2053 IDXGIDevice *This, 2054 IUnknown *const *resources, 2055 DXGI_RESIDENCY *residency, 2056 UINT resource_count); 2057 2058 HRESULT (STDMETHODCALLTYPE *SetGPUThreadPriority)( 2059 IDXGIDevice *This, 2060 INT priority); 2061 2062 HRESULT (STDMETHODCALLTYPE *GetGPUThreadPriority)( 2063 IDXGIDevice *This, 2064 INT *priority); 2065 2066 END_INTERFACE 2067 } IDXGIDeviceVtbl; 2068 2069 interface IDXGIDevice { 2070 CONST_VTBL IDXGIDeviceVtbl* lpVtbl; 2071 }; 2072 2073 #ifdef COBJMACROS 2074 #ifndef WIDL_C_INLINE_WRAPPERS 2075 /*** IUnknown methods ***/ 2076 #define IDXGIDevice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 2077 #define IDXGIDevice_AddRef(This) (This)->lpVtbl->AddRef(This) 2078 #define IDXGIDevice_Release(This) (This)->lpVtbl->Release(This) 2079 /*** IDXGIObject methods ***/ 2080 #define IDXGIDevice_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 2081 #define IDXGIDevice_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 2082 #define IDXGIDevice_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 2083 #define IDXGIDevice_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 2084 /*** IDXGIDevice methods ***/ 2085 #define IDXGIDevice_GetAdapter(This,adapter) (This)->lpVtbl->GetAdapter(This,adapter) 2086 #define IDXGIDevice_CreateSurface(This,desc,surface_count,usage,shared_resource,surface) (This)->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface) 2087 #define IDXGIDevice_QueryResourceResidency(This,resources,residency,resource_count) (This)->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count) 2088 #define IDXGIDevice_SetGPUThreadPriority(This,priority) (This)->lpVtbl->SetGPUThreadPriority(This,priority) 2089 #define IDXGIDevice_GetGPUThreadPriority(This,priority) (This)->lpVtbl->GetGPUThreadPriority(This,priority) 2090 #else 2091 /*** IUnknown methods ***/ 2092 static FORCEINLINE HRESULT IDXGIDevice_QueryInterface(IDXGIDevice* This,REFIID riid,void **ppvObject) { 2093 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 2094 } 2095 static FORCEINLINE ULONG IDXGIDevice_AddRef(IDXGIDevice* This) { 2096 return This->lpVtbl->AddRef(This); 2097 } 2098 static FORCEINLINE ULONG IDXGIDevice_Release(IDXGIDevice* This) { 2099 return This->lpVtbl->Release(This); 2100 } 2101 /*** IDXGIObject methods ***/ 2102 static FORCEINLINE HRESULT IDXGIDevice_SetPrivateData(IDXGIDevice* This,REFGUID guid,UINT data_size,const void *data) { 2103 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 2104 } 2105 static FORCEINLINE HRESULT IDXGIDevice_SetPrivateDataInterface(IDXGIDevice* This,REFGUID guid,const IUnknown *object) { 2106 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 2107 } 2108 static FORCEINLINE HRESULT IDXGIDevice_GetPrivateData(IDXGIDevice* This,REFGUID guid,UINT *data_size,void *data) { 2109 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 2110 } 2111 static FORCEINLINE HRESULT IDXGIDevice_GetParent(IDXGIDevice* This,REFIID riid,void **parent) { 2112 return This->lpVtbl->GetParent(This,riid,parent); 2113 } 2114 /*** IDXGIDevice methods ***/ 2115 static FORCEINLINE HRESULT IDXGIDevice_GetAdapter(IDXGIDevice* This,IDXGIAdapter **adapter) { 2116 return This->lpVtbl->GetAdapter(This,adapter); 2117 } 2118 static FORCEINLINE HRESULT IDXGIDevice_CreateSurface(IDXGIDevice* This,const DXGI_SURFACE_DESC *desc,UINT surface_count,DXGI_USAGE usage,const DXGI_SHARED_RESOURCE *shared_resource,IDXGISurface **surface) { 2119 return This->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface); 2120 } 2121 static FORCEINLINE HRESULT IDXGIDevice_QueryResourceResidency(IDXGIDevice* This,IUnknown *const *resources,DXGI_RESIDENCY *residency,UINT resource_count) { 2122 return This->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count); 2123 } 2124 static FORCEINLINE HRESULT IDXGIDevice_SetGPUThreadPriority(IDXGIDevice* This,INT priority) { 2125 return This->lpVtbl->SetGPUThreadPriority(This,priority); 2126 } 2127 static FORCEINLINE HRESULT IDXGIDevice_GetGPUThreadPriority(IDXGIDevice* This,INT *priority) { 2128 return This->lpVtbl->GetGPUThreadPriority(This,priority); 2129 } 2130 #endif 2131 #endif 2132 2133 #endif 2134 2135 2136 #endif /* __IDXGIDevice_INTERFACE_DEFINED__ */ 2137 2138 typedef enum DXGI_ADAPTER_FLAG { 2139 DXGI_ADAPTER_FLAG_NONE = 0, 2140 DXGI_ADAPTER_FLAG_REMOTE = 1, 2141 DXGI_ADAPTER_FLAG_FORCE_DWORD = 0xffffffff 2142 } DXGI_ADAPTER_FLAG; 2143 typedef struct DXGI_ADAPTER_DESC1 { 2144 WCHAR Description[128]; 2145 UINT VendorId; 2146 UINT DeviceId; 2147 UINT SubSysId; 2148 UINT Revision; 2149 SIZE_T DedicatedVideoMemory; 2150 SIZE_T DedicatedSystemMemory; 2151 SIZE_T SharedSystemMemory; 2152 LUID AdapterLuid; 2153 UINT Flags; 2154 } DXGI_ADAPTER_DESC1; 2155 /***************************************************************************** 2156 * IDXGIAdapter1 interface 2157 */ 2158 #ifndef __IDXGIAdapter1_INTERFACE_DEFINED__ 2159 #define __IDXGIAdapter1_INTERFACE_DEFINED__ 2160 2161 DEFINE_GUID(IID_IDXGIAdapter1, 0x29038f61, 0x3839, 0x4626, 0x91,0xfd, 0x08,0x68,0x79,0x01,0x1a,0x05); 2162 #if defined(__cplusplus) && !defined(CINTERFACE) 2163 MIDL_INTERFACE("29038f61-3839-4626-91fd-086879011a05") 2164 IDXGIAdapter1 : public IDXGIAdapter 2165 { 2166 virtual HRESULT STDMETHODCALLTYPE GetDesc1( 2167 DXGI_ADAPTER_DESC1 *pDesc) = 0; 2168 2169 }; 2170 #ifdef __CRT_UUID_DECL 2171 __CRT_UUID_DECL(IDXGIAdapter1, 0x29038f61, 0x3839, 0x4626, 0x91,0xfd, 0x08,0x68,0x79,0x01,0x1a,0x05) 2172 #endif 2173 #else 2174 typedef struct IDXGIAdapter1Vtbl { 2175 BEGIN_INTERFACE 2176 2177 /*** IUnknown methods ***/ 2178 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 2179 IDXGIAdapter1 *This, 2180 REFIID riid, 2181 void **ppvObject); 2182 2183 ULONG (STDMETHODCALLTYPE *AddRef)( 2184 IDXGIAdapter1 *This); 2185 2186 ULONG (STDMETHODCALLTYPE *Release)( 2187 IDXGIAdapter1 *This); 2188 2189 /*** IDXGIObject methods ***/ 2190 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 2191 IDXGIAdapter1 *This, 2192 REFGUID guid, 2193 UINT data_size, 2194 const void *data); 2195 2196 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 2197 IDXGIAdapter1 *This, 2198 REFGUID guid, 2199 const IUnknown *object); 2200 2201 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 2202 IDXGIAdapter1 *This, 2203 REFGUID guid, 2204 UINT *data_size, 2205 void *data); 2206 2207 HRESULT (STDMETHODCALLTYPE *GetParent)( 2208 IDXGIAdapter1 *This, 2209 REFIID riid, 2210 void **parent); 2211 2212 /*** IDXGIAdapter methods ***/ 2213 HRESULT (STDMETHODCALLTYPE *EnumOutputs)( 2214 IDXGIAdapter1 *This, 2215 UINT output_idx, 2216 IDXGIOutput **output); 2217 2218 HRESULT (STDMETHODCALLTYPE *GetDesc)( 2219 IDXGIAdapter1 *This, 2220 DXGI_ADAPTER_DESC *desc); 2221 2222 HRESULT (STDMETHODCALLTYPE *CheckInterfaceSupport)( 2223 IDXGIAdapter1 *This, 2224 REFGUID guid, 2225 LARGE_INTEGER *umd_version); 2226 2227 /*** IDXGIAdapter1 methods ***/ 2228 HRESULT (STDMETHODCALLTYPE *GetDesc1)( 2229 IDXGIAdapter1 *This, 2230 DXGI_ADAPTER_DESC1 *pDesc); 2231 2232 END_INTERFACE 2233 } IDXGIAdapter1Vtbl; 2234 2235 interface IDXGIAdapter1 { 2236 CONST_VTBL IDXGIAdapter1Vtbl* lpVtbl; 2237 }; 2238 2239 #ifdef COBJMACROS 2240 #ifndef WIDL_C_INLINE_WRAPPERS 2241 /*** IUnknown methods ***/ 2242 #define IDXGIAdapter1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 2243 #define IDXGIAdapter1_AddRef(This) (This)->lpVtbl->AddRef(This) 2244 #define IDXGIAdapter1_Release(This) (This)->lpVtbl->Release(This) 2245 /*** IDXGIObject methods ***/ 2246 #define IDXGIAdapter1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 2247 #define IDXGIAdapter1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 2248 #define IDXGIAdapter1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 2249 #define IDXGIAdapter1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 2250 /*** IDXGIAdapter methods ***/ 2251 #define IDXGIAdapter1_EnumOutputs(This,output_idx,output) (This)->lpVtbl->EnumOutputs(This,output_idx,output) 2252 #define IDXGIAdapter1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) 2253 #define IDXGIAdapter1_CheckInterfaceSupport(This,guid,umd_version) (This)->lpVtbl->CheckInterfaceSupport(This,guid,umd_version) 2254 /*** IDXGIAdapter1 methods ***/ 2255 #define IDXGIAdapter1_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc) 2256 #else 2257 /*** IUnknown methods ***/ 2258 static FORCEINLINE HRESULT IDXGIAdapter1_QueryInterface(IDXGIAdapter1* This,REFIID riid,void **ppvObject) { 2259 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 2260 } 2261 static FORCEINLINE ULONG IDXGIAdapter1_AddRef(IDXGIAdapter1* This) { 2262 return This->lpVtbl->AddRef(This); 2263 } 2264 static FORCEINLINE ULONG IDXGIAdapter1_Release(IDXGIAdapter1* This) { 2265 return This->lpVtbl->Release(This); 2266 } 2267 /*** IDXGIObject methods ***/ 2268 static FORCEINLINE HRESULT IDXGIAdapter1_SetPrivateData(IDXGIAdapter1* This,REFGUID guid,UINT data_size,const void *data) { 2269 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 2270 } 2271 static FORCEINLINE HRESULT IDXGIAdapter1_SetPrivateDataInterface(IDXGIAdapter1* This,REFGUID guid,const IUnknown *object) { 2272 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 2273 } 2274 static FORCEINLINE HRESULT IDXGIAdapter1_GetPrivateData(IDXGIAdapter1* This,REFGUID guid,UINT *data_size,void *data) { 2275 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 2276 } 2277 static FORCEINLINE HRESULT IDXGIAdapter1_GetParent(IDXGIAdapter1* This,REFIID riid,void **parent) { 2278 return This->lpVtbl->GetParent(This,riid,parent); 2279 } 2280 /*** IDXGIAdapter methods ***/ 2281 static FORCEINLINE HRESULT IDXGIAdapter1_EnumOutputs(IDXGIAdapter1* This,UINT output_idx,IDXGIOutput **output) { 2282 return This->lpVtbl->EnumOutputs(This,output_idx,output); 2283 } 2284 static FORCEINLINE HRESULT IDXGIAdapter1_GetDesc(IDXGIAdapter1* This,DXGI_ADAPTER_DESC *desc) { 2285 return This->lpVtbl->GetDesc(This,desc); 2286 } 2287 static FORCEINLINE HRESULT IDXGIAdapter1_CheckInterfaceSupport(IDXGIAdapter1* This,REFGUID guid,LARGE_INTEGER *umd_version) { 2288 return This->lpVtbl->CheckInterfaceSupport(This,guid,umd_version); 2289 } 2290 /*** IDXGIAdapter1 methods ***/ 2291 static FORCEINLINE HRESULT IDXGIAdapter1_GetDesc1(IDXGIAdapter1* This,DXGI_ADAPTER_DESC1 *pDesc) { 2292 return This->lpVtbl->GetDesc1(This,pDesc); 2293 } 2294 #endif 2295 #endif 2296 2297 #endif 2298 2299 2300 #endif /* __IDXGIAdapter1_INTERFACE_DEFINED__ */ 2301 2302 /***************************************************************************** 2303 * IDXGIDevice1 interface 2304 */ 2305 #ifndef __IDXGIDevice1_INTERFACE_DEFINED__ 2306 #define __IDXGIDevice1_INTERFACE_DEFINED__ 2307 2308 DEFINE_GUID(IID_IDXGIDevice1, 0x77db970f, 0x6276, 0x48ba, 0xba,0x28, 0x07,0x01,0x43,0xb4,0x39,0x2c); 2309 #if defined(__cplusplus) && !defined(CINTERFACE) 2310 MIDL_INTERFACE("77db970f-6276-48ba-ba28-070143b4392c") 2311 IDXGIDevice1 : public IDXGIDevice 2312 { 2313 virtual HRESULT STDMETHODCALLTYPE SetMaximumFrameLatency( 2314 UINT MaxLatency) = 0; 2315 2316 virtual HRESULT STDMETHODCALLTYPE GetMaximumFrameLatency( 2317 UINT *pMaxLatency) = 0; 2318 2319 }; 2320 #ifdef __CRT_UUID_DECL 2321 __CRT_UUID_DECL(IDXGIDevice1, 0x77db970f, 0x6276, 0x48ba, 0xba,0x28, 0x07,0x01,0x43,0xb4,0x39,0x2c) 2322 #endif 2323 #else 2324 typedef struct IDXGIDevice1Vtbl { 2325 BEGIN_INTERFACE 2326 2327 /*** IUnknown methods ***/ 2328 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 2329 IDXGIDevice1 *This, 2330 REFIID riid, 2331 void **ppvObject); 2332 2333 ULONG (STDMETHODCALLTYPE *AddRef)( 2334 IDXGIDevice1 *This); 2335 2336 ULONG (STDMETHODCALLTYPE *Release)( 2337 IDXGIDevice1 *This); 2338 2339 /*** IDXGIObject methods ***/ 2340 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 2341 IDXGIDevice1 *This, 2342 REFGUID guid, 2343 UINT data_size, 2344 const void *data); 2345 2346 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 2347 IDXGIDevice1 *This, 2348 REFGUID guid, 2349 const IUnknown *object); 2350 2351 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 2352 IDXGIDevice1 *This, 2353 REFGUID guid, 2354 UINT *data_size, 2355 void *data); 2356 2357 HRESULT (STDMETHODCALLTYPE *GetParent)( 2358 IDXGIDevice1 *This, 2359 REFIID riid, 2360 void **parent); 2361 2362 /*** IDXGIDevice methods ***/ 2363 HRESULT (STDMETHODCALLTYPE *GetAdapter)( 2364 IDXGIDevice1 *This, 2365 IDXGIAdapter **adapter); 2366 2367 HRESULT (STDMETHODCALLTYPE *CreateSurface)( 2368 IDXGIDevice1 *This, 2369 const DXGI_SURFACE_DESC *desc, 2370 UINT surface_count, 2371 DXGI_USAGE usage, 2372 const DXGI_SHARED_RESOURCE *shared_resource, 2373 IDXGISurface **surface); 2374 2375 HRESULT (STDMETHODCALLTYPE *QueryResourceResidency)( 2376 IDXGIDevice1 *This, 2377 IUnknown *const *resources, 2378 DXGI_RESIDENCY *residency, 2379 UINT resource_count); 2380 2381 HRESULT (STDMETHODCALLTYPE *SetGPUThreadPriority)( 2382 IDXGIDevice1 *This, 2383 INT priority); 2384 2385 HRESULT (STDMETHODCALLTYPE *GetGPUThreadPriority)( 2386 IDXGIDevice1 *This, 2387 INT *priority); 2388 2389 /*** IDXGIDevice1 methods ***/ 2390 HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)( 2391 IDXGIDevice1 *This, 2392 UINT MaxLatency); 2393 2394 HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)( 2395 IDXGIDevice1 *This, 2396 UINT *pMaxLatency); 2397 2398 END_INTERFACE 2399 } IDXGIDevice1Vtbl; 2400 2401 interface IDXGIDevice1 { 2402 CONST_VTBL IDXGIDevice1Vtbl* lpVtbl; 2403 }; 2404 2405 #ifdef COBJMACROS 2406 #ifndef WIDL_C_INLINE_WRAPPERS 2407 /*** IUnknown methods ***/ 2408 #define IDXGIDevice1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 2409 #define IDXGIDevice1_AddRef(This) (This)->lpVtbl->AddRef(This) 2410 #define IDXGIDevice1_Release(This) (This)->lpVtbl->Release(This) 2411 /*** IDXGIObject methods ***/ 2412 #define IDXGIDevice1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 2413 #define IDXGIDevice1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 2414 #define IDXGIDevice1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 2415 #define IDXGIDevice1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 2416 /*** IDXGIDevice methods ***/ 2417 #define IDXGIDevice1_GetAdapter(This,adapter) (This)->lpVtbl->GetAdapter(This,adapter) 2418 #define IDXGIDevice1_CreateSurface(This,desc,surface_count,usage,shared_resource,surface) (This)->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface) 2419 #define IDXGIDevice1_QueryResourceResidency(This,resources,residency,resource_count) (This)->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count) 2420 #define IDXGIDevice1_SetGPUThreadPriority(This,priority) (This)->lpVtbl->SetGPUThreadPriority(This,priority) 2421 #define IDXGIDevice1_GetGPUThreadPriority(This,priority) (This)->lpVtbl->GetGPUThreadPriority(This,priority) 2422 /*** IDXGIDevice1 methods ***/ 2423 #define IDXGIDevice1_SetMaximumFrameLatency(This,MaxLatency) (This)->lpVtbl->SetMaximumFrameLatency(This,MaxLatency) 2424 #define IDXGIDevice1_GetMaximumFrameLatency(This,pMaxLatency) (This)->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency) 2425 #else 2426 /*** IUnknown methods ***/ 2427 static FORCEINLINE HRESULT IDXGIDevice1_QueryInterface(IDXGIDevice1* This,REFIID riid,void **ppvObject) { 2428 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 2429 } 2430 static FORCEINLINE ULONG IDXGIDevice1_AddRef(IDXGIDevice1* This) { 2431 return This->lpVtbl->AddRef(This); 2432 } 2433 static FORCEINLINE ULONG IDXGIDevice1_Release(IDXGIDevice1* This) { 2434 return This->lpVtbl->Release(This); 2435 } 2436 /*** IDXGIObject methods ***/ 2437 static FORCEINLINE HRESULT IDXGIDevice1_SetPrivateData(IDXGIDevice1* This,REFGUID guid,UINT data_size,const void *data) { 2438 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 2439 } 2440 static FORCEINLINE HRESULT IDXGIDevice1_SetPrivateDataInterface(IDXGIDevice1* This,REFGUID guid,const IUnknown *object) { 2441 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 2442 } 2443 static FORCEINLINE HRESULT IDXGIDevice1_GetPrivateData(IDXGIDevice1* This,REFGUID guid,UINT *data_size,void *data) { 2444 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 2445 } 2446 static FORCEINLINE HRESULT IDXGIDevice1_GetParent(IDXGIDevice1* This,REFIID riid,void **parent) { 2447 return This->lpVtbl->GetParent(This,riid,parent); 2448 } 2449 /*** IDXGIDevice methods ***/ 2450 static FORCEINLINE HRESULT IDXGIDevice1_GetAdapter(IDXGIDevice1* This,IDXGIAdapter **adapter) { 2451 return This->lpVtbl->GetAdapter(This,adapter); 2452 } 2453 static FORCEINLINE HRESULT IDXGIDevice1_CreateSurface(IDXGIDevice1* This,const DXGI_SURFACE_DESC *desc,UINT surface_count,DXGI_USAGE usage,const DXGI_SHARED_RESOURCE *shared_resource,IDXGISurface **surface) { 2454 return This->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface); 2455 } 2456 static FORCEINLINE HRESULT IDXGIDevice1_QueryResourceResidency(IDXGIDevice1* This,IUnknown *const *resources,DXGI_RESIDENCY *residency,UINT resource_count) { 2457 return This->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count); 2458 } 2459 static FORCEINLINE HRESULT IDXGIDevice1_SetGPUThreadPriority(IDXGIDevice1* This,INT priority) { 2460 return This->lpVtbl->SetGPUThreadPriority(This,priority); 2461 } 2462 static FORCEINLINE HRESULT IDXGIDevice1_GetGPUThreadPriority(IDXGIDevice1* This,INT *priority) { 2463 return This->lpVtbl->GetGPUThreadPriority(This,priority); 2464 } 2465 /*** IDXGIDevice1 methods ***/ 2466 static FORCEINLINE HRESULT IDXGIDevice1_SetMaximumFrameLatency(IDXGIDevice1* This,UINT MaxLatency) { 2467 return This->lpVtbl->SetMaximumFrameLatency(This,MaxLatency); 2468 } 2469 static FORCEINLINE HRESULT IDXGIDevice1_GetMaximumFrameLatency(IDXGIDevice1* This,UINT *pMaxLatency) { 2470 return This->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency); 2471 } 2472 #endif 2473 #endif 2474 2475 #endif 2476 2477 2478 #endif /* __IDXGIDevice1_INTERFACE_DEFINED__ */ 2479 2480 /***************************************************************************** 2481 * IDXGIFactory1 interface 2482 */ 2483 #ifndef __IDXGIFactory1_INTERFACE_DEFINED__ 2484 #define __IDXGIFactory1_INTERFACE_DEFINED__ 2485 2486 DEFINE_GUID(IID_IDXGIFactory1, 0x770aae78, 0xf26f, 0x4dba, 0xa8,0x29, 0x25,0x3c,0x83,0xd1,0xb3,0x87); 2487 #if defined(__cplusplus) && !defined(CINTERFACE) 2488 MIDL_INTERFACE("770aae78-f26f-4dba-a829-253c83d1b387") 2489 IDXGIFactory1 : public IDXGIFactory 2490 { 2491 virtual HRESULT STDMETHODCALLTYPE EnumAdapters1( 2492 UINT Adapter, 2493 IDXGIAdapter1 **ppAdapter) = 0; 2494 2495 virtual WINBOOL STDMETHODCALLTYPE IsCurrent( 2496 ) = 0; 2497 2498 }; 2499 #ifdef __CRT_UUID_DECL 2500 __CRT_UUID_DECL(IDXGIFactory1, 0x770aae78, 0xf26f, 0x4dba, 0xa8,0x29, 0x25,0x3c,0x83,0xd1,0xb3,0x87) 2501 #endif 2502 #else 2503 typedef struct IDXGIFactory1Vtbl { 2504 BEGIN_INTERFACE 2505 2506 /*** IUnknown methods ***/ 2507 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 2508 IDXGIFactory1 *This, 2509 REFIID riid, 2510 void **ppvObject); 2511 2512 ULONG (STDMETHODCALLTYPE *AddRef)( 2513 IDXGIFactory1 *This); 2514 2515 ULONG (STDMETHODCALLTYPE *Release)( 2516 IDXGIFactory1 *This); 2517 2518 /*** IDXGIObject methods ***/ 2519 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 2520 IDXGIFactory1 *This, 2521 REFGUID guid, 2522 UINT data_size, 2523 const void *data); 2524 2525 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 2526 IDXGIFactory1 *This, 2527 REFGUID guid, 2528 const IUnknown *object); 2529 2530 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 2531 IDXGIFactory1 *This, 2532 REFGUID guid, 2533 UINT *data_size, 2534 void *data); 2535 2536 HRESULT (STDMETHODCALLTYPE *GetParent)( 2537 IDXGIFactory1 *This, 2538 REFIID riid, 2539 void **parent); 2540 2541 /*** IDXGIFactory methods ***/ 2542 HRESULT (STDMETHODCALLTYPE *EnumAdapters)( 2543 IDXGIFactory1 *This, 2544 UINT adapter_idx, 2545 IDXGIAdapter **adapter); 2546 2547 HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)( 2548 IDXGIFactory1 *This, 2549 HWND window, 2550 UINT flags); 2551 2552 HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)( 2553 IDXGIFactory1 *This, 2554 HWND *window); 2555 2556 HRESULT (STDMETHODCALLTYPE *CreateSwapChain)( 2557 IDXGIFactory1 *This, 2558 IUnknown *device, 2559 DXGI_SWAP_CHAIN_DESC *desc, 2560 IDXGISwapChain **swapchain); 2561 2562 HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)( 2563 IDXGIFactory1 *This, 2564 HMODULE swrast, 2565 IDXGIAdapter **adapter); 2566 2567 /*** IDXGIFactory1 methods ***/ 2568 HRESULT (STDMETHODCALLTYPE *EnumAdapters1)( 2569 IDXGIFactory1 *This, 2570 UINT Adapter, 2571 IDXGIAdapter1 **ppAdapter); 2572 2573 WINBOOL (STDMETHODCALLTYPE *IsCurrent)( 2574 IDXGIFactory1 *This); 2575 2576 END_INTERFACE 2577 } IDXGIFactory1Vtbl; 2578 2579 interface IDXGIFactory1 { 2580 CONST_VTBL IDXGIFactory1Vtbl* lpVtbl; 2581 }; 2582 2583 #ifdef COBJMACROS 2584 #ifndef WIDL_C_INLINE_WRAPPERS 2585 /*** IUnknown methods ***/ 2586 #define IDXGIFactory1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 2587 #define IDXGIFactory1_AddRef(This) (This)->lpVtbl->AddRef(This) 2588 #define IDXGIFactory1_Release(This) (This)->lpVtbl->Release(This) 2589 /*** IDXGIObject methods ***/ 2590 #define IDXGIFactory1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 2591 #define IDXGIFactory1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 2592 #define IDXGIFactory1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 2593 #define IDXGIFactory1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 2594 /*** IDXGIFactory methods ***/ 2595 #define IDXGIFactory1_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter) 2596 #define IDXGIFactory1_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags) 2597 #define IDXGIFactory1_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window) 2598 #define IDXGIFactory1_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain) 2599 #define IDXGIFactory1_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter) 2600 /*** IDXGIFactory1 methods ***/ 2601 #define IDXGIFactory1_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter) 2602 #define IDXGIFactory1_IsCurrent(This) (This)->lpVtbl->IsCurrent(This) 2603 #else 2604 /*** IUnknown methods ***/ 2605 static FORCEINLINE HRESULT IDXGIFactory1_QueryInterface(IDXGIFactory1* This,REFIID riid,void **ppvObject) { 2606 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 2607 } 2608 static FORCEINLINE ULONG IDXGIFactory1_AddRef(IDXGIFactory1* This) { 2609 return This->lpVtbl->AddRef(This); 2610 } 2611 static FORCEINLINE ULONG IDXGIFactory1_Release(IDXGIFactory1* This) { 2612 return This->lpVtbl->Release(This); 2613 } 2614 /*** IDXGIObject methods ***/ 2615 static FORCEINLINE HRESULT IDXGIFactory1_SetPrivateData(IDXGIFactory1* This,REFGUID guid,UINT data_size,const void *data) { 2616 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 2617 } 2618 static FORCEINLINE HRESULT IDXGIFactory1_SetPrivateDataInterface(IDXGIFactory1* This,REFGUID guid,const IUnknown *object) { 2619 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 2620 } 2621 static FORCEINLINE HRESULT IDXGIFactory1_GetPrivateData(IDXGIFactory1* This,REFGUID guid,UINT *data_size,void *data) { 2622 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 2623 } 2624 static FORCEINLINE HRESULT IDXGIFactory1_GetParent(IDXGIFactory1* This,REFIID riid,void **parent) { 2625 return This->lpVtbl->GetParent(This,riid,parent); 2626 } 2627 /*** IDXGIFactory methods ***/ 2628 static FORCEINLINE HRESULT IDXGIFactory1_EnumAdapters(IDXGIFactory1* This,UINT adapter_idx,IDXGIAdapter **adapter) { 2629 return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter); 2630 } 2631 static FORCEINLINE HRESULT IDXGIFactory1_MakeWindowAssociation(IDXGIFactory1* This,HWND window,UINT flags) { 2632 return This->lpVtbl->MakeWindowAssociation(This,window,flags); 2633 } 2634 static FORCEINLINE HRESULT IDXGIFactory1_GetWindowAssociation(IDXGIFactory1* This,HWND *window) { 2635 return This->lpVtbl->GetWindowAssociation(This,window); 2636 } 2637 static FORCEINLINE HRESULT IDXGIFactory1_CreateSwapChain(IDXGIFactory1* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) { 2638 return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain); 2639 } 2640 static FORCEINLINE HRESULT IDXGIFactory1_CreateSoftwareAdapter(IDXGIFactory1* This,HMODULE swrast,IDXGIAdapter **adapter) { 2641 return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter); 2642 } 2643 /*** IDXGIFactory1 methods ***/ 2644 static FORCEINLINE HRESULT IDXGIFactory1_EnumAdapters1(IDXGIFactory1* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) { 2645 return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter); 2646 } 2647 static FORCEINLINE WINBOOL IDXGIFactory1_IsCurrent(IDXGIFactory1* This) { 2648 return This->lpVtbl->IsCurrent(This); 2649 } 2650 #endif 2651 #endif 2652 2653 #endif 2654 2655 2656 #endif /* __IDXGIFactory1_INTERFACE_DEFINED__ */ 2657 2658 /* Begin additional prototypes for all interfaces */ 2659 2660 2661 /* End additional prototypes */ 2662 2663 #ifdef __cplusplus 2664 } 2665 #endif 2666 2667 #endif /* __dxgi_h__ */ 2668