File indexing completed on 2024-05-12 17:00:14

0001 /*
0002  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0003  *
0004  * SPDX-FileCopyrightText: 2020 Arjen Hiemstra <ahiemstra@heimr.nl>
0005  */
0006 
0007 #include "AllGpus.h"
0008 
0009 #include <KLocalizedString>
0010 
0011 #include <systemstats/AggregateSensor.h>
0012 
0013 AllGpus::AllGpus(KSysGuard::SensorContainer *parent)
0014     : SensorObject(QStringLiteral("all"), i18nc("@title", "All GPUs"), parent)
0015 {
0016     m_usageSensor = new KSysGuard::AggregateSensor(this, QStringLiteral("usage"), i18nc("@title", "All GPUs Usage"), 0);
0017     m_usageSensor->setShortName(i18nc("@title Short for 'All GPUs Usage'", "Usage"));
0018     m_usageSensor->setMatchSensors(QRegularExpression{QStringLiteral("^(?!all).*$")}, QStringLiteral("usage"));
0019     m_usageSensor->setAggregateFunction([this](const QVariant &first, const QVariant &second) {
0020         auto gpuCount = m_usageSensor->matchCount();
0021         return QVariant::fromValue(first.toDouble() + (second.toDouble() / gpuCount));
0022     });
0023     m_usageSensor->setUnit(KSysGuard::UnitPercent);
0024     m_usageSensor->setMax(100);
0025 
0026     m_totalVramSensor = new KSysGuard::AggregateSensor(this, QStringLiteral("totalVram"), i18nc("@title", "All GPUs Total Memory"));
0027     m_totalVramSensor->setShortName(i18nc("@title Short for 'All GPUs Total Memory'", "Total"));
0028     m_totalVramSensor->setMatchSensors(QRegularExpression{QStringLiteral("^(?!all).*$")}, QStringLiteral("totalVram"));
0029     m_totalVramSensor->setUnit(KSysGuard::UnitByte);
0030 
0031     m_usedVramSensor = new KSysGuard::AggregateSensor(this, QStringLiteral("usedVram"), i18nc("@title", "All GPUs Used Memory"));
0032     m_usedVramSensor->setShortName(i18nc("@title Short for 'All GPUs Used Memory'", "Used"));
0033     m_usedVramSensor->setMatchSensors(QRegularExpression{QStringLiteral("^(?!all).*$")}, QStringLiteral("usedVram"));
0034     m_usedVramSensor->setUnit(KSysGuard::UnitByte);
0035     m_usedVramSensor->setMax(m_totalVramSensor);
0036 }