sysclk: fix VRR issues
This commit is contained in:
@@ -529,30 +529,32 @@ void ClockManager::VRRThread(void* arg) {
|
|||||||
if(targetHz) {
|
if(targetHz) {
|
||||||
maxDisplay = targetHz;
|
maxDisplay = targetHz;
|
||||||
} else {
|
} else {
|
||||||
if(Board::GetConsoleType() == HorizonOCConsoleType_Aula) {
|
maxDisplay = 60;
|
||||||
maxDisplay = mgr->config->GetConfigValue(HorizonOCConfigValue_EnableUnsafeDisplayFreqs) ? 65 : 60;
|
|
||||||
} else {
|
|
||||||
maxDisplay = mgr->config->GetConfigValue(HorizonOCConfigValue_EnableUnsafeDisplayFreqs) ? 72 : 60;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 minDisplay = Board::GetConsoleType() == HorizonOCConsoleType_Aula ? 45 : 40;
|
u8 minDisplay = Board::GetConsoleType() == HorizonOCConsoleType_Aula ? 45 : 40;
|
||||||
if(maxDisplay == minDisplay)
|
if(maxDisplay == minDisplay)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(fps >= minDisplay && fps <= maxDisplay)
|
if(fps >= minDisplay && fps <= maxDisplay) {
|
||||||
Board::SetHz(HorizonOCModule_Display, fps);
|
Board::SetHz(HorizonOCModule_Display, fps);
|
||||||
else {
|
mgr->context->freqs[HorizonOCModule_Display] = fps;
|
||||||
|
mgr->context->realFreqs[HorizonOCModule_Display] = fps;
|
||||||
|
} else {
|
||||||
for(u32 i = 0; i < 10; i++) {
|
for(u32 i = 0; i < 10; i++) {
|
||||||
u32 compareHz = fps * i;
|
u32 compareHz = fps * i;
|
||||||
if(compareHz >= minDisplay && compareHz <= maxDisplay) {
|
if(compareHz >= minDisplay && compareHz <= maxDisplay) {
|
||||||
Board::SetHz(HorizonOCModule_Display, compareHz);
|
Board::SetHz(HorizonOCModule_Display, compareHz);
|
||||||
|
mgr->context->freqs[HorizonOCModule_Display] = compareHz;
|
||||||
|
mgr->context->realFreqs[HorizonOCModule_Display] = compareHz;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(++tick > 50) {
|
if(++tick > 50) {
|
||||||
Board::ResetToStockDisplay();
|
Board::SetHz(HorizonOCModule_Display, maxDisplay);
|
||||||
tick = 0;
|
tick = 0;
|
||||||
svcSleepThread(25'000'000);
|
svcSleepThread(25'000'000);
|
||||||
}
|
}
|
||||||
@@ -777,8 +779,12 @@ void ClockManager::SetClocks(bool isBoost) {
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(module == HorizonOCModule_Display && this->config->GetConfigValue(HorizonOCConfigValue_OverwriteRefreshRate) && !noDisp) {
|
if(module == HorizonOCModule_Display && this->config->GetConfigValue(HorizonOCConfigValue_OverwriteRefreshRate) && !noDisp) {
|
||||||
if(targetHz)
|
if(targetHz) {
|
||||||
Board::SetHz(HorizonOCModule_Display, targetHz);
|
Board::SetHz(HorizonOCModule_Display, targetHz);
|
||||||
|
this->context->freqs[HorizonOCModule_Display] = targetHz;
|
||||||
|
this->context->realFreqs[HorizonOCModule_Display] = targetHz;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Skip GPU and CPU if governors handle them
|
// Skip GPU and CPU if governors handle them
|
||||||
|
|||||||
Reference in New Issue
Block a user