[PATCH] drm/radeon: use variable UVD clocks (original) (raw)

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/radeonpm.c | 3 --- drivers/gpu/drm/radeon/radeonuvd.c | 3 +-- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeonpm.c b/drivers/gpu/drm/radeon/radeonpm.c index 6f20bb0..2cb2fb8 100644 --- a/drivers/gpu/drm/radeon/radeonpm.c +++ b/drivers/gpu/drm/radeon/radeonpm.c @@ -956,8 +956,6 @@ void radeondpmenableuvd(struct radeondevice *rdev, bool enable) if (enable) { mutexlock(&rdev->pm.mutex); rdev->pm.dpm.uvdactive = true; - /* disable this for now */ -#if 0 if ((rdev->pm.dpm.sd == 1) && (rdev->pm.dpm.hd == 0)) dpmstate = POWERSTATETYPEINTERNALUVDSD; else if ((rdev->pm.dpm.sd == 2) && (rdev->pm.dpm.hd == 0)) @@ -967,7 +965,6 @@ void radeondpmenableuvd(struct radeondevice *rdev, bool enable) else if ((rdev->pm.dpm.sd == 0) && (rdev->pm.dpm.hd == 2)) dpmstate = POWERSTATETYPEINTERNALUVDHD2; else -#endif dpmstate = POWERSTATETYPEINTERNALUVD; rdev->pm.dpm.state = dpmstate; mutexunlock(&rdev->pm.mutex); diff --git a/drivers/gpu/drm/radeon/radeonuvd.c b/drivers/gpu/drm/radeon/radeonuvd.c index 6781fee..ceb7b28 100644 --- a/drivers/gpu/drm/radeon/radeonuvd.c +++ b/drivers/gpu/drm/radeon/radeonuvd.c @@ -805,8 +805,7 @@ void radeonuvdnoteusage(struct radeondevice *rdev) (rdev->pm.dpm.hd != hd)) { rdev->pm.dpm.sd = sd; rdev->pm.dpm.hd = hd; - /* disable this for now */ - /streamschanged = true;/ + streamschanged = true; } }



More information about the dri-devel mailing list