Ejemplo n.º 1
0
        public static bool Initialize()
        {
            int ADLRet = -1;

            //Logger.Debug("Initialize");

            var del = ADL.GetDelegate <ADL.ADL_Main_Control_Create>();

            if (del != null)
            {
                // Second parameter is 1: Get only the present adapters
                ADLRet = del(ADL.ADL_Main_Memory_Alloc_Func, 1);
                CheckError(ADLRet, nameof(ADL.ADL_Main_Control_Create));
            }

            var del2 = ADL.GetDelegate <ADL.ADL2_Main_Control_Create>();

            if (del2 != null)
            {
                // Second parameter is 1: Get only the present adapters
                ADLRet = del2(ADL.ADL_Main_Memory_Alloc_Func, 1, ref context);
                CheckError(ADLRet, nameof(ADL.ADL2_Main_Control_Create));
            }

            return(ADL.ADL_SUCCESS == ADLRet);
        }
Ejemplo n.º 2
0
        public static bool SetDisplayDitherState(ADLDisplayInfo display, ADLDitherState ditherState)
        {
            var del = ADL.GetDelegate <ADL.ADL_Display_DitherState_Set>();

            if (display.DisplayID.DisplayPhysicalIndex >= 0 && del != null)
            {
                var ADLRet = del(display.DisplayID.DisplayLogicalAdapterIndex, display.DisplayID.DisplayLogicalIndex, (int)ditherState);

                return(CheckError(ADLRet, nameof(ADL.ADL_Display_DitherState_Set)));
            }
            return(false);
        }
Ejemplo n.º 3
0
        public static bool SetDisplayHDRState(ADLDisplayInfo display, bool enabled)
        {
            var del = ADL.GetDelegate <ADL.ADL2_Display_HDRState_Set>();

            if (display.DisplayID.DisplayPhysicalIndex >= 0 && del != null)
            {
                var ADLRet = del(context, display.DisplayID.DisplayLogicalAdapterIndex, display.DisplayID, enabled ? 1 : 0);

                return(CheckError(ADLRet, nameof(ADL.ADL2_Display_HDRState_Set)));
            }
            return(false);
        }
Ejemplo n.º 4
0
        public static bool SetDisplayColorDepth(ADLDisplayInfo display, ADLColorDepth colorDepth)
        {
            var del = ADL.GetDelegate <ADL.ADL_Display_ColorDepth_Set>();

            if (display.DisplayID.DisplayPhysicalIndex >= 0 && del != null)
            {
                var ADLRet = del(display.DisplayID.DisplayLogicalAdapterIndex, display.DisplayID.DisplayLogicalIndex, (int)colorDepth);

                return(CheckError(ADLRet, nameof(ADL.ADL_Display_ColorDepth_Set)));
            }
            return(false);
        }
Ejemplo n.º 5
0
        public static bool SetDisplayPixelFormat(ADLDisplayInfo display, ADLPixelFormat pixelFormat)
        {
            var del = ADL.GetDelegate <ADL.ADL_Display_PixelFormat_Set>();

            if (display.DisplayID.DisplayPhysicalIndex >= 0 && del != null)
            {
                var ADLRet = del(display.DisplayID.DisplayLogicalAdapterIndex, display.DisplayID.DisplayLogicalIndex, (int)pixelFormat);

                return(CheckError(ADLRet, nameof(ADL.ADL_Display_PixelFormat_Set)));
            }
            return(false);
        }
Ejemplo n.º 6
0
        public static bool GetDisplayHDRState(ADLDisplayInfo display, ref bool supported, ref bool enabled)
        {
            var del = ADL.GetDelegate <ADL.ADL2_Display_HDRState_Get>();

            if (display.DisplayID.DisplayPhysicalIndex >= 0 && del != null)
            {
                var supportedInt = 0;
                var enabledInt   = 0;
                var ADLRet       = del(context, display.DisplayID.DisplayLogicalAdapterIndex, display.DisplayID, ref supportedInt, ref enabledInt);

                supported = supportedInt != 0;
                enabled   = enabledInt != 0;

                return(CheckError(ADLRet, nameof(ADL.ADL2_Display_HDRState_Get)));
            }
            return(false);
        }
Ejemplo n.º 7
0
        public static void Uninitialze()
        {
            if (!ADL.ADLDelegates.Any())
            {
                return;
            }

            var del = ADL.GetDelegate <ADL.ADL_Main_Control_Destroy>();

            if (null != del)
            {
                del();
            }

            var del2 = ADL.GetDelegate <ADL.ADL2_Main_Control_Destroy>();

            if (null != del2 && context != IntPtr.Zero)
            {
                del2(context);
            }
        }
