diff options
author | Christian König <deathsimple@vodafone.de> | 2011-10-20 06:38:09 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-12-20 14:50:39 -0500 |
commit | 47492a23a128e953bd5087b1cac909cd8124ca5e (patch) | |
tree | 9e9d11656b23e451b05d9c958f0d24c32132c645 /drivers/gpu/drm/radeon/radeon_fence.c | |
parent | 4c87bc268d764cf8846d20ea54b355d1e87507c9 (diff) |
drm/radeon: add radeon_fence_count_emited function
Split counting of emited fences out of power
management into a seperate function.
Signed-off-by: Christian König <deathsimple@vodafone.de>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_fence.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_fence.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_fence.c b/drivers/gpu/drm/radeon/radeon_fence.c index 69902e623cb..9e7f8921714 100644 --- a/drivers/gpu/drm/radeon/radeon_fence.c +++ b/drivers/gpu/drm/radeon/radeon_fence.c | |||
@@ -368,6 +368,27 @@ void radeon_fence_process(struct radeon_device *rdev, int ring) | |||
368 | } | 368 | } |
369 | } | 369 | } |
370 | 370 | ||
371 | int radeon_fence_count_emitted(struct radeon_device *rdev, int ring) | ||
372 | { | ||
373 | unsigned long irq_flags; | ||
374 | int not_processed = 0; | ||
375 | |||
376 | read_lock_irqsave(&rdev->fence_lock, irq_flags); | ||
377 | if (!rdev->fence_drv[ring].initialized) | ||
378 | return 0; | ||
379 | |||
380 | if (!list_empty(&rdev->fence_drv[ring].emitted)) { | ||
381 | struct list_head *ptr; | ||
382 | list_for_each(ptr, &rdev->fence_drv[ring].emitted) { | ||
383 | /* count up to 3, that's enought info */ | ||
384 | if (++not_processed >= 3) | ||
385 | break; | ||
386 | } | ||
387 | } | ||
388 | read_unlock_irqrestore(&rdev->fence_lock, irq_flags); | ||
389 | return not_processed; | ||
390 | } | ||
391 | |||
371 | int radeon_fence_driver_init(struct radeon_device *rdev, int num_rings) | 392 | int radeon_fence_driver_init(struct radeon_device *rdev, int num_rings) |
372 | { | 393 | { |
373 | unsigned long irq_flags; | 394 | unsigned long irq_flags; |