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