[PATCH] drm/radeon: use variable UVD clocks
Christian König
deathsimple at vodafone.de
Fri Feb 21 09:01:00 PST 2014
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;
> }
> }
>
More information about the dri-devel
mailing list