2 * Copyright 2017 Ihsan Akmal
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.
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.
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
21 typedef struct DXGI_MATRIX_3X2_F
31 typedef struct DXGI_DECODE_SWAP_CHAIN_DESC
34 } DXGI_DECODE_SWAP_CHAIN_DESC
;
36 typedef enum DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS
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
;
43 typedef enum DXGI_FRAME_PRESENTATION_MODE
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
;
51 typedef struct DXGI_FRAME_STATISTICS_MEDIA
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
;
62 typedef enum DXGI_OVERLAY_SUPPORT_FLAG
64 DXGI_OVERLAY_SUPPORT_FLAG_DIRECT
= 0x1,
65 DXGI_OVERLAY_SUPPORT_FLAG_SCALING
= 0x2,
66 } DXGI_OVERLAY_SUPPORT_FLAG
;
70 uuid(6007896c
-3244-4afd
-bf18
-a6d3beda5023
),
72 pointer_default(unique)
74 interface IDXGIDevice3
: IDXGIDevice2
81 uuid(a8be2ac4
-199f
-4946-b331
-79599fb98de7
),
83 pointer_default(unique)
85 interface IDXGISwapChain2
: IDXGISwapChain1
87 HRESULT SetSourceSize
(UINT width
, UINT height
);
89 HRESULT GetSourceSize
(
94 HRESULT SetMaximumFrameLatency
(UINT max_latency
);
96 HRESULT GetMaximumFrameLatency
(
97 [out] UINT
*max_latency
100 HANDLE GetFrameLatencyWaitableObject
();
102 HRESULT SetMatrixTransform
(const DXGI_MATRIX_3X2_F
*matrix
);
104 HRESULT GetMatrixTransform
(
105 [out] DXGI_MATRIX_3X2_F
*matrix
111 uuid(595e39d1
-2724-4663-99b1
-da969de28364
),
113 pointer_default(unique)
115 interface IDXGIOutput2
: IDXGIOutput1
117 BOOL SupportsOverlays
();
122 uuid(25483823-cd46
-4c7d
-86ca
-47aa95b837bd
),
124 pointer_default(unique)
126 interface IDXGIFactory3
: IDXGIFactory2
128 UINT GetCreationFlags
();
133 uuid(2633066b
-4514-4c7a
-8fd8
-12ea98059d18
),
135 pointer_default(unique)
137 interface IDXGIDecodeSwapChain
: IUnknown
139 HRESULT PresentBuffer
(UINT buffer_to_present
, UINT sync_interval
, UINT flags
);
141 HRESULT SetSourceRect
(const RECT
*rect
);
143 HRESULT SetTargetRect
(const RECT
*rect
);
145 HRESULT SetDestSize
(UINT width
, UINT height
);
147 HRESULT GetSourceRect
(
151 HRESULT GetTargetRect
(
160 HRESULT SetColorSpace
(DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS colorspace
);
162 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS GetColorSpace
();
167 uuid(41e7d1f2
-a591
-4f7b
-a2e5
-fa9c843e1c12
),
169 pointer_default(unique)
171 interface IDXGIFactoryMedia
: IUnknown
173 HRESULT CreateSwapChainForCompositionSurfaceHandle
(
174 [in] IUnknown
*device
,
176 [in] const DXGI_SWAP_CHAIN_DESC1
*desc
,
177 [in] IDXGIOutput
*restrict_to_output
,
178 [out] IDXGISwapChain1
**swapchain
181 HRESULT CreateDecodeSwapChainForCompositionSurfaceHandle
(
182 [in] IUnknown
*device
,
184 [in] DXGI_DECODE_SWAP_CHAIN_DESC
*desc
,
185 [in] IDXGIResource
*yuv_decode_buffers
,
186 [in] IDXGIOutput
*restrict_to_output
,
187 [out] IDXGIDecodeSwapChain
**swapchain
193 uuid(dd95b90b
-f05f
-4f6a
-bd65
-25bfb264bd84
),
195 pointer_default(unique)
197 interface IDXGISwapChainMedia
: IUnknown
199 HRESULT GetFrameStatisticsMedia
(
200 [out] DXGI_FRAME_STATISTICS_MEDIA
*stats
203 HRESULT SetPresentDuration
(UINT duration
);
205 HRESULT CheckPresentDurationSupport
(
206 UINT desired_present_duration
,
207 [out] UINT
*closest_smaller_present_duration
,
208 [out] UINT
*closest_larger_present_duration
214 uuid(8a6bb301
-7e7e
-41F4
-a8e0
-5b32f7f99b18
),
216 pointer_default(unique)
218 interface IDXGIOutput3
: IDXGIOutput2
220 HRESULT CheckOverlaySupport
(
221 [in] DXGI_FORMAT enum_format
,
222 [out] IUnknown
*concerned_device
,
227 const UINT DXGI_CREATE_FACTORY_DEBUG
= 0x1;
229 [local] HRESULT __stdcall CreateDXGIFactory2
(UINT flags
, REFIID iid
, void **factory
);
231 [local] HRESULT __stdcall DXGIGetDebugInterface1
(UINT flags
, REFIID iid
, void **debug
);