// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0 > or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT >, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
//! Mappings for the contents of dxgi1_3.h
use ctypes::c_void;
use shared::dxgi::{IDXGIOutput, IDXGIResource};
use shared::dxgi1_2::{
DXGI_SWAP_CHAIN_DESC1, IDXGIDevice2, IDXGIDevice2Vtbl, IDXGIFactory2, IDXGIFactory2V
tbl,
IDXGIOutput1, IDXGIOutput1Vtbl, IDXGISwapChain1, IDXGISwapChain1Vtbl,
};
use shared::dxgiformat::DXGI_FORMAT;
use shared::guiddef::REFIID;
use shared::minwindef::{BOOL, FLOAT, UINT};
use shared::windef::RECT;
use um::unknwnbase::{IUnknown, IUnknownVtbl};
use um::winnt::{HANDLE, HRESULT, LARGE_INTEGER};
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 ,
}}
ENUM !{enum DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS {
DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE = 0 x1,
DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709 = 0 x2,
DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC = 0 x4,
}}
ENUM !{enum DXGI_OVERLAY_SUPPORT_FLAG {
DXGI_OVERLAY_SUPPORT_FLAG_DIRECT = 0 x1,
DXGI_OVERLAY_SUPPORT_FLAG_SCALING = 0 x2,
}}
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!{#[ uuid(0 x2633066b, 0 x4514, 0 x4c7a, 0 x8f, 0 xd8, 0 x12, 0 xea, 0 x98, 0 x05, 0 x9d, 0 x18)]
interface IDXGIDecodeSwapChain(IDXGIDecodeSwapChainVtbl): IUnknown(IUnknownVtbl) {
fn PresentBuffer(
BufferToPresent: UINT,
SyncInterval: UINT,
Flags: UINT,
) -> HRESULT,
fn SetSourceRect(
pRect: *const RECT,
) -> HRESULT,
fn SetTargetRect(
pRect: *const RECT,
) -> HRESULT,
fn SetDestSize(
Width: UINT,
Height: UINT,
) -> HRESULT,
fn GetSourceRect(
pRect: *mut RECT,
) -> HRESULT,
fn GetTargetRect(
pRect: *mut RECT,
) -> HRESULT,
fn GetDestSize(
pWidth: *mut UINT,
pHeight: *mut UINT,
) -> HRESULT,
fn SetColorSpace(
ColorSpace: DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS,
) -> HRESULT,
fn GetColorSpace() -> DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS,
}}
extern "system" {
pub fn CreateDXGIFactory2(
Flags: UINT,
riid: REFIID,
ppFactory: *mut *mut c_void,
) -> HRESULT;
pub fn DXGIGetDebugInterface1(
Flags: UINT,
riid: REFIID,
pDebug: *mut *mut c_void,
) -> HRESULT;
}
RIDL!{#[ uuid(0 x6007896c, 0 x3244, 0 x4afd, 0 xbf, 0 x18, 0 xa6, 0 xd3, 0 xbe, 0 xda, 0 x50, 0 x23)]
interface IDXGIDevice3(IDXGIDevice3Vtbl): IDXGIDevice2(IDXGIDevice2Vtbl) {
fn Trim() -> (),
}}
RIDL!{#[ uuid(0 x25483823, 0 xcd46, 0 x4c7d, 0 x86, 0 xca, 0 x47, 0 xaa, 0 x95, 0 xb8, 0 x37, 0 xbd)]
interface IDXGIFactory3(IDXGIFactory3Vtbl): IDXGIFactory2(IDXGIFactory2Vtbl) {
fn GetCreationFlags() -> UINT,
}}
RIDL!{#[ uuid(0 x41e7d1f2, 0 xa591, 0 x4f7b, 0 xa2, 0 xe5, 0 xfa, 0 x9c, 0 x84, 0 x3e, 0 x1c, 0 x12)]
interface IDXGIFactoryMedia(IDXGIFactoryMediaVtbl): IUnknown(IUnknownVtbl) {
fn CreateSwapChainForCompositionSurfaceHandle(
pDevice: *mut IUnknown,
hSurface: HANDLE,
pDesc: *const DXGI_SWAP_CHAIN_DESC1,
pRestrictToOutput: *mut IDXGIOutput,
ppSwapChain: *mut *mut IDXGISwapChain1,
) -> HRESULT,
fn CreateDecodeSwapChainForCompositionSurfaceHandle(
pDevice: *mut IUnknown,
hSurface: HANDLE,
pDesc: *mut DXGI_DECODE_SWAP_CHAIN_DESC,
pYuvDecodeBuffers: *mut IDXGIResource,
pRestrictToOutput: *mut IDXGIOutput,
ppSwapChain: *mut *mut IDXGIDecodeSwapChain,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x595e39d1, 0 x2724, 0 x4663, 0 x99, 0 xb1, 0 xda, 0 x96, 0 x9d, 0 xe2, 0 x83, 0 x64)]
interface IDXGIOutput2(IDXGIOutput2Vtbl): IDXGIOutput1(IDXGIOutput1Vtbl) {
fn SupportsOverlays() -> BOOL,
}}
RIDL!{#[ uuid(0 x8a6bb301, 0 x7e7e, 0 x41f4, 0 xa8, 0 xe0, 0 x5b, 0 x32, 0 xf7, 0 xf9, 0 x9b, 0 x18)]
interface IDXGIOutput3(IDXGIOutput3Vtbl): IDXGIOutput2(IDXGIOutput2Vtbl) {
fn CheckOverlaySupport(
EnumFormat: DXGI_FORMAT,
pConcernedDevice: *mut IUnknown,
pFlags: *mut UINT,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xa8be2ac4, 0 x199f, 0 x4946, 0 xb3, 0 x31, 0 x79, 0 x59, 0 x9f, 0 xb9, 0 x8d, 0 xe7)]
interface IDXGISwapChain2(IDXGISwapChain2Vtbl): IDXGISwapChain1(IDXGISwapChain1Vtbl) {
fn SetSourceSize(
Width: UINT,
Height: UINT,
) -> HRESULT,
fn GetSourceSize(
pWidth: *mut UINT,
pHeight: *mut UINT,
) -> HRESULT,
fn SetMaximumFrameLatency(
MaxLatency: UINT,
) -> HRESULT,
fn GetMaximumFrameLatency(
pMaxLatency: *mut UINT,
) -> HRESULT,
fn GetFrameLatencyWaitableObject() -> HANDLE,
fn SetMatrixTransform(
pMatrix: *const DXGI_MATRIX_3X2_F,
) -> HRESULT,
fn GetMatrixTransform(
pMatrix: *mut DXGI_MATRIX_3X2_F,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xdd95b90b, 0 xf05f, 0 x4f6a, 0 xbd, 0 x65, 0 x25, 0 xbf, 0 xb2, 0 x64, 0 xbd, 0 x84)]
interface IDXGISwapChainMedia(IDXGISwapChainMediaVtbl): IUnknown(IUnknownVtbl) {
fn GetFrameStatisticsMedia(
pStats: *mut DXGI_FRAME_STATISTICS_MEDIA,
) -> HRESULT,
fn SetPresentDuration(
Duration: UINT,
) -> HRESULT,
fn CheckPresentDurationSupport(
DesiredPresentDuration: UINT,
pClosestSmallerPresentDuration: *mut UINT,
pClosestLargerPresentDuration: *mut UINT,
) -> HRESULT,
}}
pub const DXGI_CREATE_FACTORY_DEBUG: UINT = 0 x1;
DEFINE_GUID!{IID_IDXGIDevice3,
0 x6007896c, 0 x3244, 0 x4afd, 0 xbf, 0 x18, 0 xa6, 0 xd3, 0 xbe, 0 xda, 0 x50, 0 x23}
DEFINE_GUID!{IID_IDXGISwapChain2,
0 xa8be2ac4, 0 x199f, 0 x4946, 0 xb3, 0 x31, 0 x79, 0 x59, 0 x9f, 0 xb9, 0 x8d, 0 xe7}
DEFINE_GUID!{IID_IDXGIOutput2,
0 x595e39d1, 0 x2724, 0 x4663, 0 x99, 0 xb1, 0 xda, 0 x96, 0 x9d, 0 xe2, 0 x83, 0 x64}
DEFINE_GUID!{IID_IDXGIFactory3,
0 x25483823, 0 xcd46, 0 x4c7d, 0 x86, 0 xca, 0 x47, 0 xaa, 0 x95, 0 xb8, 0 x37, 0 xbd}
DEFINE_GUID!{IID_IDXGIDecodeSwapChain,
0 x2633066b, 0 x4514, 0 x4c7a, 0 x8f, 0 xd8, 0 x12, 0 xea, 0 x98, 0 x05, 0 x9d, 0 x18}
DEFINE_GUID!{IID_IDXGIFactoryMedia,
0 x41e7d1f2, 0 xa591, 0 x4f7b, 0 xa2, 0 xe5, 0 xfa, 0 x9c, 0 x84, 0 x3e, 0 x1c, 0 x12}
DEFINE_GUID!{IID_IDXGISwapChainMedia,
0 xdd95b90b, 0 xf05f, 0 x4f6a, 0 xbd, 0 x65, 0 x25, 0 xbf, 0 xb2, 0 x64, 0 xbd, 0 x84}
DEFINE_GUID!{IID_IDXGIOutput3,
0 x8a6bb301, 0 x7e7e, 0 x41f4, 0 xa8, 0 xe0, 0 x5b, 0 x32, 0 xf7, 0 xf9, 0 x9b, 0 x18}
Messung V0.5 in Prozent C=97 H=100 G=98
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-21)
¤
*© Formatika GbR, Deutschland