Ejemplo n.º 8
0
        public static List <ADLDisplayInfo> GetAllDisplays(bool connected = true)
        {
            int ADLRet;
            int NumberOfDisplays = 0;

            var DisplayInfoData = new List <ADLDisplayInfo>();

            var OSAdapterInfoData = GetAdapters();

            if (OSAdapterInfoData == null || !OSAdapterInfoData.Value.ADLAdapterInfo.Any())
            {
                return(DisplayInfoData);
            }
            var primaryAdapter = OSAdapterInfoData.Value.ADLAdapterInfo.First();

            ADLDisplayInfo oneDisplayInfo = new ADLDisplayInfo();

            var del = ADL.GetDelegate <ADL.ADL_Display_DisplayInfo_Get>();

            if (null != del)
            {
                IntPtr DisplayBuffer = IntPtr.Zero;
                int    j             = 0;

                // Force the display detection and get the Display Info. Use 0 as last parameter to NOT force detection
                ADLRet = del(primaryAdapter.AdapterIndex, ref NumberOfDisplays, out DisplayBuffer, 1);
                if (ADL.ADL_SUCCESS == ADLRet)
                {
                    for (j = 0; j < NumberOfDisplays; j++)
                    {
                        oneDisplayInfo = (ADLDisplayInfo)Marshal.PtrToStructure(new IntPtr(DisplayBuffer.ToInt64() + j * Marshal.SizeOf(oneDisplayInfo)), oneDisplayInfo.GetType());
                        if (!connected || (1 == (oneDisplayInfo.DisplayInfoValue & 1)))
                        {
                            DisplayInfoData.Add(oneDisplayInfo);
                        }
                    }
                    Logger.Debug("Total Number of Displays supported: " + NumberOfDisplays.ToString());
                    Logger.Debug("DispID  DispPhyId AdpID  Type OutType  CnctType Connected  Mapped  InfoValue DisplayName ");

                    for (j = 0; j < DisplayInfoData.Count; j++)
                    {
                        int    InfoValue    = DisplayInfoData[j].DisplayInfoValue;
                        string StrConnected = (1 == (InfoValue & 1)) ? "Yes" : "No ";
                        string StrMapped    = (2 == (InfoValue & 2)) ? "Yes" : "No ";
                        int    AdpID        = DisplayInfoData[j].DisplayID.DisplayLogicalAdapterIndex;
                        string StrAdpID     = (AdpID < 0) ? "--" : AdpID.ToString("d2");

                        Logger.Debug(DisplayInfoData[j].DisplayID.DisplayLogicalIndex.ToString() + "       " +
                                     DisplayInfoData[j].DisplayID.DisplayPhysicalIndex.ToString() + "       " +
                                     StrAdpID + "      " +
                                     DisplayInfoData[j].DisplayType.ToString() + "      " +
                                     DisplayInfoData[j].DisplayOutputType.ToString() + "      " +
                                     DisplayInfoData[j].DisplayConnector.ToString() + "        " +
                                     StrConnected + "        " +
                                     StrMapped + "      " +
                                     InfoValue.ToString("x4") + "   " +
                                     DisplayInfoData[j].DisplayName.ToString());
                    }
                }
                else
                {
                    Logger.Debug("ADL_Display_DisplayInfo_Get() returned error code " + ADLRet.ToString());
                }
                // Release the memory for the DisplayInfo structure
                if (IntPtr.Zero != DisplayBuffer)
                {
                    Marshal.FreeCoTaskMem(DisplayBuffer);
                }
            }
            return(DisplayInfoData);
        }
Ejemplo n.º 9
0
        public static ADLAdapterInfoArray?GetAdapters()
        {
            int ADLRet           = -1;
            int NumberOfAdapters = 0;

            var delNumberOfAdapters = ADL.GetDelegate <ADL.ADL_Adapter_NumberOfAdapters_Get>();

            if (null != delNumberOfAdapters)
            {
                delNumberOfAdapters(ref NumberOfAdapters);
            }
            Logger.Debug("Number Of Adapters: " + NumberOfAdapters.ToString() + "\n");

            if (NumberOfAdapters > 0)
            {
                // Get OS adpater info from ADL
                ADLAdapterInfoArray OSAdapterInfoData;
                OSAdapterInfoData = new ADLAdapterInfoArray();

                var delAdapterInfo = ADL.GetDelegate <ADL.ADL_Adapter_AdapterInfo_Get>();

                if (null != delAdapterInfo)
                {
                    IntPtr AdapterBuffer = IntPtr.Zero;
                    int    size          = Marshal.SizeOf(OSAdapterInfoData);
                    AdapterBuffer = Marshal.AllocCoTaskMem((int)size);
                    Marshal.StructureToPtr(OSAdapterInfoData, AdapterBuffer, false);

                    ADLRet = delAdapterInfo(AdapterBuffer, size);
                    if (ADL.ADL_SUCCESS == ADLRet)
                    {
                        OSAdapterInfoData = (ADLAdapterInfoArray)Marshal.PtrToStructure(AdapterBuffer, OSAdapterInfoData.GetType());
                        int IsActive = 0;

                        var delActive = ADL.GetDelegate <ADL.ADL_Adapter_Active_Get>();

                        for (int i = 0; i < NumberOfAdapters; i++)
                        {
                            // Check if the adapter is active
                            if (null != delActive)
                            {
                                ADLRet = delActive(OSAdapterInfoData.ADLAdapterInfo[i].AdapterIndex, ref IsActive);
                            }

                            if (ADL.ADL_SUCCESS == ADLRet)
                            {
                            }
                        }
                    }
                    else
                    {
                        Logger.Debug("ADL_Adapter_AdapterInfo_Get() returned error code " + ADLRet.ToString());
                    }
                    // Release the memory for the AdapterInfo structure
                    if (IntPtr.Zero != AdapterBuffer)
                    {
                        Marshal.FreeCoTaskMem(AdapterBuffer);
                    }
                }
                return(OSAdapterInfoData);
            }
            return(null);
        }