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

File Contents

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