Am 21.02.2014 17:34, schrieb Alex Deucher: > Now that Christian fixed the performance problems with > the feedback buffer in mesa, we can enable variable UVD > clocks. There are multiple UVD power states associated > with different types and numbers of streams. This uses > the appropriate state based on that information rather > than always using the fastest UVD clocks which saves some > power. One possible downside is that this may adversely > affect decode benchmarks since these power states target > specific playback requirements rather than maximum > performance. If that becomes an issue, we can add a > sysfs attribute to force the max UVD state. > > Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
Reviewed-by: Christian K?nig <christian.koenig at amd.com> Additional to that we should also count the number of frames per second submitted to choose a power state, but that's not so urgent right now. Do you want to pull that in through drm-fixes or should I apply it to the drm-next-3.15 tree? For me it sounds more like drm-next. Christian. > --- > drivers/gpu/drm/radeon/radeon_pm.c | 3 --- > drivers/gpu/drm/radeon/radeon_uvd.c | 3 +-- > 2 files changed, 1 insertion(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/radeon_pm.c > b/drivers/gpu/drm/radeon/radeon_pm.c > index 6f20bb0..2cb2fb8 100644 > --- a/drivers/gpu/drm/radeon/radeon_pm.c > +++ b/drivers/gpu/drm/radeon/radeon_pm.c > @@ -956,8 +956,6 @@ void radeon_dpm_enable_uvd(struct radeon_device *rdev, > bool enable) > if (enable) { > mutex_lock(&rdev->pm.mutex); > rdev->pm.dpm.uvd_active = true; > - /* disable this for now */ > -#if 0 > if ((rdev->pm.dpm.sd == 1) && (rdev->pm.dpm.hd == 0)) > dpm_state = POWER_STATE_TYPE_INTERNAL_UVD_SD; > else if ((rdev->pm.dpm.sd == 2) && (rdev->pm.dpm.hd == > 0)) > @@ -967,7 +965,6 @@ void radeon_dpm_enable_uvd(struct radeon_device *rdev, > bool enable) > else if ((rdev->pm.dpm.sd == 0) && (rdev->pm.dpm.hd == > 2)) > dpm_state = POWER_STATE_TYPE_INTERNAL_UVD_HD2; > else > -#endif > dpm_state = POWER_STATE_TYPE_INTERNAL_UVD; > rdev->pm.dpm.state = dpm_state; > mutex_unlock(&rdev->pm.mutex); > diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c > b/drivers/gpu/drm/radeon/radeon_uvd.c > index 6781fee..ceb7b28 100644 > --- a/drivers/gpu/drm/radeon/radeon_uvd.c > +++ b/drivers/gpu/drm/radeon/radeon_uvd.c > @@ -805,8 +805,7 @@ void radeon_uvd_note_usage(struct radeon_device *rdev) > (rdev->pm.dpm.hd != hd)) { > rdev->pm.dpm.sd = sd; > rdev->pm.dpm.hd = hd; > - /* disable this for now */ > - /*streams_changed = true;*/ > + streams_changed = true; > } > } >