Add slider values to main view

This commit is contained in:
jussi 2019-02-26 16:25:54 +02:00
parent b8c0b8c6e6
commit 3f64993657
2 changed files with 57 additions and 23 deletions

25
amd.cpp
View File

@ -94,10 +94,14 @@ void amd::calculateUIProperties(int GPUIndex)
GPUList[GPUIndex].powerLimSliderMax = static_cast<int>(GPUList[GPUIndex].maxPowerLim); GPUList[GPUIndex].powerLimSliderMax = static_cast<int>(GPUList[GPUIndex].maxPowerLim);
GPUList[GPUIndex].powerLimSliderMin = static_cast<int>(GPUList[GPUIndex].minPowerLim); GPUList[GPUIndex].powerLimSliderMin = static_cast<int>(GPUList[GPUIndex].minPowerLim);
/*GPUList[GPUIndex].voltageSliderCur = GPUList[GPUIndex].corevolts[GPUList[GPUIndex].corevolts.size()-1]; if (GPUList[GPUIndex].overVoltAvailable) {
GPUList[GPUIndex].powerLimSliderCur = static_cast<int>(GPUList[GPUIndex].powerLim); GPUList[GPUIndex].voltageSliderCur = GPUList[GPUIndex].corevolts[GPUList[GPUIndex].corevolts.size()-1];
GPUList[GPUIndex].memClkSliderCur = GPUList[GPUIndex].memvolts[GPUList[GPUIndex].memclocks.size()-1]; }
GPUList[GPUIndex].coreClkSliderCur = GPUList[GPUIndex].coreclocks[GPUList[GPUIndex].coreclocks.size()-1];*/ /*GPUList[GPUIndex].powerLimSliderCur = static_cast<int>(GPUList[GPUIndex].powerLim);*/
if (GPUList[GPUIndex].overClockAvailable) {
GPUList[GPUIndex].memClkSliderCur = GPUList[GPUIndex].memvolts[GPUList[GPUIndex].memclocks.size()-1];
GPUList[GPUIndex].coreClkSliderCur = GPUList[GPUIndex].coreclocks[GPUList[GPUIndex].coreclocks.size()-1];
}
} }
void amd::calculateDisplayValues(int GPUIndex) void amd::calculateDisplayValues(int GPUIndex)
{ {
@ -133,9 +137,9 @@ void amd::queryGPUFeatures()
int type = 0; int type = 0;
int column = 0; int column = 0;
int breakcount = 0; int breakcount = 0;
QString path;
QString line;
for (int i=0; i<gpuCount; i++) { for (int i=0; i<gpuCount; i++) {
QString path;
QString line;
if (GPUList[i].gputype == Type::AMDGPU) { if (GPUList[i].gputype == Type::AMDGPU) {
path = "/sys/class/drm/card"+QString::number(GPUList[i].fsindex)+"/device/pp_od_clk_voltage"; path = "/sys/class/drm/card"+QString::number(GPUList[i].fsindex)+"/device/pp_od_clk_voltage";
QFile tablefile(path); QFile tablefile(path);
@ -200,6 +204,13 @@ void amd::queryGPUFeatures()
} }
tablefile.close(); tablefile.close();
} }
// If the pstate vectors are empty after searching, set the features disabled
if (!GPUList[i].corevolts.isEmpty()) GPUList[i].overVoltAvailable = true;
if (!GPUList[i].coreclocks.isEmpty()) {
GPUList[i].overClockAvailable = true;
GPUList[i].memOverClockAvailable = true;
}
// Check if voltage is readable // Check if voltage is readable
int reading; int reading;
int retval = amdgpu_query_sensor_info(*GPUList[i].dev, int retval = amdgpu_query_sensor_info(*GPUList[i].dev,
@ -304,7 +315,7 @@ void amd::queryGPUFanSpeed(int GPUIndex)
bool ret = pwmfile.open(QFile::ReadOnly | QFile::Text); bool ret = pwmfile.open(QFile::ReadOnly | QFile::Text);
if (ret) { if (ret) {
QString fanspeed = pwmfile.readLine().trimmed(); QString fanspeed = pwmfile.readLine().trimmed();
double percspeed = (fanspeed.toDouble()/255)*100; double percspeed = (fanspeed.toDouble()/2.55);
GPUList[GPUIndex].fanSpeed = static_cast<int>(percspeed); GPUList[GPUIndex].fanSpeed = static_cast<int>(percspeed);
qDebug() << GPUList[GPUIndex].fanSpeed << "fanspeed"; qDebug() << GPUList[GPUIndex].fanSpeed << "fanspeed";
} }

View File

@ -109,23 +109,46 @@ MainWindow::MainWindow(QWidget *parent) :
// Testing code // Testing code
/*ui->voltageSlider->setRange(types->GPUList[currentGPUIndex].voltageSliderMin, types->GPUList[currentGPUIndex].voltageSliderMax); if (types->GPUList[currentGPUIndex].overVoltAvailable) {
ui->voltageSpinBox->setRange(types->GPUList[currentGPUIndex].voltageSliderMin, types->GPUList[currentGPUIndex].voltageSliderMax); ui->voltageSlider->setEnabled(true);
ui->voltageSpinBox->setEnabled(true);
ui->voltageSlider->setRange(types->GPUList[currentGPUIndex].voltageSliderMin, types->GPUList[currentGPUIndex].voltageSliderMax);
ui->voltageSpinBox->setRange(types->GPUList[currentGPUIndex].voltageSliderMin, types->GPUList[currentGPUIndex].voltageSliderMax);
ui->voltageSlider->setValue(types->GPUList[currentGPUIndex].voltageSliderCur);
} else {
ui->voltageSlider->setEnabled(false);
ui->voltageSpinBox->setEnabled(false);
}
ui->powerLimSlider->setRange(types->GPUList[currentGPUIndex].powerLimSliderMin, types->GPUList[currentGPUIndex].powerLimSliderMax); if (types->GPUList[currentGPUIndex].overClockAvailable) {
ui->powerLimSpinBox->setRange(types->GPUList[currentGPUIndex].powerLimSliderMin, types->GPUList[currentGPUIndex].powerLimSliderMax); ui->frequencySlider->setEnabled(true);
ui->frequencySpinBox->setEnabled(true);
ui->frequencySpinBox->setRange(types->GPUList[currentGPUIndex].coreClkSliderMin, types->GPUList[currentGPUIndex].coreClkSliderMax);
ui->frequencySlider->setRange(types->GPUList[currentGPUIndex].coreClkSliderMin, types->GPUList[currentGPUIndex].coreClkSliderMin);
ui->frequencySlider->setValue(types->GPUList[currentGPUIndex].coreClkSliderCur);
ui->frequencySpinBox->setRange(types->GPUList[currentGPUIndex].coreClkSliderMin, types->GPUList[currentGPUIndex].coreClkSliderMax); ui->memClkSlider->setEnabled(true);
ui->frequencySlider->setRange(types->GPUList[currentGPUIndex].coreClkSliderMin, types->GPUList[currentGPUIndex].coreClkSliderMin); ui->memClkSpinBox->setEnabled(true);
ui->memClkSlider->setRange(types->GPUList[currentGPUIndex].memClkSliderMin, types->GPUList[currentGPUIndex].memClkSliderMax);
ui->memClkSlider->setRange(types->GPUList[currentGPUIndex].memClkSliderMin, types->GPUList[currentGPUIndex].memClkSliderMax); ui->memClkSpinBox->setRange(types->GPUList[currentGPUIndex].memClkSliderMin, types->GPUList[currentGPUIndex].memClkSliderMax);
ui->memClkSpinBox->setRange(types->GPUList[currentGPUIndex].memClkSliderMin, types->GPUList[currentGPUIndex].memClkSliderMax);*/ ui->memClkSlider->setValue(types->GPUList[currentGPUIndex].memClkSliderCur);
} else {
/*ui->memClkSlider->setValue(types->GPUList[currentGPUIndex].memclocks[types->GPUList[currentGPUIndex].memclocks.size()-1]); ui->frequencySlider->setEnabled(false);
ui->frequencySlider->setValue(types->GPUList[currentGPUIndex].corecloks[types->GPUList[currentGPUIndex].corecloks.size()-1]); ui->frequencySpinBox->setEnabled(false);
ui->powerLimSlider->setValue(types->GPUList[currentGPUIndex].powerLim); ui->memClkSlider->setEnabled(false);
ui->voltageSlider->setValue(types->GPUList[currentGPUIndex].corevolts[types->GPUList[currentGPUIndex].corevolts.size()-1]);*/ ui->memClkSpinBox->setEnabled(false);
}
if (types->GPUList[currentGPUIndex].powerLimitAvailable) {
ui->powerLimSlider->setEnabled(true);
ui->powerLimSpinBox->setEnabled(true);
ui->powerLimSlider->setRange(types->GPUList[currentGPUIndex].powerLimSliderMin, types->GPUList[currentGPUIndex].powerLimSliderMax);
ui->powerLimSpinBox->setRange(types->GPUList[currentGPUIndex].powerLimSliderMin, types->GPUList[currentGPUIndex].powerLimSliderMax);
ui->powerLimSlider->setValue(types->GPUList[currentGPUIndex].powerLimSliderCur);
} else {
ui->powerLimSlider->setEnabled(false);
ui->powerLimSpinBox->setEnabled(false);
}
/*if (!types->GPUList[currentGPUIndex].manualFanCtrlAvailable) { /*if (!types->GPUList[currentGPUIndex].manualFanCtrlAvailable) {
// If manual fan control is not available for the GPU, disable the option // If manual fan control is not available for the GPU, disable the option
QStandardItemModel *model = qobject_cast<QStandardItemModel*>(ui->fanModeComboBox->model()); QStandardItemModel *model = qobject_cast<QStandardItemModel*>(ui->fanModeComboBox->model());
@ -134,14 +157,14 @@ MainWindow::MainWindow(QWidget *parent) :
manualMode->setEnabled(false); manualMode->setEnabled(false);
manualMode->setToolTip("Manual fan control is not available for current GPU"); manualMode->setToolTip("Manual fan control is not available for current GPU");
} }
*/
connect(fanUpdateTimer, SIGNAL(timeout()), this, SLOT(fanSpeedUpdater())); connect(fanUpdateTimer, SIGNAL(timeout()), this, SLOT(fanSpeedUpdater()));
fanUpdateTimer->start(2000); fanUpdateTimer->start(2000);
connect(ui->frequencySpinBox, SIGNAL(valueChanged(int)), SLOT(resetTimer())); connect(ui->frequencySpinBox, SIGNAL(valueChanged(int)), SLOT(resetTimer()));
connect(ui->powerLimSpinBox, SIGNAL(valueChanged(int)), SLOT(resetTimer())); connect(ui->powerLimSpinBox, SIGNAL(valueChanged(int)), SLOT(resetTimer()));
connect(ui->memClkSpinBox, SIGNAL(valueChanged(int)), SLOT(resetTimer())); connect(ui->memClkSpinBox, SIGNAL(valueChanged(int)), SLOT(resetTimer()));
connect(ui->voltageSpinBox, SIGNAL(valueChanged(int)), SLOT(resetTimer()));*/ connect(ui->voltageSpinBox, SIGNAL(valueChanged(int)), SLOT(resetTimer()));
connect(ui->tabWidget, SIGNAL(currentChanged(int)), SLOT(tabHandler(int))); connect(ui->tabWidget, SIGNAL(currentChanged(int)), SLOT(tabHandler(int)));
connect(monitorUpdater, SIGNAL(timeout()), SLOT(updateMonitor())); connect(monitorUpdater, SIGNAL(timeout()), SLOT(updateMonitor()));