// Licensed under the Apache License, Version 2.0 // or the MIT license // , 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_6.h use ctypes::c_void; use shared::basetsd::SIZE_T; use shared::dxgi1_2::{ DXGI_COMPUTE_PREEMPTION_GRANULARITY, DXGI_GRAPHICS_PREEMPTION_GRANULARITY, }; use shared::dxgi1_4::{IDXGIAdapter3, IDXGIAdapter3Vtbl}; use shared::dxgi1_5::{IDXGIFactory5, IDXGIFactory5Vtbl, IDXGIOutput5, IDXGIOutput5Vtbl}; use shared::dxgitype::{DXGI_COLOR_SPACE_TYPE, DXGI_MODE_ROTATION}; use shared::guiddef::REFIID; use shared::minwindef::{BOOL, FLOAT, UINT}; use shared::windef::{HMONITOR, RECT}; use um::winnt::{HRESULT, LUID, WCHAR}; ENUM!{enum DXGI_ADAPTER_FLAG3 { DXGI_ADAPTER_FLAG3_NONE = 0, DXGI_ADAPTER_FLAG3_REMOTE = 1, DXGI_ADAPTER_FLAG3_SOFTWARE = 2, DXGI_ADAPTER_FLAG3_ACG_COMPATIBLE = 4, DXGI_ADAPTER_FLAG3_SUPPORT_MONITORED_FENCES = 8, DXGI_ADAPTER_FLAG3_SUPPORT_NON_MONITORED_FENCES = 0x10, DXGI_ADAPTER_FLAG3_KEYED_MUTEX_CONFORMANCE = 0x20, DXGI_ADAPTER_FLAG3_FORCE_DWORD = 0xFFFFFFFF, }} STRUCT!{struct DXGI_ADAPTER_DESC3 { Description: [WCHAR; 128], VendorID: UINT, DeviceID: UINT, SubSysID: UINT, Revision: UINT, DedicatedVideoMemory: SIZE_T, DedicatedSystemMemory: SIZE_T, SharedSystemMemory: SIZE_T, AdapterLuid: LUID, Flags: DXGI_ADAPTER_FLAG3, GraphicsPreemptionGranularity: DXGI_GRAPHICS_PREEMPTION_GRANULARITY, ComputePreemptionGranularity: DXGI_COMPUTE_PREEMPTION_GRANULARITY, }} RIDL!{#[uuid(0x3c8d99d1, 0x4fbf, 0x4181, 0xa8, 0x2c, 0xaf, 0x66, 0xbf, 0x7b, 0xd2, 0x4e)] interface IDXGIAdapter4(IDXGIAdapter4Vtbl): IDXGIAdapter3(IDXGIAdapter3Vtbl) { fn GetDesc3( pDesc: *mut DXGI_ADAPTER_DESC3, ) -> HRESULT, }} STRUCT!{struct DXGI_OUTPUT_DESC1 { DeviceName: [WCHAR; 32], DesktopCoordinates: RECT, AttachedToDesktop: BOOL, Rotation: DXGI_MODE_ROTATION, Monitor: HMONITOR, BitsPerColor: UINT, ColorSpace: DXGI_COLOR_SPACE_TYPE, RedPrimary: [FLOAT; 2], GreenPrimary: [FLOAT; 2], BluePrimary: [FLOAT; 2], WhitePoint: [FLOAT; 2], MinLuminance: FLOAT, MaxLuminance: FLOAT, MaxFullFrameLuminance: FLOAT, }} ENUM!{enum DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAGS { DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_FULLSCREEN = 1, DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_WINDOWED = 2, DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_CURSOR_STRETCHED = 4, }} RIDL!{#[uuid(0x068346e8, 0xaaec, 0x4b84, 0xad, 0xd7, 0x13, 0x7f, 0x51, 0x3f, 0x77, 0xa1)] interface IDXGIOutput6(IDXGIOutput6Vtbl): IDXGIOutput5(IDXGIOutput5Vtbl) { fn GetDesc1( pDesc: *mut DXGI_OUTPUT_DESC1, ) -> HRESULT, fn CheckHardwareCompositionSupport( pFlags: *mut UINT, ) -> HRESULT, }} ENUM!{enum DXGI_GPU_PREFERENCE { DXGI_GPU_PREFERENCE_UNSPECIFIED = 0, DXGI_GPU_PREFERENCE_MINIMUM_POWER = 1, DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE = 2, }} RIDL!{#[uuid(0xc1b6694f, 0xff09, 0x44a9, 0xb0, 0x3c, 0x77, 0x90, 0x0a, 0x0a, 0x1d, 0x17)] interface IDXGIFactory6(IDXGIFactory6Vtbl): IDXGIFactory5(IDXGIFactory5Vtbl) { fn EnumAdapterByGpuPreference( Adapter: UINT, GpuPreference: DXGI_GPU_PREFERENCE, riid: REFIID, ppvAdapter: *mut *mut c_void, ) -> HRESULT, }} DEFINE_GUID!{IID_IDXGIAdapter4, 0x3c8d99d1, 0x4fbf, 0x4181, 0xa8, 0x2c, 0xaf, 0x66, 0xbf, 0x7b, 0xd2, 0x4e} DEFINE_GUID!{IID_IDXGIOutput6, 0x068346e8, 0xaaec, 0x4b84, 0xad, 0xd7, 0x13, 0x7f, 0x51, 0x3f, 0x77, 0xa1} DEFINE_GUID!{IID_IDXGIFactory6, 0xc1b6694f, 0xff09, 0x44a9, 0xb0, 0x3c, 0x77, 0x90, 0x0a, 0x0a, 0x1d, 0x17}