[GPU OC] Max freq: 1305 MHz, tested with FP32 compute shaders; Disable GPU overvolting

This commit is contained in:
KazushiM
2022-01-08 05:33:20 +08:00
parent 2a71bde475
commit 9815684152
5 changed files with 12 additions and 34 deletions

View File

@@ -58,10 +58,9 @@ I'd appreciate if someone is willing to contribute. But if you are releasing som
- This is where floating point performance maxed out.
- ≥ 2193 MHz will _ENABLE OVERVOLTING_.
- GPU: 1497 MHz @ 1170 mV (overvolting from 1050 mV)
- Not tested. Not sure if it has any benefit over 1267 MHz. GPU (OpenGL) benchmark is required.
- ≥ 1344 MHz _cannot be set without official chargers_.
- ≥ 1420 MHz will _ENABLE OVERVOLTING_.
- GPU: 1305 MHz (no overvolting, less than official threshold 1050 mV)
- Tested with deko3d compute shaders converted from [Maxwell SASS assembly](https://gist.github.com/KazushiMe/82b6bd89621f451b51c9b1ccd2202b97). Single-precision floating point (FP32 FFMA) performance maxes out at 1305 MHz.
- 1305 MHz CANNOT be set without charger connected.
- DRAM: Overvolting
- [Use this to set DRAM bus voltage](https://gist.github.com/KazushiMe/6bb0fcbefe0e03b1274079522516d56d).

View File

@@ -94,12 +94,12 @@ namespace pcv {
constexpr u32 NewMaxCpuClock = 2397000;
/* GPU */
constexpr u32 GpuVoltageLimitOffsets[] = {
// 0xE3044,
// 0xF1E94,
0xF1EE4,
};
constexpr u32 NewGpuVoltageLimit = 1170; // default max 1050mV
// constexpr u32 GpuVoltageLimitOffsets[] = {
// // 0xE3044,
// // 0xF1E94,
// 0xF1EE4,
// };
// constexpr u32 NewGpuVoltageLimit = 1170; // default max 1050mV
constexpr u32 GpuTablesFreeSpace[] = {
// 0xE3410,
@@ -120,13 +120,7 @@ namespace pcv {
// { 1152000, {}, { 1204812, -9908, -830, 0, 1469, 110 } },
// { 1228800, {}, { 1277303, -11675, -859, 0, 3722, 313 } },
// { 1267200, {}, { 1335531, -12567, -867, 0, 3681, 559 } },
{ 1305600, {}, { 955000 } },
{ 1344000, {}, { 990000 } },
{ 1382400, {}, { 1030000 } },
{ 1420800, {}, { 1075000 } },
{ 1459200, {}, { 1120000 } },
{ 1497600, {}, { 1170000 } },
// { 1536000, {}, { 1250000 } },
{ 1305600, {}, { 1374130, -13725, -859, 0, 4442, 576 } },
};
static_assert(sizeof(NewGpuTables) <= sizeof(gpu_cvb_pll_table_t)*15);

View File

@@ -176,9 +176,6 @@ namespace ams::ldr {
std::memcpy(reinterpret_cast<void *>(mapped_nso + pcv::CpuVoltageOldTableCoeff[i][j]), &pcv::NewCpuVoltageScaled, sizeof(pcv::NewCpuVoltageScaled));
}
/* Patch max GPU voltage on Mariko */
std::memcpy(reinterpret_cast<void *>(mapped_nso + pcv::GpuVoltageLimitOffsets[i]), &pcv::NewGpuVoltageLimit, sizeof(pcv::NewGpuVoltageLimit));
for (u32 j = 0; j < sizeof(pcv::MtcTable_1600[i])/sizeof(u32); j++) {
pcv::MarikoMtcTable* mtc_table_new = reinterpret_cast<pcv::MarikoMtcTable *>(mapped_nso + pcv::MtcTable_1600[i][j]);
pcv::MarikoMtcTable* mtc_table_old = reinterpret_cast<pcv::MarikoMtcTable *>(mapped_nso + pcv::MtcTable_1600[i][j] - pcv::MtcTableOffset);

View File

@@ -28,13 +28,7 @@ Switch sysmodule allowing you to set cpu/gpu clocks according to the running app
### GPU clocks
* 1??? → unknown max for Mariko
* 1497
* 1459
* 1420
* 1382
* 1344
* 1305
* 1305 → OC max for Mariko
* 1267 → official max for Mariko
* 1228
* 1152
@@ -55,7 +49,7 @@ Switch sysmodule allowing you to set cpu/gpu clocks according to the running app
### MEM clocks
**Only 1331 and Max could be set in sys-clk-OC.**
**Only 1600 and Max could be set in sys-clk-OC.**
From Hekate Minerva module [sys_sdrammtc.c](https://github.com/CTCaer/hekate/blob/197ed8c319bd4132e4d7571ce037d4a27f806bba/modules/hekate_libsys_minerva/sys_sdrammtc.c#L67)

View File

@@ -70,11 +70,5 @@ uint32_t sysclk_g_freq_table_gpu_hz[] = {
1228800000,
1267200000,
1305600000,
1344000000,
1382400000,
1420800000,
1459200000,
1497600000,
// 1536000000,
0,
};