|
|
|
@ -743,6 +743,10 @@ int set_engineclock(int gpu, int iEngineClock)
@@ -743,6 +743,10 @@ int set_engineclock(int gpu, int iEngineClock)
|
|
|
|
|
iEngineClock *= 100; |
|
|
|
|
ga = &gpus[gpu].adl; |
|
|
|
|
|
|
|
|
|
/* Keep track of intended engine clock in case the device changes
|
|
|
|
|
* profile and drops while idle, not taking the new engine clock */ |
|
|
|
|
ga->lastengine = iEngineClock; |
|
|
|
|
|
|
|
|
|
lev = ga->lpOdParameters.iNumberOfPerformanceLevels - 1; |
|
|
|
|
lpOdPerformanceLevels = alloca(sizeof(ADLODPerformanceLevels) + (lev * sizeof(ADLODPerformanceLevel))); |
|
|
|
|
lpOdPerformanceLevels->iSize = sizeof(ADLODPerformanceLevels) + sizeof(ADLODPerformanceLevel) * lev; |
|
|
|
@ -1073,7 +1077,12 @@ void gpu_autotune(int gpu, bool *enable)
@@ -1073,7 +1077,12 @@ void gpu_autotune(int gpu, bool *enable)
|
|
|
|
|
newengine = ga->maxspeed; |
|
|
|
|
else if (newengine < ga->minspeed) |
|
|
|
|
newengine = ga->minspeed; |
|
|
|
|
if (newengine != engine) { |
|
|
|
|
|
|
|
|
|
/* Adjust engine clock speed if it's lower, or if it's higher
|
|
|
|
|
* but higher than the last intended value as well as the |
|
|
|
|
* current speed, to avoid setting the engine clock speed to |
|
|
|
|
* a speed relateive to a lower profile during idle periods. */ |
|
|
|
|
if (newengine < engine || (newengine > engine && newengine > ga->lastengine)) { |
|
|
|
|
newengine /= 100; |
|
|
|
|
applog(LOG_INFO, "Setting GPU %d engine clock to %d", gpu, newengine); |
|
|
|
|
set_engineclock(gpu, newengine); |
|
|
|
|