| /* |
| * Copyright 2017 Ihsan Akmal |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| import "dxgi1_2.idl"; |
| |
| typedef struct DXGI_MATRIX_3X2_F |
| { |
| float _11; |
| float _12; |
| float _21; |
| float _22; |
| float _31; |
| float _32; |
| } DXGI_MATRIX_3X2_F; |
| |
| typedef struct DXGI_DECODE_SWAP_CHAIN_DESC |
| { |
| UINT Flags; |
| } DXGI_DECODE_SWAP_CHAIN_DESC; |
| |
| typedef enum DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS |
| { |
| DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE = 0x1, |
| DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709 = 0x2, |
| DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC = 0x4, |
| } DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS; |
| |
| typedef enum DXGI_FRAME_PRESENTATION_MODE |
| { |
| DXGI_FRAME_PRESENTATION_MODE_COMPOSED = 0, |
| DXGI_FRAME_PRESENTATION_MODE_OVERLAY = 1, |
| DXGI_FRAME_PRESENTATION_MODE_NONE = 2, |
| DXGI_FRAME_PRESENTATION_MODE_COMPOSITION_FAILURE = 3, |
| } DXGI_FRAME_PRESENTATION_MODE; |
| |
| typedef struct DXGI_FRAME_STATISTICS_MEDIA |
| { |
| UINT PresentCount; |
| UINT PresentRefreshCount; |
| UINT SyncRefreshCount; |
| LARGE_INTEGER SyncQPCTime; |
| LARGE_INTEGER SyncGPUTime; |
| DXGI_FRAME_PRESENTATION_MODE CompositionMode; |
| UINT ApprovedPresentDuration; |
| } DXGI_FRAME_STATISTICS_MEDIA; |
| |
| typedef enum DXGI_OVERLAY_SUPPORT_FLAG |
| { |
| DXGI_OVERLAY_SUPPORT_FLAG_DIRECT = 0x1, |
| DXGI_OVERLAY_SUPPORT_FLAG_SCALING = 0x2, |
| } DXGI_OVERLAY_SUPPORT_FLAG; |
| |
| [ |
| object, |
| uuid(6007896c-3244-4afd-bf18-a6d3beda5023), |
| local, |
| pointer_default(unique) |
| ] |
| interface IDXGIDevice3 : IDXGIDevice2 |
| { |
| void Trim(); |
| } |
| |
| [ |
| object, |
| uuid(a8be2ac4-199f-4946-b331-79599fb98de7), |
| local, |
| pointer_default(unique) |
| ] |
| interface IDXGISwapChain2 : IDXGISwapChain1 |
| { |
| HRESULT SetSourceSize(UINT width, UINT height); |
| |
| HRESULT GetSourceSize( |
| [out] UINT *width, |
| [out] UINT *height |
| ); |
| |
| HRESULT SetMaximumFrameLatency(UINT max_latency); |
| |
| HRESULT GetMaximumFrameLatency( |
| [out] UINT *max_latency |
| ); |
| |
| HANDLE GetFrameLatencyWaitableObject(); |
| |
| HRESULT SetMatrixTransform(const DXGI_MATRIX_3X2_F *matrix); |
| |
| HRESULT GetMatrixTransform( |
| [out] DXGI_MATRIX_3X2_F *matrix |
| ); |
| } |
| |
| [ |
| object, |
| uuid(595e39d1-2724-4663-99b1-da969de28364), |
| local, |
| pointer_default(unique) |
| ] |
| interface IDXGIOutput2 : IDXGIOutput1 |
| { |
| BOOL SupportsOverlays(); |
| } |
| |
| [ |
| object, |
| uuid(25483823-cd46-4c7d-86ca-47aa95b837bd), |
| local, |
| pointer_default(unique) |
| ] |
| interface IDXGIFactory3 : IDXGIFactory2 |
| { |
| UINT GetCreationFlags(); |
| } |
| |
| [ |
| object, |
| uuid(2633066b-4514-4c7a-8fd8-12ea98059d18), |
| local, |
| pointer_default(unique) |
| ] |
| interface IDXGIDecodeSwapChain : IUnknown |
| { |
| HRESULT PresentBuffer(UINT buffer_to_present, UINT sync_interval, UINT flags); |
| |
| HRESULT SetSourceRect(const RECT *rect); |
| |
| HRESULT SetTargetRect(const RECT *rect); |
| |
| HRESULT SetDestSize(UINT width, UINT height); |
| |
| HRESULT GetSourceRect( |
| [out] RECT *rect |
| ); |
| |
| HRESULT GetTargetRect( |
| [out] RECT *rect |
| ); |
| |
| HRESULT GetDestSize( |
| [out] UINT *width, |
| [out] UINT *height |
| ); |
| |
| HRESULT SetColorSpace(DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS colorspace); |
| |
| DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS GetColorSpace(); |
| } |
| |
| [ |
| object, |
| uuid(41e7d1f2-a591-4f7b-a2e5-fa9c843e1c12), |
| local, |
| pointer_default(unique) |
| ] |
| interface IDXGIFactoryMedia : IUnknown |
| { |
| HRESULT CreateSwapChainForCompositionSurfaceHandle( |
| [in] IUnknown *device, |
| [in] HANDLE surface, |
| [in] const DXGI_SWAP_CHAIN_DESC1 *desc, |
| [in] IDXGIOutput *restrict_to_output, |
| [out] IDXGISwapChain1 **swapchain |
| ); |
| |
| HRESULT CreateDecodeSwapChainForCompositionSurfaceHandle( |
| [in] IUnknown *device, |
| [in] HANDLE surface, |
| [in] DXGI_DECODE_SWAP_CHAIN_DESC *desc, |
| [in] IDXGIResource *yuv_decode_buffers, |
| [in] IDXGIOutput *restrict_to_output, |
| [out] IDXGIDecodeSwapChain **swapchain |
| ); |
| } |
| |
| [ |
| object, |
| uuid(dd95b90b-f05f-4f6a-bd65-25bfb264bd84), |
| local, |
| pointer_default(unique) |
| ] |
| interface IDXGISwapChainMedia : IUnknown |
| { |
| HRESULT GetFrameStatisticsMedia( |
| [out] DXGI_FRAME_STATISTICS_MEDIA *stats |
| ); |
| |
| HRESULT SetPresentDuration(UINT duration); |
| |
| HRESULT CheckPresentDurationSupport( |
| UINT desired_present_duration, |
| [out] UINT *closest_smaller_present_duration, |
| [out] UINT *closest_larger_present_duration |
| ); |
| } |
| |
| [ |
| object, |
| uuid(8a6bb301-7e7e-41F4-a8e0-5b32f7f99b18), |
| local, |
| pointer_default(unique) |
| ] |
| interface IDXGIOutput3 : IDXGIOutput2 |
| { |
| HRESULT CheckOverlaySupport( |
| [in] DXGI_FORMAT enum_format, |
| [out] IUnknown *concerned_device, |
| [out] UINT *flags |
| ); |
| } |
| |
| const UINT DXGI_CREATE_FACTORY_DEBUG = 0x1; |
| |
| [local] HRESULT __stdcall CreateDXGIFactory2(UINT flags, REFIID iid, void **factory); |
| |
| [local] HRESULT __stdcall DXGIGetDebugInterface1(UINT flags, REFIID iid, void **debug); |