@@ -14,6 +14,7 @@ NvidiaDetector::NvidiaDetector(QObject *parent) : QObject(parent) {}
1414NvidiaDetector::GpuInfo NvidiaDetector::detect () const {
1515 GpuInfo info;
1616
17+ info.displayAdapterName = detectDisplayAdapterName ();
1718 info.name = detectGpuName ();
1819 info.found = !info.name .isEmpty ();
1920 info.driverVersion = detectDriverVersion ();
@@ -50,7 +51,11 @@ QString NvidiaDetector::activeDriver() const {
5051}
5152
5253QString NvidiaDetector::verificationReport () const {
53- const QString gpuText = m_info.found ? m_info.name : tr (" None" );
54+ const QString gpuText = m_info.found
55+ ? m_info.name
56+ : (m_info.displayAdapterName .isEmpty ()
57+ ? tr (" None" )
58+ : m_info.displayAdapterName );
5459 const QString versionText =
5560 m_info.driverVersion .isEmpty () ? tr (" None" ) : m_info.driverVersion ;
5661
@@ -70,6 +75,39 @@ void NvidiaDetector::refresh() {
7075 emit infoChanged ();
7176}
7277
78+ QString NvidiaDetector::detectDisplayAdapterName () const {
79+ if (!CapabilityProbe::isToolAvailable (QStringLiteral (" lspci" ))) {
80+ return {};
81+ }
82+
83+ CommandRunner runner;
84+
85+ const auto result =
86+ runner.run (QStringLiteral (" lspci" ), {QStringLiteral (" -mm" )});
87+
88+ if (!result.success ())
89+ return {};
90+
91+ const QStringList lines = result.stdout .split (QLatin1Char (' \n ' ));
92+ for (const QString &line : lines) {
93+ if (line.contains (QStringLiteral (" VGA" ), Qt::CaseInsensitive) ||
94+ line.contains (QStringLiteral (" 3D controller" ), Qt::CaseInsensitive) ||
95+ line.contains (QStringLiteral (" Display controller" ),
96+ Qt::CaseInsensitive)) {
97+ static const QRegularExpression re (QStringLiteral (" \" ([^\" ]+)\" " ));
98+ auto it = re.globalMatch (line);
99+ QStringList parts;
100+ while (it.hasNext ())
101+ parts << it.next ().captured (1 );
102+
103+ if (parts.size () >= 3 )
104+ return parts[2 ];
105+ }
106+ }
107+
108+ return {};
109+ }
110+
73111QString NvidiaDetector::detectGpuName () const {
74112 if (!CapabilityProbe::isToolAvailable (QStringLiteral (" lspci" ))) {
75113 return {};
0 commit comments