ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MSYS2/mingw32/i686-w64-mingw32/include/dxgi1_3.h
Revision: 1166
Committed: Tue Oct 26 14:22:36 2021 UTC (4 years ago) by rossy
Content type: text/x-chdr
File size: 82384 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_3.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_3_h__
17 #define __dxgi1_3_h__
18
19 /* Forward declarations */
20
21 #ifndef __IDXGIDevice3_FWD_DEFINED__
22 #define __IDXGIDevice3_FWD_DEFINED__
23 typedef interface IDXGIDevice3 IDXGIDevice3;
24 #ifdef __cplusplus
25 interface IDXGIDevice3;
26 #endif /* __cplusplus */
27 #endif
28
29 #ifndef __IDXGISwapChain2_FWD_DEFINED__
30 #define __IDXGISwapChain2_FWD_DEFINED__
31 typedef interface IDXGISwapChain2 IDXGISwapChain2;
32 #ifdef __cplusplus
33 interface IDXGISwapChain2;
34 #endif /* __cplusplus */
35 #endif
36
37 #ifndef __IDXGIOutput2_FWD_DEFINED__
38 #define __IDXGIOutput2_FWD_DEFINED__
39 typedef interface IDXGIOutput2 IDXGIOutput2;
40 #ifdef __cplusplus
41 interface IDXGIOutput2;
42 #endif /* __cplusplus */
43 #endif
44
45 #ifndef __IDXGIFactory3_FWD_DEFINED__
46 #define __IDXGIFactory3_FWD_DEFINED__
47 typedef interface IDXGIFactory3 IDXGIFactory3;
48 #ifdef __cplusplus
49 interface IDXGIFactory3;
50 #endif /* __cplusplus */
51 #endif
52
53 #ifndef __IDXGIDecodeSwapChain_FWD_DEFINED__
54 #define __IDXGIDecodeSwapChain_FWD_DEFINED__
55 typedef interface IDXGIDecodeSwapChain IDXGIDecodeSwapChain;
56 #ifdef __cplusplus
57 interface IDXGIDecodeSwapChain;
58 #endif /* __cplusplus */
59 #endif
60
61 #ifndef __IDXGIFactoryMedia_FWD_DEFINED__
62 #define __IDXGIFactoryMedia_FWD_DEFINED__
63 typedef interface IDXGIFactoryMedia IDXGIFactoryMedia;
64 #ifdef __cplusplus
65 interface IDXGIFactoryMedia;
66 #endif /* __cplusplus */
67 #endif
68
69 #ifndef __IDXGISwapChainMedia_FWD_DEFINED__
70 #define __IDXGISwapChainMedia_FWD_DEFINED__
71 typedef interface IDXGISwapChainMedia IDXGISwapChainMedia;
72 #ifdef __cplusplus
73 interface IDXGISwapChainMedia;
74 #endif /* __cplusplus */
75 #endif
76
77 #ifndef __IDXGIOutput3_FWD_DEFINED__
78 #define __IDXGIOutput3_FWD_DEFINED__
79 typedef interface IDXGIOutput3 IDXGIOutput3;
80 #ifdef __cplusplus
81 interface IDXGIOutput3;
82 #endif /* __cplusplus */
83 #endif
84
85 /* Headers for imported files */
86
87 #include <dxgi1_2.h>
88
89 #ifdef __cplusplus
90 extern "C" {
91 #endif
92
93 typedef struct DXGI_MATRIX_3X2_F {
94 float _11;
95 float _12;
96 float _21;
97 float _22;
98 float _31;
99 float _32;
100 } DXGI_MATRIX_3X2_F;
101 typedef struct DXGI_DECODE_SWAP_CHAIN_DESC {
102 UINT Flags;
103 } DXGI_DECODE_SWAP_CHAIN_DESC;
104 typedef enum DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS {
105 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE = 0x1,
106 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709 = 0x2,
107 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC = 0x4
108 } DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS;
109 typedef enum DXGI_FRAME_PRESENTATION_MODE {
110 DXGI_FRAME_PRESENTATION_MODE_COMPOSED = 0,
111 DXGI_FRAME_PRESENTATION_MODE_OVERLAY = 1,
112 DXGI_FRAME_PRESENTATION_MODE_NONE = 2,
113 DXGI_FRAME_PRESENTATION_MODE_COMPOSITION_FAILURE = 3
114 } DXGI_FRAME_PRESENTATION_MODE;
115 typedef struct DXGI_FRAME_STATISTICS_MEDIA {
116 UINT PresentCount;
117 UINT PresentRefreshCount;
118 UINT SyncRefreshCount;
119 LARGE_INTEGER SyncQPCTime;
120 LARGE_INTEGER SyncGPUTime;
121 DXGI_FRAME_PRESENTATION_MODE CompositionMode;
122 UINT ApprovedPresentDuration;
123 } DXGI_FRAME_STATISTICS_MEDIA;
124 typedef enum DXGI_OVERLAY_SUPPORT_FLAG {
125 DXGI_OVERLAY_SUPPORT_FLAG_DIRECT = 0x1,
126 DXGI_OVERLAY_SUPPORT_FLAG_SCALING = 0x2
127 } DXGI_OVERLAY_SUPPORT_FLAG;
128 /*****************************************************************************
129 * IDXGIDevice3 interface
130 */
131 #ifndef __IDXGIDevice3_INTERFACE_DEFINED__
132 #define __IDXGIDevice3_INTERFACE_DEFINED__
133
134 DEFINE_GUID(IID_IDXGIDevice3, 0x6007896c, 0x3244, 0x4afd, 0xbf,0x18, 0xa6,0xd3,0xbe,0xda,0x50,0x23);
135 #if defined(__cplusplus) && !defined(CINTERFACE)
136 MIDL_INTERFACE("6007896c-3244-4afd-bf18-a6d3beda5023")
137 IDXGIDevice3 : public IDXGIDevice2
138 {
139 virtual void STDMETHODCALLTYPE Trim(
140 ) = 0;
141
142 };
143 #ifdef __CRT_UUID_DECL
144 __CRT_UUID_DECL(IDXGIDevice3, 0x6007896c, 0x3244, 0x4afd, 0xbf,0x18, 0xa6,0xd3,0xbe,0xda,0x50,0x23)
145 #endif
146 #else
147 typedef struct IDXGIDevice3Vtbl {
148 BEGIN_INTERFACE
149
150 /*** IUnknown methods ***/
151 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
152 IDXGIDevice3 *This,
153 REFIID riid,
154 void **ppvObject);
155
156 ULONG (STDMETHODCALLTYPE *AddRef)(
157 IDXGIDevice3 *This);
158
159 ULONG (STDMETHODCALLTYPE *Release)(
160 IDXGIDevice3 *This);
161
162 /*** IDXGIObject methods ***/
163 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
164 IDXGIDevice3 *This,
165 REFGUID guid,
166 UINT data_size,
167 const void *data);
168
169 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
170 IDXGIDevice3 *This,
171 REFGUID guid,
172 const IUnknown *object);
173
174 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
175 IDXGIDevice3 *This,
176 REFGUID guid,
177 UINT *data_size,
178 void *data);
179
180 HRESULT (STDMETHODCALLTYPE *GetParent)(
181 IDXGIDevice3 *This,
182 REFIID riid,
183 void **parent);
184
185 /*** IDXGIDevice methods ***/
186 HRESULT (STDMETHODCALLTYPE *GetAdapter)(
187 IDXGIDevice3 *This,
188 IDXGIAdapter **adapter);
189
190 HRESULT (STDMETHODCALLTYPE *CreateSurface)(
191 IDXGIDevice3 *This,
192 const DXGI_SURFACE_DESC *desc,
193 UINT surface_count,
194 DXGI_USAGE usage,
195 const DXGI_SHARED_RESOURCE *shared_resource,
196 IDXGISurface **surface);
197
198 HRESULT (STDMETHODCALLTYPE *QueryResourceResidency)(
199 IDXGIDevice3 *This,
200 IUnknown *const *resources,
201 DXGI_RESIDENCY *residency,
202 UINT resource_count);
203
204 HRESULT (STDMETHODCALLTYPE *SetGPUThreadPriority)(
205 IDXGIDevice3 *This,
206 INT priority);
207
208 HRESULT (STDMETHODCALLTYPE *GetGPUThreadPriority)(
209 IDXGIDevice3 *This,
210 INT *priority);
211
212 /*** IDXGIDevice1 methods ***/
213 HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)(
214 IDXGIDevice3 *This,
215 UINT MaxLatency);
216
217 HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)(
218 IDXGIDevice3 *This,
219 UINT *pMaxLatency);
220
221 /*** IDXGIDevice2 methods ***/
222 HRESULT (STDMETHODCALLTYPE *OfferResources)(
223 IDXGIDevice3 *This,
224 UINT NumResources,
225 IDXGIResource *const *ppResources,
226 DXGI_OFFER_RESOURCE_PRIORITY Priority);
227
228 HRESULT (STDMETHODCALLTYPE *ReclaimResources)(
229 IDXGIDevice3 *This,
230 UINT NumResources,
231 IDXGIResource *const *ppResources,
232 WINBOOL *pDiscarded);
233
234 HRESULT (STDMETHODCALLTYPE *EnqueueSetEvent)(
235 IDXGIDevice3 *This,
236 HANDLE hEvent);
237
238 /*** IDXGIDevice3 methods ***/
239 void (STDMETHODCALLTYPE *Trim)(
240 IDXGIDevice3 *This);
241
242 END_INTERFACE
243 } IDXGIDevice3Vtbl;
244
245 interface IDXGIDevice3 {
246 CONST_VTBL IDXGIDevice3Vtbl* lpVtbl;
247 };
248
249 #ifdef COBJMACROS
250 #ifndef WIDL_C_INLINE_WRAPPERS
251 /*** IUnknown methods ***/
252 #define IDXGIDevice3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
253 #define IDXGIDevice3_AddRef(This) (This)->lpVtbl->AddRef(This)
254 #define IDXGIDevice3_Release(This) (This)->lpVtbl->Release(This)
255 /*** IDXGIObject methods ***/
256 #define IDXGIDevice3_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
257 #define IDXGIDevice3_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
258 #define IDXGIDevice3_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
259 #define IDXGIDevice3_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
260 /*** IDXGIDevice methods ***/
261 #define IDXGIDevice3_GetAdapter(This,adapter) (This)->lpVtbl->GetAdapter(This,adapter)
262 #define IDXGIDevice3_CreateSurface(This,desc,surface_count,usage,shared_resource,surface) (This)->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface)
263 #define IDXGIDevice3_QueryResourceResidency(This,resources,residency,resource_count) (This)->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count)
264 #define IDXGIDevice3_SetGPUThreadPriority(This,priority) (This)->lpVtbl->SetGPUThreadPriority(This,priority)
265 #define IDXGIDevice3_GetGPUThreadPriority(This,priority) (This)->lpVtbl->GetGPUThreadPriority(This,priority)
266 /*** IDXGIDevice1 methods ***/
267 #define IDXGIDevice3_SetMaximumFrameLatency(This,MaxLatency) (This)->lpVtbl->SetMaximumFrameLatency(This,MaxLatency)
268 #define IDXGIDevice3_GetMaximumFrameLatency(This,pMaxLatency) (This)->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency)
269 /*** IDXGIDevice2 methods ***/
270 #define IDXGIDevice3_OfferResources(This,NumResources,ppResources,Priority) (This)->lpVtbl->OfferResources(This,NumResources,ppResources,Priority)
271 #define IDXGIDevice3_ReclaimResources(This,NumResources,ppResources,pDiscarded) (This)->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded)
272 #define IDXGIDevice3_EnqueueSetEvent(This,hEvent) (This)->lpVtbl->EnqueueSetEvent(This,hEvent)
273 /*** IDXGIDevice3 methods ***/
274 #define IDXGIDevice3_Trim(This) (This)->lpVtbl->Trim(This)
275 #else
276 /*** IUnknown methods ***/
277 static FORCEINLINE HRESULT IDXGIDevice3_QueryInterface(IDXGIDevice3* This,REFIID riid,void **ppvObject) {
278 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
279 }
280 static FORCEINLINE ULONG IDXGIDevice3_AddRef(IDXGIDevice3* This) {
281 return This->lpVtbl->AddRef(This);
282 }
283 static FORCEINLINE ULONG IDXGIDevice3_Release(IDXGIDevice3* This) {
284 return This->lpVtbl->Release(This);
285 }
286 /*** IDXGIObject methods ***/
287 static FORCEINLINE HRESULT IDXGIDevice3_SetPrivateData(IDXGIDevice3* This,REFGUID guid,UINT data_size,const void *data) {
288 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
289 }
290 static FORCEINLINE HRESULT IDXGIDevice3_SetPrivateDataInterface(IDXGIDevice3* This,REFGUID guid,const IUnknown *object) {
291 return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
292 }
293 static FORCEINLINE HRESULT IDXGIDevice3_GetPrivateData(IDXGIDevice3* This,REFGUID guid,UINT *data_size,void *data) {
294 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
295 }
296 static FORCEINLINE HRESULT IDXGIDevice3_GetParent(IDXGIDevice3* This,REFIID riid,void **parent) {
297 return This->lpVtbl->GetParent(This,riid,parent);
298 }
299 /*** IDXGIDevice methods ***/
300 static FORCEINLINE HRESULT IDXGIDevice3_GetAdapter(IDXGIDevice3* This,IDXGIAdapter **adapter) {
301 return This->lpVtbl->GetAdapter(This,adapter);
302 }
303 static FORCEINLINE HRESULT IDXGIDevice3_CreateSurface(IDXGIDevice3* This,const DXGI_SURFACE_DESC *desc,UINT surface_count,DXGI_USAGE usage,const DXGI_SHARED_RESOURCE *shared_resource,IDXGISurface **surface) {
304 return This->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface);
305 }
306 static FORCEINLINE HRESULT IDXGIDevice3_QueryResourceResidency(IDXGIDevice3* This,IUnknown *const *resources,DXGI_RESIDENCY *residency,UINT resource_count) {
307 return This->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count);
308 }
309 static FORCEINLINE HRESULT IDXGIDevice3_SetGPUThreadPriority(IDXGIDevice3* This,INT priority) {
310 return This->lpVtbl->SetGPUThreadPriority(This,priority);
311 }
312 static FORCEINLINE HRESULT IDXGIDevice3_GetGPUThreadPriority(IDXGIDevice3* This,INT *priority) {
313 return This->lpVtbl->GetGPUThreadPriority(This,priority);
314 }
315 /*** IDXGIDevice1 methods ***/
316 static FORCEINLINE HRESULT IDXGIDevice3_SetMaximumFrameLatency(IDXGIDevice3* This,UINT MaxLatency) {
317 return This->lpVtbl->SetMaximumFrameLatency(This,MaxLatency);
318 }
319 static FORCEINLINE HRESULT IDXGIDevice3_GetMaximumFrameLatency(IDXGIDevice3* This,UINT *pMaxLatency) {
320 return This->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency);
321 }
322 /*** IDXGIDevice2 methods ***/
323 static FORCEINLINE HRESULT IDXGIDevice3_OfferResources(IDXGIDevice3* This,UINT NumResources,IDXGIResource *const *ppResources,DXGI_OFFER_RESOURCE_PRIORITY Priority) {
324 return This->lpVtbl->OfferResources(This,NumResources,ppResources,Priority);
325 }
326 static FORCEINLINE HRESULT IDXGIDevice3_ReclaimResources(IDXGIDevice3* This,UINT NumResources,IDXGIResource *const *ppResources,WINBOOL *pDiscarded) {
327 return This->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded);
328 }
329 static FORCEINLINE HRESULT IDXGIDevice3_EnqueueSetEvent(IDXGIDevice3* This,HANDLE hEvent) {
330 return This->lpVtbl->EnqueueSetEvent(This,hEvent);
331 }
332 /*** IDXGIDevice3 methods ***/
333 static FORCEINLINE void IDXGIDevice3_Trim(IDXGIDevice3* This) {
334 This->lpVtbl->Trim(This);
335 }
336 #endif
337 #endif
338
339 #endif
340
341
342 #endif /* __IDXGIDevice3_INTERFACE_DEFINED__ */
343
344 /*****************************************************************************
345 * IDXGISwapChain2 interface
346 */
347 #ifndef __IDXGISwapChain2_INTERFACE_DEFINED__
348 #define __IDXGISwapChain2_INTERFACE_DEFINED__
349
350 DEFINE_GUID(IID_IDXGISwapChain2, 0xa8be2ac4, 0x199f, 0x4946, 0xb3,0x31, 0x79,0x59,0x9f,0xb9,0x8d,0xe7);
351 #if defined(__cplusplus) && !defined(CINTERFACE)
352 MIDL_INTERFACE("a8be2ac4-199f-4946-b331-79599fb98de7")
353 IDXGISwapChain2 : public IDXGISwapChain1
354 {
355 virtual HRESULT STDMETHODCALLTYPE SetSourceSize(
356 UINT width,
357 UINT height) = 0;
358
359 virtual HRESULT STDMETHODCALLTYPE GetSourceSize(
360 UINT *width,
361 UINT *height) = 0;
362
363 virtual HRESULT STDMETHODCALLTYPE SetMaximumFrameLatency(
364 UINT max_latency) = 0;
365
366 virtual HRESULT STDMETHODCALLTYPE GetMaximumFrameLatency(
367 UINT *max_latency) = 0;
368
369 virtual HANDLE STDMETHODCALLTYPE GetFrameLatencyWaitableObject(
370 ) = 0;
371
372 virtual HRESULT STDMETHODCALLTYPE SetMatrixTransform(
373 const DXGI_MATRIX_3X2_F *matrix) = 0;
374
375 virtual HRESULT STDMETHODCALLTYPE GetMatrixTransform(
376 DXGI_MATRIX_3X2_F *matrix) = 0;
377
378 };
379 #ifdef __CRT_UUID_DECL
380 __CRT_UUID_DECL(IDXGISwapChain2, 0xa8be2ac4, 0x199f, 0x4946, 0xb3,0x31, 0x79,0x59,0x9f,0xb9,0x8d,0xe7)
381 #endif
382 #else
383 typedef struct IDXGISwapChain2Vtbl {
384 BEGIN_INTERFACE
385
386 /*** IUnknown methods ***/
387 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
388 IDXGISwapChain2 *This,
389 REFIID riid,
390 void **ppvObject);
391
392 ULONG (STDMETHODCALLTYPE *AddRef)(
393 IDXGISwapChain2 *This);
394
395 ULONG (STDMETHODCALLTYPE *Release)(
396 IDXGISwapChain2 *This);
397
398 /*** IDXGIObject methods ***/
399 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
400 IDXGISwapChain2 *This,
401 REFGUID guid,
402 UINT data_size,
403 const void *data);
404
405 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
406 IDXGISwapChain2 *This,
407 REFGUID guid,
408 const IUnknown *object);
409
410 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
411 IDXGISwapChain2 *This,
412 REFGUID guid,
413 UINT *data_size,
414 void *data);
415
416 HRESULT (STDMETHODCALLTYPE *GetParent)(
417 IDXGISwapChain2 *This,
418 REFIID riid,
419 void **parent);
420
421 /*** IDXGIDeviceSubObject methods ***/
422 HRESULT (STDMETHODCALLTYPE *GetDevice)(
423 IDXGISwapChain2 *This,
424 REFIID riid,
425 void **device);
426
427 /*** IDXGISwapChain methods ***/
428 HRESULT (STDMETHODCALLTYPE *Present)(
429 IDXGISwapChain2 *This,
430 UINT sync_interval,
431 UINT flags);
432
433 HRESULT (STDMETHODCALLTYPE *GetBuffer)(
434 IDXGISwapChain2 *This,
435 UINT buffer_idx,
436 REFIID riid,
437 void **surface);
438
439 HRESULT (STDMETHODCALLTYPE *SetFullscreenState)(
440 IDXGISwapChain2 *This,
441 WINBOOL fullscreen,
442 IDXGIOutput *target);
443
444 HRESULT (STDMETHODCALLTYPE *GetFullscreenState)(
445 IDXGISwapChain2 *This,
446 WINBOOL *fullscreen,
447 IDXGIOutput **target);
448
449 HRESULT (STDMETHODCALLTYPE *GetDesc)(
450 IDXGISwapChain2 *This,
451 DXGI_SWAP_CHAIN_DESC *desc);
452
453 HRESULT (STDMETHODCALLTYPE *ResizeBuffers)(
454 IDXGISwapChain2 *This,
455 UINT buffer_count,
456 UINT width,
457 UINT height,
458 DXGI_FORMAT format,
459 UINT flags);
460
461 HRESULT (STDMETHODCALLTYPE *ResizeTarget)(
462 IDXGISwapChain2 *This,
463 const DXGI_MODE_DESC *target_mode_desc);
464
465 HRESULT (STDMETHODCALLTYPE *GetContainingOutput)(
466 IDXGISwapChain2 *This,
467 IDXGIOutput **output);
468
469 HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
470 IDXGISwapChain2 *This,
471 DXGI_FRAME_STATISTICS *stats);
472
473 HRESULT (STDMETHODCALLTYPE *GetLastPresentCount)(
474 IDXGISwapChain2 *This,
475 UINT *last_present_count);
476
477 /*** IDXGISwapChain1 methods ***/
478 HRESULT (STDMETHODCALLTYPE *GetDesc1)(
479 IDXGISwapChain2 *This,
480 DXGI_SWAP_CHAIN_DESC1 *pDesc);
481
482 HRESULT (STDMETHODCALLTYPE *GetFullscreenDesc)(
483 IDXGISwapChain2 *This,
484 DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc);
485
486 HRESULT (STDMETHODCALLTYPE *GetHwnd)(
487 IDXGISwapChain2 *This,
488 HWND *pHwnd);
489
490 HRESULT (STDMETHODCALLTYPE *GetCoreWindow)(
491 IDXGISwapChain2 *This,
492 REFIID refiid,
493 void **ppUnk);
494
495 HRESULT (STDMETHODCALLTYPE *Present1)(
496 IDXGISwapChain2 *This,
497 UINT SyncInterval,
498 UINT PresentFlags,
499 const DXGI_PRESENT_PARAMETERS *pPresentParameters);
500
501 WINBOOL (STDMETHODCALLTYPE *IsTemporaryMonoSupported)(
502 IDXGISwapChain2 *This);
503
504 HRESULT (STDMETHODCALLTYPE *GetRestrictToOutput)(
505 IDXGISwapChain2 *This,
506 IDXGIOutput **ppRestrictToOutput);
507
508 HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)(
509 IDXGISwapChain2 *This,
510 const DXGI_RGBA *pColor);
511
512 HRESULT (STDMETHODCALLTYPE *GetBackgroundColor)(
513 IDXGISwapChain2 *This,
514 DXGI_RGBA *pColor);
515
516 HRESULT (STDMETHODCALLTYPE *SetRotation)(
517 IDXGISwapChain2 *This,
518 DXGI_MODE_ROTATION Rotation);
519
520 HRESULT (STDMETHODCALLTYPE *GetRotation)(
521 IDXGISwapChain2 *This,
522 DXGI_MODE_ROTATION *pRotation);
523
524 /*** IDXGISwapChain2 methods ***/
525 HRESULT (STDMETHODCALLTYPE *SetSourceSize)(
526 IDXGISwapChain2 *This,
527 UINT width,
528 UINT height);
529
530 HRESULT (STDMETHODCALLTYPE *GetSourceSize)(
531 IDXGISwapChain2 *This,
532 UINT *width,
533 UINT *height);
534
535 HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)(
536 IDXGISwapChain2 *This,
537 UINT max_latency);
538
539 HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)(
540 IDXGISwapChain2 *This,
541 UINT *max_latency);
542
543 HANDLE (STDMETHODCALLTYPE *GetFrameLatencyWaitableObject)(
544 IDXGISwapChain2 *This);
545
546 HRESULT (STDMETHODCALLTYPE *SetMatrixTransform)(
547 IDXGISwapChain2 *This,
548 const DXGI_MATRIX_3X2_F *matrix);
549
550 HRESULT (STDMETHODCALLTYPE *GetMatrixTransform)(
551 IDXGISwapChain2 *This,
552 DXGI_MATRIX_3X2_F *matrix);
553
554 END_INTERFACE
555 } IDXGISwapChain2Vtbl;
556
557 interface IDXGISwapChain2 {
558 CONST_VTBL IDXGISwapChain2Vtbl* lpVtbl;
559 };
560
561 #ifdef COBJMACROS
562 #ifndef WIDL_C_INLINE_WRAPPERS
563 /*** IUnknown methods ***/
564 #define IDXGISwapChain2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
565 #define IDXGISwapChain2_AddRef(This) (This)->lpVtbl->AddRef(This)
566 #define IDXGISwapChain2_Release(This) (This)->lpVtbl->Release(This)
567 /*** IDXGIObject methods ***/
568 #define IDXGISwapChain2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
569 #define IDXGISwapChain2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
570 #define IDXGISwapChain2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
571 #define IDXGISwapChain2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
572 /*** IDXGIDeviceSubObject methods ***/
573 #define IDXGISwapChain2_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
574 /*** IDXGISwapChain methods ***/
575 #define IDXGISwapChain2_Present(This,sync_interval,flags) (This)->lpVtbl->Present(This,sync_interval,flags)
576 #define IDXGISwapChain2_GetBuffer(This,buffer_idx,riid,surface) (This)->lpVtbl->GetBuffer(This,buffer_idx,riid,surface)
577 #define IDXGISwapChain2_SetFullscreenState(This,fullscreen,target) (This)->lpVtbl->SetFullscreenState(This,fullscreen,target)
578 #define IDXGISwapChain2_GetFullscreenState(This,fullscreen,target) (This)->lpVtbl->GetFullscreenState(This,fullscreen,target)
579 #define IDXGISwapChain2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
580 #define IDXGISwapChain2_ResizeBuffers(This,buffer_count,width,height,format,flags) (This)->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags)
581 #define IDXGISwapChain2_ResizeTarget(This,target_mode_desc) (This)->lpVtbl->ResizeTarget(This,target_mode_desc)
582 #define IDXGISwapChain2_GetContainingOutput(This,output) (This)->lpVtbl->GetContainingOutput(This,output)
583 #define IDXGISwapChain2_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
584 #define IDXGISwapChain2_GetLastPresentCount(This,last_present_count) (This)->lpVtbl->GetLastPresentCount(This,last_present_count)
585 /*** IDXGISwapChain1 methods ***/
586 #define IDXGISwapChain2_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
587 #define IDXGISwapChain2_GetFullscreenDesc(This,pDesc) (This)->lpVtbl->GetFullscreenDesc(This,pDesc)
588 #define IDXGISwapChain2_GetHwnd(This,pHwnd) (This)->lpVtbl->GetHwnd(This,pHwnd)
589 #define IDXGISwapChain2_GetCoreWindow(This,refiid,ppUnk) (This)->lpVtbl->GetCoreWindow(This,refiid,ppUnk)
590 #define IDXGISwapChain2_Present1(This,SyncInterval,PresentFlags,pPresentParameters) (This)->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters)
591 #define IDXGISwapChain2_IsTemporaryMonoSupported(This) (This)->lpVtbl->IsTemporaryMonoSupported(This)
592 #define IDXGISwapChain2_GetRestrictToOutput(This,ppRestrictToOutput) (This)->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput)
593 #define IDXGISwapChain2_SetBackgroundColor(This,pColor) (This)->lpVtbl->SetBackgroundColor(This,pColor)
594 #define IDXGISwapChain2_GetBackgroundColor(This,pColor) (This)->lpVtbl->GetBackgroundColor(This,pColor)
595 #define IDXGISwapChain2_SetRotation(This,Rotation) (This)->lpVtbl->SetRotation(This,Rotation)
596 #define IDXGISwapChain2_GetRotation(This,pRotation) (This)->lpVtbl->GetRotation(This,pRotation)
597 /*** IDXGISwapChain2 methods ***/
598 #define IDXGISwapChain2_SetSourceSize(This,width,height) (This)->lpVtbl->SetSourceSize(This,width,height)
599 #define IDXGISwapChain2_GetSourceSize(This,width,height) (This)->lpVtbl->GetSourceSize(This,width,height)
600 #define IDXGISwapChain2_SetMaximumFrameLatency(This,max_latency) (This)->lpVtbl->SetMaximumFrameLatency(This,max_latency)
601 #define IDXGISwapChain2_GetMaximumFrameLatency(This,max_latency) (This)->lpVtbl->GetMaximumFrameLatency(This,max_latency)
602 #define IDXGISwapChain2_GetFrameLatencyWaitableObject(This) (This)->lpVtbl->GetFrameLatencyWaitableObject(This)
603 #define IDXGISwapChain2_SetMatrixTransform(This,matrix) (This)->lpVtbl->SetMatrixTransform(This,matrix)
604 #define IDXGISwapChain2_GetMatrixTransform(This,matrix) (This)->lpVtbl->GetMatrixTransform(This,matrix)
605 #else
606 /*** IUnknown methods ***/
607 static FORCEINLINE HRESULT IDXGISwapChain2_QueryInterface(IDXGISwapChain2* This,REFIID riid,void **ppvObject) {
608 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
609 }
610 static FORCEINLINE ULONG IDXGISwapChain2_AddRef(IDXGISwapChain2* This) {
611 return This->lpVtbl->AddRef(This);
612 }
613 static FORCEINLINE ULONG IDXGISwapChain2_Release(IDXGISwapChain2* This) {
614 return This->lpVtbl->Release(This);
615 }
616 /*** IDXGIObject methods ***/
617 static FORCEINLINE HRESULT IDXGISwapChain2_SetPrivateData(IDXGISwapChain2* This,REFGUID guid,UINT data_size,const void *data) {
618 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
619 }
620 static FORCEINLINE HRESULT IDXGISwapChain2_SetPrivateDataInterface(IDXGISwapChain2* This,REFGUID guid,const IUnknown *object) {
621 return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
622 }
623 static FORCEINLINE HRESULT IDXGISwapChain2_GetPrivateData(IDXGISwapChain2* This,REFGUID guid,UINT *data_size,void *data) {
624 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
625 }
626 static FORCEINLINE HRESULT IDXGISwapChain2_GetParent(IDXGISwapChain2* This,REFIID riid,void **parent) {
627 return This->lpVtbl->GetParent(This,riid,parent);
628 }
629 /*** IDXGIDeviceSubObject methods ***/
630 static FORCEINLINE HRESULT IDXGISwapChain2_GetDevice(IDXGISwapChain2* This,REFIID riid,void **device) {
631 return This->lpVtbl->GetDevice(This,riid,device);
632 }
633 /*** IDXGISwapChain methods ***/
634 static FORCEINLINE HRESULT IDXGISwapChain2_Present(IDXGISwapChain2* This,UINT sync_interval,UINT flags) {
635 return This->lpVtbl->Present(This,sync_interval,flags);
636 }
637 static FORCEINLINE HRESULT IDXGISwapChain2_GetBuffer(IDXGISwapChain2* This,UINT buffer_idx,REFIID riid,void **surface) {
638 return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface);
639 }
640 static FORCEINLINE HRESULT IDXGISwapChain2_SetFullscreenState(IDXGISwapChain2* This,WINBOOL fullscreen,IDXGIOutput *target) {
641 return This->lpVtbl->SetFullscreenState(This,fullscreen,target);
642 }
643 static FORCEINLINE HRESULT IDXGISwapChain2_GetFullscreenState(IDXGISwapChain2* This,WINBOOL *fullscreen,IDXGIOutput **target) {
644 return This->lpVtbl->GetFullscreenState(This,fullscreen,target);
645 }
646 static FORCEINLINE HRESULT IDXGISwapChain2_GetDesc(IDXGISwapChain2* This,DXGI_SWAP_CHAIN_DESC *desc) {
647 return This->lpVtbl->GetDesc(This,desc);
648 }
649 static FORCEINLINE HRESULT IDXGISwapChain2_ResizeBuffers(IDXGISwapChain2* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags) {
650 return This->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags);
651 }
652 static FORCEINLINE HRESULT IDXGISwapChain2_ResizeTarget(IDXGISwapChain2* This,const DXGI_MODE_DESC *target_mode_desc) {
653 return This->lpVtbl->ResizeTarget(This,target_mode_desc);
654 }
655 static FORCEINLINE HRESULT IDXGISwapChain2_GetContainingOutput(IDXGISwapChain2* This,IDXGIOutput **output) {
656 return This->lpVtbl->GetContainingOutput(This,output);
657 }
658 static FORCEINLINE HRESULT IDXGISwapChain2_GetFrameStatistics(IDXGISwapChain2* This,DXGI_FRAME_STATISTICS *stats) {
659 return This->lpVtbl->GetFrameStatistics(This,stats);
660 }
661 static FORCEINLINE HRESULT IDXGISwapChain2_GetLastPresentCount(IDXGISwapChain2* This,UINT *last_present_count) {
662 return This->lpVtbl->GetLastPresentCount(This,last_present_count);
663 }
664 /*** IDXGISwapChain1 methods ***/
665 static FORCEINLINE HRESULT IDXGISwapChain2_GetDesc1(IDXGISwapChain2* This,DXGI_SWAP_CHAIN_DESC1 *pDesc) {
666 return This->lpVtbl->GetDesc1(This,pDesc);
667 }
668 static FORCEINLINE HRESULT IDXGISwapChain2_GetFullscreenDesc(IDXGISwapChain2* This,DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) {
669 return This->lpVtbl->GetFullscreenDesc(This,pDesc);
670 }
671 static FORCEINLINE HRESULT IDXGISwapChain2_GetHwnd(IDXGISwapChain2* This,HWND *pHwnd) {
672 return This->lpVtbl->GetHwnd(This,pHwnd);
673 }
674 static FORCEINLINE HRESULT IDXGISwapChain2_GetCoreWindow(IDXGISwapChain2* This,REFIID refiid,void **ppUnk) {
675 return This->lpVtbl->GetCoreWindow(This,refiid,ppUnk);
676 }
677 static FORCEINLINE HRESULT IDXGISwapChain2_Present1(IDXGISwapChain2* This,UINT SyncInterval,UINT PresentFlags,const DXGI_PRESENT_PARAMETERS *pPresentParameters) {
678 return This->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters);
679 }
680 static FORCEINLINE WINBOOL IDXGISwapChain2_IsTemporaryMonoSupported(IDXGISwapChain2* This) {
681 return This->lpVtbl->IsTemporaryMonoSupported(This);
682 }
683 static FORCEINLINE HRESULT IDXGISwapChain2_GetRestrictToOutput(IDXGISwapChain2* This,IDXGIOutput **ppRestrictToOutput) {
684 return This->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput);
685 }
686 static FORCEINLINE HRESULT IDXGISwapChain2_SetBackgroundColor(IDXGISwapChain2* This,const DXGI_RGBA *pColor) {
687 return This->lpVtbl->SetBackgroundColor(This,pColor);
688 }
689 static FORCEINLINE HRESULT IDXGISwapChain2_GetBackgroundColor(IDXGISwapChain2* This,DXGI_RGBA *pColor) {
690 return This->lpVtbl->GetBackgroundColor(This,pColor);
691 }
692 static FORCEINLINE HRESULT IDXGISwapChain2_SetRotation(IDXGISwapChain2* This,DXGI_MODE_ROTATION Rotation) {
693 return This->lpVtbl->SetRotation(This,Rotation);
694 }
695 static FORCEINLINE HRESULT IDXGISwapChain2_GetRotation(IDXGISwapChain2* This,DXGI_MODE_ROTATION *pRotation) {
696 return This->lpVtbl->GetRotation(This,pRotation);
697 }
698 /*** IDXGISwapChain2 methods ***/
699 static FORCEINLINE HRESULT IDXGISwapChain2_SetSourceSize(IDXGISwapChain2* This,UINT width,UINT height) {
700 return This->lpVtbl->SetSourceSize(This,width,height);
701 }
702 static FORCEINLINE HRESULT IDXGISwapChain2_GetSourceSize(IDXGISwapChain2* This,UINT *width,UINT *height) {
703 return This->lpVtbl->GetSourceSize(This,width,height);
704 }
705 static FORCEINLINE HRESULT IDXGISwapChain2_SetMaximumFrameLatency(IDXGISwapChain2* This,UINT max_latency) {
706 return This->lpVtbl->SetMaximumFrameLatency(This,max_latency);
707 }
708 static FORCEINLINE HRESULT IDXGISwapChain2_GetMaximumFrameLatency(IDXGISwapChain2* This,UINT *max_latency) {
709 return This->lpVtbl->GetMaximumFrameLatency(This,max_latency);
710 }
711 static FORCEINLINE HANDLE IDXGISwapChain2_GetFrameLatencyWaitableObject(IDXGISwapChain2* This) {
712 return This->lpVtbl->GetFrameLatencyWaitableObject(This);
713 }
714 static FORCEINLINE HRESULT IDXGISwapChain2_SetMatrixTransform(IDXGISwapChain2* This,const DXGI_MATRIX_3X2_F *matrix) {
715 return This->lpVtbl->SetMatrixTransform(This,matrix);
716 }
717 static FORCEINLINE HRESULT IDXGISwapChain2_GetMatrixTransform(IDXGISwapChain2* This,DXGI_MATRIX_3X2_F *matrix) {
718 return This->lpVtbl->GetMatrixTransform(This,matrix);
719 }
720 #endif
721 #endif
722
723 #endif
724
725
726 #endif /* __IDXGISwapChain2_INTERFACE_DEFINED__ */
727
728 /*****************************************************************************
729 * IDXGIOutput2 interface
730 */
731 #ifndef __IDXGIOutput2_INTERFACE_DEFINED__
732 #define __IDXGIOutput2_INTERFACE_DEFINED__
733
734 DEFINE_GUID(IID_IDXGIOutput2, 0x595e39d1, 0x2724, 0x4663, 0x99,0xb1, 0xda,0x96,0x9d,0xe2,0x83,0x64);
735 #if defined(__cplusplus) && !defined(CINTERFACE)
736 MIDL_INTERFACE("595e39d1-2724-4663-99b1-da969de28364")
737 IDXGIOutput2 : public IDXGIOutput1
738 {
739 virtual WINBOOL STDMETHODCALLTYPE SupportsOverlays(
740 ) = 0;
741
742 };
743 #ifdef __CRT_UUID_DECL
744 __CRT_UUID_DECL(IDXGIOutput2, 0x595e39d1, 0x2724, 0x4663, 0x99,0xb1, 0xda,0x96,0x9d,0xe2,0x83,0x64)
745 #endif
746 #else
747 typedef struct IDXGIOutput2Vtbl {
748 BEGIN_INTERFACE
749
750 /*** IUnknown methods ***/
751 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
752 IDXGIOutput2 *This,
753 REFIID riid,
754 void **ppvObject);
755
756 ULONG (STDMETHODCALLTYPE *AddRef)(
757 IDXGIOutput2 *This);
758
759 ULONG (STDMETHODCALLTYPE *Release)(
760 IDXGIOutput2 *This);
761
762 /*** IDXGIObject methods ***/
763 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
764 IDXGIOutput2 *This,
765 REFGUID guid,
766 UINT data_size,
767 const void *data);
768
769 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
770 IDXGIOutput2 *This,
771 REFGUID guid,
772 const IUnknown *object);
773
774 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
775 IDXGIOutput2 *This,
776 REFGUID guid,
777 UINT *data_size,
778 void *data);
779
780 HRESULT (STDMETHODCALLTYPE *GetParent)(
781 IDXGIOutput2 *This,
782 REFIID riid,
783 void **parent);
784
785 /*** IDXGIOutput methods ***/
786 HRESULT (STDMETHODCALLTYPE *GetDesc)(
787 IDXGIOutput2 *This,
788 DXGI_OUTPUT_DESC *desc);
789
790 HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)(
791 IDXGIOutput2 *This,
792 DXGI_FORMAT format,
793 UINT flags,
794 UINT *mode_count,
795 DXGI_MODE_DESC *desc);
796
797 HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)(
798 IDXGIOutput2 *This,
799 const DXGI_MODE_DESC *mode,
800 DXGI_MODE_DESC *closest_match,
801 IUnknown *device);
802
803 HRESULT (STDMETHODCALLTYPE *WaitForVBlank)(
804 IDXGIOutput2 *This);
805
806 HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
807 IDXGIOutput2 *This,
808 IUnknown *device,
809 WINBOOL exclusive);
810
811 void (STDMETHODCALLTYPE *ReleaseOwnership)(
812 IDXGIOutput2 *This);
813
814 HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)(
815 IDXGIOutput2 *This,
816 DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps);
817
818 HRESULT (STDMETHODCALLTYPE *SetGammaControl)(
819 IDXGIOutput2 *This,
820 const DXGI_GAMMA_CONTROL *gamma_control);
821
822 HRESULT (STDMETHODCALLTYPE *GetGammaControl)(
823 IDXGIOutput2 *This,
824 DXGI_GAMMA_CONTROL *gamma_control);
825
826 HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)(
827 IDXGIOutput2 *This,
828 IDXGISurface *surface);
829
830 HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)(
831 IDXGIOutput2 *This,
832 IDXGISurface *surface);
833
834 HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
835 IDXGIOutput2 *This,
836 DXGI_FRAME_STATISTICS *stats);
837
838 /*** IDXGIOutput1 methods ***/
839 HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)(
840 IDXGIOutput2 *This,
841 DXGI_FORMAT enum_format,
842 UINT flags,
843 UINT *num_modes,
844 DXGI_MODE_DESC1 *desc);
845
846 HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)(
847 IDXGIOutput2 *This,
848 const DXGI_MODE_DESC1 *mode_to_match,
849 DXGI_MODE_DESC1 *closest_match,
850 IUnknown *concerned_device);
851
852 HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)(
853 IDXGIOutput2 *This,
854 IDXGIResource *destination);
855
856 HRESULT (STDMETHODCALLTYPE *DuplicateOutput)(
857 IDXGIOutput2 *This,
858 IUnknown *device,
859 IDXGIOutputDuplication **output_duplication);
860
861 /*** IDXGIOutput2 methods ***/
862 WINBOOL (STDMETHODCALLTYPE *SupportsOverlays)(
863 IDXGIOutput2 *This);
864
865 END_INTERFACE
866 } IDXGIOutput2Vtbl;
867
868 interface IDXGIOutput2 {
869 CONST_VTBL IDXGIOutput2Vtbl* lpVtbl;
870 };
871
872 #ifdef COBJMACROS
873 #ifndef WIDL_C_INLINE_WRAPPERS
874 /*** IUnknown methods ***/
875 #define IDXGIOutput2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
876 #define IDXGIOutput2_AddRef(This) (This)->lpVtbl->AddRef(This)
877 #define IDXGIOutput2_Release(This) (This)->lpVtbl->Release(This)
878 /*** IDXGIObject methods ***/
879 #define IDXGIOutput2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
880 #define IDXGIOutput2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
881 #define IDXGIOutput2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
882 #define IDXGIOutput2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
883 /*** IDXGIOutput methods ***/
884 #define IDXGIOutput2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
885 #define IDXGIOutput2_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc)
886 #define IDXGIOutput2_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device)
887 #define IDXGIOutput2_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This)
888 #define IDXGIOutput2_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive)
889 #define IDXGIOutput2_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This)
890 #define IDXGIOutput2_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps)
891 #define IDXGIOutput2_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control)
892 #define IDXGIOutput2_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control)
893 #define IDXGIOutput2_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface)
894 #define IDXGIOutput2_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface)
895 #define IDXGIOutput2_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
896 /*** IDXGIOutput1 methods ***/
897 #define IDXGIOutput2_GetDisplayModeList1(This,enum_format,flags,num_modes,desc) (This)->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc)
898 #define IDXGIOutput2_FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device)
899 #define IDXGIOutput2_GetDisplaySurfaceData1(This,destination) (This)->lpVtbl->GetDisplaySurfaceData1(This,destination)
900 #define IDXGIOutput2_DuplicateOutput(This,device,output_duplication) (This)->lpVtbl->DuplicateOutput(This,device,output_duplication)
901 /*** IDXGIOutput2 methods ***/
902 #define IDXGIOutput2_SupportsOverlays(This) (This)->lpVtbl->SupportsOverlays(This)
903 #else
904 /*** IUnknown methods ***/
905 static FORCEINLINE HRESULT IDXGIOutput2_QueryInterface(IDXGIOutput2* This,REFIID riid,void **ppvObject) {
906 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
907 }
908 static FORCEINLINE ULONG IDXGIOutput2_AddRef(IDXGIOutput2* This) {
909 return This->lpVtbl->AddRef(This);
910 }
911 static FORCEINLINE ULONG IDXGIOutput2_Release(IDXGIOutput2* This) {
912 return This->lpVtbl->Release(This);
913 }
914 /*** IDXGIObject methods ***/
915 static FORCEINLINE HRESULT IDXGIOutput2_SetPrivateData(IDXGIOutput2* This,REFGUID guid,UINT data_size,const void *data) {
916 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
917 }
918 static FORCEINLINE HRESULT IDXGIOutput2_SetPrivateDataInterface(IDXGIOutput2* This,REFGUID guid,const IUnknown *object) {
919 return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
920 }
921 static FORCEINLINE HRESULT IDXGIOutput2_GetPrivateData(IDXGIOutput2* This,REFGUID guid,UINT *data_size,void *data) {
922 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
923 }
924 static FORCEINLINE HRESULT IDXGIOutput2_GetParent(IDXGIOutput2* This,REFIID riid,void **parent) {
925 return This->lpVtbl->GetParent(This,riid,parent);
926 }
927 /*** IDXGIOutput methods ***/
928 static FORCEINLINE HRESULT IDXGIOutput2_GetDesc(IDXGIOutput2* This,DXGI_OUTPUT_DESC *desc) {
929 return This->lpVtbl->GetDesc(This,desc);
930 }
931 static FORCEINLINE HRESULT IDXGIOutput2_GetDisplayModeList(IDXGIOutput2* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) {
932 return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc);
933 }
934 static FORCEINLINE HRESULT IDXGIOutput2_FindClosestMatchingMode(IDXGIOutput2* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) {
935 return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device);
936 }
937 static FORCEINLINE HRESULT IDXGIOutput2_WaitForVBlank(IDXGIOutput2* This) {
938 return This->lpVtbl->WaitForVBlank(This);
939 }
940 static FORCEINLINE HRESULT IDXGIOutput2_TakeOwnership(IDXGIOutput2* This,IUnknown *device,WINBOOL exclusive) {
941 return This->lpVtbl->TakeOwnership(This,device,exclusive);
942 }
943 static FORCEINLINE void IDXGIOutput2_ReleaseOwnership(IDXGIOutput2* This) {
944 This->lpVtbl->ReleaseOwnership(This);
945 }
946 static FORCEINLINE HRESULT IDXGIOutput2_GetGammaControlCapabilities(IDXGIOutput2* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) {
947 return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps);
948 }
949 static FORCEINLINE HRESULT IDXGIOutput2_SetGammaControl(IDXGIOutput2* This,const DXGI_GAMMA_CONTROL *gamma_control) {
950 return This->lpVtbl->SetGammaControl(This,gamma_control);
951 }
952 static FORCEINLINE HRESULT IDXGIOutput2_GetGammaControl(IDXGIOutput2* This,DXGI_GAMMA_CONTROL *gamma_control) {
953 return This->lpVtbl->GetGammaControl(This,gamma_control);
954 }
955 static FORCEINLINE HRESULT IDXGIOutput2_SetDisplaySurface(IDXGIOutput2* This,IDXGISurface *surface) {
956 return This->lpVtbl->SetDisplaySurface(This,surface);
957 }
958 static FORCEINLINE HRESULT IDXGIOutput2_GetDisplaySurfaceData(IDXGIOutput2* This,IDXGISurface *surface) {
959 return This->lpVtbl->GetDisplaySurfaceData(This,surface);
960 }
961 static FORCEINLINE HRESULT IDXGIOutput2_GetFrameStatistics(IDXGIOutput2* This,DXGI_FRAME_STATISTICS *stats) {
962 return This->lpVtbl->GetFrameStatistics(This,stats);
963 }
964 /*** IDXGIOutput1 methods ***/
965 static FORCEINLINE HRESULT IDXGIOutput2_GetDisplayModeList1(IDXGIOutput2* This,DXGI_FORMAT enum_format,UINT flags,UINT *num_modes,DXGI_MODE_DESC1 *desc) {
966 return This->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc);
967 }
968 static FORCEINLINE HRESULT IDXGIOutput2_FindClosestMatchingMode1(IDXGIOutput2* This,const DXGI_MODE_DESC1 *mode_to_match,DXGI_MODE_DESC1 *closest_match,IUnknown *concerned_device) {
969 return This->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device);
970 }
971 static FORCEINLINE HRESULT IDXGIOutput2_GetDisplaySurfaceData1(IDXGIOutput2* This,IDXGIResource *destination) {
972 return This->lpVtbl->GetDisplaySurfaceData1(This,destination);
973 }
974 static FORCEINLINE HRESULT IDXGIOutput2_DuplicateOutput(IDXGIOutput2* This,IUnknown *device,IDXGIOutputDuplication **output_duplication) {
975 return This->lpVtbl->DuplicateOutput(This,device,output_duplication);
976 }
977 /*** IDXGIOutput2 methods ***/
978 static FORCEINLINE WINBOOL IDXGIOutput2_SupportsOverlays(IDXGIOutput2* This) {
979 return This->lpVtbl->SupportsOverlays(This);
980 }
981 #endif
982 #endif
983
984 #endif
985
986
987 #endif /* __IDXGIOutput2_INTERFACE_DEFINED__ */
988
989 /*****************************************************************************
990 * IDXGIFactory3 interface
991 */
992 #ifndef __IDXGIFactory3_INTERFACE_DEFINED__
993 #define __IDXGIFactory3_INTERFACE_DEFINED__
994
995 DEFINE_GUID(IID_IDXGIFactory3, 0x25483823, 0xcd46, 0x4c7d, 0x86,0xca, 0x47,0xaa,0x95,0xb8,0x37,0xbd);
996 #if defined(__cplusplus) && !defined(CINTERFACE)
997 MIDL_INTERFACE("25483823-cd46-4c7d-86ca-47aa95b837bd")
998 IDXGIFactory3 : public IDXGIFactory2
999 {
1000 virtual UINT STDMETHODCALLTYPE GetCreationFlags(
1001 ) = 0;
1002
1003 };
1004 #ifdef __CRT_UUID_DECL
1005 __CRT_UUID_DECL(IDXGIFactory3, 0x25483823, 0xcd46, 0x4c7d, 0x86,0xca, 0x47,0xaa,0x95,0xb8,0x37,0xbd)
1006 #endif
1007 #else
1008 typedef struct IDXGIFactory3Vtbl {
1009 BEGIN_INTERFACE
1010
1011 /*** IUnknown methods ***/
1012 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1013 IDXGIFactory3 *This,
1014 REFIID riid,
1015 void **ppvObject);
1016
1017 ULONG (STDMETHODCALLTYPE *AddRef)(
1018 IDXGIFactory3 *This);
1019
1020 ULONG (STDMETHODCALLTYPE *Release)(
1021 IDXGIFactory3 *This);
1022
1023 /*** IDXGIObject methods ***/
1024 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1025 IDXGIFactory3 *This,
1026 REFGUID guid,
1027 UINT data_size,
1028 const void *data);
1029
1030 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1031 IDXGIFactory3 *This,
1032 REFGUID guid,
1033 const IUnknown *object);
1034
1035 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1036 IDXGIFactory3 *This,
1037 REFGUID guid,
1038 UINT *data_size,
1039 void *data);
1040
1041 HRESULT (STDMETHODCALLTYPE *GetParent)(
1042 IDXGIFactory3 *This,
1043 REFIID riid,
1044 void **parent);
1045
1046 /*** IDXGIFactory methods ***/
1047 HRESULT (STDMETHODCALLTYPE *EnumAdapters)(
1048 IDXGIFactory3 *This,
1049 UINT adapter_idx,
1050 IDXGIAdapter **adapter);
1051
1052 HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)(
1053 IDXGIFactory3 *This,
1054 HWND window,
1055 UINT flags);
1056
1057 HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)(
1058 IDXGIFactory3 *This,
1059 HWND *window);
1060
1061 HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
1062 IDXGIFactory3 *This,
1063 IUnknown *device,
1064 DXGI_SWAP_CHAIN_DESC *desc,
1065 IDXGISwapChain **swapchain);
1066
1067 HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)(
1068 IDXGIFactory3 *This,
1069 HMODULE swrast,
1070 IDXGIAdapter **adapter);
1071
1072 /*** IDXGIFactory1 methods ***/
1073 HRESULT (STDMETHODCALLTYPE *EnumAdapters1)(
1074 IDXGIFactory3 *This,
1075 UINT Adapter,
1076 IDXGIAdapter1 **ppAdapter);
1077
1078 WINBOOL (STDMETHODCALLTYPE *IsCurrent)(
1079 IDXGIFactory3 *This);
1080
1081 /*** IDXGIFactory2 methods ***/
1082 WINBOOL (STDMETHODCALLTYPE *IsWindowedStereoEnabled)(
1083 IDXGIFactory3 *This);
1084
1085 HRESULT (STDMETHODCALLTYPE *CreateSwapChainForHwnd)(
1086 IDXGIFactory3 *This,
1087 IUnknown *pDevice,
1088 HWND hWnd,
1089 const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1090 const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
1091 IDXGIOutput *pRestrictToOutput,
1092 IDXGISwapChain1 **ppSwapChain);
1093
1094 HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCoreWindow)(
1095 IDXGIFactory3 *This,
1096 IUnknown *pDevice,
1097 IUnknown *pWindow,
1098 const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1099 IDXGIOutput *pRestrictToOutput,
1100 IDXGISwapChain1 **ppSwapChain);
1101
1102 HRESULT (STDMETHODCALLTYPE *GetSharedResourceAdapterLuid)(
1103 IDXGIFactory3 *This,
1104 HANDLE hResource,
1105 LUID *pLuid);
1106
1107 HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
1108 IDXGIFactory3 *This,
1109 HWND WindowHandle,
1110 UINT wMsg,
1111 DWORD *pdwCookie);
1112
1113 HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusEvent)(
1114 IDXGIFactory3 *This,
1115 HANDLE hEvent,
1116 DWORD *pdwCookie);
1117
1118 void (STDMETHODCALLTYPE *UnregisterStereoStatus)(
1119 IDXGIFactory3 *This,
1120 DWORD dwCookie);
1121
1122 HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
1123 IDXGIFactory3 *This,
1124 HWND WindowHandle,
1125 UINT wMsg,
1126 DWORD *pdwCookie);
1127
1128 HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusEvent)(
1129 IDXGIFactory3 *This,
1130 HANDLE hEvent,
1131 DWORD *pdwCookie);
1132
1133 void (STDMETHODCALLTYPE *UnregisterOcclusionStatus)(
1134 IDXGIFactory3 *This,
1135 DWORD dwCookie);
1136
1137 HRESULT (STDMETHODCALLTYPE *CreateSwapChainForComposition)(
1138 IDXGIFactory3 *This,
1139 IUnknown *pDevice,
1140 const DXGI_SWAP_CHAIN_DESC1 *pDesc,
1141 IDXGIOutput *pRestrictToOutput,
1142 IDXGISwapChain1 **ppSwapChain);
1143
1144 /*** IDXGIFactory3 methods ***/
1145 UINT (STDMETHODCALLTYPE *GetCreationFlags)(
1146 IDXGIFactory3 *This);
1147
1148 END_INTERFACE
1149 } IDXGIFactory3Vtbl;
1150
1151 interface IDXGIFactory3 {
1152 CONST_VTBL IDXGIFactory3Vtbl* lpVtbl;
1153 };
1154
1155 #ifdef COBJMACROS
1156 #ifndef WIDL_C_INLINE_WRAPPERS
1157 /*** IUnknown methods ***/
1158 #define IDXGIFactory3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1159 #define IDXGIFactory3_AddRef(This) (This)->lpVtbl->AddRef(This)
1160 #define IDXGIFactory3_Release(This) (This)->lpVtbl->Release(This)
1161 /*** IDXGIObject methods ***/
1162 #define IDXGIFactory3_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1163 #define IDXGIFactory3_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
1164 #define IDXGIFactory3_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1165 #define IDXGIFactory3_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
1166 /*** IDXGIFactory methods ***/
1167 #define IDXGIFactory3_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter)
1168 #define IDXGIFactory3_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags)
1169 #define IDXGIFactory3_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window)
1170 #define IDXGIFactory3_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain)
1171 #define IDXGIFactory3_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter)
1172 /*** IDXGIFactory1 methods ***/
1173 #define IDXGIFactory3_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter)
1174 #define IDXGIFactory3_IsCurrent(This) (This)->lpVtbl->IsCurrent(This)
1175 /*** IDXGIFactory2 methods ***/
1176 #define IDXGIFactory3_IsWindowedStereoEnabled(This) (This)->lpVtbl->IsWindowedStereoEnabled(This)
1177 #define IDXGIFactory3_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
1178 #define IDXGIFactory3_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
1179 #define IDXGIFactory3_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
1180 #define IDXGIFactory3_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
1181 #define IDXGIFactory3_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
1182 #define IDXGIFactory3_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
1183 #define IDXGIFactory3_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
1184 #define IDXGIFactory3_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
1185 #define IDXGIFactory3_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
1186 #define IDXGIFactory3_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
1187 /*** IDXGIFactory3 methods ***/
1188 #define IDXGIFactory3_GetCreationFlags(This) (This)->lpVtbl->GetCreationFlags(This)
1189 #else
1190 /*** IUnknown methods ***/
1191 static FORCEINLINE HRESULT IDXGIFactory3_QueryInterface(IDXGIFactory3* This,REFIID riid,void **ppvObject) {
1192 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1193 }
1194 static FORCEINLINE ULONG IDXGIFactory3_AddRef(IDXGIFactory3* This) {
1195 return This->lpVtbl->AddRef(This);
1196 }
1197 static FORCEINLINE ULONG IDXGIFactory3_Release(IDXGIFactory3* This) {
1198 return This->lpVtbl->Release(This);
1199 }
1200 /*** IDXGIObject methods ***/
1201 static FORCEINLINE HRESULT IDXGIFactory3_SetPrivateData(IDXGIFactory3* This,REFGUID guid,UINT data_size,const void *data) {
1202 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1203 }
1204 static FORCEINLINE HRESULT IDXGIFactory3_SetPrivateDataInterface(IDXGIFactory3* This,REFGUID guid,const IUnknown *object) {
1205 return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1206 }
1207 static FORCEINLINE HRESULT IDXGIFactory3_GetPrivateData(IDXGIFactory3* This,REFGUID guid,UINT *data_size,void *data) {
1208 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1209 }
1210 static FORCEINLINE HRESULT IDXGIFactory3_GetParent(IDXGIFactory3* This,REFIID riid,void **parent) {
1211 return This->lpVtbl->GetParent(This,riid,parent);
1212 }
1213 /*** IDXGIFactory methods ***/
1214 static FORCEINLINE HRESULT IDXGIFactory3_EnumAdapters(IDXGIFactory3* This,UINT adapter_idx,IDXGIAdapter **adapter) {
1215 return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter);
1216 }
1217 static FORCEINLINE HRESULT IDXGIFactory3_MakeWindowAssociation(IDXGIFactory3* This,HWND window,UINT flags) {
1218 return This->lpVtbl->MakeWindowAssociation(This,window,flags);
1219 }
1220 static FORCEINLINE HRESULT IDXGIFactory3_GetWindowAssociation(IDXGIFactory3* This,HWND *window) {
1221 return This->lpVtbl->GetWindowAssociation(This,window);
1222 }
1223 static FORCEINLINE HRESULT IDXGIFactory3_CreateSwapChain(IDXGIFactory3* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) {
1224 return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain);
1225 }
1226 static FORCEINLINE HRESULT IDXGIFactory3_CreateSoftwareAdapter(IDXGIFactory3* This,HMODULE swrast,IDXGIAdapter **adapter) {
1227 return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter);
1228 }
1229 /*** IDXGIFactory1 methods ***/
1230 static FORCEINLINE HRESULT IDXGIFactory3_EnumAdapters1(IDXGIFactory3* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) {
1231 return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter);
1232 }
1233 static FORCEINLINE WINBOOL IDXGIFactory3_IsCurrent(IDXGIFactory3* This) {
1234 return This->lpVtbl->IsCurrent(This);
1235 }
1236 /*** IDXGIFactory2 methods ***/
1237 static FORCEINLINE WINBOOL IDXGIFactory3_IsWindowedStereoEnabled(IDXGIFactory3* This) {
1238 return This->lpVtbl->IsWindowedStereoEnabled(This);
1239 }
1240 static FORCEINLINE HRESULT IDXGIFactory3_CreateSwapChainForHwnd(IDXGIFactory3* This,IUnknown *pDevice,HWND hWnd,const DXGI_SWAP_CHAIN_DESC1 *pDesc,const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1241 return This->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain);
1242 }
1243 static FORCEINLINE HRESULT IDXGIFactory3_CreateSwapChainForCoreWindow(IDXGIFactory3* This,IUnknown *pDevice,IUnknown *pWindow,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1244 return This->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain);
1245 }
1246 static FORCEINLINE HRESULT IDXGIFactory3_GetSharedResourceAdapterLuid(IDXGIFactory3* This,HANDLE hResource,LUID *pLuid) {
1247 return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
1248 }
1249 static FORCEINLINE HRESULT IDXGIFactory3_RegisterStereoStatusWindow(IDXGIFactory3* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1250 return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1251 }
1252 static FORCEINLINE HRESULT IDXGIFactory3_RegisterStereoStatusEvent(IDXGIFactory3* This,HANDLE hEvent,DWORD *pdwCookie) {
1253 return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
1254 }
1255 static FORCEINLINE void IDXGIFactory3_UnregisterStereoStatus(IDXGIFactory3* This,DWORD dwCookie) {
1256 This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
1257 }
1258 static FORCEINLINE HRESULT IDXGIFactory3_RegisterOcclusionStatusWindow(IDXGIFactory3* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
1259 return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
1260 }
1261 static FORCEINLINE HRESULT IDXGIFactory3_RegisterOcclusionStatusEvent(IDXGIFactory3* This,HANDLE hEvent,DWORD *pdwCookie) {
1262 return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
1263 }
1264 static FORCEINLINE void IDXGIFactory3_UnregisterOcclusionStatus(IDXGIFactory3* This,DWORD dwCookie) {
1265 This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie);
1266 }
1267 static FORCEINLINE HRESULT IDXGIFactory3_CreateSwapChainForComposition(IDXGIFactory3* This,IUnknown *pDevice,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
1268 return This->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain);
1269 }
1270 /*** IDXGIFactory3 methods ***/
1271 static FORCEINLINE UINT IDXGIFactory3_GetCreationFlags(IDXGIFactory3* This) {
1272 return This->lpVtbl->GetCreationFlags(This);
1273 }
1274 #endif
1275 #endif
1276
1277 #endif
1278
1279
1280 #endif /* __IDXGIFactory3_INTERFACE_DEFINED__ */
1281
1282 /*****************************************************************************
1283 * IDXGIDecodeSwapChain interface
1284 */
1285 #ifndef __IDXGIDecodeSwapChain_INTERFACE_DEFINED__
1286 #define __IDXGIDecodeSwapChain_INTERFACE_DEFINED__
1287
1288 DEFINE_GUID(IID_IDXGIDecodeSwapChain, 0x2633066b, 0x4514, 0x4c7a, 0x8f,0xd8, 0x12,0xea,0x98,0x05,0x9d,0x18);
1289 #if defined(__cplusplus) && !defined(CINTERFACE)
1290 MIDL_INTERFACE("2633066b-4514-4c7a-8fd8-12ea98059d18")
1291 IDXGIDecodeSwapChain : public IUnknown
1292 {
1293 virtual HRESULT STDMETHODCALLTYPE PresentBuffer(
1294 UINT buffer_to_present,
1295 UINT sync_interval,
1296 UINT flags) = 0;
1297
1298 virtual HRESULT STDMETHODCALLTYPE SetSourceRect(
1299 const RECT *rect) = 0;
1300
1301 virtual HRESULT STDMETHODCALLTYPE SetTargetRect(
1302 const RECT *rect) = 0;
1303
1304 virtual HRESULT STDMETHODCALLTYPE SetDestSize(
1305 UINT width,
1306 UINT height) = 0;
1307
1308 virtual HRESULT STDMETHODCALLTYPE GetSourceRect(
1309 RECT *rect) = 0;
1310
1311 virtual HRESULT STDMETHODCALLTYPE GetTargetRect(
1312 RECT *rect) = 0;
1313
1314 virtual HRESULT STDMETHODCALLTYPE GetDestSize(
1315 UINT *width,
1316 UINT *height) = 0;
1317
1318 virtual HRESULT STDMETHODCALLTYPE SetColorSpace(
1319 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS colorspace) = 0;
1320
1321 virtual DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS STDMETHODCALLTYPE GetColorSpace(
1322 ) = 0;
1323
1324 };
1325 #ifdef __CRT_UUID_DECL
1326 __CRT_UUID_DECL(IDXGIDecodeSwapChain, 0x2633066b, 0x4514, 0x4c7a, 0x8f,0xd8, 0x12,0xea,0x98,0x05,0x9d,0x18)
1327 #endif
1328 #else
1329 typedef struct IDXGIDecodeSwapChainVtbl {
1330 BEGIN_INTERFACE
1331
1332 /*** IUnknown methods ***/
1333 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1334 IDXGIDecodeSwapChain *This,
1335 REFIID riid,
1336 void **ppvObject);
1337
1338 ULONG (STDMETHODCALLTYPE *AddRef)(
1339 IDXGIDecodeSwapChain *This);
1340
1341 ULONG (STDMETHODCALLTYPE *Release)(
1342 IDXGIDecodeSwapChain *This);
1343
1344 /*** IDXGIDecodeSwapChain methods ***/
1345 HRESULT (STDMETHODCALLTYPE *PresentBuffer)(
1346 IDXGIDecodeSwapChain *This,
1347 UINT buffer_to_present,
1348 UINT sync_interval,
1349 UINT flags);
1350
1351 HRESULT (STDMETHODCALLTYPE *SetSourceRect)(
1352 IDXGIDecodeSwapChain *This,
1353 const RECT *rect);
1354
1355 HRESULT (STDMETHODCALLTYPE *SetTargetRect)(
1356 IDXGIDecodeSwapChain *This,
1357 const RECT *rect);
1358
1359 HRESULT (STDMETHODCALLTYPE *SetDestSize)(
1360 IDXGIDecodeSwapChain *This,
1361 UINT width,
1362 UINT height);
1363
1364 HRESULT (STDMETHODCALLTYPE *GetSourceRect)(
1365 IDXGIDecodeSwapChain *This,
1366 RECT *rect);
1367
1368 HRESULT (STDMETHODCALLTYPE *GetTargetRect)(
1369 IDXGIDecodeSwapChain *This,
1370 RECT *rect);
1371
1372 HRESULT (STDMETHODCALLTYPE *GetDestSize)(
1373 IDXGIDecodeSwapChain *This,
1374 UINT *width,
1375 UINT *height);
1376
1377 HRESULT (STDMETHODCALLTYPE *SetColorSpace)(
1378 IDXGIDecodeSwapChain *This,
1379 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS colorspace);
1380
1381 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS (STDMETHODCALLTYPE *GetColorSpace)(
1382 IDXGIDecodeSwapChain *This);
1383
1384 END_INTERFACE
1385 } IDXGIDecodeSwapChainVtbl;
1386
1387 interface IDXGIDecodeSwapChain {
1388 CONST_VTBL IDXGIDecodeSwapChainVtbl* lpVtbl;
1389 };
1390
1391 #ifdef COBJMACROS
1392 #ifndef WIDL_C_INLINE_WRAPPERS
1393 /*** IUnknown methods ***/
1394 #define IDXGIDecodeSwapChain_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1395 #define IDXGIDecodeSwapChain_AddRef(This) (This)->lpVtbl->AddRef(This)
1396 #define IDXGIDecodeSwapChain_Release(This) (This)->lpVtbl->Release(This)
1397 /*** IDXGIDecodeSwapChain methods ***/
1398 #define IDXGIDecodeSwapChain_PresentBuffer(This,buffer_to_present,sync_interval,flags) (This)->lpVtbl->PresentBuffer(This,buffer_to_present,sync_interval,flags)
1399 #define IDXGIDecodeSwapChain_SetSourceRect(This,rect) (This)->lpVtbl->SetSourceRect(This,rect)
1400 #define IDXGIDecodeSwapChain_SetTargetRect(This,rect) (This)->lpVtbl->SetTargetRect(This,rect)
1401 #define IDXGIDecodeSwapChain_SetDestSize(This,width,height) (This)->lpVtbl->SetDestSize(This,width,height)
1402 #define IDXGIDecodeSwapChain_GetSourceRect(This,rect) (This)->lpVtbl->GetSourceRect(This,rect)
1403 #define IDXGIDecodeSwapChain_GetTargetRect(This,rect) (This)->lpVtbl->GetTargetRect(This,rect)
1404 #define IDXGIDecodeSwapChain_GetDestSize(This,width,height) (This)->lpVtbl->GetDestSize(This,width,height)
1405 #define IDXGIDecodeSwapChain_SetColorSpace(This,colorspace) (This)->lpVtbl->SetColorSpace(This,colorspace)
1406 #define IDXGIDecodeSwapChain_GetColorSpace(This) (This)->lpVtbl->GetColorSpace(This)
1407 #else
1408 /*** IUnknown methods ***/
1409 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_QueryInterface(IDXGIDecodeSwapChain* This,REFIID riid,void **ppvObject) {
1410 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1411 }
1412 static FORCEINLINE ULONG IDXGIDecodeSwapChain_AddRef(IDXGIDecodeSwapChain* This) {
1413 return This->lpVtbl->AddRef(This);
1414 }
1415 static FORCEINLINE ULONG IDXGIDecodeSwapChain_Release(IDXGIDecodeSwapChain* This) {
1416 return This->lpVtbl->Release(This);
1417 }
1418 /*** IDXGIDecodeSwapChain methods ***/
1419 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_PresentBuffer(IDXGIDecodeSwapChain* This,UINT buffer_to_present,UINT sync_interval,UINT flags) {
1420 return This->lpVtbl->PresentBuffer(This,buffer_to_present,sync_interval,flags);
1421 }
1422 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_SetSourceRect(IDXGIDecodeSwapChain* This,const RECT *rect) {
1423 return This->lpVtbl->SetSourceRect(This,rect);
1424 }
1425 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_SetTargetRect(IDXGIDecodeSwapChain* This,const RECT *rect) {
1426 return This->lpVtbl->SetTargetRect(This,rect);
1427 }
1428 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_SetDestSize(IDXGIDecodeSwapChain* This,UINT width,UINT height) {
1429 return This->lpVtbl->SetDestSize(This,width,height);
1430 }
1431 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_GetSourceRect(IDXGIDecodeSwapChain* This,RECT *rect) {
1432 return This->lpVtbl->GetSourceRect(This,rect);
1433 }
1434 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_GetTargetRect(IDXGIDecodeSwapChain* This,RECT *rect) {
1435 return This->lpVtbl->GetTargetRect(This,rect);
1436 }
1437 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_GetDestSize(IDXGIDecodeSwapChain* This,UINT *width,UINT *height) {
1438 return This->lpVtbl->GetDestSize(This,width,height);
1439 }
1440 static FORCEINLINE HRESULT IDXGIDecodeSwapChain_SetColorSpace(IDXGIDecodeSwapChain* This,DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS colorspace) {
1441 return This->lpVtbl->SetColorSpace(This,colorspace);
1442 }
1443 static FORCEINLINE DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS IDXGIDecodeSwapChain_GetColorSpace(IDXGIDecodeSwapChain* This) {
1444 return This->lpVtbl->GetColorSpace(This);
1445 }
1446 #endif
1447 #endif
1448
1449 #endif
1450
1451
1452 #endif /* __IDXGIDecodeSwapChain_INTERFACE_DEFINED__ */
1453
1454 /*****************************************************************************
1455 * IDXGIFactoryMedia interface
1456 */
1457 #ifndef __IDXGIFactoryMedia_INTERFACE_DEFINED__
1458 #define __IDXGIFactoryMedia_INTERFACE_DEFINED__
1459
1460 DEFINE_GUID(IID_IDXGIFactoryMedia, 0x41e7d1f2, 0xa591, 0x4f7b, 0xa2,0xe5, 0xfa,0x9c,0x84,0x3e,0x1c,0x12);
1461 #if defined(__cplusplus) && !defined(CINTERFACE)
1462 MIDL_INTERFACE("41e7d1f2-a591-4f7b-a2e5-fa9c843e1c12")
1463 IDXGIFactoryMedia : public IUnknown
1464 {
1465 virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForCompositionSurfaceHandle(
1466 IUnknown *device,
1467 HANDLE surface,
1468 const DXGI_SWAP_CHAIN_DESC1 *desc,
1469 IDXGIOutput *restrict_to_output,
1470 IDXGISwapChain1 **swapchain) = 0;
1471
1472 virtual HRESULT STDMETHODCALLTYPE CreateDecodeSwapChainForCompositionSurfaceHandle(
1473 IUnknown *device,
1474 HANDLE surface,
1475 DXGI_DECODE_SWAP_CHAIN_DESC *desc,
1476 IDXGIResource *yuv_decode_buffers,
1477 IDXGIOutput *restrict_to_output,
1478 IDXGIDecodeSwapChain **swapchain) = 0;
1479
1480 };
1481 #ifdef __CRT_UUID_DECL
1482 __CRT_UUID_DECL(IDXGIFactoryMedia, 0x41e7d1f2, 0xa591, 0x4f7b, 0xa2,0xe5, 0xfa,0x9c,0x84,0x3e,0x1c,0x12)
1483 #endif
1484 #else
1485 typedef struct IDXGIFactoryMediaVtbl {
1486 BEGIN_INTERFACE
1487
1488 /*** IUnknown methods ***/
1489 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1490 IDXGIFactoryMedia *This,
1491 REFIID riid,
1492 void **ppvObject);
1493
1494 ULONG (STDMETHODCALLTYPE *AddRef)(
1495 IDXGIFactoryMedia *This);
1496
1497 ULONG (STDMETHODCALLTYPE *Release)(
1498 IDXGIFactoryMedia *This);
1499
1500 /*** IDXGIFactoryMedia methods ***/
1501 HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCompositionSurfaceHandle)(
1502 IDXGIFactoryMedia *This,
1503 IUnknown *device,
1504 HANDLE surface,
1505 const DXGI_SWAP_CHAIN_DESC1 *desc,
1506 IDXGIOutput *restrict_to_output,
1507 IDXGISwapChain1 **swapchain);
1508
1509 HRESULT (STDMETHODCALLTYPE *CreateDecodeSwapChainForCompositionSurfaceHandle)(
1510 IDXGIFactoryMedia *This,
1511 IUnknown *device,
1512 HANDLE surface,
1513 DXGI_DECODE_SWAP_CHAIN_DESC *desc,
1514 IDXGIResource *yuv_decode_buffers,
1515 IDXGIOutput *restrict_to_output,
1516 IDXGIDecodeSwapChain **swapchain);
1517
1518 END_INTERFACE
1519 } IDXGIFactoryMediaVtbl;
1520
1521 interface IDXGIFactoryMedia {
1522 CONST_VTBL IDXGIFactoryMediaVtbl* lpVtbl;
1523 };
1524
1525 #ifdef COBJMACROS
1526 #ifndef WIDL_C_INLINE_WRAPPERS
1527 /*** IUnknown methods ***/
1528 #define IDXGIFactoryMedia_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1529 #define IDXGIFactoryMedia_AddRef(This) (This)->lpVtbl->AddRef(This)
1530 #define IDXGIFactoryMedia_Release(This) (This)->lpVtbl->Release(This)
1531 /*** IDXGIFactoryMedia methods ***/
1532 #define IDXGIFactoryMedia_CreateSwapChainForCompositionSurfaceHandle(This,device,surface,desc,restrict_to_output,swapchain) (This)->lpVtbl->CreateSwapChainForCompositionSurfaceHandle(This,device,surface,desc,restrict_to_output,swapchain)
1533 #define IDXGIFactoryMedia_CreateDecodeSwapChainForCompositionSurfaceHandle(This,device,surface,desc,yuv_decode_buffers,restrict_to_output,swapchain) (This)->lpVtbl->CreateDecodeSwapChainForCompositionSurfaceHandle(This,device,surface,desc,yuv_decode_buffers,restrict_to_output,swapchain)
1534 #else
1535 /*** IUnknown methods ***/
1536 static FORCEINLINE HRESULT IDXGIFactoryMedia_QueryInterface(IDXGIFactoryMedia* This,REFIID riid,void **ppvObject) {
1537 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1538 }
1539 static FORCEINLINE ULONG IDXGIFactoryMedia_AddRef(IDXGIFactoryMedia* This) {
1540 return This->lpVtbl->AddRef(This);
1541 }
1542 static FORCEINLINE ULONG IDXGIFactoryMedia_Release(IDXGIFactoryMedia* This) {
1543 return This->lpVtbl->Release(This);
1544 }
1545 /*** IDXGIFactoryMedia methods ***/
1546 static FORCEINLINE HRESULT IDXGIFactoryMedia_CreateSwapChainForCompositionSurfaceHandle(IDXGIFactoryMedia* This,IUnknown *device,HANDLE surface,const DXGI_SWAP_CHAIN_DESC1 *desc,IDXGIOutput *restrict_to_output,IDXGISwapChain1 **swapchain) {
1547 return This->lpVtbl->CreateSwapChainForCompositionSurfaceHandle(This,device,surface,desc,restrict_to_output,swapchain);
1548 }
1549 static FORCEINLINE HRESULT IDXGIFactoryMedia_CreateDecodeSwapChainForCompositionSurfaceHandle(IDXGIFactoryMedia* This,IUnknown *device,HANDLE surface,DXGI_DECODE_SWAP_CHAIN_DESC *desc,IDXGIResource *yuv_decode_buffers,IDXGIOutput *restrict_to_output,IDXGIDecodeSwapChain **swapchain) {
1550 return This->lpVtbl->CreateDecodeSwapChainForCompositionSurfaceHandle(This,device,surface,desc,yuv_decode_buffers,restrict_to_output,swapchain);
1551 }
1552 #endif
1553 #endif
1554
1555 #endif
1556
1557
1558 #endif /* __IDXGIFactoryMedia_INTERFACE_DEFINED__ */
1559
1560 /*****************************************************************************
1561 * IDXGISwapChainMedia interface
1562 */
1563 #ifndef __IDXGISwapChainMedia_INTERFACE_DEFINED__
1564 #define __IDXGISwapChainMedia_INTERFACE_DEFINED__
1565
1566 DEFINE_GUID(IID_IDXGISwapChainMedia, 0xdd95b90b, 0xf05f, 0x4f6a, 0xbd,0x65, 0x25,0xbf,0xb2,0x64,0xbd,0x84);
1567 #if defined(__cplusplus) && !defined(CINTERFACE)
1568 MIDL_INTERFACE("dd95b90b-f05f-4f6a-bd65-25bfb264bd84")
1569 IDXGISwapChainMedia : public IUnknown
1570 {
1571 virtual HRESULT STDMETHODCALLTYPE GetFrameStatisticsMedia(
1572 DXGI_FRAME_STATISTICS_MEDIA *stats) = 0;
1573
1574 virtual HRESULT STDMETHODCALLTYPE SetPresentDuration(
1575 UINT duration) = 0;
1576
1577 virtual HRESULT STDMETHODCALLTYPE CheckPresentDurationSupport(
1578 UINT desired_present_duration,
1579 UINT *closest_smaller_present_duration,
1580 UINT *closest_larger_present_duration) = 0;
1581
1582 };
1583 #ifdef __CRT_UUID_DECL
1584 __CRT_UUID_DECL(IDXGISwapChainMedia, 0xdd95b90b, 0xf05f, 0x4f6a, 0xbd,0x65, 0x25,0xbf,0xb2,0x64,0xbd,0x84)
1585 #endif
1586 #else
1587 typedef struct IDXGISwapChainMediaVtbl {
1588 BEGIN_INTERFACE
1589
1590 /*** IUnknown methods ***/
1591 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1592 IDXGISwapChainMedia *This,
1593 REFIID riid,
1594 void **ppvObject);
1595
1596 ULONG (STDMETHODCALLTYPE *AddRef)(
1597 IDXGISwapChainMedia *This);
1598
1599 ULONG (STDMETHODCALLTYPE *Release)(
1600 IDXGISwapChainMedia *This);
1601
1602 /*** IDXGISwapChainMedia methods ***/
1603 HRESULT (STDMETHODCALLTYPE *GetFrameStatisticsMedia)(
1604 IDXGISwapChainMedia *This,
1605 DXGI_FRAME_STATISTICS_MEDIA *stats);
1606
1607 HRESULT (STDMETHODCALLTYPE *SetPresentDuration)(
1608 IDXGISwapChainMedia *This,
1609 UINT duration);
1610
1611 HRESULT (STDMETHODCALLTYPE *CheckPresentDurationSupport)(
1612 IDXGISwapChainMedia *This,
1613 UINT desired_present_duration,
1614 UINT *closest_smaller_present_duration,
1615 UINT *closest_larger_present_duration);
1616
1617 END_INTERFACE
1618 } IDXGISwapChainMediaVtbl;
1619
1620 interface IDXGISwapChainMedia {
1621 CONST_VTBL IDXGISwapChainMediaVtbl* lpVtbl;
1622 };
1623
1624 #ifdef COBJMACROS
1625 #ifndef WIDL_C_INLINE_WRAPPERS
1626 /*** IUnknown methods ***/
1627 #define IDXGISwapChainMedia_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1628 #define IDXGISwapChainMedia_AddRef(This) (This)->lpVtbl->AddRef(This)
1629 #define IDXGISwapChainMedia_Release(This) (This)->lpVtbl->Release(This)
1630 /*** IDXGISwapChainMedia methods ***/
1631 #define IDXGISwapChainMedia_GetFrameStatisticsMedia(This,stats) (This)->lpVtbl->GetFrameStatisticsMedia(This,stats)
1632 #define IDXGISwapChainMedia_SetPresentDuration(This,duration) (This)->lpVtbl->SetPresentDuration(This,duration)
1633 #define IDXGISwapChainMedia_CheckPresentDurationSupport(This,desired_present_duration,closest_smaller_present_duration,closest_larger_present_duration) (This)->lpVtbl->CheckPresentDurationSupport(This,desired_present_duration,closest_smaller_present_duration,closest_larger_present_duration)
1634 #else
1635 /*** IUnknown methods ***/
1636 static FORCEINLINE HRESULT IDXGISwapChainMedia_QueryInterface(IDXGISwapChainMedia* This,REFIID riid,void **ppvObject) {
1637 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1638 }
1639 static FORCEINLINE ULONG IDXGISwapChainMedia_AddRef(IDXGISwapChainMedia* This) {
1640 return This->lpVtbl->AddRef(This);
1641 }
1642 static FORCEINLINE ULONG IDXGISwapChainMedia_Release(IDXGISwapChainMedia* This) {
1643 return This->lpVtbl->Release(This);
1644 }
1645 /*** IDXGISwapChainMedia methods ***/
1646 static FORCEINLINE HRESULT IDXGISwapChainMedia_GetFrameStatisticsMedia(IDXGISwapChainMedia* This,DXGI_FRAME_STATISTICS_MEDIA *stats) {
1647 return This->lpVtbl->GetFrameStatisticsMedia(This,stats);
1648 }
1649 static FORCEINLINE HRESULT IDXGISwapChainMedia_SetPresentDuration(IDXGISwapChainMedia* This,UINT duration) {
1650 return This->lpVtbl->SetPresentDuration(This,duration);
1651 }
1652 static FORCEINLINE HRESULT IDXGISwapChainMedia_CheckPresentDurationSupport(IDXGISwapChainMedia* This,UINT desired_present_duration,UINT *closest_smaller_present_duration,UINT *closest_larger_present_duration) {
1653 return This->lpVtbl->CheckPresentDurationSupport(This,desired_present_duration,closest_smaller_present_duration,closest_larger_present_duration);
1654 }
1655 #endif
1656 #endif
1657
1658 #endif
1659
1660
1661 #endif /* __IDXGISwapChainMedia_INTERFACE_DEFINED__ */
1662
1663 /*****************************************************************************
1664 * IDXGIOutput3 interface
1665 */
1666 #ifndef __IDXGIOutput3_INTERFACE_DEFINED__
1667 #define __IDXGIOutput3_INTERFACE_DEFINED__
1668
1669 DEFINE_GUID(IID_IDXGIOutput3, 0x8a6bb301, 0x7e7e, 0x41f4, 0xa8,0xe0, 0x5b,0x32,0xf7,0xf9,0x9b,0x18);
1670 #if defined(__cplusplus) && !defined(CINTERFACE)
1671 MIDL_INTERFACE("8a6bb301-7e7e-41f4-a8e0-5b32f7f99b18")
1672 IDXGIOutput3 : public IDXGIOutput2
1673 {
1674 virtual HRESULT STDMETHODCALLTYPE CheckOverlaySupport(
1675 DXGI_FORMAT enum_format,
1676 IUnknown *concerned_device,
1677 UINT *flags) = 0;
1678
1679 };
1680 #ifdef __CRT_UUID_DECL
1681 __CRT_UUID_DECL(IDXGIOutput3, 0x8a6bb301, 0x7e7e, 0x41f4, 0xa8,0xe0, 0x5b,0x32,0xf7,0xf9,0x9b,0x18)
1682 #endif
1683 #else
1684 typedef struct IDXGIOutput3Vtbl {
1685 BEGIN_INTERFACE
1686
1687 /*** IUnknown methods ***/
1688 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1689 IDXGIOutput3 *This,
1690 REFIID riid,
1691 void **ppvObject);
1692
1693 ULONG (STDMETHODCALLTYPE *AddRef)(
1694 IDXGIOutput3 *This);
1695
1696 ULONG (STDMETHODCALLTYPE *Release)(
1697 IDXGIOutput3 *This);
1698
1699 /*** IDXGIObject methods ***/
1700 HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
1701 IDXGIOutput3 *This,
1702 REFGUID guid,
1703 UINT data_size,
1704 const void *data);
1705
1706 HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
1707 IDXGIOutput3 *This,
1708 REFGUID guid,
1709 const IUnknown *object);
1710
1711 HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
1712 IDXGIOutput3 *This,
1713 REFGUID guid,
1714 UINT *data_size,
1715 void *data);
1716
1717 HRESULT (STDMETHODCALLTYPE *GetParent)(
1718 IDXGIOutput3 *This,
1719 REFIID riid,
1720 void **parent);
1721
1722 /*** IDXGIOutput methods ***/
1723 HRESULT (STDMETHODCALLTYPE *GetDesc)(
1724 IDXGIOutput3 *This,
1725 DXGI_OUTPUT_DESC *desc);
1726
1727 HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)(
1728 IDXGIOutput3 *This,
1729 DXGI_FORMAT format,
1730 UINT flags,
1731 UINT *mode_count,
1732 DXGI_MODE_DESC *desc);
1733
1734 HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)(
1735 IDXGIOutput3 *This,
1736 const DXGI_MODE_DESC *mode,
1737 DXGI_MODE_DESC *closest_match,
1738 IUnknown *device);
1739
1740 HRESULT (STDMETHODCALLTYPE *WaitForVBlank)(
1741 IDXGIOutput3 *This);
1742
1743 HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
1744 IDXGIOutput3 *This,
1745 IUnknown *device,
1746 WINBOOL exclusive);
1747
1748 void (STDMETHODCALLTYPE *ReleaseOwnership)(
1749 IDXGIOutput3 *This);
1750
1751 HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)(
1752 IDXGIOutput3 *This,
1753 DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps);
1754
1755 HRESULT (STDMETHODCALLTYPE *SetGammaControl)(
1756 IDXGIOutput3 *This,
1757 const DXGI_GAMMA_CONTROL *gamma_control);
1758
1759 HRESULT (STDMETHODCALLTYPE *GetGammaControl)(
1760 IDXGIOutput3 *This,
1761 DXGI_GAMMA_CONTROL *gamma_control);
1762
1763 HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)(
1764 IDXGIOutput3 *This,
1765 IDXGISurface *surface);
1766
1767 HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)(
1768 IDXGIOutput3 *This,
1769 IDXGISurface *surface);
1770
1771 HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
1772 IDXGIOutput3 *This,
1773 DXGI_FRAME_STATISTICS *stats);
1774
1775 /*** IDXGIOutput1 methods ***/
1776 HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)(
1777 IDXGIOutput3 *This,
1778 DXGI_FORMAT enum_format,
1779 UINT flags,
1780 UINT *num_modes,
1781 DXGI_MODE_DESC1 *desc);
1782
1783 HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)(
1784 IDXGIOutput3 *This,
1785 const DXGI_MODE_DESC1 *mode_to_match,
1786 DXGI_MODE_DESC1 *closest_match,
1787 IUnknown *concerned_device);
1788
1789 HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)(
1790 IDXGIOutput3 *This,
1791 IDXGIResource *destination);
1792
1793 HRESULT (STDMETHODCALLTYPE *DuplicateOutput)(
1794 IDXGIOutput3 *This,
1795 IUnknown *device,
1796 IDXGIOutputDuplication **output_duplication);
1797
1798 /*** IDXGIOutput2 methods ***/
1799 WINBOOL (STDMETHODCALLTYPE *SupportsOverlays)(
1800 IDXGIOutput3 *This);
1801
1802 /*** IDXGIOutput3 methods ***/
1803 HRESULT (STDMETHODCALLTYPE *CheckOverlaySupport)(
1804 IDXGIOutput3 *This,
1805 DXGI_FORMAT enum_format,
1806 IUnknown *concerned_device,
1807 UINT *flags);
1808
1809 END_INTERFACE
1810 } IDXGIOutput3Vtbl;
1811
1812 interface IDXGIOutput3 {
1813 CONST_VTBL IDXGIOutput3Vtbl* lpVtbl;
1814 };
1815
1816 #ifdef COBJMACROS
1817 #ifndef WIDL_C_INLINE_WRAPPERS
1818 /*** IUnknown methods ***/
1819 #define IDXGIOutput3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
1820 #define IDXGIOutput3_AddRef(This) (This)->lpVtbl->AddRef(This)
1821 #define IDXGIOutput3_Release(This) (This)->lpVtbl->Release(This)
1822 /*** IDXGIObject methods ***/
1823 #define IDXGIOutput3_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
1824 #define IDXGIOutput3_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
1825 #define IDXGIOutput3_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
1826 #define IDXGIOutput3_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
1827 /*** IDXGIOutput methods ***/
1828 #define IDXGIOutput3_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
1829 #define IDXGIOutput3_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc)
1830 #define IDXGIOutput3_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device)
1831 #define IDXGIOutput3_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This)
1832 #define IDXGIOutput3_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive)
1833 #define IDXGIOutput3_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This)
1834 #define IDXGIOutput3_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps)
1835 #define IDXGIOutput3_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control)
1836 #define IDXGIOutput3_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control)
1837 #define IDXGIOutput3_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface)
1838 #define IDXGIOutput3_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface)
1839 #define IDXGIOutput3_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
1840 /*** IDXGIOutput1 methods ***/
1841 #define IDXGIOutput3_GetDisplayModeList1(This,enum_format,flags,num_modes,desc) (This)->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc)
1842 #define IDXGIOutput3_FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device)
1843 #define IDXGIOutput3_GetDisplaySurfaceData1(This,destination) (This)->lpVtbl->GetDisplaySurfaceData1(This,destination)
1844 #define IDXGIOutput3_DuplicateOutput(This,device,output_duplication) (This)->lpVtbl->DuplicateOutput(This,device,output_duplication)
1845 /*** IDXGIOutput2 methods ***/
1846 #define IDXGIOutput3_SupportsOverlays(This) (This)->lpVtbl->SupportsOverlays(This)
1847 /*** IDXGIOutput3 methods ***/
1848 #define IDXGIOutput3_CheckOverlaySupport(This,enum_format,concerned_device,flags) (This)->lpVtbl->CheckOverlaySupport(This,enum_format,concerned_device,flags)
1849 #else
1850 /*** IUnknown methods ***/
1851 static FORCEINLINE HRESULT IDXGIOutput3_QueryInterface(IDXGIOutput3* This,REFIID riid,void **ppvObject) {
1852 return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1853 }
1854 static FORCEINLINE ULONG IDXGIOutput3_AddRef(IDXGIOutput3* This) {
1855 return This->lpVtbl->AddRef(This);
1856 }
1857 static FORCEINLINE ULONG IDXGIOutput3_Release(IDXGIOutput3* This) {
1858 return This->lpVtbl->Release(This);
1859 }
1860 /*** IDXGIObject methods ***/
1861 static FORCEINLINE HRESULT IDXGIOutput3_SetPrivateData(IDXGIOutput3* This,REFGUID guid,UINT data_size,const void *data) {
1862 return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
1863 }
1864 static FORCEINLINE HRESULT IDXGIOutput3_SetPrivateDataInterface(IDXGIOutput3* This,REFGUID guid,const IUnknown *object) {
1865 return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
1866 }
1867 static FORCEINLINE HRESULT IDXGIOutput3_GetPrivateData(IDXGIOutput3* This,REFGUID guid,UINT *data_size,void *data) {
1868 return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
1869 }
1870 static FORCEINLINE HRESULT IDXGIOutput3_GetParent(IDXGIOutput3* This,REFIID riid,void **parent) {
1871 return This->lpVtbl->GetParent(This,riid,parent);
1872 }
1873 /*** IDXGIOutput methods ***/
1874 static FORCEINLINE HRESULT IDXGIOutput3_GetDesc(IDXGIOutput3* This,DXGI_OUTPUT_DESC *desc) {
1875 return This->lpVtbl->GetDesc(This,desc);
1876 }
1877 static FORCEINLINE HRESULT IDXGIOutput3_GetDisplayModeList(IDXGIOutput3* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) {
1878 return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc);
1879 }
1880 static FORCEINLINE HRESULT IDXGIOutput3_FindClosestMatchingMode(IDXGIOutput3* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) {
1881 return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device);
1882 }
1883 static FORCEINLINE HRESULT IDXGIOutput3_WaitForVBlank(IDXGIOutput3* This) {
1884 return This->lpVtbl->WaitForVBlank(This);
1885 }
1886 static FORCEINLINE HRESULT IDXGIOutput3_TakeOwnership(IDXGIOutput3* This,IUnknown *device,WINBOOL exclusive) {
1887 return This->lpVtbl->TakeOwnership(This,device,exclusive);
1888 }
1889 static FORCEINLINE void IDXGIOutput3_ReleaseOwnership(IDXGIOutput3* This) {
1890 This->lpVtbl->ReleaseOwnership(This);
1891 }
1892 static FORCEINLINE HRESULT IDXGIOutput3_GetGammaControlCapabilities(IDXGIOutput3* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) {
1893 return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps);
1894 }
1895 static FORCEINLINE HRESULT IDXGIOutput3_SetGammaControl(IDXGIOutput3* This,const DXGI_GAMMA_CONTROL *gamma_control) {
1896 return This->lpVtbl->SetGammaControl(This,gamma_control);
1897 }
1898 static FORCEINLINE HRESULT IDXGIOutput3_GetGammaControl(IDXGIOutput3* This,DXGI_GAMMA_CONTROL *gamma_control) {
1899 return This->lpVtbl->GetGammaControl(This,gamma_control);
1900 }
1901 static FORCEINLINE HRESULT IDXGIOutput3_SetDisplaySurface(IDXGIOutput3* This,IDXGISurface *surface) {
1902 return This->lpVtbl->SetDisplaySurface(This,surface);
1903 }
1904 static FORCEINLINE HRESULT IDXGIOutput3_GetDisplaySurfaceData(IDXGIOutput3* This,IDXGISurface *surface) {
1905 return This->lpVtbl->GetDisplaySurfaceData(This,surface);
1906 }
1907 static FORCEINLINE HRESULT IDXGIOutput3_GetFrameStatistics(IDXGIOutput3* This,DXGI_FRAME_STATISTICS *stats) {
1908 return This->lpVtbl->GetFrameStatistics(This,stats);
1909 }
1910 /*** IDXGIOutput1 methods ***/
1911 static FORCEINLINE HRESULT IDXGIOutput3_GetDisplayModeList1(IDXGIOutput3* This,DXGI_FORMAT enum_format,UINT flags,UINT *num_modes,DXGI_MODE_DESC1 *desc) {
1912 return This->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc);
1913 }
1914 static FORCEINLINE HRESULT IDXGIOutput3_FindClosestMatchingMode1(IDXGIOutput3* This,const DXGI_MODE_DESC1 *mode_to_match,DXGI_MODE_DESC1 *closest_match,IUnknown *concerned_device) {
1915 return This->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device);
1916 }
1917 static FORCEINLINE HRESULT IDXGIOutput3_GetDisplaySurfaceData1(IDXGIOutput3* This,IDXGIResource *destination) {
1918 return This->lpVtbl->GetDisplaySurfaceData1(This,destination);
1919 }
1920 static FORCEINLINE HRESULT IDXGIOutput3_DuplicateOutput(IDXGIOutput3* This,IUnknown *device,IDXGIOutputDuplication **output_duplication) {
1921 return This->lpVtbl->DuplicateOutput(This,device,output_duplication);
1922 }
1923 /*** IDXGIOutput2 methods ***/
1924 static FORCEINLINE WINBOOL IDXGIOutput3_SupportsOverlays(IDXGIOutput3* This) {
1925 return This->lpVtbl->SupportsOverlays(This);
1926 }
1927 /*** IDXGIOutput3 methods ***/
1928 static FORCEINLINE HRESULT IDXGIOutput3_CheckOverlaySupport(IDXGIOutput3* This,DXGI_FORMAT enum_format,IUnknown *concerned_device,UINT *flags) {
1929 return This->lpVtbl->CheckOverlaySupport(This,enum_format,concerned_device,flags);
1930 }
1931 #endif
1932 #endif
1933
1934 #endif
1935
1936
1937 #endif /* __IDXGIOutput3_INTERFACE_DEFINED__ */
1938
1939 #define DXGI_CREATE_FACTORY_DEBUG (0x1)
1940
1941 HRESULT __stdcall CreateDXGIFactory2(UINT flags,REFIID iid,void **factory);
1942
1943 HRESULT __stdcall DXGIGetDebugInterface1(UINT flags,REFIID iid,void **debug);
1944
1945 /* Begin additional prototypes for all interfaces */
1946
1947
1948 /* End additional prototypes */
1949
1950 #ifdef __cplusplus
1951 }
1952 #endif
1953
1954 #endif /* __dxgi1_3_h__ */