/* * 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_5.idl"; typedef enum DXGI_ADAPTER_FLAG3 { DXGI_ADAPTER_FLAG3_NONE = 0x0, DXGI_ADAPTER_FLAG3_REMOTE = 0x1, DXGI_ADAPTER_FLAG3_SOFTWARE = 0x2, DXGI_ADAPTER_FLAG3_ACG_COMPATIBLE = 0x4, DXGI_ADAPTER_FLAG3_FORCE_DWORD = 0xffffffff, } DXGI_ADAPTER_FLAG3; typedef enum DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAGS { DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_FULLSCREEN = 0x1, DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_WINDOWED = 0x2, DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_CURSOR_STRETCHED = 0x4, } DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAGS; typedef enum DXGI_GPU_PREFERENCE { DXGI_GPU_PREFERENCE_UNSPECIFIED = 0x0, DXGI_GPU_PREFERENCE_MINIMUM_POWER = 0x1, DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE = 0x2, } DXGI_GPU_PREFERENCE; typedef struct DXGI_ADAPTER_DESC3 { WCHAR Description[128]; UINT VendorId; UINT DeviceId; UINT SubSysId; UINT Revision; SIZE_T DedicatedVideoMemory; SIZE_T DedicatedSystemMemory; SIZE_T SharedSystemMemory; LUID AdapterLuid; DXGI_ADAPTER_FLAG3 Flags; DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity; DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity; } DXGI_ADAPTER_DESC3; typedef struct DXGI_OUTPUT_DESC1 { WCHAR DeviceName[32]; RECT DesktopCoordinates; BOOL AttachedToDesktop; DXGI_MODE_ROTATION Rotation; HMONITOR Monitor; UINT BitsPerColor; DXGI_COLOR_SPACE_TYPE ColorSpace; FLOAT RedPrimary[2]; FLOAT GreenPrimary[2]; FLOAT BluePrimary[2]; FLOAT WhitePoint[2]; FLOAT MinLuminance; FLOAT MaxLuminance; FLOAT MaxFullFrameLuminance; } DXGI_OUTPUT_DESC1; [ object, uuid(3c8d99d1-4fbf-4181-a82c-af66bf7bd24e), local, pointer_default(unique) ] interface IDXGIAdapter4 : IDXGIAdapter3 { HRESULT GetDesc3( [out] DXGI_ADAPTER_DESC3 *desc ); } [ object, uuid(068346e8-aaec-4b84-add7-137f513f77a1), local, pointer_default(unique) ] interface IDXGIOutput6 : IDXGIOutput5 { HRESULT GetDesc1( [out] DXGI_OUTPUT_DESC1 *desc ); HRESULT CheckHardwareCompositionSupport( [out] UINT *flags ); } [ object, uuid(c1b6694f-ff09-44a9-b03c-77900a0a1d17), local, pointer_default(unique) ] interface IDXGIFactory6 : IDXGIFactory5 { HRESULT EnumAdapterByGpuPreference( [in] UINT adapter_idx, [in] DXGI_GPU_PREFERENCE gpu_preference, [in] REFIID iid, [out] void **adapter ); } [ object, uuid(a4966eed-76db-44da-84c1-ee9a7afb20a8), local, pointer_default(unique) ] interface IDXGIFactory7 : IDXGIFactory6 { HRESULT RegisterAdaptersChangedEvent( [in] HANDLE event, [out] DWORD *cookie ); HRESULT UnregisterAdaptersChangedEvent( [in] DWORD cookie ); }