// Copyright © 2015; Dmitry Roschin // Licensed under the MIT License //! Mappings for the contents of dxgi1_3.h ENUM!{ 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, }} FLAGS!{ 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, }} FLAGS!{ enum DXGI_OVERLAY_SUPPORT_FLAG { DXGI_OVERLAY_SUPPORT_FLAG_DIRECT = 0x1, DXGI_OVERLAY_SUPPORT_FLAG_SCALING = 0x2, }} STRUCT!{struct DXGI_DECODE_SWAP_CHAIN_DESC { Flags: ::UINT, }} STRUCT!{struct DXGI_FRAME_STATISTICS_MEDIA { PresentCount: ::UINT, PresentRefreshCount: ::UINT, SyncRefreshCount: ::UINT, SyncQPCTime: ::LARGE_INTEGER, SyncGPUTime: ::LARGE_INTEGER, CompositionMode: ::DXGI_FRAME_PRESENTATION_MODE, ApprovedPresentDuration: ::UINT, }} STRUCT!{struct DXGI_MATRIX_3X2_F { _11: ::FLOAT, _12: ::FLOAT, _21: ::FLOAT, _22: ::FLOAT, _31: ::FLOAT, _32: ::FLOAT, }} RIDL!( interface IDXGIDecodeSwapChain(IDXGIDecodeSwapChainVtbl): IUnknown(IUnknownVtbl) { fn PresentBuffer( &mut self, BufferToPresent: ::UINT, SyncInterval: ::UINT, Flags: ::UINT ) -> ::HRESULT, fn SetSourceRect(&mut self, pRect: *const ::RECT) -> ::HRESULT, fn SetTargetRect(&mut self, pRect: *const ::RECT) -> ::HRESULT, fn SetDestSize(&mut self, Width: ::UINT, Height: ::UINT) -> ::HRESULT, fn GetSourceRect(&mut self, pRect: *mut ::RECT) -> ::HRESULT, fn GetTargetRect(&mut self, pRect: *mut ::RECT) -> ::HRESULT, fn GetDestSize( &mut self, pWidth: *mut ::UINT, pHeight: *mut ::UINT ) -> ::HRESULT, fn SetColorSpace( &mut self, ColorSpace: ::DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS ) -> ::HRESULT, fn GetColorSpace(&mut self) -> ::DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS }); RIDL!( interface IDXGIDevice3(IDXGIDevice3Vtbl): IDXGIDevice2(IDXGIDevice2Vtbl) { fn Trim(&mut self) -> () }); RIDL!( interface IDXGIFactory3(IDXGIFactory3Vtbl): IDXGIFactory2(IDXGIFactory2Vtbl) { fn GetCreationFlags(&mut self) -> ::UINT }); RIDL!( interface IDXGIFactoryMedia(IDXGIFactoryMediaVtbl): IUnknown(IUnknownVtbl) { fn CreateSwapChainForCompositionSurfaceHandle( &mut self, pDevice: *mut ::IUnknown, hSurface: ::HANDLE, pDesc: *const ::DXGI_SWAP_CHAIN_DESC1, pRestrictToOutput: *mut ::IDXGIOutput, ppSwapChain: *mut *mut ::IDXGISwapChain1 ) -> ::HRESULT, fn CreateDecodeSwapChainForCompositionSurfaceHandle( &mut self, pDevice: *mut ::IUnknown, hSurface: ::HANDLE, pDesc: *mut ::DXGI_DECODE_SWAP_CHAIN_DESC, pYuvDecodeBuffers: *mut ::IDXGIResource, pRestrictToOutput: *mut ::IDXGIOutput, ppSwapChain: *mut *mut ::IDXGIDecodeSwapChain ) -> ::HRESULT }); RIDL!( interface IDXGIOutput2(IDXGIOutput2Vtbl): IDXGIOutput1(IDXGIOutput1Vtbl) { fn SupportsOverlays(&mut self) -> ::BOOL }); RIDL!( interface IDXGIOutput3(IDXGIOutput3Vtbl): IDXGIOutput2(IDXGIOutput2Vtbl) { fn CheckOverlaySupport( &mut self, EnumFormat: ::DXGI_FORMAT, pConcernedDevice: *mut ::IUnknown, pFlags: *mut ::UINT ) -> ::HRESULT }); RIDL!( interface IDXGISwapChain2(IDXGISwapChain2Vtbl): IDXGISwapChain1(IDXGISwapChain1Vtbl) { fn SetSourceSize(&mut self, Width: ::UINT, Height: ::UINT) -> ::HRESULT, fn GetSourceSize( &mut self, pWidth: *mut ::UINT, pHeight: *mut ::UINT ) -> ::HRESULT, fn SetMaximumFrameLatency(&mut self, MaxLatency: ::UINT) -> ::HRESULT, fn GetMaximumFrameLatency(&mut self, pMaxLatency: *mut ::UINT) -> ::HRESULT, fn GetFrameLatencyWaitableObject(&mut self) -> ::HANDLE, fn SetMatrixTransform( &mut self, pMatrix: *const ::DXGI_MATRIX_3X2_F ) -> ::HRESULT, fn GetMatrixTransform( &mut self, pMatrix: *mut ::DXGI_MATRIX_3X2_F ) -> ::HRESULT }); RIDL!( interface IDXGISwapChainMedia(IDXGISwapChainMediaVtbl): IUnknown(IUnknownVtbl) { fn GetFrameStatisticsMedia( &mut self, pStats: *mut ::DXGI_FRAME_STATISTICS_MEDIA ) -> ::HRESULT, fn SetPresentDuration(&mut self, Duration: ::UINT) -> ::HRESULT, fn CheckPresentDurationSupport( &mut self, DesiredPresentDuration: ::UINT, pClosestSmallerPresentDuration: *mut ::UINT, pClosestLargerPresentDuration: *mut ::UINT ) -> ::HRESULT }); pub const DXGI_CREATE_FACTORY_DEBUG: ::UINT = 0x1;