source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/dxgi.h@ 1175

Last change on this file since 1175 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

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