fix: 修复驱动检测与版本号显示
- 修复 driver 名称获取:使用 QFileInfo::symLinkTarget() 替代 QDir::dirName(), 解决驱动名恒为 'driver' 的问题 - 添加开源内核驱动版本号支持:amdgpu/radeon/nouveau/i915 等显示内核版本 - 添加卡片 tooltip 三行信息(显卡/驱动/版本号)的翻译条目
This commit is contained in:
@@ -83,11 +83,13 @@ void GraphicsDriverApplet::detectGpus()
|
||||
|
||||
gpu.name = parseGpuName(line);
|
||||
|
||||
// 检测驱动
|
||||
// 检测驱动:通过 symlink 目标获取真实驱动名
|
||||
QString sysPath = "/sys/bus/pci/devices/0000:" + gpu.pciId + "/driver";
|
||||
QDir driverDir(sysPath);
|
||||
if (driverDir.exists()) {
|
||||
gpu.driver = driverDir.dirName();
|
||||
QFileInfo driverLink(sysPath);
|
||||
if (driverLink.exists() && driverLink.isSymLink()) {
|
||||
QString target = driverLink.symLinkTarget();
|
||||
// symLinkTarget 返回如 ".../drivers/nvidia",提取最后一段
|
||||
gpu.driver = target.section('/', -1);
|
||||
|
||||
// 读取驱动版本
|
||||
gpu.driverVersion = readDriverVersion(gpu.driver);
|
||||
@@ -197,6 +199,17 @@ QString GraphicsDriverApplet::readDriverVersion(const QString &driverName)
|
||||
}
|
||||
}
|
||||
|
||||
// 开源内核驱动(如 amdgpu, radeon, nouveau, i915)无独立版本号,版本跟随内核
|
||||
static const QStringList kernelDrivers = {
|
||||
"amdgpu", "radeon", "nouveau", "i915", "i965", "mgag200", "ast", "vmwgfx"
|
||||
};
|
||||
if (kernelDrivers.contains(driverName)) {
|
||||
QFile osrelease("/proc/sys/kernel/osrelease");
|
||||
if (osrelease.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
return "Linux " + QTextStream(&osrelease).readAll().trimmed();
|
||||
}
|
||||
}
|
||||
|
||||
return QString();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user