ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MSYS2/mingw32/i686-w64-mingw32/include/dxgi1_2.h
Revision: 1166
Committed: Tue Oct 26 14:22:36 2021 UTC (4 years ago) by rossy
Content type: text/x-chdr
File size: 89656 byte(s)
Log Message:
Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File Contents

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