[PATCH] drm/radeon: use variable UVD clocks
Alex Deucher
alexdeucher at gmail.com
Fri Feb 21 09:30:32 PST 2014
On Fri, Feb 21, 2014 at 12:01 PM, Christian König
<deathsimple at vodafone.de> wrote:
> 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.
Yes, this is drm-next material. thanks!
Alex
>
> 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