1 /*** Autogenerated by WIDL 3.19 from direct-x/include/dxgi1_2.idl - Do not edit ***/ 2 3 #ifndef __REQUIRED_RPCNDR_H_VERSION__ 4 #define __REQUIRED_RPCNDR_H_VERSION__ 475 5 #endif 6 7 #include <rpc.h> 8 #include <rpcndr.h> 9 10 #ifndef COM_NO_WINDOWS_H 11 #include <windows.h> 12 #include <ole2.h> 13 #endif 14 15 #ifndef __dxgi1_2_h__ 16 #define __dxgi1_2_h__ 17 18 /* Forward declarations */ 19 20 #ifndef __IDXGIOutputDuplication_FWD_DEFINED__ 21 #define __IDXGIOutputDuplication_FWD_DEFINED__ 22 typedef interface IDXGIOutputDuplication IDXGIOutputDuplication; 23 #ifdef __cplusplus 24 interface IDXGIOutputDuplication; 25 #endif /* __cplusplus */ 26 #endif 27 28 #ifndef __IDXGISurface2_FWD_DEFINED__ 29 #define __IDXGISurface2_FWD_DEFINED__ 30 typedef interface IDXGISurface2 IDXGISurface2; 31 #ifdef __cplusplus 32 interface IDXGISurface2; 33 #endif /* __cplusplus */ 34 #endif 35 36 #ifndef __IDXGIResource1_FWD_DEFINED__ 37 #define __IDXGIResource1_FWD_DEFINED__ 38 typedef interface IDXGIResource1 IDXGIResource1; 39 #ifdef __cplusplus 40 interface IDXGIResource1; 41 #endif /* __cplusplus */ 42 #endif 43 44 #ifndef __IDXGIDisplayControl_FWD_DEFINED__ 45 #define __IDXGIDisplayControl_FWD_DEFINED__ 46 typedef interface IDXGIDisplayControl IDXGIDisplayControl; 47 #ifdef __cplusplus 48 interface IDXGIDisplayControl; 49 #endif /* __cplusplus */ 50 #endif 51 52 #ifndef __IDXGIDevice2_FWD_DEFINED__ 53 #define __IDXGIDevice2_FWD_DEFINED__ 54 typedef interface IDXGIDevice2 IDXGIDevice2; 55 #ifdef __cplusplus 56 interface IDXGIDevice2; 57 #endif /* __cplusplus */ 58 #endif 59 60 #ifndef __IDXGISwapChain1_FWD_DEFINED__ 61 #define __IDXGISwapChain1_FWD_DEFINED__ 62 typedef interface IDXGISwapChain1 IDXGISwapChain1; 63 #ifdef __cplusplus 64 interface IDXGISwapChain1; 65 #endif /* __cplusplus */ 66 #endif 67 68 #ifndef __IDXGIFactory2_FWD_DEFINED__ 69 #define __IDXGIFactory2_FWD_DEFINED__ 70 typedef interface IDXGIFactory2 IDXGIFactory2; 71 #ifdef __cplusplus 72 interface IDXGIFactory2; 73 #endif /* __cplusplus */ 74 #endif 75 76 #ifndef __IDXGIAdapter2_FWD_DEFINED__ 77 #define __IDXGIAdapter2_FWD_DEFINED__ 78 typedef interface IDXGIAdapter2 IDXGIAdapter2; 79 #ifdef __cplusplus 80 interface IDXGIAdapter2; 81 #endif /* __cplusplus */ 82 #endif 83 84 #ifndef __IDXGIOutput1_FWD_DEFINED__ 85 #define __IDXGIOutput1_FWD_DEFINED__ 86 typedef interface IDXGIOutput1 IDXGIOutput1; 87 #ifdef __cplusplus 88 interface IDXGIOutput1; 89 #endif /* __cplusplus */ 90 #endif 91 92 /* Headers for imported files */ 93 94 #include <dxgi.h> 95 96 #ifdef __cplusplus 97 extern "C" { 98 #endif 99 100 #define DXGI_ENUM_MODES_STEREO (0x4) 101 102 #define DXGI_ENUM_MODES_DISABLED_STEREO (0x8) 103 104 #define DXGI_SHARED_RESOURCE_READ (0x80000000) 105 106 #define DXGI_SHARED_RESOURCE_WRITE (0x1) 107 108 typedef enum _DXGI_OFFER_RESOURCE_PRIORITY { 109 DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1, 110 DXGI_OFFER_RESOURCE_PRIORITY_NORMAL = 2, 111 DXGI_OFFER_RESOURCE_PRIORITY_HIGH = 3 112 } DXGI_OFFER_RESOURCE_PRIORITY; 113 typedef enum DXGI_ALPHA_MODE { 114 DXGI_ALPHA_MODE_UNSPECIFIED = 0, 115 DXGI_ALPHA_MODE_PREMULTIPLIED = 1, 116 DXGI_ALPHA_MODE_STRAIGHT = 2, 117 DXGI_ALPHA_MODE_IGNORE = 3, 118 DXGI_ALPHA_MODE_FORCE_DWORD = 0xffffffff 119 } DXGI_ALPHA_MODE; 120 typedef struct DXGI_OUTDUPL_MOVE_RECT { 121 POINT SourcePoint; 122 RECT DestinationRect; 123 } DXGI_OUTDUPL_MOVE_RECT; 124 typedef struct DXGI_OUTDUPL_DESC { 125 DXGI_MODE_DESC ModeDesc; 126 DXGI_MODE_ROTATION Rotation; 127 WINBOOL DesktopImageInSystemMemory; 128 } DXGI_OUTDUPL_DESC; 129 typedef struct DXGI_OUTDUPL_POINTER_POSITION { 130 POINT Position; 131 WINBOOL Visible; 132 } DXGI_OUTDUPL_POINTER_POSITION; 133 typedef enum DXGI_OUTDUPL_POINTER_SHAPE_TYPE { 134 DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 0x1, 135 DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x2, 136 DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x4 137 } DXGI_OUTDUPL_POINTER_SHAPE_TYPE; 138 typedef struct DXGI_OUTDUPL_POINTER_SHAPE_INFO { 139 UINT Type; 140 UINT Width; 141 UINT Height; 142 UINT Pitch; 143 POINT HotSpot; 144 } DXGI_OUTDUPL_POINTER_SHAPE_INFO; 145 typedef struct DXGI_OUTDUPL_FRAME_INFO { 146 LARGE_INTEGER LastPresentTime; 147 LARGE_INTEGER LastMouseUpdateTime; 148 UINT AccumulatedFrames; 149 WINBOOL RectsCoalesced; 150 WINBOOL ProtectedContentMaskedOut; 151 DXGI_OUTDUPL_POINTER_POSITION PointerPosition; 152 UINT TotalMetadataBufferSize; 153 UINT PointerShapeBufferSize; 154 } DXGI_OUTDUPL_FRAME_INFO; 155 typedef struct DXGI_MODE_DESC1 { 156 UINT Width; 157 UINT Height; 158 DXGI_RATIONAL RefreshRate; 159 DXGI_FORMAT Format; 160 DXGI_MODE_SCANLINE_ORDER ScanlineOrdering; 161 DXGI_MODE_SCALING Scaling; 162 WINBOOL Stereo; 163 } DXGI_MODE_DESC1; 164 /***************************************************************************** 165 * IDXGIOutputDuplication interface 166 */ 167 #ifndef __IDXGIOutputDuplication_INTERFACE_DEFINED__ 168 #define __IDXGIOutputDuplication_INTERFACE_DEFINED__ 169 170 DEFINE_GUID(IID_IDXGIOutputDuplication, 0x191cfac3, 0xa341, 0x470d, 0xb2,0x6e, 0xa8,0x64,0xf4,0x28,0x31,0x9c); 171 #if defined(__cplusplus) && !defined(CINTERFACE) 172 MIDL_INTERFACE("191cfac3-a341-470d-b26e-a864f428319c") 173 IDXGIOutputDuplication : public IDXGIObject 174 { 175 virtual void STDMETHODCALLTYPE GetDesc( 176 DXGI_OUTDUPL_DESC *desc) = 0; 177 178 virtual HRESULT STDMETHODCALLTYPE AcquireNextFrame( 179 UINT timeout_in_milliseconds, 180 DXGI_OUTDUPL_FRAME_INFO *frame_info, 181 IDXGIResource **desktop_resource) = 0; 182 183 virtual HRESULT STDMETHODCALLTYPE GetFrameDirtyRects( 184 UINT dirty_rects_buffer_size, 185 RECT *dirty_rects_buffer, 186 UINT *dirty_rects_buffer_size_required) = 0; 187 188 virtual HRESULT STDMETHODCALLTYPE GetFrameMoveRects( 189 UINT move_rects_buffer_size, 190 DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer, 191 UINT *move_rects_buffer_size_required) = 0; 192 193 virtual HRESULT STDMETHODCALLTYPE GetFramePointerShape( 194 UINT pointer_shape_buffer_size, 195 void *pointer_shape_buffer, 196 UINT *pointer_shape_buffer_size_required, 197 DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info) = 0; 198 199 virtual HRESULT STDMETHODCALLTYPE MapDesktopSurface( 200 DXGI_MAPPED_RECT *locked_rect) = 0; 201 202 virtual HRESULT STDMETHODCALLTYPE UnMapDesktopSurface( 203 ) = 0; 204 205 virtual HRESULT STDMETHODCALLTYPE ReleaseFrame( 206 ) = 0; 207 208 }; 209 #ifdef __CRT_UUID_DECL 210 __CRT_UUID_DECL(IDXGIOutputDuplication, 0x191cfac3, 0xa341, 0x470d, 0xb2,0x6e, 0xa8,0x64,0xf4,0x28,0x31,0x9c) 211 #endif 212 #else 213 typedef struct IDXGIOutputDuplicationVtbl { 214 BEGIN_INTERFACE 215 216 /*** IUnknown methods ***/ 217 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 218 IDXGIOutputDuplication *This, 219 REFIID riid, 220 void **ppvObject); 221 222 ULONG (STDMETHODCALLTYPE *AddRef)( 223 IDXGIOutputDuplication *This); 224 225 ULONG (STDMETHODCALLTYPE *Release)( 226 IDXGIOutputDuplication *This); 227 228 /*** IDXGIObject methods ***/ 229 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 230 IDXGIOutputDuplication *This, 231 REFGUID guid, 232 UINT data_size, 233 const void *data); 234 235 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 236 IDXGIOutputDuplication *This, 237 REFGUID guid, 238 const IUnknown *object); 239 240 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 241 IDXGIOutputDuplication *This, 242 REFGUID guid, 243 UINT *data_size, 244 void *data); 245 246 HRESULT (STDMETHODCALLTYPE *GetParent)( 247 IDXGIOutputDuplication *This, 248 REFIID riid, 249 void **parent); 250 251 /*** IDXGIOutputDuplication methods ***/ 252 void (STDMETHODCALLTYPE *GetDesc)( 253 IDXGIOutputDuplication *This, 254 DXGI_OUTDUPL_DESC *desc); 255 256 HRESULT (STDMETHODCALLTYPE *AcquireNextFrame)( 257 IDXGIOutputDuplication *This, 258 UINT timeout_in_milliseconds, 259 DXGI_OUTDUPL_FRAME_INFO *frame_info, 260 IDXGIResource **desktop_resource); 261 262 HRESULT (STDMETHODCALLTYPE *GetFrameDirtyRects)( 263 IDXGIOutputDuplication *This, 264 UINT dirty_rects_buffer_size, 265 RECT *dirty_rects_buffer, 266 UINT *dirty_rects_buffer_size_required); 267 268 HRESULT (STDMETHODCALLTYPE *GetFrameMoveRects)( 269 IDXGIOutputDuplication *This, 270 UINT move_rects_buffer_size, 271 DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer, 272 UINT *move_rects_buffer_size_required); 273 274 HRESULT (STDMETHODCALLTYPE *GetFramePointerShape)( 275 IDXGIOutputDuplication *This, 276 UINT pointer_shape_buffer_size, 277 void *pointer_shape_buffer, 278 UINT *pointer_shape_buffer_size_required, 279 DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info); 280 281 HRESULT (STDMETHODCALLTYPE *MapDesktopSurface)( 282 IDXGIOutputDuplication *This, 283 DXGI_MAPPED_RECT *locked_rect); 284 285 HRESULT (STDMETHODCALLTYPE *UnMapDesktopSurface)( 286 IDXGIOutputDuplication *This); 287 288 HRESULT (STDMETHODCALLTYPE *ReleaseFrame)( 289 IDXGIOutputDuplication *This); 290 291 END_INTERFACE 292 } IDXGIOutputDuplicationVtbl; 293 294 interface IDXGIOutputDuplication { 295 CONST_VTBL IDXGIOutputDuplicationVtbl* lpVtbl; 296 }; 297 298 #ifdef COBJMACROS 299 #ifndef WIDL_C_INLINE_WRAPPERS 300 /*** IUnknown methods ***/ 301 #define IDXGIOutputDuplication_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 302 #define IDXGIOutputDuplication_AddRef(This) (This)->lpVtbl->AddRef(This) 303 #define IDXGIOutputDuplication_Release(This) (This)->lpVtbl->Release(This) 304 /*** IDXGIObject methods ***/ 305 #define IDXGIOutputDuplication_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 306 #define IDXGIOutputDuplication_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 307 #define IDXGIOutputDuplication_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 308 #define IDXGIOutputDuplication_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 309 /*** IDXGIOutputDuplication methods ***/ 310 #define IDXGIOutputDuplication_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) 311 #define IDXGIOutputDuplication_AcquireNextFrame(This,timeout_in_milliseconds,frame_info,desktop_resource) (This)->lpVtbl->AcquireNextFrame(This,timeout_in_milliseconds,frame_info,desktop_resource) 312 #define IDXGIOutputDuplication_GetFrameDirtyRects(This,dirty_rects_buffer_size,dirty_rects_buffer,dirty_rects_buffer_size_required) (This)->lpVtbl->GetFrameDirtyRects(This,dirty_rects_buffer_size,dirty_rects_buffer,dirty_rects_buffer_size_required) 313 #define IDXGIOutputDuplication_GetFrameMoveRects(This,move_rects_buffer_size,move_rect_buffer,move_rects_buffer_size_required) (This)->lpVtbl->GetFrameMoveRects(This,move_rects_buffer_size,move_rect_buffer,move_rects_buffer_size_required) 314 #define IDXGIOutputDuplication_GetFramePointerShape(This,pointer_shape_buffer_size,pointer_shape_buffer,pointer_shape_buffer_size_required,pointer_shape_info) (This)->lpVtbl->GetFramePointerShape(This,pointer_shape_buffer_size,pointer_shape_buffer,pointer_shape_buffer_size_required,pointer_shape_info) 315 #define IDXGIOutputDuplication_MapDesktopSurface(This,locked_rect) (This)->lpVtbl->MapDesktopSurface(This,locked_rect) 316 #define IDXGIOutputDuplication_UnMapDesktopSurface(This) (This)->lpVtbl->UnMapDesktopSurface(This) 317 #define IDXGIOutputDuplication_ReleaseFrame(This) (This)->lpVtbl->ReleaseFrame(This) 318 #else 319 /*** IUnknown methods ***/ 320 static FORCEINLINE HRESULT IDXGIOutputDuplication_QueryInterface(IDXGIOutputDuplication* This,REFIID riid,void **ppvObject) { 321 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 322 } 323 static FORCEINLINE ULONG IDXGIOutputDuplication_AddRef(IDXGIOutputDuplication* This) { 324 return This->lpVtbl->AddRef(This); 325 } 326 static FORCEINLINE ULONG IDXGIOutputDuplication_Release(IDXGIOutputDuplication* This) { 327 return This->lpVtbl->Release(This); 328 } 329 /*** IDXGIObject methods ***/ 330 static FORCEINLINE HRESULT IDXGIOutputDuplication_SetPrivateData(IDXGIOutputDuplication* This,REFGUID guid,UINT data_size,const void *data) { 331 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 332 } 333 static FORCEINLINE HRESULT IDXGIOutputDuplication_SetPrivateDataInterface(IDXGIOutputDuplication* This,REFGUID guid,const IUnknown *object) { 334 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 335 } 336 static FORCEINLINE HRESULT IDXGIOutputDuplication_GetPrivateData(IDXGIOutputDuplication* This,REFGUID guid,UINT *data_size,void *data) { 337 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 338 } 339 static FORCEINLINE HRESULT IDXGIOutputDuplication_GetParent(IDXGIOutputDuplication* This,REFIID riid,void **parent) { 340 return This->lpVtbl->GetParent(This,riid,parent); 341 } 342 /*** IDXGIOutputDuplication methods ***/ 343 static FORCEINLINE void IDXGIOutputDuplication_GetDesc(IDXGIOutputDuplication* This,DXGI_OUTDUPL_DESC *desc) { 344 This->lpVtbl->GetDesc(This,desc); 345 } 346 static FORCEINLINE HRESULT IDXGIOutputDuplication_AcquireNextFrame(IDXGIOutputDuplication* This,UINT timeout_in_milliseconds,DXGI_OUTDUPL_FRAME_INFO *frame_info,IDXGIResource **desktop_resource) { 347 return This->lpVtbl->AcquireNextFrame(This,timeout_in_milliseconds,frame_info,desktop_resource); 348 } 349 static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFrameDirtyRects(IDXGIOutputDuplication* This,UINT dirty_rects_buffer_size,RECT *dirty_rects_buffer,UINT *dirty_rects_buffer_size_required) { 350 return This->lpVtbl->GetFrameDirtyRects(This,dirty_rects_buffer_size,dirty_rects_buffer,dirty_rects_buffer_size_required); 351 } 352 static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFrameMoveRects(IDXGIOutputDuplication* This,UINT move_rects_buffer_size,DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,UINT *move_rects_buffer_size_required) { 353 return This->lpVtbl->GetFrameMoveRects(This,move_rects_buffer_size,move_rect_buffer,move_rects_buffer_size_required); 354 } 355 static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFramePointerShape(IDXGIOutputDuplication* This,UINT pointer_shape_buffer_size,void *pointer_shape_buffer,UINT *pointer_shape_buffer_size_required,DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info) { 356 return This->lpVtbl->GetFramePointerShape(This,pointer_shape_buffer_size,pointer_shape_buffer,pointer_shape_buffer_size_required,pointer_shape_info); 357 } 358 static FORCEINLINE HRESULT IDXGIOutputDuplication_MapDesktopSurface(IDXGIOutputDuplication* This,DXGI_MAPPED_RECT *locked_rect) { 359 return This->lpVtbl->MapDesktopSurface(This,locked_rect); 360 } 361 static FORCEINLINE HRESULT IDXGIOutputDuplication_UnMapDesktopSurface(IDXGIOutputDuplication* This) { 362 return This->lpVtbl->UnMapDesktopSurface(This); 363 } 364 static FORCEINLINE HRESULT IDXGIOutputDuplication_ReleaseFrame(IDXGIOutputDuplication* This) { 365 return This->lpVtbl->ReleaseFrame(This); 366 } 367 #endif 368 #endif 369 370 #endif 371 372 373 #endif /* __IDXGIOutputDuplication_INTERFACE_DEFINED__ */ 374 375 /***************************************************************************** 376 * IDXGISurface2 interface 377 */ 378 #ifndef __IDXGISurface2_INTERFACE_DEFINED__ 379 #define __IDXGISurface2_INTERFACE_DEFINED__ 380 381 DEFINE_GUID(IID_IDXGISurface2, 0xaba496dd, 0xb617, 0x4cb8, 0xa8,0x66, 0xbc,0x44,0xd7,0xeb,0x1f,0xa2); 382 #if defined(__cplusplus) && !defined(CINTERFACE) 383 MIDL_INTERFACE("aba496dd-b617-4cb8-a866-bc44d7eb1fa2") 384 IDXGISurface2 : public IDXGISurface1 385 { 386 virtual HRESULT STDMETHODCALLTYPE GetResource( 387 REFIID iid, 388 void **parent_resource, 389 UINT *subresource_idx) = 0; 390 391 }; 392 #ifdef __CRT_UUID_DECL 393 __CRT_UUID_DECL(IDXGISurface2, 0xaba496dd, 0xb617, 0x4cb8, 0xa8,0x66, 0xbc,0x44,0xd7,0xeb,0x1f,0xa2) 394 #endif 395 #else 396 typedef struct IDXGISurface2Vtbl { 397 BEGIN_INTERFACE 398 399 /*** IUnknown methods ***/ 400 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 401 IDXGISurface2 *This, 402 REFIID riid, 403 void **ppvObject); 404 405 ULONG (STDMETHODCALLTYPE *AddRef)( 406 IDXGISurface2 *This); 407 408 ULONG (STDMETHODCALLTYPE *Release)( 409 IDXGISurface2 *This); 410 411 /*** IDXGIObject methods ***/ 412 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 413 IDXGISurface2 *This, 414 REFGUID guid, 415 UINT data_size, 416 const void *data); 417 418 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 419 IDXGISurface2 *This, 420 REFGUID guid, 421 const IUnknown *object); 422 423 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 424 IDXGISurface2 *This, 425 REFGUID guid, 426 UINT *data_size, 427 void *data); 428 429 HRESULT (STDMETHODCALLTYPE *GetParent)( 430 IDXGISurface2 *This, 431 REFIID riid, 432 void **parent); 433 434 /*** IDXGIDeviceSubObject methods ***/ 435 HRESULT (STDMETHODCALLTYPE *GetDevice)( 436 IDXGISurface2 *This, 437 REFIID riid, 438 void **device); 439 440 /*** IDXGISurface methods ***/ 441 HRESULT (STDMETHODCALLTYPE *GetDesc)( 442 IDXGISurface2 *This, 443 DXGI_SURFACE_DESC *desc); 444 445 HRESULT (STDMETHODCALLTYPE *Map)( 446 IDXGISurface2 *This, 447 DXGI_MAPPED_RECT *mapped_rect, 448 UINT flags); 449 450 HRESULT (STDMETHODCALLTYPE *Unmap)( 451 IDXGISurface2 *This); 452 453 /*** IDXGISurface1 methods ***/ 454 HRESULT (STDMETHODCALLTYPE *GetDC)( 455 IDXGISurface2 *This, 456 WINBOOL discard, 457 HDC *hdc); 458 459 HRESULT (STDMETHODCALLTYPE *ReleaseDC)( 460 IDXGISurface2 *This, 461 RECT *dirty_rect); 462 463 /*** IDXGISurface2 methods ***/ 464 HRESULT (STDMETHODCALLTYPE *GetResource)( 465 IDXGISurface2 *This, 466 REFIID iid, 467 void **parent_resource, 468 UINT *subresource_idx); 469 470 END_INTERFACE 471 } IDXGISurface2Vtbl; 472 473 interface IDXGISurface2 { 474 CONST_VTBL IDXGISurface2Vtbl* lpVtbl; 475 }; 476 477 #ifdef COBJMACROS 478 #ifndef WIDL_C_INLINE_WRAPPERS 479 /*** IUnknown methods ***/ 480 #define IDXGISurface2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 481 #define IDXGISurface2_AddRef(This) (This)->lpVtbl->AddRef(This) 482 #define IDXGISurface2_Release(This) (This)->lpVtbl->Release(This) 483 /*** IDXGIObject methods ***/ 484 #define IDXGISurface2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 485 #define IDXGISurface2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 486 #define IDXGISurface2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 487 #define IDXGISurface2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 488 /*** IDXGIDeviceSubObject methods ***/ 489 #define IDXGISurface2_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device) 490 /*** IDXGISurface methods ***/ 491 #define IDXGISurface2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) 492 #define IDXGISurface2_Map(This,mapped_rect,flags) (This)->lpVtbl->Map(This,mapped_rect,flags) 493 #define IDXGISurface2_Unmap(This) (This)->lpVtbl->Unmap(This) 494 /*** IDXGISurface1 methods ***/ 495 #define IDXGISurface2_GetDC(This,discard,hdc) (This)->lpVtbl->GetDC(This,discard,hdc) 496 #define IDXGISurface2_ReleaseDC(This,dirty_rect) (This)->lpVtbl->ReleaseDC(This,dirty_rect) 497 /*** IDXGISurface2 methods ***/ 498 #define IDXGISurface2_GetResource(This,iid,parent_resource,subresource_idx) (This)->lpVtbl->GetResource(This,iid,parent_resource,subresource_idx) 499 #else 500 /*** IUnknown methods ***/ 501 static FORCEINLINE HRESULT IDXGISurface2_QueryInterface(IDXGISurface2* This,REFIID riid,void **ppvObject) { 502 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 503 } 504 static FORCEINLINE ULONG IDXGISurface2_AddRef(IDXGISurface2* This) { 505 return This->lpVtbl->AddRef(This); 506 } 507 static FORCEINLINE ULONG IDXGISurface2_Release(IDXGISurface2* This) { 508 return This->lpVtbl->Release(This); 509 } 510 /*** IDXGIObject methods ***/ 511 static FORCEINLINE HRESULT IDXGISurface2_SetPrivateData(IDXGISurface2* This,REFGUID guid,UINT data_size,const void *data) { 512 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 513 } 514 static FORCEINLINE HRESULT IDXGISurface2_SetPrivateDataInterface(IDXGISurface2* This,REFGUID guid,const IUnknown *object) { 515 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 516 } 517 static FORCEINLINE HRESULT IDXGISurface2_GetPrivateData(IDXGISurface2* This,REFGUID guid,UINT *data_size,void *data) { 518 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 519 } 520 static FORCEINLINE HRESULT IDXGISurface2_GetParent(IDXGISurface2* This,REFIID riid,void **parent) { 521 return This->lpVtbl->GetParent(This,riid,parent); 522 } 523 /*** IDXGIDeviceSubObject methods ***/ 524 static FORCEINLINE HRESULT IDXGISurface2_GetDevice(IDXGISurface2* This,REFIID riid,void **device) { 525 return This->lpVtbl->GetDevice(This,riid,device); 526 } 527 /*** IDXGISurface methods ***/ 528 static FORCEINLINE HRESULT IDXGISurface2_GetDesc(IDXGISurface2* This,DXGI_SURFACE_DESC *desc) { 529 return This->lpVtbl->GetDesc(This,desc); 530 } 531 static FORCEINLINE HRESULT IDXGISurface2_Map(IDXGISurface2* This,DXGI_MAPPED_RECT *mapped_rect,UINT flags) { 532 return This->lpVtbl->Map(This,mapped_rect,flags); 533 } 534 static FORCEINLINE HRESULT IDXGISurface2_Unmap(IDXGISurface2* This) { 535 return This->lpVtbl->Unmap(This); 536 } 537 /*** IDXGISurface1 methods ***/ 538 static FORCEINLINE HRESULT IDXGISurface2_GetDC(IDXGISurface2* This,WINBOOL discard,HDC *hdc) { 539 return This->lpVtbl->GetDC(This,discard,hdc); 540 } 541 static FORCEINLINE HRESULT IDXGISurface2_ReleaseDC(IDXGISurface2* This,RECT *dirty_rect) { 542 return This->lpVtbl->ReleaseDC(This,dirty_rect); 543 } 544 /*** IDXGISurface2 methods ***/ 545 static FORCEINLINE HRESULT IDXGISurface2_GetResource(IDXGISurface2* This,REFIID iid,void **parent_resource,UINT *subresource_idx) { 546 return This->lpVtbl->GetResource(This,iid,parent_resource,subresource_idx); 547 } 548 #endif 549 #endif 550 551 #endif 552 553 554 #endif /* __IDXGISurface2_INTERFACE_DEFINED__ */ 555 556 /***************************************************************************** 557 * IDXGIResource1 interface 558 */ 559 #ifndef __IDXGIResource1_INTERFACE_DEFINED__ 560 #define __IDXGIResource1_INTERFACE_DEFINED__ 561 562 DEFINE_GUID(IID_IDXGIResource1, 0x30961379, 0x4609, 0x4a41, 0x99,0x8e, 0x54,0xfe,0x56,0x7e,0xe0,0xc1); 563 #if defined(__cplusplus) && !defined(CINTERFACE) 564 MIDL_INTERFACE("30961379-4609-4a41-998e-54fe567ee0c1") 565 IDXGIResource1 : public IDXGIResource 566 { 567 virtual HRESULT STDMETHODCALLTYPE CreateSubresourceSurface( 568 UINT index, 569 IDXGISurface2 **surface) = 0; 570 571 virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle( 572 const SECURITY_ATTRIBUTES *attributes, 573 DWORD access, 574 const WCHAR *name, 575 HANDLE *handle) = 0; 576 577 }; 578 #ifdef __CRT_UUID_DECL 579 __CRT_UUID_DECL(IDXGIResource1, 0x30961379, 0x4609, 0x4a41, 0x99,0x8e, 0x54,0xfe,0x56,0x7e,0xe0,0xc1) 580 #endif 581 #else 582 typedef struct IDXGIResource1Vtbl { 583 BEGIN_INTERFACE 584 585 /*** IUnknown methods ***/ 586 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 587 IDXGIResource1 *This, 588 REFIID riid, 589 void **ppvObject); 590 591 ULONG (STDMETHODCALLTYPE *AddRef)( 592 IDXGIResource1 *This); 593 594 ULONG (STDMETHODCALLTYPE *Release)( 595 IDXGIResource1 *This); 596 597 /*** IDXGIObject methods ***/ 598 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 599 IDXGIResource1 *This, 600 REFGUID guid, 601 UINT data_size, 602 const void *data); 603 604 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 605 IDXGIResource1 *This, 606 REFGUID guid, 607 const IUnknown *object); 608 609 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 610 IDXGIResource1 *This, 611 REFGUID guid, 612 UINT *data_size, 613 void *data); 614 615 HRESULT (STDMETHODCALLTYPE *GetParent)( 616 IDXGIResource1 *This, 617 REFIID riid, 618 void **parent); 619 620 /*** IDXGIDeviceSubObject methods ***/ 621 HRESULT (STDMETHODCALLTYPE *GetDevice)( 622 IDXGIResource1 *This, 623 REFIID riid, 624 void **device); 625 626 /*** IDXGIResource methods ***/ 627 HRESULT (STDMETHODCALLTYPE *GetSharedHandle)( 628 IDXGIResource1 *This, 629 HANDLE *pSharedHandle); 630 631 HRESULT (STDMETHODCALLTYPE *GetUsage)( 632 IDXGIResource1 *This, 633 DXGI_USAGE *pUsage); 634 635 HRESULT (STDMETHODCALLTYPE *SetEvictionPriority)( 636 IDXGIResource1 *This, 637 UINT EvictionPriority); 638 639 HRESULT (STDMETHODCALLTYPE *GetEvictionPriority)( 640 IDXGIResource1 *This, 641 UINT *pEvictionPriority); 642 643 /*** IDXGIResource1 methods ***/ 644 HRESULT (STDMETHODCALLTYPE *CreateSubresourceSurface)( 645 IDXGIResource1 *This, 646 UINT index, 647 IDXGISurface2 **surface); 648 649 HRESULT (STDMETHODCALLTYPE *CreateSharedHandle)( 650 IDXGIResource1 *This, 651 const SECURITY_ATTRIBUTES *attributes, 652 DWORD access, 653 const WCHAR *name, 654 HANDLE *handle); 655 656 END_INTERFACE 657 } IDXGIResource1Vtbl; 658 659 interface IDXGIResource1 { 660 CONST_VTBL IDXGIResource1Vtbl* lpVtbl; 661 }; 662 663 #ifdef COBJMACROS 664 #ifndef WIDL_C_INLINE_WRAPPERS 665 /*** IUnknown methods ***/ 666 #define IDXGIResource1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 667 #define IDXGIResource1_AddRef(This) (This)->lpVtbl->AddRef(This) 668 #define IDXGIResource1_Release(This) (This)->lpVtbl->Release(This) 669 /*** IDXGIObject methods ***/ 670 #define IDXGIResource1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 671 #define IDXGIResource1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 672 #define IDXGIResource1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 673 #define IDXGIResource1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 674 /*** IDXGIDeviceSubObject methods ***/ 675 #define IDXGIResource1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device) 676 /*** IDXGIResource methods ***/ 677 #define IDXGIResource1_GetSharedHandle(This,pSharedHandle) (This)->lpVtbl->GetSharedHandle(This,pSharedHandle) 678 #define IDXGIResource1_GetUsage(This,pUsage) (This)->lpVtbl->GetUsage(This,pUsage) 679 #define IDXGIResource1_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority) 680 #define IDXGIResource1_GetEvictionPriority(This,pEvictionPriority) (This)->lpVtbl->GetEvictionPriority(This,pEvictionPriority) 681 /*** IDXGIResource1 methods ***/ 682 #define IDXGIResource1_CreateSubresourceSurface(This,index,surface) (This)->lpVtbl->CreateSubresourceSurface(This,index,surface) 683 #define IDXGIResource1_CreateSharedHandle(This,attributes,access,name,handle) (This)->lpVtbl->CreateSharedHandle(This,attributes,access,name,handle) 684 #else 685 /*** IUnknown methods ***/ 686 static FORCEINLINE HRESULT IDXGIResource1_QueryInterface(IDXGIResource1* This,REFIID riid,void **ppvObject) { 687 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 688 } 689 static FORCEINLINE ULONG IDXGIResource1_AddRef(IDXGIResource1* This) { 690 return This->lpVtbl->AddRef(This); 691 } 692 static FORCEINLINE ULONG IDXGIResource1_Release(IDXGIResource1* This) { 693 return This->lpVtbl->Release(This); 694 } 695 /*** IDXGIObject methods ***/ 696 static FORCEINLINE HRESULT IDXGIResource1_SetPrivateData(IDXGIResource1* This,REFGUID guid,UINT data_size,const void *data) { 697 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 698 } 699 static FORCEINLINE HRESULT IDXGIResource1_SetPrivateDataInterface(IDXGIResource1* This,REFGUID guid,const IUnknown *object) { 700 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 701 } 702 static FORCEINLINE HRESULT IDXGIResource1_GetPrivateData(IDXGIResource1* This,REFGUID guid,UINT *data_size,void *data) { 703 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 704 } 705 static FORCEINLINE HRESULT IDXGIResource1_GetParent(IDXGIResource1* This,REFIID riid,void **parent) { 706 return This->lpVtbl->GetParent(This,riid,parent); 707 } 708 /*** IDXGIDeviceSubObject methods ***/ 709 static FORCEINLINE HRESULT IDXGIResource1_GetDevice(IDXGIResource1* This,REFIID riid,void **device) { 710 return This->lpVtbl->GetDevice(This,riid,device); 711 } 712 /*** IDXGIResource methods ***/ 713 static FORCEINLINE HRESULT IDXGIResource1_GetSharedHandle(IDXGIResource1* This,HANDLE *pSharedHandle) { 714 return This->lpVtbl->GetSharedHandle(This,pSharedHandle); 715 } 716 static FORCEINLINE HRESULT IDXGIResource1_GetUsage(IDXGIResource1* This,DXGI_USAGE *pUsage) { 717 return This->lpVtbl->GetUsage(This,pUsage); 718 } 719 static FORCEINLINE HRESULT IDXGIResource1_SetEvictionPriority(IDXGIResource1* This,UINT EvictionPriority) { 720 return This->lpVtbl->SetEvictionPriority(This,EvictionPriority); 721 } 722 static FORCEINLINE HRESULT IDXGIResource1_GetEvictionPriority(IDXGIResource1* This,UINT *pEvictionPriority) { 723 return This->lpVtbl->GetEvictionPriority(This,pEvictionPriority); 724 } 725 /*** IDXGIResource1 methods ***/ 726 static FORCEINLINE HRESULT IDXGIResource1_CreateSubresourceSurface(IDXGIResource1* This,UINT index,IDXGISurface2 **surface) { 727 return This->lpVtbl->CreateSubresourceSurface(This,index,surface); 728 } 729 static FORCEINLINE HRESULT IDXGIResource1_CreateSharedHandle(IDXGIResource1* This,const SECURITY_ATTRIBUTES *attributes,DWORD access,const WCHAR *name,HANDLE *handle) { 730 return This->lpVtbl->CreateSharedHandle(This,attributes,access,name,handle); 731 } 732 #endif 733 #endif 734 735 #endif 736 737 738 #endif /* __IDXGIResource1_INTERFACE_DEFINED__ */ 739 740 /***************************************************************************** 741 * IDXGIDisplayControl interface 742 */ 743 #ifndef __IDXGIDisplayControl_INTERFACE_DEFINED__ 744 #define __IDXGIDisplayControl_INTERFACE_DEFINED__ 745 746 DEFINE_GUID(IID_IDXGIDisplayControl, 0xea9dbf1a, 0xc88e, 0x4486, 0x85,0x4a, 0x98,0xaa,0x01,0x38,0xf3,0x0c); 747 #if defined(__cplusplus) && !defined(CINTERFACE) 748 MIDL_INTERFACE("ea9dbf1a-c88e-4486-854a-98aa0138f30c") 749 IDXGIDisplayControl : public IUnknown 750 { 751 virtual WINBOOL STDMETHODCALLTYPE IsStereoEnabled( 752 ) = 0; 753 754 virtual void STDMETHODCALLTYPE SetStereoEnabled( 755 WINBOOL enabled) = 0; 756 757 }; 758 #ifdef __CRT_UUID_DECL 759 __CRT_UUID_DECL(IDXGIDisplayControl, 0xea9dbf1a, 0xc88e, 0x4486, 0x85,0x4a, 0x98,0xaa,0x01,0x38,0xf3,0x0c) 760 #endif 761 #else 762 typedef struct IDXGIDisplayControlVtbl { 763 BEGIN_INTERFACE 764 765 /*** IUnknown methods ***/ 766 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 767 IDXGIDisplayControl *This, 768 REFIID riid, 769 void **ppvObject); 770 771 ULONG (STDMETHODCALLTYPE *AddRef)( 772 IDXGIDisplayControl *This); 773 774 ULONG (STDMETHODCALLTYPE *Release)( 775 IDXGIDisplayControl *This); 776 777 /*** IDXGIDisplayControl methods ***/ 778 WINBOOL (STDMETHODCALLTYPE *IsStereoEnabled)( 779 IDXGIDisplayControl *This); 780 781 void (STDMETHODCALLTYPE *SetStereoEnabled)( 782 IDXGIDisplayControl *This, 783 WINBOOL enabled); 784 785 END_INTERFACE 786 } IDXGIDisplayControlVtbl; 787 788 interface IDXGIDisplayControl { 789 CONST_VTBL IDXGIDisplayControlVtbl* lpVtbl; 790 }; 791 792 #ifdef COBJMACROS 793 #ifndef WIDL_C_INLINE_WRAPPERS 794 /*** IUnknown methods ***/ 795 #define IDXGIDisplayControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 796 #define IDXGIDisplayControl_AddRef(This) (This)->lpVtbl->AddRef(This) 797 #define IDXGIDisplayControl_Release(This) (This)->lpVtbl->Release(This) 798 /*** IDXGIDisplayControl methods ***/ 799 #define IDXGIDisplayControl_IsStereoEnabled(This) (This)->lpVtbl->IsStereoEnabled(This) 800 #define IDXGIDisplayControl_SetStereoEnabled(This,enabled) (This)->lpVtbl->SetStereoEnabled(This,enabled) 801 #else 802 /*** IUnknown methods ***/ 803 static FORCEINLINE HRESULT IDXGIDisplayControl_QueryInterface(IDXGIDisplayControl* This,REFIID riid,void **ppvObject) { 804 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 805 } 806 static FORCEINLINE ULONG IDXGIDisplayControl_AddRef(IDXGIDisplayControl* This) { 807 return This->lpVtbl->AddRef(This); 808 } 809 static FORCEINLINE ULONG IDXGIDisplayControl_Release(IDXGIDisplayControl* This) { 810 return This->lpVtbl->Release(This); 811 } 812 /*** IDXGIDisplayControl methods ***/ 813 static FORCEINLINE WINBOOL IDXGIDisplayControl_IsStereoEnabled(IDXGIDisplayControl* This) { 814 return This->lpVtbl->IsStereoEnabled(This); 815 } 816 static FORCEINLINE void IDXGIDisplayControl_SetStereoEnabled(IDXGIDisplayControl* This,WINBOOL enabled) { 817 This->lpVtbl->SetStereoEnabled(This,enabled); 818 } 819 #endif 820 #endif 821 822 #endif 823 824 825 #endif /* __IDXGIDisplayControl_INTERFACE_DEFINED__ */ 826 827 /***************************************************************************** 828 * IDXGIDevice2 interface 829 */ 830 #ifndef __IDXGIDevice2_INTERFACE_DEFINED__ 831 #define __IDXGIDevice2_INTERFACE_DEFINED__ 832 833 DEFINE_GUID(IID_IDXGIDevice2, 0x05008617, 0xfbfd, 0x4051, 0xa7,0x90, 0x14,0x48,0x84,0xb4,0xf6,0xa9); 834 #if defined(__cplusplus) && !defined(CINTERFACE) 835 MIDL_INTERFACE("05008617-fbfd-4051-a790-144884b4f6a9") 836 IDXGIDevice2 : public IDXGIDevice1 837 { 838 virtual HRESULT STDMETHODCALLTYPE OfferResources( 839 UINT NumResources, 840 IDXGIResource *const *ppResources, 841 DXGI_OFFER_RESOURCE_PRIORITY Priority) = 0; 842 843 virtual HRESULT STDMETHODCALLTYPE ReclaimResources( 844 UINT NumResources, 845 IDXGIResource *const *ppResources, 846 WINBOOL *pDiscarded) = 0; 847 848 virtual HRESULT STDMETHODCALLTYPE EnqueueSetEvent( 849 HANDLE hEvent) = 0; 850 851 }; 852 #ifdef __CRT_UUID_DECL 853 __CRT_UUID_DECL(IDXGIDevice2, 0x05008617, 0xfbfd, 0x4051, 0xa7,0x90, 0x14,0x48,0x84,0xb4,0xf6,0xa9) 854 #endif 855 #else 856 typedef struct IDXGIDevice2Vtbl { 857 BEGIN_INTERFACE 858 859 /*** IUnknown methods ***/ 860 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 861 IDXGIDevice2 *This, 862 REFIID riid, 863 void **ppvObject); 864 865 ULONG (STDMETHODCALLTYPE *AddRef)( 866 IDXGIDevice2 *This); 867 868 ULONG (STDMETHODCALLTYPE *Release)( 869 IDXGIDevice2 *This); 870 871 /*** IDXGIObject methods ***/ 872 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 873 IDXGIDevice2 *This, 874 REFGUID guid, 875 UINT data_size, 876 const void *data); 877 878 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 879 IDXGIDevice2 *This, 880 REFGUID guid, 881 const IUnknown *object); 882 883 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 884 IDXGIDevice2 *This, 885 REFGUID guid, 886 UINT *data_size, 887 void *data); 888 889 HRESULT (STDMETHODCALLTYPE *GetParent)( 890 IDXGIDevice2 *This, 891 REFIID riid, 892 void **parent); 893 894 /*** IDXGIDevice methods ***/ 895 HRESULT (STDMETHODCALLTYPE *GetAdapter)( 896 IDXGIDevice2 *This, 897 IDXGIAdapter **adapter); 898 899 HRESULT (STDMETHODCALLTYPE *CreateSurface)( 900 IDXGIDevice2 *This, 901 const DXGI_SURFACE_DESC *desc, 902 UINT surface_count, 903 DXGI_USAGE usage, 904 const DXGI_SHARED_RESOURCE *shared_resource, 905 IDXGISurface **surface); 906 907 HRESULT (STDMETHODCALLTYPE *QueryResourceResidency)( 908 IDXGIDevice2 *This, 909 IUnknown *const *resources, 910 DXGI_RESIDENCY *residency, 911 UINT resource_count); 912 913 HRESULT (STDMETHODCALLTYPE *SetGPUThreadPriority)( 914 IDXGIDevice2 *This, 915 INT priority); 916 917 HRESULT (STDMETHODCALLTYPE *GetGPUThreadPriority)( 918 IDXGIDevice2 *This, 919 INT *priority); 920 921 /*** IDXGIDevice1 methods ***/ 922 HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)( 923 IDXGIDevice2 *This, 924 UINT MaxLatency); 925 926 HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)( 927 IDXGIDevice2 *This, 928 UINT *pMaxLatency); 929 930 /*** IDXGIDevice2 methods ***/ 931 HRESULT (STDMETHODCALLTYPE *OfferResources)( 932 IDXGIDevice2 *This, 933 UINT NumResources, 934 IDXGIResource *const *ppResources, 935 DXGI_OFFER_RESOURCE_PRIORITY Priority); 936 937 HRESULT (STDMETHODCALLTYPE *ReclaimResources)( 938 IDXGIDevice2 *This, 939 UINT NumResources, 940 IDXGIResource *const *ppResources, 941 WINBOOL *pDiscarded); 942 943 HRESULT (STDMETHODCALLTYPE *EnqueueSetEvent)( 944 IDXGIDevice2 *This, 945 HANDLE hEvent); 946 947 END_INTERFACE 948 } IDXGIDevice2Vtbl; 949 950 interface IDXGIDevice2 { 951 CONST_VTBL IDXGIDevice2Vtbl* lpVtbl; 952 }; 953 954 #ifdef COBJMACROS 955 #ifndef WIDL_C_INLINE_WRAPPERS 956 /*** IUnknown methods ***/ 957 #define IDXGIDevice2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 958 #define IDXGIDevice2_AddRef(This) (This)->lpVtbl->AddRef(This) 959 #define IDXGIDevice2_Release(This) (This)->lpVtbl->Release(This) 960 /*** IDXGIObject methods ***/ 961 #define IDXGIDevice2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 962 #define IDXGIDevice2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 963 #define IDXGIDevice2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 964 #define IDXGIDevice2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 965 /*** IDXGIDevice methods ***/ 966 #define IDXGIDevice2_GetAdapter(This,adapter) (This)->lpVtbl->GetAdapter(This,adapter) 967 #define IDXGIDevice2_CreateSurface(This,desc,surface_count,usage,shared_resource,surface) (This)->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface) 968 #define IDXGIDevice2_QueryResourceResidency(This,resources,residency,resource_count) (This)->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count) 969 #define IDXGIDevice2_SetGPUThreadPriority(This,priority) (This)->lpVtbl->SetGPUThreadPriority(This,priority) 970 #define IDXGIDevice2_GetGPUThreadPriority(This,priority) (This)->lpVtbl->GetGPUThreadPriority(This,priority) 971 /*** IDXGIDevice1 methods ***/ 972 #define IDXGIDevice2_SetMaximumFrameLatency(This,MaxLatency) (This)->lpVtbl->SetMaximumFrameLatency(This,MaxLatency) 973 #define IDXGIDevice2_GetMaximumFrameLatency(This,pMaxLatency) (This)->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency) 974 /*** IDXGIDevice2 methods ***/ 975 #define IDXGIDevice2_OfferResources(This,NumResources,ppResources,Priority) (This)->lpVtbl->OfferResources(This,NumResources,ppResources,Priority) 976 #define IDXGIDevice2_ReclaimResources(This,NumResources,ppResources,pDiscarded) (This)->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded) 977 #define IDXGIDevice2_EnqueueSetEvent(This,hEvent) (This)->lpVtbl->EnqueueSetEvent(This,hEvent) 978 #else 979 /*** IUnknown methods ***/ 980 static FORCEINLINE HRESULT IDXGIDevice2_QueryInterface(IDXGIDevice2* This,REFIID riid,void **ppvObject) { 981 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 982 } 983 static FORCEINLINE ULONG IDXGIDevice2_AddRef(IDXGIDevice2* This) { 984 return This->lpVtbl->AddRef(This); 985 } 986 static FORCEINLINE ULONG IDXGIDevice2_Release(IDXGIDevice2* This) { 987 return This->lpVtbl->Release(This); 988 } 989 /*** IDXGIObject methods ***/ 990 static FORCEINLINE HRESULT IDXGIDevice2_SetPrivateData(IDXGIDevice2* This,REFGUID guid,UINT data_size,const void *data) { 991 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 992 } 993 static FORCEINLINE HRESULT IDXGIDevice2_SetPrivateDataInterface(IDXGIDevice2* This,REFGUID guid,const IUnknown *object) { 994 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 995 } 996 static FORCEINLINE HRESULT IDXGIDevice2_GetPrivateData(IDXGIDevice2* This,REFGUID guid,UINT *data_size,void *data) { 997 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 998 } 999 static FORCEINLINE HRESULT IDXGIDevice2_GetParent(IDXGIDevice2* This,REFIID riid,void **parent) { 1000 return This->lpVtbl->GetParent(This,riid,parent); 1001 } 1002 /*** IDXGIDevice methods ***/ 1003 static FORCEINLINE HRESULT IDXGIDevice2_GetAdapter(IDXGIDevice2* This,IDXGIAdapter **adapter) { 1004 return This->lpVtbl->GetAdapter(This,adapter); 1005 } 1006 static FORCEINLINE HRESULT IDXGIDevice2_CreateSurface(IDXGIDevice2* This,const DXGI_SURFACE_DESC *desc,UINT surface_count,DXGI_USAGE usage,const DXGI_SHARED_RESOURCE *shared_resource,IDXGISurface **surface) { 1007 return This->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface); 1008 } 1009 static FORCEINLINE HRESULT IDXGIDevice2_QueryResourceResidency(IDXGIDevice2* This,IUnknown *const *resources,DXGI_RESIDENCY *residency,UINT resource_count) { 1010 return This->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count); 1011 } 1012 static FORCEINLINE HRESULT IDXGIDevice2_SetGPUThreadPriority(IDXGIDevice2* This,INT priority) { 1013 return This->lpVtbl->SetGPUThreadPriority(This,priority); 1014 } 1015 static FORCEINLINE HRESULT IDXGIDevice2_GetGPUThreadPriority(IDXGIDevice2* This,INT *priority) { 1016 return This->lpVtbl->GetGPUThreadPriority(This,priority); 1017 } 1018 /*** IDXGIDevice1 methods ***/ 1019 static FORCEINLINE HRESULT IDXGIDevice2_SetMaximumFrameLatency(IDXGIDevice2* This,UINT MaxLatency) { 1020 return This->lpVtbl->SetMaximumFrameLatency(This,MaxLatency); 1021 } 1022 static FORCEINLINE HRESULT IDXGIDevice2_GetMaximumFrameLatency(IDXGIDevice2* This,UINT *pMaxLatency) { 1023 return This->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency); 1024 } 1025 /*** IDXGIDevice2 methods ***/ 1026 static FORCEINLINE HRESULT IDXGIDevice2_OfferResources(IDXGIDevice2* This,UINT NumResources,IDXGIResource *const *ppResources,DXGI_OFFER_RESOURCE_PRIORITY Priority) { 1027 return This->lpVtbl->OfferResources(This,NumResources,ppResources,Priority); 1028 } 1029 static FORCEINLINE HRESULT IDXGIDevice2_ReclaimResources(IDXGIDevice2* This,UINT NumResources,IDXGIResource *const *ppResources,WINBOOL *pDiscarded) { 1030 return This->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded); 1031 } 1032 static FORCEINLINE HRESULT IDXGIDevice2_EnqueueSetEvent(IDXGIDevice2* This,HANDLE hEvent) { 1033 return This->lpVtbl->EnqueueSetEvent(This,hEvent); 1034 } 1035 #endif 1036 #endif 1037 1038 #endif 1039 1040 1041 #endif /* __IDXGIDevice2_INTERFACE_DEFINED__ */ 1042 1043 typedef enum DXGI_SCALING { 1044 DXGI_SCALING_STRETCH = 0, 1045 DXGI_SCALING_NONE = 1 1046 } DXGI_SCALING; 1047 typedef struct DXGI_SWAP_CHAIN_DESC1 { 1048 UINT Width; 1049 UINT Height; 1050 DXGI_FORMAT Format; 1051 WINBOOL Stereo; 1052 DXGI_SAMPLE_DESC SampleDesc; 1053 DXGI_USAGE BufferUsage; 1054 UINT BufferCount; 1055 DXGI_SCALING Scaling; 1056 DXGI_SWAP_EFFECT SwapEffect; 1057 DXGI_ALPHA_MODE AlphaMode; 1058 UINT Flags; 1059 } DXGI_SWAP_CHAIN_DESC1; 1060 typedef struct DXGI_SWAP_CHAIN_FULLSCREEN_DESC { 1061 DXGI_RATIONAL RefreshRate; 1062 DXGI_MODE_SCANLINE_ORDER ScanlineOrdering; 1063 DXGI_MODE_SCALING Scaling; 1064 WINBOOL Windowed; 1065 } DXGI_SWAP_CHAIN_FULLSCREEN_DESC; 1066 typedef struct DXGI_PRESENT_PARAMETERS { 1067 UINT DirtyRectsCount; 1068 RECT *pDirtyRects; 1069 RECT *pScrollRect; 1070 POINT *pScrollOffset; 1071 } DXGI_PRESENT_PARAMETERS; 1072 /***************************************************************************** 1073 * IDXGISwapChain1 interface 1074 */ 1075 #ifndef __IDXGISwapChain1_INTERFACE_DEFINED__ 1076 #define __IDXGISwapChain1_INTERFACE_DEFINED__ 1077 1078 DEFINE_GUID(IID_IDXGISwapChain1, 0x790a45f7, 0x0d42, 0x4876, 0x98,0x3a, 0x0a,0x55,0xcf,0xe6,0xf4,0xaa); 1079 #if defined(__cplusplus) && !defined(CINTERFACE) 1080 MIDL_INTERFACE("790a45f7-0d42-4876-983a-0a55cfe6f4aa") 1081 IDXGISwapChain1 : public IDXGISwapChain 1082 { 1083 virtual HRESULT STDMETHODCALLTYPE GetDesc1( 1084 DXGI_SWAP_CHAIN_DESC1 *pDesc) = 0; 1085 1086 virtual HRESULT STDMETHODCALLTYPE GetFullscreenDesc( 1087 DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) = 0; 1088 1089 virtual HRESULT STDMETHODCALLTYPE GetHwnd( 1090 HWND *pHwnd) = 0; 1091 1092 virtual HRESULT STDMETHODCALLTYPE GetCoreWindow( 1093 REFIID refiid, 1094 void **ppUnk) = 0; 1095 1096 virtual HRESULT STDMETHODCALLTYPE Present1( 1097 UINT SyncInterval, 1098 UINT PresentFlags, 1099 const DXGI_PRESENT_PARAMETERS *pPresentParameters) = 0; 1100 1101 virtual WINBOOL STDMETHODCALLTYPE IsTemporaryMonoSupported( 1102 ) = 0; 1103 1104 virtual HRESULT STDMETHODCALLTYPE GetRestrictToOutput( 1105 IDXGIOutput **ppRestrictToOutput) = 0; 1106 1107 virtual HRESULT STDMETHODCALLTYPE SetBackgroundColor( 1108 const DXGI_RGBA *pColor) = 0; 1109 1110 virtual HRESULT STDMETHODCALLTYPE GetBackgroundColor( 1111 DXGI_RGBA *pColor) = 0; 1112 1113 virtual HRESULT STDMETHODCALLTYPE SetRotation( 1114 DXGI_MODE_ROTATION Rotation) = 0; 1115 1116 virtual HRESULT STDMETHODCALLTYPE GetRotation( 1117 DXGI_MODE_ROTATION *pRotation) = 0; 1118 1119 }; 1120 #ifdef __CRT_UUID_DECL 1121 __CRT_UUID_DECL(IDXGISwapChain1, 0x790a45f7, 0x0d42, 0x4876, 0x98,0x3a, 0x0a,0x55,0xcf,0xe6,0xf4,0xaa) 1122 #endif 1123 #else 1124 typedef struct IDXGISwapChain1Vtbl { 1125 BEGIN_INTERFACE 1126 1127 /*** IUnknown methods ***/ 1128 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 1129 IDXGISwapChain1 *This, 1130 REFIID riid, 1131 void **ppvObject); 1132 1133 ULONG (STDMETHODCALLTYPE *AddRef)( 1134 IDXGISwapChain1 *This); 1135 1136 ULONG (STDMETHODCALLTYPE *Release)( 1137 IDXGISwapChain1 *This); 1138 1139 /*** IDXGIObject methods ***/ 1140 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 1141 IDXGISwapChain1 *This, 1142 REFGUID guid, 1143 UINT data_size, 1144 const void *data); 1145 1146 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 1147 IDXGISwapChain1 *This, 1148 REFGUID guid, 1149 const IUnknown *object); 1150 1151 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 1152 IDXGISwapChain1 *This, 1153 REFGUID guid, 1154 UINT *data_size, 1155 void *data); 1156 1157 HRESULT (STDMETHODCALLTYPE *GetParent)( 1158 IDXGISwapChain1 *This, 1159 REFIID riid, 1160 void **parent); 1161 1162 /*** IDXGIDeviceSubObject methods ***/ 1163 HRESULT (STDMETHODCALLTYPE *GetDevice)( 1164 IDXGISwapChain1 *This, 1165 REFIID riid, 1166 void **device); 1167 1168 /*** IDXGISwapChain methods ***/ 1169 HRESULT (STDMETHODCALLTYPE *Present)( 1170 IDXGISwapChain1 *This, 1171 UINT sync_interval, 1172 UINT flags); 1173 1174 HRESULT (STDMETHODCALLTYPE *GetBuffer)( 1175 IDXGISwapChain1 *This, 1176 UINT buffer_idx, 1177 REFIID riid, 1178 void **surface); 1179 1180 HRESULT (STDMETHODCALLTYPE *SetFullscreenState)( 1181 IDXGISwapChain1 *This, 1182 WINBOOL fullscreen, 1183 IDXGIOutput *target); 1184 1185 HRESULT (STDMETHODCALLTYPE *GetFullscreenState)( 1186 IDXGISwapChain1 *This, 1187 WINBOOL *fullscreen, 1188 IDXGIOutput **target); 1189 1190 HRESULT (STDMETHODCALLTYPE *GetDesc)( 1191 IDXGISwapChain1 *This, 1192 DXGI_SWAP_CHAIN_DESC *desc); 1193 1194 HRESULT (STDMETHODCALLTYPE *ResizeBuffers)( 1195 IDXGISwapChain1 *This, 1196 UINT buffer_count, 1197 UINT width, 1198 UINT height, 1199 DXGI_FORMAT format, 1200 UINT flags); 1201 1202 HRESULT (STDMETHODCALLTYPE *ResizeTarget)( 1203 IDXGISwapChain1 *This, 1204 const DXGI_MODE_DESC *target_mode_desc); 1205 1206 HRESULT (STDMETHODCALLTYPE *GetContainingOutput)( 1207 IDXGISwapChain1 *This, 1208 IDXGIOutput **output); 1209 1210 HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)( 1211 IDXGISwapChain1 *This, 1212 DXGI_FRAME_STATISTICS *stats); 1213 1214 HRESULT (STDMETHODCALLTYPE *GetLastPresentCount)( 1215 IDXGISwapChain1 *This, 1216 UINT *last_present_count); 1217 1218 /*** IDXGISwapChain1 methods ***/ 1219 HRESULT (STDMETHODCALLTYPE *GetDesc1)( 1220 IDXGISwapChain1 *This, 1221 DXGI_SWAP_CHAIN_DESC1 *pDesc); 1222 1223 HRESULT (STDMETHODCALLTYPE *GetFullscreenDesc)( 1224 IDXGISwapChain1 *This, 1225 DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc); 1226 1227 HRESULT (STDMETHODCALLTYPE *GetHwnd)( 1228 IDXGISwapChain1 *This, 1229 HWND *pHwnd); 1230 1231 HRESULT (STDMETHODCALLTYPE *GetCoreWindow)( 1232 IDXGISwapChain1 *This, 1233 REFIID refiid, 1234 void **ppUnk); 1235 1236 HRESULT (STDMETHODCALLTYPE *Present1)( 1237 IDXGISwapChain1 *This, 1238 UINT SyncInterval, 1239 UINT PresentFlags, 1240 const DXGI_PRESENT_PARAMETERS *pPresentParameters); 1241 1242 WINBOOL (STDMETHODCALLTYPE *IsTemporaryMonoSupported)( 1243 IDXGISwapChain1 *This); 1244 1245 HRESULT (STDMETHODCALLTYPE *GetRestrictToOutput)( 1246 IDXGISwapChain1 *This, 1247 IDXGIOutput **ppRestrictToOutput); 1248 1249 HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)( 1250 IDXGISwapChain1 *This, 1251 const DXGI_RGBA *pColor); 1252 1253 HRESULT (STDMETHODCALLTYPE *GetBackgroundColor)( 1254 IDXGISwapChain1 *This, 1255 DXGI_RGBA *pColor); 1256 1257 HRESULT (STDMETHODCALLTYPE *SetRotation)( 1258 IDXGISwapChain1 *This, 1259 DXGI_MODE_ROTATION Rotation); 1260 1261 HRESULT (STDMETHODCALLTYPE *GetRotation)( 1262 IDXGISwapChain1 *This, 1263 DXGI_MODE_ROTATION *pRotation); 1264 1265 END_INTERFACE 1266 } IDXGISwapChain1Vtbl; 1267 1268 interface IDXGISwapChain1 { 1269 CONST_VTBL IDXGISwapChain1Vtbl* lpVtbl; 1270 }; 1271 1272 #ifdef COBJMACROS 1273 #ifndef WIDL_C_INLINE_WRAPPERS 1274 /*** IUnknown methods ***/ 1275 #define IDXGISwapChain1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 1276 #define IDXGISwapChain1_AddRef(This) (This)->lpVtbl->AddRef(This) 1277 #define IDXGISwapChain1_Release(This) (This)->lpVtbl->Release(This) 1278 /*** IDXGIObject methods ***/ 1279 #define IDXGISwapChain1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 1280 #define IDXGISwapChain1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 1281 #define IDXGISwapChain1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 1282 #define IDXGISwapChain1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 1283 /*** IDXGIDeviceSubObject methods ***/ 1284 #define IDXGISwapChain1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device) 1285 /*** IDXGISwapChain methods ***/ 1286 #define IDXGISwapChain1_Present(This,sync_interval,flags) (This)->lpVtbl->Present(This,sync_interval,flags) 1287 #define IDXGISwapChain1_GetBuffer(This,buffer_idx,riid,surface) (This)->lpVtbl->GetBuffer(This,buffer_idx,riid,surface) 1288 #define IDXGISwapChain1_SetFullscreenState(This,fullscreen,target) (This)->lpVtbl->SetFullscreenState(This,fullscreen,target) 1289 #define IDXGISwapChain1_GetFullscreenState(This,fullscreen,target) (This)->lpVtbl->GetFullscreenState(This,fullscreen,target) 1290 #define IDXGISwapChain1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) 1291 #define IDXGISwapChain1_ResizeBuffers(This,buffer_count,width,height,format,flags) (This)->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags) 1292 #define IDXGISwapChain1_ResizeTarget(This,target_mode_desc) (This)->lpVtbl->ResizeTarget(This,target_mode_desc) 1293 #define IDXGISwapChain1_GetContainingOutput(This,output) (This)->lpVtbl->GetContainingOutput(This,output) 1294 #define IDXGISwapChain1_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats) 1295 #define IDXGISwapChain1_GetLastPresentCount(This,last_present_count) (This)->lpVtbl->GetLastPresentCount(This,last_present_count) 1296 /*** IDXGISwapChain1 methods ***/ 1297 #define IDXGISwapChain1_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc) 1298 #define IDXGISwapChain1_GetFullscreenDesc(This,pDesc) (This)->lpVtbl->GetFullscreenDesc(This,pDesc) 1299 #define IDXGISwapChain1_GetHwnd(This,pHwnd) (This)->lpVtbl->GetHwnd(This,pHwnd) 1300 #define IDXGISwapChain1_GetCoreWindow(This,refiid,ppUnk) (This)->lpVtbl->GetCoreWindow(This,refiid,ppUnk) 1301 #define IDXGISwapChain1_Present1(This,SyncInterval,PresentFlags,pPresentParameters) (This)->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters) 1302 #define IDXGISwapChain1_IsTemporaryMonoSupported(This) (This)->lpVtbl->IsTemporaryMonoSupported(This) 1303 #define IDXGISwapChain1_GetRestrictToOutput(This,ppRestrictToOutput) (This)->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput) 1304 #define IDXGISwapChain1_SetBackgroundColor(This,pColor) (This)->lpVtbl->SetBackgroundColor(This,pColor) 1305 #define IDXGISwapChain1_GetBackgroundColor(This,pColor) (This)->lpVtbl->GetBackgroundColor(This,pColor) 1306 #define IDXGISwapChain1_SetRotation(This,Rotation) (This)->lpVtbl->SetRotation(This,Rotation) 1307 #define IDXGISwapChain1_GetRotation(This,pRotation) (This)->lpVtbl->GetRotation(This,pRotation) 1308 #else 1309 /*** IUnknown methods ***/ 1310 static FORCEINLINE HRESULT IDXGISwapChain1_QueryInterface(IDXGISwapChain1* This,REFIID riid,void **ppvObject) { 1311 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 1312 } 1313 static FORCEINLINE ULONG IDXGISwapChain1_AddRef(IDXGISwapChain1* This) { 1314 return This->lpVtbl->AddRef(This); 1315 } 1316 static FORCEINLINE ULONG IDXGISwapChain1_Release(IDXGISwapChain1* This) { 1317 return This->lpVtbl->Release(This); 1318 } 1319 /*** IDXGIObject methods ***/ 1320 static FORCEINLINE HRESULT IDXGISwapChain1_SetPrivateData(IDXGISwapChain1* This,REFGUID guid,UINT data_size,const void *data) { 1321 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 1322 } 1323 static FORCEINLINE HRESULT IDXGISwapChain1_SetPrivateDataInterface(IDXGISwapChain1* This,REFGUID guid,const IUnknown *object) { 1324 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 1325 } 1326 static FORCEINLINE HRESULT IDXGISwapChain1_GetPrivateData(IDXGISwapChain1* This,REFGUID guid,UINT *data_size,void *data) { 1327 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 1328 } 1329 static FORCEINLINE HRESULT IDXGISwapChain1_GetParent(IDXGISwapChain1* This,REFIID riid,void **parent) { 1330 return This->lpVtbl->GetParent(This,riid,parent); 1331 } 1332 /*** IDXGIDeviceSubObject methods ***/ 1333 static FORCEINLINE HRESULT IDXGISwapChain1_GetDevice(IDXGISwapChain1* This,REFIID riid,void **device) { 1334 return This->lpVtbl->GetDevice(This,riid,device); 1335 } 1336 /*** IDXGISwapChain methods ***/ 1337 static FORCEINLINE HRESULT IDXGISwapChain1_Present(IDXGISwapChain1* This,UINT sync_interval,UINT flags) { 1338 return This->lpVtbl->Present(This,sync_interval,flags); 1339 } 1340 static FORCEINLINE HRESULT IDXGISwapChain1_GetBuffer(IDXGISwapChain1* This,UINT buffer_idx,REFIID riid,void **surface) { 1341 return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface); 1342 } 1343 static FORCEINLINE HRESULT IDXGISwapChain1_SetFullscreenState(IDXGISwapChain1* This,WINBOOL fullscreen,IDXGIOutput *target) { 1344 return This->lpVtbl->SetFullscreenState(This,fullscreen,target); 1345 } 1346 static FORCEINLINE HRESULT IDXGISwapChain1_GetFullscreenState(IDXGISwapChain1* This,WINBOOL *fullscreen,IDXGIOutput **target) { 1347 return This->lpVtbl->GetFullscreenState(This,fullscreen,target); 1348 } 1349 static FORCEINLINE HRESULT IDXGISwapChain1_GetDesc(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_DESC *desc) { 1350 return This->lpVtbl->GetDesc(This,desc); 1351 } 1352 static FORCEINLINE HRESULT IDXGISwapChain1_ResizeBuffers(IDXGISwapChain1* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags) { 1353 return This->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags); 1354 } 1355 static FORCEINLINE HRESULT IDXGISwapChain1_ResizeTarget(IDXGISwapChain1* This,const DXGI_MODE_DESC *target_mode_desc) { 1356 return This->lpVtbl->ResizeTarget(This,target_mode_desc); 1357 } 1358 static FORCEINLINE HRESULT IDXGISwapChain1_GetContainingOutput(IDXGISwapChain1* This,IDXGIOutput **output) { 1359 return This->lpVtbl->GetContainingOutput(This,output); 1360 } 1361 static FORCEINLINE HRESULT IDXGISwapChain1_GetFrameStatistics(IDXGISwapChain1* This,DXGI_FRAME_STATISTICS *stats) { 1362 return This->lpVtbl->GetFrameStatistics(This,stats); 1363 } 1364 static FORCEINLINE HRESULT IDXGISwapChain1_GetLastPresentCount(IDXGISwapChain1* This,UINT *last_present_count) { 1365 return This->lpVtbl->GetLastPresentCount(This,last_present_count); 1366 } 1367 /*** IDXGISwapChain1 methods ***/ 1368 static FORCEINLINE HRESULT IDXGISwapChain1_GetDesc1(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_DESC1 *pDesc) { 1369 return This->lpVtbl->GetDesc1(This,pDesc); 1370 } 1371 static FORCEINLINE HRESULT IDXGISwapChain1_GetFullscreenDesc(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) { 1372 return This->lpVtbl->GetFullscreenDesc(This,pDesc); 1373 } 1374 static FORCEINLINE HRESULT IDXGISwapChain1_GetHwnd(IDXGISwapChain1* This,HWND *pHwnd) { 1375 return This->lpVtbl->GetHwnd(This,pHwnd); 1376 } 1377 static FORCEINLINE HRESULT IDXGISwapChain1_GetCoreWindow(IDXGISwapChain1* This,REFIID refiid,void **ppUnk) { 1378 return This->lpVtbl->GetCoreWindow(This,refiid,ppUnk); 1379 } 1380 static FORCEINLINE HRESULT IDXGISwapChain1_Present1(IDXGISwapChain1* This,UINT SyncInterval,UINT PresentFlags,const DXGI_PRESENT_PARAMETERS *pPresentParameters) { 1381 return This->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters); 1382 } 1383 static FORCEINLINE WINBOOL IDXGISwapChain1_IsTemporaryMonoSupported(IDXGISwapChain1* This) { 1384 return This->lpVtbl->IsTemporaryMonoSupported(This); 1385 } 1386 static FORCEINLINE HRESULT IDXGISwapChain1_GetRestrictToOutput(IDXGISwapChain1* This,IDXGIOutput **ppRestrictToOutput) { 1387 return This->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput); 1388 } 1389 static FORCEINLINE HRESULT IDXGISwapChain1_SetBackgroundColor(IDXGISwapChain1* This,const DXGI_RGBA *pColor) { 1390 return This->lpVtbl->SetBackgroundColor(This,pColor); 1391 } 1392 static FORCEINLINE HRESULT IDXGISwapChain1_GetBackgroundColor(IDXGISwapChain1* This,DXGI_RGBA *pColor) { 1393 return This->lpVtbl->GetBackgroundColor(This,pColor); 1394 } 1395 static FORCEINLINE HRESULT IDXGISwapChain1_SetRotation(IDXGISwapChain1* This,DXGI_MODE_ROTATION Rotation) { 1396 return This->lpVtbl->SetRotation(This,Rotation); 1397 } 1398 static FORCEINLINE HRESULT IDXGISwapChain1_GetRotation(IDXGISwapChain1* This,DXGI_MODE_ROTATION *pRotation) { 1399 return This->lpVtbl->GetRotation(This,pRotation); 1400 } 1401 #endif 1402 #endif 1403 1404 #endif 1405 1406 1407 #endif /* __IDXGISwapChain1_INTERFACE_DEFINED__ */ 1408 1409 /***************************************************************************** 1410 * IDXGIFactory2 interface 1411 */ 1412 #ifndef __IDXGIFactory2_INTERFACE_DEFINED__ 1413 #define __IDXGIFactory2_INTERFACE_DEFINED__ 1414 1415 DEFINE_GUID(IID_IDXGIFactory2, 0x50c83a1c, 0xe072, 0x4c48, 0x87,0xb0, 0x36,0x30,0xfa,0x36,0xa6,0xd0); 1416 #if defined(__cplusplus) && !defined(CINTERFACE) 1417 MIDL_INTERFACE("50c83a1c-e072-4c48-87b0-3630fa36a6d0") 1418 IDXGIFactory2 : public IDXGIFactory1 1419 { 1420 virtual WINBOOL STDMETHODCALLTYPE IsWindowedStereoEnabled( 1421 ) = 0; 1422 1423 virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForHwnd( 1424 IUnknown *pDevice, 1425 HWND hWnd, 1426 const DXGI_SWAP_CHAIN_DESC1 *pDesc, 1427 const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc, 1428 IDXGIOutput *pRestrictToOutput, 1429 IDXGISwapChain1 **ppSwapChain) = 0; 1430 1431 virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForCoreWindow( 1432 IUnknown *pDevice, 1433 IUnknown *pWindow, 1434 const DXGI_SWAP_CHAIN_DESC1 *pDesc, 1435 IDXGIOutput *pRestrictToOutput, 1436 IDXGISwapChain1 **ppSwapChain) = 0; 1437 1438 virtual HRESULT STDMETHODCALLTYPE GetSharedResourceAdapterLuid( 1439 HANDLE hResource, 1440 LUID *pLuid) = 0; 1441 1442 virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusWindow( 1443 HWND WindowHandle, 1444 UINT wMsg, 1445 DWORD *pdwCookie) = 0; 1446 1447 virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusEvent( 1448 HANDLE hEvent, 1449 DWORD *pdwCookie) = 0; 1450 1451 virtual void STDMETHODCALLTYPE UnregisterStereoStatus( 1452 DWORD dwCookie) = 0; 1453 1454 virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusWindow( 1455 HWND WindowHandle, 1456 UINT wMsg, 1457 DWORD *pdwCookie) = 0; 1458 1459 virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusEvent( 1460 HANDLE hEvent, 1461 DWORD *pdwCookie) = 0; 1462 1463 virtual void STDMETHODCALLTYPE UnregisterOcclusionStatus( 1464 DWORD dwCookie) = 0; 1465 1466 virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForComposition( 1467 IUnknown *pDevice, 1468 const DXGI_SWAP_CHAIN_DESC1 *pDesc, 1469 IDXGIOutput *pRestrictToOutput, 1470 IDXGISwapChain1 **ppSwapChain) = 0; 1471 1472 }; 1473 #ifdef __CRT_UUID_DECL 1474 __CRT_UUID_DECL(IDXGIFactory2, 0x50c83a1c, 0xe072, 0x4c48, 0x87,0xb0, 0x36,0x30,0xfa,0x36,0xa6,0xd0) 1475 #endif 1476 #else 1477 typedef struct IDXGIFactory2Vtbl { 1478 BEGIN_INTERFACE 1479 1480 /*** IUnknown methods ***/ 1481 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 1482 IDXGIFactory2 *This, 1483 REFIID riid, 1484 void **ppvObject); 1485 1486 ULONG (STDMETHODCALLTYPE *AddRef)( 1487 IDXGIFactory2 *This); 1488 1489 ULONG (STDMETHODCALLTYPE *Release)( 1490 IDXGIFactory2 *This); 1491 1492 /*** IDXGIObject methods ***/ 1493 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 1494 IDXGIFactory2 *This, 1495 REFGUID guid, 1496 UINT data_size, 1497 const void *data); 1498 1499 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 1500 IDXGIFactory2 *This, 1501 REFGUID guid, 1502 const IUnknown *object); 1503 1504 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 1505 IDXGIFactory2 *This, 1506 REFGUID guid, 1507 UINT *data_size, 1508 void *data); 1509 1510 HRESULT (STDMETHODCALLTYPE *GetParent)( 1511 IDXGIFactory2 *This, 1512 REFIID riid, 1513 void **parent); 1514 1515 /*** IDXGIFactory methods ***/ 1516 HRESULT (STDMETHODCALLTYPE *EnumAdapters)( 1517 IDXGIFactory2 *This, 1518 UINT adapter_idx, 1519 IDXGIAdapter **adapter); 1520 1521 HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)( 1522 IDXGIFactory2 *This, 1523 HWND window, 1524 UINT flags); 1525 1526 HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)( 1527 IDXGIFactory2 *This, 1528 HWND *window); 1529 1530 HRESULT (STDMETHODCALLTYPE *CreateSwapChain)( 1531 IDXGIFactory2 *This, 1532 IUnknown *device, 1533 DXGI_SWAP_CHAIN_DESC *desc, 1534 IDXGISwapChain **swapchain); 1535 1536 HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)( 1537 IDXGIFactory2 *This, 1538 HMODULE swrast, 1539 IDXGIAdapter **adapter); 1540 1541 /*** IDXGIFactory1 methods ***/ 1542 HRESULT (STDMETHODCALLTYPE *EnumAdapters1)( 1543 IDXGIFactory2 *This, 1544 UINT Adapter, 1545 IDXGIAdapter1 **ppAdapter); 1546 1547 WINBOOL (STDMETHODCALLTYPE *IsCurrent)( 1548 IDXGIFactory2 *This); 1549 1550 /*** IDXGIFactory2 methods ***/ 1551 WINBOOL (STDMETHODCALLTYPE *IsWindowedStereoEnabled)( 1552 IDXGIFactory2 *This); 1553 1554 HRESULT (STDMETHODCALLTYPE *CreateSwapChainForHwnd)( 1555 IDXGIFactory2 *This, 1556 IUnknown *pDevice, 1557 HWND hWnd, 1558 const DXGI_SWAP_CHAIN_DESC1 *pDesc, 1559 const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc, 1560 IDXGIOutput *pRestrictToOutput, 1561 IDXGISwapChain1 **ppSwapChain); 1562 1563 HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCoreWindow)( 1564 IDXGIFactory2 *This, 1565 IUnknown *pDevice, 1566 IUnknown *pWindow, 1567 const DXGI_SWAP_CHAIN_DESC1 *pDesc, 1568 IDXGIOutput *pRestrictToOutput, 1569 IDXGISwapChain1 **ppSwapChain); 1570 1571 HRESULT (STDMETHODCALLTYPE *GetSharedResourceAdapterLuid)( 1572 IDXGIFactory2 *This, 1573 HANDLE hResource, 1574 LUID *pLuid); 1575 1576 HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)( 1577 IDXGIFactory2 *This, 1578 HWND WindowHandle, 1579 UINT wMsg, 1580 DWORD *pdwCookie); 1581 1582 HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusEvent)( 1583 IDXGIFactory2 *This, 1584 HANDLE hEvent, 1585 DWORD *pdwCookie); 1586 1587 void (STDMETHODCALLTYPE *UnregisterStereoStatus)( 1588 IDXGIFactory2 *This, 1589 DWORD dwCookie); 1590 1591 HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)( 1592 IDXGIFactory2 *This, 1593 HWND WindowHandle, 1594 UINT wMsg, 1595 DWORD *pdwCookie); 1596 1597 HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusEvent)( 1598 IDXGIFactory2 *This, 1599 HANDLE hEvent, 1600 DWORD *pdwCookie); 1601 1602 void (STDMETHODCALLTYPE *UnregisterOcclusionStatus)( 1603 IDXGIFactory2 *This, 1604 DWORD dwCookie); 1605 1606 HRESULT (STDMETHODCALLTYPE *CreateSwapChainForComposition)( 1607 IDXGIFactory2 *This, 1608 IUnknown *pDevice, 1609 const DXGI_SWAP_CHAIN_DESC1 *pDesc, 1610 IDXGIOutput *pRestrictToOutput, 1611 IDXGISwapChain1 **ppSwapChain); 1612 1613 END_INTERFACE 1614 } IDXGIFactory2Vtbl; 1615 1616 interface IDXGIFactory2 { 1617 CONST_VTBL IDXGIFactory2Vtbl* lpVtbl; 1618 }; 1619 1620 #ifdef COBJMACROS 1621 #ifndef WIDL_C_INLINE_WRAPPERS 1622 /*** IUnknown methods ***/ 1623 #define IDXGIFactory2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 1624 #define IDXGIFactory2_AddRef(This) (This)->lpVtbl->AddRef(This) 1625 #define IDXGIFactory2_Release(This) (This)->lpVtbl->Release(This) 1626 /*** IDXGIObject methods ***/ 1627 #define IDXGIFactory2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 1628 #define IDXGIFactory2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 1629 #define IDXGIFactory2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 1630 #define IDXGIFactory2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 1631 /*** IDXGIFactory methods ***/ 1632 #define IDXGIFactory2_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter) 1633 #define IDXGIFactory2_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags) 1634 #define IDXGIFactory2_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window) 1635 #define IDXGIFactory2_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain) 1636 #define IDXGIFactory2_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter) 1637 /*** IDXGIFactory1 methods ***/ 1638 #define IDXGIFactory2_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter) 1639 #define IDXGIFactory2_IsCurrent(This) (This)->lpVtbl->IsCurrent(This) 1640 /*** IDXGIFactory2 methods ***/ 1641 #define IDXGIFactory2_IsWindowedStereoEnabled(This) (This)->lpVtbl->IsWindowedStereoEnabled(This) 1642 #define IDXGIFactory2_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) 1643 #define IDXGIFactory2_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) 1644 #define IDXGIFactory2_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid) 1645 #define IDXGIFactory2_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) 1646 #define IDXGIFactory2_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie) 1647 #define IDXGIFactory2_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie) 1648 #define IDXGIFactory2_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) 1649 #define IDXGIFactory2_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) 1650 #define IDXGIFactory2_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie) 1651 #define IDXGIFactory2_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) 1652 #else 1653 /*** IUnknown methods ***/ 1654 static FORCEINLINE HRESULT IDXGIFactory2_QueryInterface(IDXGIFactory2* This,REFIID riid,void **ppvObject) { 1655 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 1656 } 1657 static FORCEINLINE ULONG IDXGIFactory2_AddRef(IDXGIFactory2* This) { 1658 return This->lpVtbl->AddRef(This); 1659 } 1660 static FORCEINLINE ULONG IDXGIFactory2_Release(IDXGIFactory2* This) { 1661 return This->lpVtbl->Release(This); 1662 } 1663 /*** IDXGIObject methods ***/ 1664 static FORCEINLINE HRESULT IDXGIFactory2_SetPrivateData(IDXGIFactory2* This,REFGUID guid,UINT data_size,const void *data) { 1665 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 1666 } 1667 static FORCEINLINE HRESULT IDXGIFactory2_SetPrivateDataInterface(IDXGIFactory2* This,REFGUID guid,const IUnknown *object) { 1668 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 1669 } 1670 static FORCEINLINE HRESULT IDXGIFactory2_GetPrivateData(IDXGIFactory2* This,REFGUID guid,UINT *data_size,void *data) { 1671 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 1672 } 1673 static FORCEINLINE HRESULT IDXGIFactory2_GetParent(IDXGIFactory2* This,REFIID riid,void **parent) { 1674 return This->lpVtbl->GetParent(This,riid,parent); 1675 } 1676 /*** IDXGIFactory methods ***/ 1677 static FORCEINLINE HRESULT IDXGIFactory2_EnumAdapters(IDXGIFactory2* This,UINT adapter_idx,IDXGIAdapter **adapter) { 1678 return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter); 1679 } 1680 static FORCEINLINE HRESULT IDXGIFactory2_MakeWindowAssociation(IDXGIFactory2* This,HWND window,UINT flags) { 1681 return This->lpVtbl->MakeWindowAssociation(This,window,flags); 1682 } 1683 static FORCEINLINE HRESULT IDXGIFactory2_GetWindowAssociation(IDXGIFactory2* This,HWND *window) { 1684 return This->lpVtbl->GetWindowAssociation(This,window); 1685 } 1686 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChain(IDXGIFactory2* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) { 1687 return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain); 1688 } 1689 static FORCEINLINE HRESULT IDXGIFactory2_CreateSoftwareAdapter(IDXGIFactory2* This,HMODULE swrast,IDXGIAdapter **adapter) { 1690 return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter); 1691 } 1692 /*** IDXGIFactory1 methods ***/ 1693 static FORCEINLINE HRESULT IDXGIFactory2_EnumAdapters1(IDXGIFactory2* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) { 1694 return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter); 1695 } 1696 static FORCEINLINE WINBOOL IDXGIFactory2_IsCurrent(IDXGIFactory2* This) { 1697 return This->lpVtbl->IsCurrent(This); 1698 } 1699 /*** IDXGIFactory2 methods ***/ 1700 static FORCEINLINE WINBOOL IDXGIFactory2_IsWindowedStereoEnabled(IDXGIFactory2* This) { 1701 return This->lpVtbl->IsWindowedStereoEnabled(This); 1702 } 1703 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChainForHwnd(IDXGIFactory2* This,IUnknown *pDevice,HWND hWnd,const DXGI_SWAP_CHAIN_DESC1 *pDesc,const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) { 1704 return This->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain); 1705 } 1706 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChainForCoreWindow(IDXGIFactory2* This,IUnknown *pDevice,IUnknown *pWindow,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) { 1707 return This->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain); 1708 } 1709 static FORCEINLINE HRESULT IDXGIFactory2_GetSharedResourceAdapterLuid(IDXGIFactory2* This,HANDLE hResource,LUID *pLuid) { 1710 return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid); 1711 } 1712 static FORCEINLINE HRESULT IDXGIFactory2_RegisterOcclusionStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) { 1713 return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie); 1714 } 1715 static FORCEINLINE HRESULT IDXGIFactory2_RegisterStereoStatusEvent(IDXGIFactory2* This,HANDLE hEvent,DWORD *pdwCookie) { 1716 return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie); 1717 } 1718 static FORCEINLINE void IDXGIFactory2_UnregisterStereoStatus(IDXGIFactory2* This,DWORD dwCookie) { 1719 This->lpVtbl->UnregisterStereoStatus(This,dwCookie); 1720 } 1721 static FORCEINLINE HRESULT IDXGIFactory2_RegisterStereoStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) { 1722 return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie); 1723 } 1724 static FORCEINLINE HRESULT IDXGIFactory2_RegisterOcclusionStatusEvent(IDXGIFactory2* This,HANDLE hEvent,DWORD *pdwCookie) { 1725 return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie); 1726 } 1727 static FORCEINLINE void IDXGIFactory2_UnregisterOcclusionStatus(IDXGIFactory2* This,DWORD dwCookie) { 1728 This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie); 1729 } 1730 static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChainForComposition(IDXGIFactory2* This,IUnknown *pDevice,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) { 1731 return This->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain); 1732 } 1733 #endif 1734 #endif 1735 1736 #endif 1737 1738 1739 #endif /* __IDXGIFactory2_INTERFACE_DEFINED__ */ 1740 1741 typedef enum DXGI_GRAPHICS_PREEMPTION_GRANULARITY { 1742 DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY = 0, 1743 DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY = 1, 1744 DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY = 2, 1745 DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY = 3, 1746 DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY = 4 1747 } DXGI_GRAPHICS_PREEMPTION_GRANULARITY; 1748 typedef enum DXGI_COMPUTE_PREEMPTION_GRANULARITY { 1749 DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY = 0, 1750 DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY = 1, 1751 DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY = 2, 1752 DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY = 3, 1753 DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY = 4 1754 } DXGI_COMPUTE_PREEMPTION_GRANULARITY; 1755 typedef struct DXGI_ADAPTER_DESC2 { 1756 WCHAR Description[128]; 1757 UINT VendorId; 1758 UINT DeviceId; 1759 UINT SubSysId; 1760 UINT Revision; 1761 SIZE_T DedicatedVideoMemory; 1762 SIZE_T DedicatedSystemMemory; 1763 SIZE_T SharedSystemMemory; 1764 LUID AdapterLuid; 1765 UINT Flags; 1766 DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity; 1767 DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity; 1768 } DXGI_ADAPTER_DESC2; 1769 /***************************************************************************** 1770 * IDXGIAdapter2 interface 1771 */ 1772 #ifndef __IDXGIAdapter2_INTERFACE_DEFINED__ 1773 #define __IDXGIAdapter2_INTERFACE_DEFINED__ 1774 1775 DEFINE_GUID(IID_IDXGIAdapter2, 0x0aa1ae0a, 0xfa0e, 0x4b84, 0x86,0x44, 0xe0,0x5f,0xf8,0xe5,0xac,0xb5); 1776 #if defined(__cplusplus) && !defined(CINTERFACE) 1777 MIDL_INTERFACE("0aa1ae0a-fa0e-4b84-8644-e05ff8e5acb5") 1778 IDXGIAdapter2 : public IDXGIAdapter1 1779 { 1780 virtual HRESULT STDMETHODCALLTYPE GetDesc2( 1781 DXGI_ADAPTER_DESC2 *pDesc) = 0; 1782 1783 }; 1784 #ifdef __CRT_UUID_DECL 1785 __CRT_UUID_DECL(IDXGIAdapter2, 0x0aa1ae0a, 0xfa0e, 0x4b84, 0x86,0x44, 0xe0,0x5f,0xf8,0xe5,0xac,0xb5) 1786 #endif 1787 #else 1788 typedef struct IDXGIAdapter2Vtbl { 1789 BEGIN_INTERFACE 1790 1791 /*** IUnknown methods ***/ 1792 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 1793 IDXGIAdapter2 *This, 1794 REFIID riid, 1795 void **ppvObject); 1796 1797 ULONG (STDMETHODCALLTYPE *AddRef)( 1798 IDXGIAdapter2 *This); 1799 1800 ULONG (STDMETHODCALLTYPE *Release)( 1801 IDXGIAdapter2 *This); 1802 1803 /*** IDXGIObject methods ***/ 1804 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 1805 IDXGIAdapter2 *This, 1806 REFGUID guid, 1807 UINT data_size, 1808 const void *data); 1809 1810 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 1811 IDXGIAdapter2 *This, 1812 REFGUID guid, 1813 const IUnknown *object); 1814 1815 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 1816 IDXGIAdapter2 *This, 1817 REFGUID guid, 1818 UINT *data_size, 1819 void *data); 1820 1821 HRESULT (STDMETHODCALLTYPE *GetParent)( 1822 IDXGIAdapter2 *This, 1823 REFIID riid, 1824 void **parent); 1825 1826 /*** IDXGIAdapter methods ***/ 1827 HRESULT (STDMETHODCALLTYPE *EnumOutputs)( 1828 IDXGIAdapter2 *This, 1829 UINT output_idx, 1830 IDXGIOutput **output); 1831 1832 HRESULT (STDMETHODCALLTYPE *GetDesc)( 1833 IDXGIAdapter2 *This, 1834 DXGI_ADAPTER_DESC *desc); 1835 1836 HRESULT (STDMETHODCALLTYPE *CheckInterfaceSupport)( 1837 IDXGIAdapter2 *This, 1838 REFGUID guid, 1839 LARGE_INTEGER *umd_version); 1840 1841 /*** IDXGIAdapter1 methods ***/ 1842 HRESULT (STDMETHODCALLTYPE *GetDesc1)( 1843 IDXGIAdapter2 *This, 1844 DXGI_ADAPTER_DESC1 *pDesc); 1845 1846 /*** IDXGIAdapter2 methods ***/ 1847 HRESULT (STDMETHODCALLTYPE *GetDesc2)( 1848 IDXGIAdapter2 *This, 1849 DXGI_ADAPTER_DESC2 *pDesc); 1850 1851 END_INTERFACE 1852 } IDXGIAdapter2Vtbl; 1853 1854 interface IDXGIAdapter2 { 1855 CONST_VTBL IDXGIAdapter2Vtbl* lpVtbl; 1856 }; 1857 1858 #ifdef COBJMACROS 1859 #ifndef WIDL_C_INLINE_WRAPPERS 1860 /*** IUnknown methods ***/ 1861 #define IDXGIAdapter2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 1862 #define IDXGIAdapter2_AddRef(This) (This)->lpVtbl->AddRef(This) 1863 #define IDXGIAdapter2_Release(This) (This)->lpVtbl->Release(This) 1864 /*** IDXGIObject methods ***/ 1865 #define IDXGIAdapter2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 1866 #define IDXGIAdapter2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 1867 #define IDXGIAdapter2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 1868 #define IDXGIAdapter2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 1869 /*** IDXGIAdapter methods ***/ 1870 #define IDXGIAdapter2_EnumOutputs(This,output_idx,output) (This)->lpVtbl->EnumOutputs(This,output_idx,output) 1871 #define IDXGIAdapter2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) 1872 #define IDXGIAdapter2_CheckInterfaceSupport(This,guid,umd_version) (This)->lpVtbl->CheckInterfaceSupport(This,guid,umd_version) 1873 /*** IDXGIAdapter1 methods ***/ 1874 #define IDXGIAdapter2_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc) 1875 /*** IDXGIAdapter2 methods ***/ 1876 #define IDXGIAdapter2_GetDesc2(This,pDesc) (This)->lpVtbl->GetDesc2(This,pDesc) 1877 #else 1878 /*** IUnknown methods ***/ 1879 static FORCEINLINE HRESULT IDXGIAdapter2_QueryInterface(IDXGIAdapter2* This,REFIID riid,void **ppvObject) { 1880 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 1881 } 1882 static FORCEINLINE ULONG IDXGIAdapter2_AddRef(IDXGIAdapter2* This) { 1883 return This->lpVtbl->AddRef(This); 1884 } 1885 static FORCEINLINE ULONG IDXGIAdapter2_Release(IDXGIAdapter2* This) { 1886 return This->lpVtbl->Release(This); 1887 } 1888 /*** IDXGIObject methods ***/ 1889 static FORCEINLINE HRESULT IDXGIAdapter2_SetPrivateData(IDXGIAdapter2* This,REFGUID guid,UINT data_size,const void *data) { 1890 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 1891 } 1892 static FORCEINLINE HRESULT IDXGIAdapter2_SetPrivateDataInterface(IDXGIAdapter2* This,REFGUID guid,const IUnknown *object) { 1893 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 1894 } 1895 static FORCEINLINE HRESULT IDXGIAdapter2_GetPrivateData(IDXGIAdapter2* This,REFGUID guid,UINT *data_size,void *data) { 1896 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 1897 } 1898 static FORCEINLINE HRESULT IDXGIAdapter2_GetParent(IDXGIAdapter2* This,REFIID riid,void **parent) { 1899 return This->lpVtbl->GetParent(This,riid,parent); 1900 } 1901 /*** IDXGIAdapter methods ***/ 1902 static FORCEINLINE HRESULT IDXGIAdapter2_EnumOutputs(IDXGIAdapter2* This,UINT output_idx,IDXGIOutput **output) { 1903 return This->lpVtbl->EnumOutputs(This,output_idx,output); 1904 } 1905 static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc(IDXGIAdapter2* This,DXGI_ADAPTER_DESC *desc) { 1906 return This->lpVtbl->GetDesc(This,desc); 1907 } 1908 static FORCEINLINE HRESULT IDXGIAdapter2_CheckInterfaceSupport(IDXGIAdapter2* This,REFGUID guid,LARGE_INTEGER *umd_version) { 1909 return This->lpVtbl->CheckInterfaceSupport(This,guid,umd_version); 1910 } 1911 /*** IDXGIAdapter1 methods ***/ 1912 static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc1(IDXGIAdapter2* This,DXGI_ADAPTER_DESC1 *pDesc) { 1913 return This->lpVtbl->GetDesc1(This,pDesc); 1914 } 1915 /*** IDXGIAdapter2 methods ***/ 1916 static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc2(IDXGIAdapter2* This,DXGI_ADAPTER_DESC2 *pDesc) { 1917 return This->lpVtbl->GetDesc2(This,pDesc); 1918 } 1919 #endif 1920 #endif 1921 1922 #endif 1923 1924 1925 #endif /* __IDXGIAdapter2_INTERFACE_DEFINED__ */ 1926 1927 /***************************************************************************** 1928 * IDXGIOutput1 interface 1929 */ 1930 #ifndef __IDXGIOutput1_INTERFACE_DEFINED__ 1931 #define __IDXGIOutput1_INTERFACE_DEFINED__ 1932 1933 DEFINE_GUID(IID_IDXGIOutput1, 0x00cddea8, 0x939b, 0x4b83, 0xa3,0x40, 0xa6,0x85,0x22,0x66,0x66,0xcc); 1934 #if defined(__cplusplus) && !defined(CINTERFACE) 1935 MIDL_INTERFACE("00cddea8-939b-4b83-a340-a685226666cc") 1936 IDXGIOutput1 : public IDXGIOutput 1937 { 1938 virtual HRESULT STDMETHODCALLTYPE GetDisplayModeList1( 1939 DXGI_FORMAT enum_format, 1940 UINT flags, 1941 UINT *num_modes, 1942 DXGI_MODE_DESC1 *desc) = 0; 1943 1944 virtual HRESULT STDMETHODCALLTYPE FindClosestMatchingMode1( 1945 const DXGI_MODE_DESC1 *mode_to_match, 1946 DXGI_MODE_DESC1 *closest_match, 1947 IUnknown *concerned_device) = 0; 1948 1949 virtual HRESULT STDMETHODCALLTYPE GetDisplaySurfaceData1( 1950 IDXGIResource *destination) = 0; 1951 1952 virtual HRESULT STDMETHODCALLTYPE DuplicateOutput( 1953 IUnknown *device, 1954 IDXGIOutputDuplication **output_duplication) = 0; 1955 1956 }; 1957 #ifdef __CRT_UUID_DECL 1958 __CRT_UUID_DECL(IDXGIOutput1, 0x00cddea8, 0x939b, 0x4b83, 0xa3,0x40, 0xa6,0x85,0x22,0x66,0x66,0xcc) 1959 #endif 1960 #else 1961 typedef struct IDXGIOutput1Vtbl { 1962 BEGIN_INTERFACE 1963 1964 /*** IUnknown methods ***/ 1965 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 1966 IDXGIOutput1 *This, 1967 REFIID riid, 1968 void **ppvObject); 1969 1970 ULONG (STDMETHODCALLTYPE *AddRef)( 1971 IDXGIOutput1 *This); 1972 1973 ULONG (STDMETHODCALLTYPE *Release)( 1974 IDXGIOutput1 *This); 1975 1976 /*** IDXGIObject methods ***/ 1977 HRESULT (STDMETHODCALLTYPE *SetPrivateData)( 1978 IDXGIOutput1 *This, 1979 REFGUID guid, 1980 UINT data_size, 1981 const void *data); 1982 1983 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( 1984 IDXGIOutput1 *This, 1985 REFGUID guid, 1986 const IUnknown *object); 1987 1988 HRESULT (STDMETHODCALLTYPE *GetPrivateData)( 1989 IDXGIOutput1 *This, 1990 REFGUID guid, 1991 UINT *data_size, 1992 void *data); 1993 1994 HRESULT (STDMETHODCALLTYPE *GetParent)( 1995 IDXGIOutput1 *This, 1996 REFIID riid, 1997 void **parent); 1998 1999 /*** IDXGIOutput methods ***/ 2000 HRESULT (STDMETHODCALLTYPE *GetDesc)( 2001 IDXGIOutput1 *This, 2002 DXGI_OUTPUT_DESC *desc); 2003 2004 HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)( 2005 IDXGIOutput1 *This, 2006 DXGI_FORMAT format, 2007 UINT flags, 2008 UINT *mode_count, 2009 DXGI_MODE_DESC *desc); 2010 2011 HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)( 2012 IDXGIOutput1 *This, 2013 const DXGI_MODE_DESC *mode, 2014 DXGI_MODE_DESC *closest_match, 2015 IUnknown *device); 2016 2017 HRESULT (STDMETHODCALLTYPE *WaitForVBlank)( 2018 IDXGIOutput1 *This); 2019 2020 HRESULT (STDMETHODCALLTYPE *TakeOwnership)( 2021 IDXGIOutput1 *This, 2022 IUnknown *device, 2023 WINBOOL exclusive); 2024 2025 void (STDMETHODCALLTYPE *ReleaseOwnership)( 2026 IDXGIOutput1 *This); 2027 2028 HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)( 2029 IDXGIOutput1 *This, 2030 DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps); 2031 2032 HRESULT (STDMETHODCALLTYPE *SetGammaControl)( 2033 IDXGIOutput1 *This, 2034 const DXGI_GAMMA_CONTROL *gamma_control); 2035 2036 HRESULT (STDMETHODCALLTYPE *GetGammaControl)( 2037 IDXGIOutput1 *This, 2038 DXGI_GAMMA_CONTROL *gamma_control); 2039 2040 HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)( 2041 IDXGIOutput1 *This, 2042 IDXGISurface *surface); 2043 2044 HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)( 2045 IDXGIOutput1 *This, 2046 IDXGISurface *surface); 2047 2048 HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)( 2049 IDXGIOutput1 *This, 2050 DXGI_FRAME_STATISTICS *stats); 2051 2052 /*** IDXGIOutput1 methods ***/ 2053 HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)( 2054 IDXGIOutput1 *This, 2055 DXGI_FORMAT enum_format, 2056 UINT flags, 2057 UINT *num_modes, 2058 DXGI_MODE_DESC1 *desc); 2059 2060 HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)( 2061 IDXGIOutput1 *This, 2062 const DXGI_MODE_DESC1 *mode_to_match, 2063 DXGI_MODE_DESC1 *closest_match, 2064 IUnknown *concerned_device); 2065 2066 HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)( 2067 IDXGIOutput1 *This, 2068 IDXGIResource *destination); 2069 2070 HRESULT (STDMETHODCALLTYPE *DuplicateOutput)( 2071 IDXGIOutput1 *This, 2072 IUnknown *device, 2073 IDXGIOutputDuplication **output_duplication); 2074 2075 END_INTERFACE 2076 } IDXGIOutput1Vtbl; 2077 2078 interface IDXGIOutput1 { 2079 CONST_VTBL IDXGIOutput1Vtbl* lpVtbl; 2080 }; 2081 2082 #ifdef COBJMACROS 2083 #ifndef WIDL_C_INLINE_WRAPPERS 2084 /*** IUnknown methods ***/ 2085 #define IDXGIOutput1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 2086 #define IDXGIOutput1_AddRef(This) (This)->lpVtbl->AddRef(This) 2087 #define IDXGIOutput1_Release(This) (This)->lpVtbl->Release(This) 2088 /*** IDXGIObject methods ***/ 2089 #define IDXGIOutput1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) 2090 #define IDXGIOutput1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) 2091 #define IDXGIOutput1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) 2092 #define IDXGIOutput1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) 2093 /*** IDXGIOutput methods ***/ 2094 #define IDXGIOutput1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) 2095 #define IDXGIOutput1_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc) 2096 #define IDXGIOutput1_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device) 2097 #define IDXGIOutput1_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This) 2098 #define IDXGIOutput1_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive) 2099 #define IDXGIOutput1_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This) 2100 #define IDXGIOutput1_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps) 2101 #define IDXGIOutput1_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control) 2102 #define IDXGIOutput1_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control) 2103 #define IDXGIOutput1_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface) 2104 #define IDXGIOutput1_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface) 2105 #define IDXGIOutput1_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats) 2106 /*** IDXGIOutput1 methods ***/ 2107 #define IDXGIOutput1_GetDisplayModeList1(This,enum_format,flags,num_modes,desc) (This)->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc) 2108 #define IDXGIOutput1_FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device) 2109 #define IDXGIOutput1_GetDisplaySurfaceData1(This,destination) (This)->lpVtbl->GetDisplaySurfaceData1(This,destination) 2110 #define IDXGIOutput1_DuplicateOutput(This,device,output_duplication) (This)->lpVtbl->DuplicateOutput(This,device,output_duplication) 2111 #else 2112 /*** IUnknown methods ***/ 2113 static FORCEINLINE HRESULT IDXGIOutput1_QueryInterface(IDXGIOutput1* This,REFIID riid,void **ppvObject) { 2114 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 2115 } 2116 static FORCEINLINE ULONG IDXGIOutput1_AddRef(IDXGIOutput1* This) { 2117 return This->lpVtbl->AddRef(This); 2118 } 2119 static FORCEINLINE ULONG IDXGIOutput1_Release(IDXGIOutput1* This) { 2120 return This->lpVtbl->Release(This); 2121 } 2122 /*** IDXGIObject methods ***/ 2123 static FORCEINLINE HRESULT IDXGIOutput1_SetPrivateData(IDXGIOutput1* This,REFGUID guid,UINT data_size,const void *data) { 2124 return This->lpVtbl->SetPrivateData(This,guid,data_size,data); 2125 } 2126 static FORCEINLINE HRESULT IDXGIOutput1_SetPrivateDataInterface(IDXGIOutput1* This,REFGUID guid,const IUnknown *object) { 2127 return This->lpVtbl->SetPrivateDataInterface(This,guid,object); 2128 } 2129 static FORCEINLINE HRESULT IDXGIOutput1_GetPrivateData(IDXGIOutput1* This,REFGUID guid,UINT *data_size,void *data) { 2130 return This->lpVtbl->GetPrivateData(This,guid,data_size,data); 2131 } 2132 static FORCEINLINE HRESULT IDXGIOutput1_GetParent(IDXGIOutput1* This,REFIID riid,void **parent) { 2133 return This->lpVtbl->GetParent(This,riid,parent); 2134 } 2135 /*** IDXGIOutput methods ***/ 2136 static FORCEINLINE HRESULT IDXGIOutput1_GetDesc(IDXGIOutput1* This,DXGI_OUTPUT_DESC *desc) { 2137 return This->lpVtbl->GetDesc(This,desc); 2138 } 2139 static FORCEINLINE HRESULT IDXGIOutput1_GetDisplayModeList(IDXGIOutput1* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) { 2140 return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc); 2141 } 2142 static FORCEINLINE HRESULT IDXGIOutput1_FindClosestMatchingMode(IDXGIOutput1* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) { 2143 return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device); 2144 } 2145 static FORCEINLINE HRESULT IDXGIOutput1_WaitForVBlank(IDXGIOutput1* This) { 2146 return This->lpVtbl->WaitForVBlank(This); 2147 } 2148 static FORCEINLINE HRESULT IDXGIOutput1_TakeOwnership(IDXGIOutput1* This,IUnknown *device,WINBOOL exclusive) { 2149 return This->lpVtbl->TakeOwnership(This,device,exclusive); 2150 } 2151 static FORCEINLINE void IDXGIOutput1_ReleaseOwnership(IDXGIOutput1* This) { 2152 This->lpVtbl->ReleaseOwnership(This); 2153 } 2154 static FORCEINLINE HRESULT IDXGIOutput1_GetGammaControlCapabilities(IDXGIOutput1* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) { 2155 return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps); 2156 } 2157 static FORCEINLINE HRESULT IDXGIOutput1_SetGammaControl(IDXGIOutput1* This,const DXGI_GAMMA_CONTROL *gamma_control) { 2158 return This->lpVtbl->SetGammaControl(This,gamma_control); 2159 } 2160 static FORCEINLINE HRESULT IDXGIOutput1_GetGammaControl(IDXGIOutput1* This,DXGI_GAMMA_CONTROL *gamma_control) { 2161 return This->lpVtbl->GetGammaControl(This,gamma_control); 2162 } 2163 static FORCEINLINE HRESULT IDXGIOutput1_SetDisplaySurface(IDXGIOutput1* This,IDXGISurface *surface) { 2164 return This->lpVtbl->SetDisplaySurface(This,surface); 2165 } 2166 static FORCEINLINE HRESULT IDXGIOutput1_GetDisplaySurfaceData(IDXGIOutput1* This,IDXGISurface *surface) { 2167 return This->lpVtbl->GetDisplaySurfaceData(This,surface); 2168 } 2169 static FORCEINLINE HRESULT IDXGIOutput1_GetFrameStatistics(IDXGIOutput1* This,DXGI_FRAME_STATISTICS *stats) { 2170 return This->lpVtbl->GetFrameStatistics(This,stats); 2171 } 2172 /*** IDXGIOutput1 methods ***/ 2173 static FORCEINLINE HRESULT IDXGIOutput1_GetDisplayModeList1(IDXGIOutput1* This,DXGI_FORMAT enum_format,UINT flags,UINT *num_modes,DXGI_MODE_DESC1 *desc) { 2174 return This->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc); 2175 } 2176 static FORCEINLINE HRESULT IDXGIOutput1_FindClosestMatchingMode1(IDXGIOutput1* This,const DXGI_MODE_DESC1 *mode_to_match,DXGI_MODE_DESC1 *closest_match,IUnknown *concerned_device) { 2177 return This->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device); 2178 } 2179 static FORCEINLINE HRESULT IDXGIOutput1_GetDisplaySurfaceData1(IDXGIOutput1* This,IDXGIResource *destination) { 2180 return This->lpVtbl->GetDisplaySurfaceData1(This,destination); 2181 } 2182 static FORCEINLINE HRESULT IDXGIOutput1_DuplicateOutput(IDXGIOutput1* This,IUnknown *device,IDXGIOutputDuplication **output_duplication) { 2183 return This->lpVtbl->DuplicateOutput(This,device,output_duplication); 2184 } 2185 #endif 2186 #endif 2187 2188 #endif 2189 2190 2191 #endif /* __IDXGIOutput1_INTERFACE_DEFINED__ */ 2192 2193 /* Begin additional prototypes for all interfaces */ 2194 2195 2196 /* End additional prototypes */ 2197 2198 #ifdef __cplusplus 2199 } 2200 #endif 2201 2202 #endif /* __dxgi1_2_h__ */ 2203