• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright 2017 Ihsan Akmal
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19import "dxgi1_2.idl";
20
21typedef struct DXGI_MATRIX_3X2_F
22{
23    float _11;
24    float _12;
25    float _21;
26    float _22;
27    float _31;
28    float _32;
29} DXGI_MATRIX_3X2_F;
30
31typedef struct DXGI_DECODE_SWAP_CHAIN_DESC
32{
33    UINT Flags;
34} DXGI_DECODE_SWAP_CHAIN_DESC;
35
36typedef enum DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS
37{
38    DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE = 0x1,
39    DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709 = 0x2,
40    DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC = 0x4,
41} DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS;
42
43typedef enum DXGI_FRAME_PRESENTATION_MODE
44{
45    DXGI_FRAME_PRESENTATION_MODE_COMPOSED = 0,
46    DXGI_FRAME_PRESENTATION_MODE_OVERLAY = 1,
47    DXGI_FRAME_PRESENTATION_MODE_NONE = 2,
48    DXGI_FRAME_PRESENTATION_MODE_COMPOSITION_FAILURE = 3,
49} DXGI_FRAME_PRESENTATION_MODE;
50
51typedef struct DXGI_FRAME_STATISTICS_MEDIA
52{
53    UINT PresentCount;
54    UINT PresentRefreshCount;
55    UINT SyncRefreshCount;
56    LARGE_INTEGER SyncQPCTime;
57    LARGE_INTEGER SyncGPUTime;
58    DXGI_FRAME_PRESENTATION_MODE CompositionMode;
59    UINT ApprovedPresentDuration;
60} DXGI_FRAME_STATISTICS_MEDIA;
61
62typedef enum DXGI_OVERLAY_SUPPORT_FLAG
63{
64    DXGI_OVERLAY_SUPPORT_FLAG_DIRECT = 0x1,
65    DXGI_OVERLAY_SUPPORT_FLAG_SCALING = 0x2,
66} DXGI_OVERLAY_SUPPORT_FLAG;
67
68[
69    object,
70    uuid(6007896c-3244-4afd-bf18-a6d3beda5023),
71    local,
72    pointer_default(unique)
73]
74interface IDXGIDevice3 : IDXGIDevice2
75{
76    void Trim();
77}
78
79[
80    object,
81    uuid(a8be2ac4-199f-4946-b331-79599fb98de7),
82    local,
83    pointer_default(unique)
84]
85interface IDXGISwapChain2 : IDXGISwapChain1
86{
87    HRESULT SetSourceSize(UINT width, UINT height);
88
89    HRESULT GetSourceSize(
90        [out] UINT *width,
91        [out] UINT *height
92    );
93
94    HRESULT SetMaximumFrameLatency(UINT max_latency);
95
96    HRESULT GetMaximumFrameLatency(
97        [out] UINT *max_latency
98    );
99
100    HANDLE  GetFrameLatencyWaitableObject();
101
102    HRESULT SetMatrixTransform(const DXGI_MATRIX_3X2_F *matrix);
103
104    HRESULT GetMatrixTransform(
105        [out] DXGI_MATRIX_3X2_F *matrix
106    );
107}
108
109[
110    object,
111    uuid(595e39d1-2724-4663-99b1-da969de28364),
112    local,
113    pointer_default(unique)
114]
115interface IDXGIOutput2 : IDXGIOutput1
116{
117    BOOL SupportsOverlays();
118}
119
120[
121    object,
122    uuid(25483823-cd46-4c7d-86ca-47aa95b837bd),
123    local,
124    pointer_default(unique)
125]
126interface IDXGIFactory3 : IDXGIFactory2
127{
128    UINT GetCreationFlags();
129}
130
131[
132    object,
133    uuid(2633066b-4514-4c7a-8fd8-12ea98059d18),
134    local,
135    pointer_default(unique)
136]
137interface IDXGIDecodeSwapChain : IUnknown
138{
139    HRESULT PresentBuffer(UINT buffer_to_present, UINT sync_interval, UINT flags);
140
141    HRESULT SetSourceRect(const RECT *rect);
142
143    HRESULT SetTargetRect(const RECT *rect);
144
145    HRESULT SetDestSize(UINT width, UINT height);
146
147    HRESULT GetSourceRect(
148        [out] RECT *rect
149    );
150
151    HRESULT GetTargetRect(
152        [out] RECT *rect
153    );
154
155    HRESULT GetDestSize(
156        [out] UINT *width,
157        [out] UINT *height
158    );
159
160    HRESULT SetColorSpace(DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS colorspace);
161
162    DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS GetColorSpace();
163}
164
165[
166    object,
167    uuid(41e7d1f2-a591-4f7b-a2e5-fa9c843e1c12),
168    local,
169    pointer_default(unique)
170]
171interface IDXGIFactoryMedia : IUnknown
172{
173    HRESULT CreateSwapChainForCompositionSurfaceHandle(
174        [in] IUnknown *device,
175        [in] HANDLE surface,
176        [in] const DXGI_SWAP_CHAIN_DESC1 *desc,
177        [in] IDXGIOutput *restrict_to_output,
178        [out] IDXGISwapChain1 **swapchain
179    );
180
181    HRESULT CreateDecodeSwapChainForCompositionSurfaceHandle(
182        [in] IUnknown *device,
183        [in] HANDLE surface,
184        [in] DXGI_DECODE_SWAP_CHAIN_DESC *desc,
185        [in] IDXGIResource *yuv_decode_buffers,
186        [in] IDXGIOutput *restrict_to_output,
187        [out] IDXGIDecodeSwapChain **swapchain
188    );
189}
190
191[
192    object,
193    uuid(dd95b90b-f05f-4f6a-bd65-25bfb264bd84),
194    local,
195    pointer_default(unique)
196]
197interface IDXGISwapChainMedia : IUnknown
198{
199    HRESULT GetFrameStatisticsMedia(
200        [out] DXGI_FRAME_STATISTICS_MEDIA *stats
201    );
202
203    HRESULT SetPresentDuration(UINT duration);
204
205    HRESULT CheckPresentDurationSupport(
206        UINT desired_present_duration,
207        [out] UINT *closest_smaller_present_duration,
208        [out] UINT *closest_larger_present_duration
209    );
210}
211
212[
213    object,
214    uuid(8a6bb301-7e7e-41F4-a8e0-5b32f7f99b18),
215    local,
216    pointer_default(unique)
217]
218interface IDXGIOutput3 : IDXGIOutput2
219{
220    HRESULT CheckOverlaySupport(
221        [in] DXGI_FORMAT enum_format,
222        [out] IUnknown *concerned_device,
223        [out] UINT *flags
224    );
225}
226
227const UINT DXGI_CREATE_FACTORY_DEBUG = 0x1;
228
229[local] HRESULT __stdcall CreateDXGIFactory2(UINT flags, REFIID iid, void **factory);
230
231[local] HRESULT __stdcall DXGIGetDebugInterface1(UINT flags, REFIID iid, void **debug);
232