mirror of
https://github.com/terrymacdonald/DisplayMagician.git
synced 2024-08-30 18:32:20 +00:00
[WIP] Enough data for the Idenitifier
We now have enough data for me to identify all the connected display devices, and to generate a display identifier which will work no matter if AMD Eyefinity is enabled or not! This should allow me to generate an display identifier that will work like the NVIDIA ones.
This commit is contained in:
parent
3feef6f429
commit
cf446101dd
@ -42,6 +42,8 @@ namespace ATI.ADL
|
|||||||
/// <returns> retrun ADL Error Code</returns>
|
/// <returns> retrun ADL Error Code</returns>
|
||||||
internal delegate IntPtr ADL_Main_Memory_Alloc (int size);
|
internal delegate IntPtr ADL_Main_Memory_Alloc (int size);
|
||||||
|
|
||||||
|
// ADL2 version of function delagates
|
||||||
|
|
||||||
/// <summary> ADL2 Create Function to create ADL Data</summary>
|
/// <summary> ADL2 Create Function to create ADL Data</summary>
|
||||||
/// <param name="callback">Call back functin pointer which is ised to allocate memory </param>
|
/// <param name="callback">Call back functin pointer which is ised to allocate memory </param>
|
||||||
/// <param name="numConnectedAdapters">If it is 1, then ADL will only retuen the physical exist adapters </param>
|
/// <param name="numConnectedAdapters">If it is 1, then ADL will only retuen the physical exist adapters </param>
|
||||||
@ -67,6 +69,15 @@ namespace ATI.ADL
|
|||||||
/// <returns>Non zero is successful</returns>
|
/// <returns>Non zero is successful</returns>
|
||||||
internal delegate int ADL2_Adapter_Active_Get(IntPtr ADLContextHandle, int adapterIndex, ref int status);
|
internal delegate int ADL2_Adapter_Active_Get(IntPtr ADLContextHandle, int adapterIndex, ref int status);
|
||||||
|
|
||||||
|
/// <summary>ADL2 Function to retrieve adapter capability information.</summary>
|
||||||
|
/// <remarks>This function implements a DI call to retrieve adapter capability information .</remarks>
|
||||||
|
/// <param name="ADLContextHandle">Handle to ADL client context.</param>
|
||||||
|
/// <param name="adapterIndex"> Adapter Index.</param>
|
||||||
|
/// <param name="adapterCapabilities"> The pointer to the ADLAdapterCaps structure storing the retrieved adapter capability information.</param>
|
||||||
|
/// <returns>return ADL Error Code</returns>
|
||||||
|
internal delegate int ADL2_AdapterX2_Caps(IntPtr ADLContextHandle, int adapterIndex, out ADLAdapterCapsX2 adapterCapabilities);
|
||||||
|
|
||||||
|
|
||||||
/// <summary>ADL2 Function to retrieve all OS-known adapter information.</summary>
|
/// <summary>ADL2 Function to retrieve all OS-known adapter information.</summary>
|
||||||
/// <remarks>This function retrieves the adapter information of all OS-known adapters in the system. OS-known adapters can include adapters that are physically present in the system (logical adapters) as well as ones that are no longer present in the system but are still recognized by the OS.</remarks>
|
/// <remarks>This function retrieves the adapter information of all OS-known adapters in the system. OS-known adapters can include adapters that are physically present in the system (logical adapters) as well as ones that are no longer present in the system but are still recognized by the OS.</remarks>
|
||||||
/// <param name="ADLContextHandle">Handle to ADL client context.</param>
|
/// <param name="ADLContextHandle">Handle to ADL client context.</param>
|
||||||
@ -108,6 +119,24 @@ namespace ATI.ADL
|
|||||||
/// <returns> retrun ADL Error Code</returns>
|
/// <returns> retrun ADL Error Code</returns>
|
||||||
internal delegate int ADL2_Display_DDCInfo2_Get(IntPtr ADLContextHandle, int adapterIndex, int displayIndex, out ADLDDCInfo2 displayDDCInfo2);
|
internal delegate int ADL2_Display_DDCInfo2_Get(IntPtr ADLContextHandle, int adapterIndex, int displayIndex, out ADLDDCInfo2 displayDDCInfo2);
|
||||||
|
|
||||||
|
/// <summary>ADL2 function to get display information based on adapter index</summary>
|
||||||
|
/// <param name="ADLContextHandle">Handle to ADL client context.</param>
|
||||||
|
/// <param name="adapterIndex">Adapter Index</param>
|
||||||
|
/// <param name="numDisplays">return the total number of supported displays</param>
|
||||||
|
/// <param name="displayInfoArray">return ADLDisplayInfo Array for supported displays' information</param>
|
||||||
|
/// <param name="forceDetect">force detect or not</param>
|
||||||
|
/// <returns>return ADL Error Code</returns>
|
||||||
|
internal delegate int ADL2_Display_DisplayInfo_Get(IntPtr ADLContextHandle, int adapterIndex, ref int numDisplays, out IntPtr displayInfoArray, int forceDetect);
|
||||||
|
|
||||||
|
/// <summary>This ADL2 function retrieves HDTV capability settings for a specified display.</summary>
|
||||||
|
/// <param name="ADLContextHandle">Handle to ADL client context.</param>
|
||||||
|
/// <param name="adapterIndex">Adapter Index</param>
|
||||||
|
/// <param name="displayIndex">Display Index</param>
|
||||||
|
/// <param name="displayConfig">return ADLDisplayConfig with HDTV capability settings in it</param>
|
||||||
|
/// <returns>return ADL Error Code</returns>
|
||||||
|
internal delegate int ADL2_Display_DeviceConfig_Get(IntPtr ADLContextHandle, int adapterIndex, int displayIndex, out ADLDisplayConfig displayConfig);
|
||||||
|
|
||||||
|
// ADL version of function delagates
|
||||||
|
|
||||||
/// <summary> ADL Create Function to create ADL Data</summary>
|
/// <summary> ADL Create Function to create ADL Data</summary>
|
||||||
/// <param name="callback">Call back functin pointer which is ised to allocate memeory </param>
|
/// <param name="callback">Call back functin pointer which is ised to allocate memeory </param>
|
||||||
@ -399,7 +428,7 @@ namespace ATI.ADL
|
|||||||
internal struct ADLDisplayEDIDData
|
internal struct ADLDisplayEDIDData
|
||||||
{
|
{
|
||||||
/// <summary> EDIDData [256] </summary>
|
/// <summary> EDIDData [256] </summary>
|
||||||
[MarshalAs(UnmanagedType.LPStr, SizeConst = (int)ADL.ADL_MAX_EDIDDATA_SIZE)]
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)ADL.ADL_MAX_EDIDDATA_SIZE)]
|
||||||
internal string EDIDData;
|
internal string EDIDData;
|
||||||
/// <summary> Block Index </summary>
|
/// <summary> Block Index </summary>
|
||||||
internal int BlockIndex;
|
internal int BlockIndex;
|
||||||
@ -418,89 +447,84 @@ namespace ATI.ADL
|
|||||||
[StructLayout(LayoutKind.Sequential)]
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
internal struct ADLDDCInfo2
|
internal struct ADLDDCInfo2
|
||||||
{
|
{
|
||||||
|
/// <summary> Size of the structure. </summary>
|
||||||
|
internal int Size;
|
||||||
|
/// <summary> Whether this display device support DDC</summary>
|
||||||
|
internal int SupportsDDC;
|
||||||
|
/// <summary> Returns the manufacturer ID of the display device. Should be zeroed if this information is not available.</summary>
|
||||||
|
internal int ManufacturerID;
|
||||||
|
/// <summary> Returns the product ID of the display device. Should be zeroed if this informatiadlon is not available.</summary>
|
||||||
|
internal int ProductID;
|
||||||
|
/// <summary> Returns the name of the display device. Should be zeroed if this information is not available.</summary>
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = (int)ADL.ADL_MAX_DISPLAY_NAME)]
|
||||||
|
internal string DisplayName;
|
||||||
|
/// <summary> Returns the maximum Horizontal supported resolution. Should be zeroed if this information is not available.</summary>
|
||||||
|
internal int MaxHResolution;
|
||||||
|
/// <summary> Returns the maximum Vertical supported resolution. Should be zeroed if this information is not available. </summary>
|
||||||
|
internal int MaxVResolution;
|
||||||
|
/// <summary> Returns the maximum supported refresh rate. Should be zeroed if this information is not available. </summary>
|
||||||
|
internal int MaxRefresh;
|
||||||
|
/// <summary> Returns the display device preferred timing mode's horizontal resolution.</summary>
|
||||||
|
internal int PTMCx;
|
||||||
|
/// <summary> Returns the display device preferred timing mode's vertical resolution. </summary>
|
||||||
|
internal int PTMCy;
|
||||||
|
/// <summary> Returns the display device preferred timing mode's refresh rate.</summary>
|
||||||
|
internal int PTMRefreshRate;
|
||||||
|
/// <summary> Return EDID flags.</summary>
|
||||||
|
internal int DDCInfoFlag;
|
||||||
/// <summary> Returns 1 if the display supported packed pixel, 0 otherwise. </summary>
|
/// <summary> Returns 1 if the display supported packed pixel, 0 otherwise. </summary>
|
||||||
internal int PackedPixelSupported;
|
internal int PackedPixelSupported;
|
||||||
/// <summary> Returns the name of the display device. Should be zeroed if this information is not available.</summary>
|
/// <summary> Returns the Pixel formats the display supports DDCInfo Pixel Formats.</summary>
|
||||||
[MarshalAs(UnmanagedType.LPStr, SizeConst = (int)ADL.ADL_MAX_EDIDDATA_SIZE)]
|
internal int PanelPixelFormat;
|
||||||
internal string DisplayName ;
|
/// <summary> Return EDID serial ID.</summary>
|
||||||
/// <summary> Display diffuse screen reflectance 0-1 (100%) in units of 0.01.</summary>
|
internal int SerialID;
|
||||||
internal int DiffuseScreenReflectance;
|
/// <summary> Return minimum monitor luminance data.</summary>
|
||||||
/// <summary> Bit vector for freesync flags.</summary>
|
internal int MinLuminanceData;
|
||||||
internal int FreesyncFlags;
|
/// <summary> Return average monitor luminance data. </summary>
|
||||||
/// <summary> Display Blue Chromaticity X coordinate multiplied by 10000.</summary>
|
internal int AvgLuminanceData;
|
||||||
internal int NativeDisplayChromaticityBlueX;
|
/// <summary> Return maximum monitor luminance data.</summary>
|
||||||
/// <summary> Display Blue Chromaticity Y coordinate multiplied by 10000.</summary>
|
internal int MaxLuminanceData;
|
||||||
internal int NativeDisplayChromaticityBlueY;
|
/// <summary> Bit vector of supported transfer functions ADLSourceContentAttributes transfer functions (gamma). </summary>
|
||||||
/// <summary> Display Green Chromaticity X coordinate multiplied by 10000.</summary>
|
internal int SupportedTransferFunction;
|
||||||
internal int NativeDisplayChromaticityGreenX;
|
/// <summary> Bit vector of supported color spaces ADLSourceContentAttributes color spaces.</summary>
|
||||||
/// <summary> Display Green Chromaticity Y coordinate multiplied by 10000.</summary>
|
internal int SupportedColorSpace;
|
||||||
internal int NativeDisplayChromaticityGreenY;
|
|
||||||
/// <summary> Display Red Chromaticity X coordinate multiplied by 10000.</summary>
|
/// <summary> Display Red Chromaticity X coordinate multiplied by 10000.</summary>
|
||||||
internal int NativeDisplayChromaticityRedX;
|
internal int NativeDisplayChromaticityRedX;
|
||||||
/// <summary> Display Red Chromaticity Y coordinate multiplied by 10000.</summary>
|
/// <summary> Display Red Chromaticity Y coordinate multiplied by 10000.</summary>
|
||||||
internal int NativeDisplayChromaticityRedY;
|
internal int NativeDisplayChromaticityRedY;
|
||||||
|
/// <summary> Display Green Chromaticity X coordinate multiplied by 10000.</summary>
|
||||||
|
internal int NativeDisplayChromaticityGreenX;
|
||||||
|
/// <summary> Display Green Chromaticity Y coordinate multiplied by 10000.</summary>
|
||||||
|
internal int NativeDisplayChromaticityGreenY;
|
||||||
|
/// <summary> Display Blue Chromaticity X coordinate multiplied by 10000.</summary>
|
||||||
|
internal int NativeDisplayChromaticityBlueX;
|
||||||
|
/// <summary> Display Blue Chromaticity Y coordinate multiplied by 10000.</summary>
|
||||||
|
internal int NativeDisplayChromaticityBlueY;
|
||||||
/// <summary> Display White Chromaticity X coordinate multiplied by 10000.</summary>
|
/// <summary> Display White Chromaticity X coordinate multiplied by 10000.</summary>
|
||||||
internal int NativeDisplayChromaticityWhiteX;
|
internal int NativeDisplayChromaticityWhiteX;
|
||||||
/// <summary> Display White Chromaticity Y coordinate multiplied by 10000.</summary>
|
/// <summary> Display White Chromaticity Y coordinate multiplied by 10000.</summary>
|
||||||
internal int NativeDisplayChromaticityWhiteY;
|
internal int NativeDisplayChromaticityWhiteY;
|
||||||
/// <summary> Returns the Pixel formats the display supports DDCInfo Pixel Formats.</summary>
|
/// <summary> Display diffuse screen reflectance 0-1 (100%) in units of 0.01.</summary>
|
||||||
internal int PanelPixelFormat;
|
internal int DiffuseScreenReflectance;
|
||||||
/// <summary> Reserved1 </summary>
|
|
||||||
internal int Reserved1;
|
|
||||||
/// <summary> Reserved2 </summary>
|
|
||||||
internal int Reserved2;
|
|
||||||
/// <summary> Reserved3 </summary>
|
|
||||||
internal int Reserved3;
|
|
||||||
/// <summary> Reserved4 </summary>
|
|
||||||
internal int Reserved4;
|
|
||||||
/// <summary> Display specular screen reflectance 0-1 (100%) in units of 0.01.</summary>
|
/// <summary> Display specular screen reflectance 0-1 (100%) in units of 0.01.</summary>
|
||||||
internal int SpecularScreenReflectance;
|
internal int SpecularScreenReflectance;
|
||||||
/// <summary> Bit vector of supported color spaces ADLSourceContentAttributes color spaces.</summary>
|
|
||||||
internal int SupportedColorSpace;
|
|
||||||
/// <summary> Bit vector of supported color spaces ADLDDCInfo2 HDR support options.</summary>
|
/// <summary> Bit vector of supported color spaces ADLDDCInfo2 HDR support options.</summary>
|
||||||
internal int SupportedHDR;
|
internal int SupportedHDR;
|
||||||
/// <summary> Bit vector of supported transfer functions ADLSourceContentAttributes transfer functions (gamma). </summary>
|
/// <summary> Bit vector for freesync flags.</summary>
|
||||||
internal int SupportedTransferFunction;
|
internal int FreesyncFlags;
|
||||||
/// <summary> Return average monitor luminance data. </summary>
|
|
||||||
internal uint AvgLuminanceData;
|
|
||||||
/// <summary> Return EDID flags.</summary>
|
|
||||||
internal uint DDCInfoFlag;
|
|
||||||
/// <summary> Returns the manufacturer ID of the display device. Should be zeroed if this information is not available.</summary>
|
|
||||||
internal uint ManufacturerID;
|
|
||||||
/// <summary> Returns the maximum backlight maximum luminance. Should be zeroed if this information is not available.</summary>
|
|
||||||
internal uint MaxBacklightMaxLuminanceData;
|
|
||||||
/// <summary> Returns the maximum backlight minimum luminance. Should be zeroed if this information is not available.</summary>
|
|
||||||
internal uint MaxBacklightMinLuminanceData;
|
|
||||||
/// <summary> Returns the maximum Horizontal supported resolution. Should be zeroed if this information is not available.</summary>
|
|
||||||
internal uint MaxHResolution;
|
|
||||||
/// <summary> Return maximum monitor luminance data.</summary>
|
|
||||||
internal uint MaxLuminanceData;
|
|
||||||
/// <summary> Returns the maximum supported refresh rate. Should be zeroed if this information is not available. </summary>
|
|
||||||
internal uint MaxRefresh;
|
|
||||||
/// <summary> Returns the maximum Vertical supported resolution. Should be zeroed if this information is not available. </summary>
|
|
||||||
internal uint MaxVResolution;
|
|
||||||
/// <summary> Returns the minimum backlight maximum luminance. Should be zeroed if this information is not available.</summary>
|
|
||||||
internal uint MinBacklightMaxLuminanceData;
|
|
||||||
/// <summary> Returns the minimum backlight maximum luminance. Should be zeroed if this information is not available.</summary>
|
|
||||||
internal uint MinBacklightMinLuminanceData;
|
|
||||||
/// <summary> Return minimum monitor luminance data.</summary>
|
|
||||||
internal uint MinLuminanceData;
|
|
||||||
/// <summary> Return minimum monitor luminance without dimming data.</summary>
|
/// <summary> Return minimum monitor luminance without dimming data.</summary>
|
||||||
internal uint MinLuminanceNoDimmingData;
|
internal int MinLuminanceNoDimmingData;
|
||||||
/// <summary> Returns the product ID of the display device. Should be zeroed if this information is not available.</summary>
|
/// <summary> Returns the maximum backlight maximum luminance. Should be zeroed if this information is not available.</summary>
|
||||||
internal uint ProductID;
|
internal int MaxBacklightMaxLuminanceData;
|
||||||
/// <summary> Returns the display device preferred timing mode's horizontal resolution.</summary>
|
/// <summAry> Returns the minimum backlight maximum luminance. Should be zeroed if this information is not available.</summary>
|
||||||
internal uint PTMCx;
|
internal int MinBacklightMaxLuminanceData;
|
||||||
/// <summary> Returns the display device preferred timing mode's vertical resolution. </summary>
|
/// <summary> Returns the maximum backlight minimum luminance. Should be zeroed if this information is not available.</summary>
|
||||||
internal uint PTMCy;
|
internal int MaxBacklightMinLuminanceData;
|
||||||
/// <summary> Returns the display device preferred timing mode's refresh rate.</summary>
|
/// <summary> Returns the minimum backlight maximum luminance. Should be zeroed if this information is not available.</summary>
|
||||||
internal uint PTMRefreshRate;
|
internal int MinBacklightMinLuminanceData;
|
||||||
/// <summary> Return EDID serial ID.</summary>
|
/// <summary> Reserved </summary>
|
||||||
internal uint SerialID;
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
|
||||||
/// <summary> Size of the structure. </summary>
|
internal int[] Reserved;
|
||||||
internal uint Size;
|
|
||||||
/// <summary> Whether this display device support DDC</summary>
|
|
||||||
internal uint SupportsDDC;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> ADLDisplayID Structure</summary>
|
/// <summary> ADLDisplayID Structure</summary>
|
||||||
@ -834,6 +858,8 @@ namespace ATI.ADL
|
|||||||
internal const int ADL_MAX_DEVICENAME = 32;
|
internal const int ADL_MAX_DEVICENAME = 32;
|
||||||
/// <summary> Define the maximum EDID Data length</summary>
|
/// <summary> Define the maximum EDID Data length</summary>
|
||||||
internal const int ADL_MAX_EDIDDATA_SIZE = 256;
|
internal const int ADL_MAX_EDIDDATA_SIZE = 256;
|
||||||
|
/// <summary> Define the maximum display names</summary>
|
||||||
|
internal const int ADL_MAX_DISPLAY_NAME = 256;
|
||||||
|
|
||||||
// Result Codes
|
// Result Codes
|
||||||
/// <summary> ADL function completed successfully. </summary>
|
/// <summary> ADL function completed successfully. </summary>
|
||||||
@ -1036,6 +1062,9 @@ namespace ATI.ADL
|
|||||||
[DllImport(Atiadlxx_FileName)]
|
[DllImport(Atiadlxx_FileName)]
|
||||||
internal static extern int ADL2_Adapter_Active_Get(IntPtr ADLContextHandle, int adapterIndex, ref int status);
|
internal static extern int ADL2_Adapter_Active_Get(IntPtr ADLContextHandle, int adapterIndex, ref int status);
|
||||||
|
|
||||||
|
[DllImport(Atiadlxx_FileName)]
|
||||||
|
internal static extern int ADL2_AdapterX2_Caps(IntPtr ADLContextHandle, int adapterIndex, out ADLAdapterCapsX2 adapterCapabilities);
|
||||||
|
|
||||||
[DllImport(Atiadlxx_FileName)]
|
[DllImport(Atiadlxx_FileName)]
|
||||||
internal static extern int ADL2_Adapter_AdapterInfo_Get(IntPtr ADLContextHandle, int inputSize, out IntPtr AdapterInfoArray);
|
internal static extern int ADL2_Adapter_AdapterInfo_Get(IntPtr ADLContextHandle, int inputSize, out IntPtr AdapterInfoArray);
|
||||||
|
|
||||||
@ -1051,6 +1080,12 @@ namespace ATI.ADL
|
|||||||
[DllImport(Atiadlxx_FileName)]
|
[DllImport(Atiadlxx_FileName)]
|
||||||
internal static extern int ADL2_Display_DDCInfo2_Get(IntPtr contextHandle, int adapterIndex, int displayIndex, out ADLDDCInfo2 DDCInfo);
|
internal static extern int ADL2_Display_DDCInfo2_Get(IntPtr contextHandle, int adapterIndex, int displayIndex, out ADLDDCInfo2 DDCInfo);
|
||||||
|
|
||||||
|
[DllImport(Atiadlxx_FileName)]
|
||||||
|
internal static extern int ADL2_Display_DisplayInfo_Get(IntPtr ADLContextHandle, int adapterIndex, ref int numDisplays, out IntPtr displayInfoArray, int forceDetect);
|
||||||
|
|
||||||
|
[DllImport(Atiadlxx_FileName)]
|
||||||
|
internal static extern int ADL2_Display_DeviceConfig_Get(IntPtr ADLContextHandle, int adapterIndex, int displayIndex, out ADLDisplayConfig displayConfig);
|
||||||
|
|
||||||
[DllImport(Atiadlxx_FileName)]
|
[DllImport(Atiadlxx_FileName)]
|
||||||
internal static extern int ADL_Main_Control_Create (ADL_Main_Memory_Alloc callback, int enumConnectedAdapters);
|
internal static extern int ADL_Main_Control_Create (ADL_Main_Memory_Alloc callback, int enumConnectedAdapters);
|
||||||
|
|
||||||
@ -1314,6 +1349,29 @@ namespace ATI.ADL
|
|||||||
private static bool ADL2_Adapter_Active_Get_Check = false;
|
private static bool ADL2_Adapter_Active_Get_Check = false;
|
||||||
#endregion ADL2_Adapter_Active_Get
|
#endregion ADL2_Adapter_Active_Get
|
||||||
|
|
||||||
|
#region ADL2_AdapterX2_Caps
|
||||||
|
/// <summary> ADL2_AdapterX2_Caps Delegates</summary>
|
||||||
|
internal static ADL2_AdapterX2_Caps ADL2_AdapterX2_Caps
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (!ADL2_AdapterX2_Caps_Check && null == ADL2_AdapterX2_Caps_)
|
||||||
|
{
|
||||||
|
ADL2_AdapterX2_Caps_Check = true;
|
||||||
|
if (ADLCheckLibrary.IsFunctionValid("ADL2_AdapterX2_Caps"))
|
||||||
|
{
|
||||||
|
ADL2_AdapterX2_Caps_ = ADLImport.ADL2_AdapterX2_Caps;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ADL2_AdapterX2_Caps_;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary> Private Delegate</summary>
|
||||||
|
private static ADL2_AdapterX2_Caps ADL2_AdapterX2_Caps_ = null;
|
||||||
|
/// <summary> check flag to indicate the delegate has been checked</summary>
|
||||||
|
private static bool ADL2_AdapterX2_Caps_Check = false;
|
||||||
|
#endregion ADL2_AdapterX2_Caps
|
||||||
|
|
||||||
|
|
||||||
#region ADL2_Adapter_AdapterInfo_Get
|
#region ADL2_Adapter_AdapterInfo_Get
|
||||||
/// <summary> ADL2_Adapter_AdapterInfo_Get Delegates</summary>
|
/// <summary> ADL2_Adapter_AdapterInfo_Get Delegates</summary>
|
||||||
@ -1430,6 +1488,51 @@ namespace ATI.ADL
|
|||||||
private static bool ADL2_Display_DDCInfo2_Get_Check = false;
|
private static bool ADL2_Display_DDCInfo2_Get_Check = false;
|
||||||
#endregion ADL2_Display_DDCInfo2_Get
|
#endregion ADL2_Display_DDCInfo2_Get
|
||||||
|
|
||||||
|
#region ADL2_Display_DisplayInfo_Get
|
||||||
|
/// <summary> ADL2_Display_DisplayInfo_Get Delegates</summary>
|
||||||
|
internal static ADL2_Display_DisplayInfo_Get ADL2_Display_DisplayInfo_Get
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (!ADL2_Display_DisplayInfo_Get_Check && null == ADL2_Display_DisplayInfo_Get_)
|
||||||
|
{
|
||||||
|
ADL2_Display_DisplayInfo_Get_Check = true;
|
||||||
|
if (ADLCheckLibrary.IsFunctionValid("ADL2_Display_DisplayInfo_Get"))
|
||||||
|
{
|
||||||
|
ADL2_Display_DisplayInfo_Get_ = ADLImport.ADL2_Display_DisplayInfo_Get;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ADL2_Display_DisplayInfo_Get_;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary> Private Delegate</summary>
|
||||||
|
private static ADL2_Display_DisplayInfo_Get ADL2_Display_DisplayInfo_Get_ = null;
|
||||||
|
/// <summary> check flag to indicate the delegate has been checked</summary>
|
||||||
|
private static bool ADL2_Display_DisplayInfo_Get_Check = false;
|
||||||
|
#endregion ADL2_Display_DisplayInfo_Get
|
||||||
|
|
||||||
|
#region ADL2_Display_DeviceConfig_Get
|
||||||
|
/// <summary> ADL2_Display_DeviceConfig_Get Delegates</summary>
|
||||||
|
internal static ADL2_Display_DeviceConfig_Get ADL2_Display_DeviceConfig_Get
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (!ADL2_Display_DeviceConfig_Get_Check && null == ADL2_Display_DeviceConfig_Get_)
|
||||||
|
{
|
||||||
|
ADL2_Display_DeviceConfig_Get_Check = true;
|
||||||
|
if (ADLCheckLibrary.IsFunctionValid("ADL2_Display_DeviceConfig_Get"))
|
||||||
|
{
|
||||||
|
ADL2_Display_DeviceConfig_Get_ = ADLImport.ADL2_Display_DeviceConfig_Get;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ADL2_Display_DeviceConfig_Get_;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary> Private Delegate</summary>
|
||||||
|
private static ADL2_Display_DeviceConfig_Get ADL2_Display_DeviceConfig_Get_ = null;
|
||||||
|
/// <summary> check flag to indicate the delegate has been checked</summary>
|
||||||
|
private static bool ADL2_Display_DeviceConfig_Get_Check = false;
|
||||||
|
#endregion ADL2_Display_DeviceConfig_Get
|
||||||
|
|
||||||
#region ADL_Main_Control_Create
|
#region ADL_Main_Control_Create
|
||||||
/// <summary> ADL_Main_Control_Create Delegates</summary>
|
/// <summary> ADL_Main_Control_Create Delegates</summary>
|
||||||
|
@ -281,9 +281,9 @@ namespace DisplayMagicianShared.AMD
|
|||||||
|
|
||||||
// Get the Adapter Capabilities
|
// Get the Adapter Capabilities
|
||||||
ADLAdapterCapsX2 AdapterCapabilities = new ADLAdapterCapsX2();
|
ADLAdapterCapsX2 AdapterCapabilities = new ADLAdapterCapsX2();
|
||||||
if (ADL.ADL_AdapterX2_Caps != null)
|
if (ADL.ADL2_AdapterX2_Caps != null)
|
||||||
{
|
{
|
||||||
ADLRet = ADL.ADL_AdapterX2_Caps(oneAdapter.AdapterIndex, out AdapterCapabilities);
|
ADLRet = ADL.ADL2_AdapterX2_Caps(_adlContextHandle, oneAdapter.AdapterIndex, out AdapterCapabilities);
|
||||||
}
|
}
|
||||||
|
|
||||||
//ADLAdapterCapsX2 AdapterCapabilities = (ADLAdapterCapsX2)Marshal.PtrToStructure(AdapterCapabilitiesBuffer, typeof(ADLAdapterCapsX2));
|
//ADLAdapterCapsX2 AdapterCapabilities = (ADLAdapterCapsX2)Marshal.PtrToStructure(AdapterCapabilitiesBuffer, typeof(ADLAdapterCapsX2));
|
||||||
@ -300,13 +300,13 @@ namespace DisplayMagicianShared.AMD
|
|||||||
// Obtain information about displays
|
// Obtain information about displays
|
||||||
ADLDisplayInfo oneDisplayInfo = new ADLDisplayInfo();
|
ADLDisplayInfo oneDisplayInfo = new ADLDisplayInfo();
|
||||||
|
|
||||||
if (ADL.ADL_Display_DisplayInfo_Get != null)
|
if (ADL.ADL2_Display_DisplayInfo_Get != null)
|
||||||
{
|
{
|
||||||
IntPtr DisplayBuffer = IntPtr.Zero;
|
IntPtr DisplayBuffer = IntPtr.Zero;
|
||||||
int j = 0;
|
int j = 0;
|
||||||
|
|
||||||
// Force the display detection and get the Display Info. Use 0 as last parameter to NOT force detection
|
// Force the display detection and get the Display Info. Use 0 as last parameter to NOT force detection
|
||||||
ADLRet = ADL.ADL_Display_DisplayInfo_Get(oneAdapter.AdapterIndex, ref NumberOfDisplays, out DisplayBuffer, 0);
|
ADLRet = ADL.ADL2_Display_DisplayInfo_Get(_adlContextHandle, oneAdapter.AdapterIndex, ref NumberOfDisplays, out DisplayBuffer, 0);
|
||||||
if (ADLRet == ADL.ADL_OK)
|
if (ADLRet == ADL.ADL_OK)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -318,8 +318,30 @@ namespace DisplayMagicianShared.AMD
|
|||||||
// Marshal the returned array of displayinfo into managed objects one by one
|
// Marshal the returned array of displayinfo into managed objects one by one
|
||||||
// NOTE: the ToInt64 work on 64 bit, need to change to ToInt32 for 32 bit OS
|
// NOTE: the ToInt64 work on 64 bit, need to change to ToInt32 for 32 bit OS
|
||||||
oneDisplayInfo = (ADLDisplayInfo)Marshal.PtrToStructure(new IntPtr(DisplayBuffer.ToInt64() + (j * Marshal.SizeOf(oneDisplayInfo))), oneDisplayInfo.GetType());
|
oneDisplayInfo = (ADLDisplayInfo)Marshal.PtrToStructure(new IntPtr(DisplayBuffer.ToInt64() + (j * Marshal.SizeOf(oneDisplayInfo))), oneDisplayInfo.GetType());
|
||||||
// Skip non connected displays
|
|
||||||
|
|
||||||
|
if (oneDisplayInfo.DisplayID.DisplayLogicalAdapterIndex == -1)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Trace($"ADLWrapper/GenerateProfileDisplayIdentifiers: AMD Adapter #{i} ({oneAdapter.AdapterName}) AdapterID display ID#{j} is not a real display as its DisplayID.DisplayLogicalAdapterIndex is -1");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert the displayInfoValue to something usable using a library function I made
|
||||||
|
ConvertedDisplayInfoValue displayInfoValue = ADL.ConvertDisplayInfoValue(oneDisplayInfo.DisplayInfoValue);
|
||||||
|
|
||||||
|
if (!displayInfoValue.DISPLAYCONNECTED)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Trace($"ADLWrapper/GenerateProfileDisplayIdentifiers: AMD Adapter #{i} ({oneAdapter.AdapterName}) AdapterID display ID#{j} is not connected");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skip connected but non-mapped displays (not mapped in windows) - we want all displays currently visible in the OS
|
||||||
|
if (!displayInfoValue.DISPLAYMAPPED)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Trace($"ADLWrapper/GenerateProfileDisplayIdentifiers: AMD Adapter #{i} ({oneAdapter.AdapterName}) AdapterID display ID#{j} is not mapped in Windows OS");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skip fake displays
|
||||||
Console.WriteLine($"### Display Info for Display #{oneDisplayInfo.DisplayID.DisplayLogicalIndex} on Adapter #{oneAdapter.AdapterIndex} ###");
|
Console.WriteLine($"### Display Info for Display #{oneDisplayInfo.DisplayID.DisplayLogicalIndex} on Adapter #{oneAdapter.AdapterIndex} ###");
|
||||||
Console.WriteLine($"Display Connector = {oneDisplayInfo.DisplayConnector}");
|
Console.WriteLine($"Display Connector = {oneDisplayInfo.DisplayConnector}");
|
||||||
Console.WriteLine($"Display Controller Index = {oneDisplayInfo.DisplayControllerIndex}");
|
Console.WriteLine($"Display Controller Index = {oneDisplayInfo.DisplayControllerIndex}");
|
||||||
@ -334,43 +356,30 @@ namespace DisplayMagicianShared.AMD
|
|||||||
Console.WriteLine($"Display Output Type = {oneDisplayInfo.DisplayOutputType}");
|
Console.WriteLine($"Display Output Type = {oneDisplayInfo.DisplayOutputType}");
|
||||||
Console.WriteLine($"Display Type = {oneDisplayInfo.DisplayType}");
|
Console.WriteLine($"Display Type = {oneDisplayInfo.DisplayType}");
|
||||||
|
|
||||||
// Convert the displayInfoValue to something usable using a library function I made
|
Console.WriteLine($"Display Info Value DISPLAYCONNECTED = {displayInfoValue.DISPLAYCONNECTED}");
|
||||||
ConvertedDisplayInfoValue displayInforValue = ADL.ConvertDisplayInfoValue(oneDisplayInfo.DisplayInfoValue);
|
Console.WriteLine($"Display Info Value DISPLAYMAPPED = {displayInfoValue.DISPLAYMAPPED}");
|
||||||
Console.WriteLine($"Display Info Value DISPLAYCONNECTED = {displayInforValue.DISPLAYCONNECTED}");
|
Console.WriteLine($"Display Info Value FORCIBLESUPPORTED = {displayInfoValue.FORCIBLESUPPORTED}");
|
||||||
Console.WriteLine($"Display Info Value DISPLAYMAPPED = {displayInforValue.DISPLAYMAPPED}");
|
Console.WriteLine($"Display Info Value GENLOCKSUPPORTED = {displayInfoValue.GENLOCKSUPPORTED}");
|
||||||
Console.WriteLine($"Display Info Value FORCIBLESUPPORTED = {displayInforValue.FORCIBLESUPPORTED}");
|
Console.WriteLine($"Display Info Value LDA_DISPLAY = {displayInfoValue.LDA_DISPLAY}");
|
||||||
Console.WriteLine($"Display Info Value GENLOCKSUPPORTED = {displayInforValue.GENLOCKSUPPORTED}");
|
Console.WriteLine($"Display Info Value MANNER_SUPPORTED_2HSTRETCH = {displayInfoValue.MANNER_SUPPORTED_2HSTRETCH}");
|
||||||
Console.WriteLine($"Display Info Value LDA_DISPLAY = {displayInforValue.LDA_DISPLAY}");
|
Console.WriteLine($"Display Info Value MANNER_SUPPORTED_2VSTRETCH = {displayInfoValue.MANNER_SUPPORTED_2VSTRETCH}");
|
||||||
Console.WriteLine($"Display Info Value MANNER_SUPPORTED_2HSTRETCH = {displayInforValue.MANNER_SUPPORTED_2HSTRETCH}");
|
Console.WriteLine($"Display Info Value MANNER_SUPPORTED_CLONE = {displayInfoValue.MANNER_SUPPORTED_CLONE}");
|
||||||
Console.WriteLine($"Display Info Value MANNER_SUPPORTED_2VSTRETCH = {displayInforValue.MANNER_SUPPORTED_2VSTRETCH}");
|
Console.WriteLine($"Display Info Value MANNER_SUPPORTED_EXTENDED = {displayInfoValue.MANNER_SUPPORTED_EXTENDED}");
|
||||||
Console.WriteLine($"Display Info Value MANNER_SUPPORTED_CLONE = {displayInforValue.MANNER_SUPPORTED_CLONE}");
|
Console.WriteLine($"Display Info Value MANNER_SUPPORTED_NSTRETCH1GPU = {displayInfoValue.MANNER_SUPPORTED_NSTRETCH1GPU}");
|
||||||
Console.WriteLine($"Display Info Value MANNER_SUPPORTED_EXTENDED = {displayInforValue.MANNER_SUPPORTED_EXTENDED}");
|
Console.WriteLine($"Display Info Value MANNER_SUPPORTED_NSTRETCHNGPU = {displayInfoValue.MANNER_SUPPORTED_NSTRETCHNGPU}");
|
||||||
Console.WriteLine($"Display Info Value MANNER_SUPPORTED_NSTRETCH1GPU = {displayInforValue.MANNER_SUPPORTED_NSTRETCH1GPU}");
|
Console.WriteLine($"Display Info Value MANNER_SUPPORTED_SINGLE = {displayInfoValue.MANNER_SUPPORTED_SINGLE}");
|
||||||
Console.WriteLine($"Display Info Value MANNER_SUPPORTED_NSTRETCHNGPU = {displayInforValue.MANNER_SUPPORTED_NSTRETCHNGPU}");
|
Console.WriteLine($"Display Info Value MODETIMING_OVERRIDESSUPPORTED = {displayInfoValue.MODETIMING_OVERRIDESSUPPORTED}");
|
||||||
Console.WriteLine($"Display Info Value MANNER_SUPPORTED_SINGLE = {displayInforValue.MANNER_SUPPORTED_SINGLE}");
|
Console.WriteLine($"Display Info Value MULTIVPU_SUPPORTED = {displayInfoValue.MULTIVPU_SUPPORTED}");
|
||||||
Console.WriteLine($"Display Info Value MODETIMING_OVERRIDESSUPPORTED = {displayInforValue.MODETIMING_OVERRIDESSUPPORTED}");
|
Console.WriteLine($"Display Info Value NONLOCAL = {displayInfoValue.NONLOCAL}");
|
||||||
Console.WriteLine($"Display Info Value MULTIVPU_SUPPORTED = {displayInforValue.MULTIVPU_SUPPORTED}");
|
Console.WriteLine($"Display Info Value SHOWTYPE_PROJECTOR = {displayInfoValue.SHOWTYPE_PROJECTOR}");
|
||||||
Console.WriteLine($"Display Info Value NONLOCAL = {displayInforValue.NONLOCAL}");
|
|
||||||
Console.WriteLine($"Display Info Value SHOWTYPE_PROJECTOR = {displayInforValue.SHOWTYPE_PROJECTOR}");
|
|
||||||
|
|
||||||
if ((oneDisplayInfo.DisplayInfoValue & 1) != 1)
|
|
||||||
{
|
|
||||||
SharedLogger.logger.Trace($"ADLWrapper/GenerateProfileDisplayIdentifiers: AMD Adapter #{i} ({oneAdapter.AdapterName}) AdapterID display ID#{j} is not connected");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Skip connected but non-mapped displays (not mapped in windows) - wae want all displays currently visible in the OS
|
|
||||||
if ((oneDisplayInfo.DisplayInfoValue & 2) != 2)
|
|
||||||
{
|
|
||||||
SharedLogger.logger.Trace($"ADLWrapper/GenerateProfileDisplayIdentifiers: AMD Adapter #{i} ({oneAdapter.AdapterName}) AdapterID display ID#{j} is not connected");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
ADLDisplayConfig displayConfig = new ADLDisplayConfig();
|
ADLDisplayConfig displayConfig = new ADLDisplayConfig();
|
||||||
if (ADL.ADL_Display_DeviceConfig_Get != null)
|
displayConfig.Size = Marshal.SizeOf(displayConfig);
|
||||||
|
if (ADL.ADL2_Display_DeviceConfig_Get != null)
|
||||||
{
|
{
|
||||||
// Get the DisplayConfig from the Display
|
// Get the DisplayConfig from the Display
|
||||||
ADLRet = ADL.ADL_Display_DeviceConfig_Get(oneAdapter.AdapterIndex, oneDisplayInfo.DisplayID.DisplayLogicalIndex, out displayConfig);
|
ADLRet = ADL.ADL2_Display_DeviceConfig_Get(_adlContextHandle, oneAdapter.AdapterIndex, oneDisplayInfo.DisplayID.DisplayPhysicalIndex, out displayConfig);
|
||||||
if (ADLRet == ADL.ADL_OK)
|
if (ADLRet == ADL.ADL_OK)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"### Display Device Config for Display #{oneDisplayInfo.DisplayID.DisplayLogicalIndex} on Adapter #{oneAdapter.AdapterIndex} ###");
|
Console.WriteLine($"### Display Device Config for Display #{oneDisplayInfo.DisplayID.DisplayLogicalIndex} on Adapter #{oneAdapter.AdapterIndex} ###");
|
||||||
@ -383,6 +392,7 @@ namespace DisplayMagicianShared.AMD
|
|||||||
}
|
}
|
||||||
|
|
||||||
ADLDDCInfo2 displayDDCInfo2 = new ADLDDCInfo2();
|
ADLDDCInfo2 displayDDCInfo2 = new ADLDDCInfo2();
|
||||||
|
displayDDCInfo2.Size = Marshal.SizeOf(displayDDCInfo2);
|
||||||
// Create a stringbuilder buffer that EDID can be loaded into
|
// Create a stringbuilder buffer that EDID can be loaded into
|
||||||
//displayEDIDData.EDIDData = new StringBuilder(256);
|
//displayEDIDData.EDIDData = new StringBuilder(256);
|
||||||
|
|
||||||
@ -392,16 +402,47 @@ namespace DisplayMagicianShared.AMD
|
|||||||
ADLRet = ADL.ADL2_Display_DDCInfo2_Get(_adlContextHandle, oneAdapter.AdapterIndex, oneDisplayInfo.DisplayID.DisplayPhysicalIndex, out displayDDCInfo2);
|
ADLRet = ADL.ADL2_Display_DDCInfo2_Get(_adlContextHandle, oneAdapter.AdapterIndex, oneDisplayInfo.DisplayID.DisplayPhysicalIndex, out displayDDCInfo2);
|
||||||
if (ADLRet == ADL.ADL_OK)
|
if (ADLRet == ADL.ADL_OK)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"### Display EDID Data for Display #{oneDisplayInfo.DisplayID.DisplayLogicalIndex} on Adapter #{oneAdapter.AdapterIndex} ###");
|
Console.WriteLine($"### Display DDCInfo2 for Display #{oneDisplayInfo.DisplayID.DisplayLogicalIndex} on Adapter #{oneAdapter.AdapterIndex} ###");
|
||||||
Console.WriteLine($"Display Manufacturer ID = {displayDDCInfo2.ManufacturerID}");
|
Console.WriteLine($"Display AvgLuminanceData = {displayDDCInfo2.AvgLuminanceData}");
|
||||||
/*Console.WriteLine($"Display EDID Data = {displayDDCInfo2.EDIDData}");
|
Console.WriteLine($"Display DDCInfoFlag = {displayDDCInfo2.DDCInfoFlag}");
|
||||||
Console.WriteLine($"Display EDID Size = {displayDDCInfo2.EDIDSize}");
|
Console.WriteLine($"Display DiffuseScreenReflectance = {displayDDCInfo2.DiffuseScreenReflectance}");
|
||||||
Console.WriteLine($"Display EDID Flag = {displayDDCInfo2.Flag}");
|
Console.WriteLine($"Display DisplayName = {displayDDCInfo2.DisplayName}");
|
||||||
Console.WriteLine($"Display EDID Reserved = {displayDDCInfo2.Reserved}");
|
Console.WriteLine($"Display FreesyncFlags = {displayDDCInfo2.FreesyncFlags}");
|
||||||
Console.WriteLine($"Display EDID Data Size = {displayDDCInfo2.Size}");*/
|
Console.WriteLine($"Display ManufacturerID = {displayDDCInfo2.ManufacturerID}");
|
||||||
|
Console.WriteLine($"Display MaxBacklightMaxLuminanceData = {displayDDCInfo2.MaxBacklightMaxLuminanceData}");
|
||||||
|
Console.WriteLine($"Display MaxBacklightMinLuminanceData = {displayDDCInfo2.MaxBacklightMinLuminanceData}");
|
||||||
|
Console.WriteLine($"Display MaxHResolution = {displayDDCInfo2.MaxHResolution}");
|
||||||
|
Console.WriteLine($"Display MaxLuminanceData = {displayDDCInfo2.MaxLuminanceData}");
|
||||||
|
Console.WriteLine($"Display MaxRefresh = {displayDDCInfo2.MaxRefresh}");
|
||||||
|
Console.WriteLine($"Display MaxVResolution = {displayDDCInfo2.MaxVResolution}");
|
||||||
|
Console.WriteLine($"Display MinBacklightMaxLuminanceData = {displayDDCInfo2.MinBacklightMaxLuminanceData}");
|
||||||
|
Console.WriteLine($"Display MinBacklightMinLuminanceData = {displayDDCInfo2.MinBacklightMinLuminanceData}");
|
||||||
|
Console.WriteLine($"Display MinLuminanceData = {displayDDCInfo2.MinLuminanceData}");
|
||||||
|
Console.WriteLine($"Display MinLuminanceNoDimmingData = {displayDDCInfo2.MinLuminanceNoDimmingData}");
|
||||||
|
Console.WriteLine($"Display NativeDisplayChromaticityBlueX = {displayDDCInfo2.NativeDisplayChromaticityBlueX}");
|
||||||
|
Console.WriteLine($"Display NativeDisplayChromaticityBlueY = {displayDDCInfo2.NativeDisplayChromaticityBlueY}");
|
||||||
|
Console.WriteLine($"Display NativeDisplayChromaticityGreenX = {displayDDCInfo2.NativeDisplayChromaticityGreenX}");
|
||||||
|
Console.WriteLine($"Display NativeDisplayChromaticityGreenY = {displayDDCInfo2.NativeDisplayChromaticityGreenY}");
|
||||||
|
Console.WriteLine($"Display NativeDisplayChromaticityRedX = {displayDDCInfo2.NativeDisplayChromaticityRedX}");
|
||||||
|
Console.WriteLine($"Display NativeDisplayChromaticityRedY = {displayDDCInfo2.NativeDisplayChromaticityRedY}");
|
||||||
|
Console.WriteLine($"Display NativeDisplayChromaticityWhiteX = {displayDDCInfo2.NativeDisplayChromaticityWhiteX}");
|
||||||
|
Console.WriteLine($"Display NativeDisplayChromaticityWhiteY = {displayDDCInfo2.NativeDisplayChromaticityWhiteY}");
|
||||||
|
Console.WriteLine($"Display PackedPixelSupported = {displayDDCInfo2.PackedPixelSupported}");
|
||||||
|
Console.WriteLine($"Display PanelPixelFormat = {displayDDCInfo2.PanelPixelFormat}");
|
||||||
|
Console.WriteLine($"Display ProductID = {displayDDCInfo2.ProductID}");
|
||||||
|
Console.WriteLine($"Display PTMCx = {displayDDCInfo2.PTMCx}");
|
||||||
|
Console.WriteLine($"Display PTMCy = {displayDDCInfo2.PTMCy}");
|
||||||
|
Console.WriteLine($"Display PTMRefreshRate = {displayDDCInfo2.PTMRefreshRate}");
|
||||||
|
Console.WriteLine($"Display SerialID = {displayDDCInfo2.SerialID}");
|
||||||
|
Console.WriteLine($"Display Size = {displayDDCInfo2.Size}");
|
||||||
|
Console.WriteLine($"Display SpecularScreenReflectance = {displayDDCInfo2.SpecularScreenReflectance}");
|
||||||
|
Console.WriteLine($"Display SupportedColorSpace = {displayDDCInfo2.SupportedColorSpace}");
|
||||||
|
Console.WriteLine($"Display SupportedHDR = {displayDDCInfo2.SupportedHDR}");
|
||||||
|
Console.WriteLine($"Display SupportedTransferFunction = {displayDDCInfo2.SupportedTransferFunction}");
|
||||||
|
Console.WriteLine($"Display SupportsDDC = {displayDDCInfo2.SupportsDDC}");
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
Console.WriteLine($"Error running ADL_Display_EdidData_Get on Display #{oneDisplayInfo.DisplayID.DisplayLogicalIndex} on Adapter #{oneAdapter.AdapterIndex}: {ADL.ConvertADLReturnValueIntoWords(ADLRet)}");
|
Console.WriteLine($"Error running ADL_vDisplay_EdidData_Get on Display #{oneDisplayInfo.DisplayID.DisplayLogicalIndex} on Adapter #{oneAdapter.AdapterIndex}: {ADL.ConvertADLReturnValueIntoWords(ADLRet)}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user