blob: 71acf98c7cf0667f3c3e736f4d088cc6b5a0a893 [file] [log] [blame]
// Copyright © 2015; Dmitry Roschin
// Licensed under the MIT License <LICENSE.md>
//! 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;