add gpu voltage request
This commit is contained in:
@@ -542,6 +542,15 @@ std::vector<std::string> ConfigInfoStrings(HocClkConfigValue val, bool isMariko,
|
||||
"- Enabled: Enables GPU scheduling, 96.5% GPU max load",
|
||||
"Default: Do not override"
|
||||
};
|
||||
case HocClkConfigValue_LiveGpuVoltage:
|
||||
return {
|
||||
"Adjust GPU voltage on the fly.",
|
||||
"Warning: unstable settings allowed.",
|
||||
"Exception: while RAM OC is active, voltage cannot drop below stability minimum.",
|
||||
"RAM frequency changes overwrite requested voltage.",
|
||||
"Voltage applies globally across all frequencies.",
|
||||
"\"Reset\" restores default or RAM-stable minimum."
|
||||
};
|
||||
default:
|
||||
return {};
|
||||
}
|
||||
|
||||
@@ -662,6 +662,9 @@ class ExperimentalSettingsSubMenuGui : public MiscGui {
|
||||
addConfigToggle(HocClkConfigValue_MarikoMiddleFreqs, nullptr, true);
|
||||
addConfigToggle(HocClkConfigValue_LiveCpuUv, nullptr);
|
||||
}
|
||||
|
||||
addConfigToggle(HocClkConfigValue_LiveGpuVoltage, "Live GPU Volt Request", false);
|
||||
|
||||
std::vector<NamedValue> gpuSchedMethodValues = {
|
||||
NamedValue("INI", GpuSchedulingOverrideMethod_Ini),
|
||||
NamedValue("NV Service", GpuSchedulingOverrideMethod_NvService),
|
||||
@@ -2126,6 +2129,41 @@ class GpuSubmenuGui : public MiscGui {
|
||||
addConfigButton(HocClkConfigValue_DVFSOffset, "GPU DVFS Offset", ValueRange(0, 12, 1, "", 0), "GPU DVFS Offset", &thresholdsDisabled, {},
|
||||
dvfsOffset, false);
|
||||
|
||||
if (this->configList->values[HocClkConfigValue_LiveGpuVoltage]) {
|
||||
std::vector<NamedValue> gpuVoltRequestValues = {
|
||||
NamedValue("Reset", 0),
|
||||
};
|
||||
|
||||
for (u32 mv = IsMariko() ? 420 : 700; mv <= 1050; mv += 5) {
|
||||
gpuVoltRequestValues.push_back(NamedValue(std::to_string(mv) + "mV", mv));
|
||||
}
|
||||
|
||||
tsl::elm::ListItem *gpuVoltRequestBtn = new tsl::elm::ListItem("GPU Volt Request");
|
||||
gpuVoltRequestBtn->setTextColor(tsl::Color(120, 235, 255, 255));
|
||||
gpuVoltRequestBtn->setValue("Request");
|
||||
|
||||
gpuVoltRequestBtn->setClickListener([gpuVoltRequestValues](u64 keys) {
|
||||
if ((keys & HidNpadButton_A) == 0)
|
||||
return false;
|
||||
|
||||
tsl::changeTo<ValueChoiceGui>(
|
||||
0, ValueRange(0, 0, 1, "", 1), "GPU Volt Request",
|
||||
[](u32 value) {
|
||||
Result rc = hocClkIpcRequestGpuVoltage(value);
|
||||
if (R_FAILED(rc)) {
|
||||
FatalGui::openWithResultCode("hocClkIpcRequestGpuVoltage", rc);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
ValueThresholds(), false, std::map<u32, std::string>{}, gpuVoltRequestValues, false, false);
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
this->listElement->addItem(gpuVoltRequestBtn);
|
||||
}
|
||||
|
||||
tsl::elm::ListItem *customTableSubmenu = new tsl::elm::ListItem("GPU Voltage Table");
|
||||
customTableSubmenu->setClickListener([](u64 keys) {
|
||||
if (keys & HidNpadButton_A) {
|
||||
|
||||
Reference in New Issue
Block a user