| /* | |
| * 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); |