public bool Init() { try { int status = ADL.ADL_Main_Control_Create(1); #if DEBUG Write.DevDebug("AMD Display Library Status: " + (status == ADL.ADL_OK ? "OK" : status.ToString())); #endif if (status == ADL.ADL_OK) { int numberOfAdapters = 0; ADL.ADL_Adapter_NumberOfAdapters_Get(ref numberOfAdapters); if (numberOfAdapters > 0) { ADLAdapterInfo[] adapterInfo = new ADLAdapterInfo[numberOfAdapters]; if (ADL.ADL_Adapter_AdapterInfo_Get(adapterInfo) == ADL.ADL_OK) { for (int i = 0; i < numberOfAdapters; i++) { #if DEBUG Write.DevDebug(adapterInfo[i].ToString()); #endif if (!string.IsNullOrEmpty(adapterInfo[i].UDID) && adapterInfo[i].VendorID == ADL.ATI_VENDOR_ID) { bool found = false; foreach (ATIGPU gpu in _gpuNames) { if (gpu.BusNumber == adapterInfo[i].BusNumber && gpu.DeviceNumber == adapterInfo[i].DeviceNumber) { found = true; break; } } if (!found) { _gpuNames.Add(new ATIGPU { AdapterName = adapterInfo[i].AdapterName.Trim(), AdapterIndex = adapterInfo[i].AdapterIndex, BusNumber = adapterInfo[i].BusNumber, DeviceNumber = adapterInfo[i].DeviceNumber }); } } } } } ADL.ADL2_Main_Control_Create(ADL.Main_Memory_Alloc, 1, ref context); } _gpuNames = _gpuNames.OrderBy(a => a.BusNumber).ToList(); #if DEBUG Write.DevDebug(string.Join(",", _gpuNames.Select(a => a.AdapterIndex))); #endif } catch { return(false); } return(true); }
public bool Init() { try { if (System.Environment.Is64BitOperatingSystem) { Windows.NativeMethods.SetDllDirectory(SpecialPath.ThisSystem32Dir); } else { Windows.NativeMethods.SetDllDirectory(SpecialPath.ThisSysWOW64Dir); } int status = ADL.ADL_Main_Control_Create(1); #if DEBUG Write.DevDebug("AMD Display Library Status: " + (status == ADL.ADL_OK ? "OK" : status.ToString(CultureInfo.InvariantCulture))); #endif if (status == ADL.ADL_OK) { int numberOfAdapters = 0; ADL.ADL_Adapter_NumberOfAdapters_Get(ref numberOfAdapters); if (numberOfAdapters > 0) { ADLAdapterInfo[] adapterInfo = new ADLAdapterInfo[numberOfAdapters]; if (ADL.ADL_Adapter_AdapterInfo_Get(adapterInfo) == ADL.ADL_OK) { for (int i = 0; i < numberOfAdapters; i++) { ADL.ADL_Adapter_Active_Get(adapterInfo[i].AdapterIndex, out int isActive); if (!string.IsNullOrEmpty(adapterInfo[i].UDID) && adapterInfo[i].VendorID == ADL.ATI_VENDOR_ID) { bool found = false; foreach (ATIGPU gpu in _gpuNames) { if (gpu.BusNumber == adapterInfo[i].BusNumber && gpu.DeviceNumber == adapterInfo[i].DeviceNumber) { found = true; break; } } if (!found) { _gpuNames.Add(new ATIGPU { AdapterName = adapterInfo[i].AdapterName.Trim(), AdapterIndex = adapterInfo[i].AdapterIndex, BusNumber = adapterInfo[i].BusNumber, DeviceNumber = adapterInfo[i].DeviceNumber }); } } } } } ADL.ADL2_Main_Control_Create(ADL.Main_Memory_Alloc, 1, ref context); } #if DEBUG Write.DevDebug(string.Join(",", _gpuNames.Select(a => a.AdapterIndex))); #endif } catch { return(false); } return(true); }