diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2013-02-01 17:32:42 +0100 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2013-02-01 13:57:10 -0500 |
commit | 43f1214aa094e46efdfc0255d9601be0e5ea0f62 (patch) | |
tree | f68b6472afdc8d460b73f67958aad4b21e06ee85 /drivers/gpu/drm/radeon/radeon_ring.c | |
parent | 24178ec42b0985d485886bc43b97e54ff173627e (diff) | |
download | linux-43f1214aa094e46efdfc0255d9601be0e5ea0f62.tar.gz linux-43f1214aa094e46efdfc0255d9601be0e5ea0f62.tar.bz2 linux-43f1214aa094e46efdfc0255d9601be0e5ea0f62.zip |
drm/radeon: use IBs for VM page table updates v2
For very large page table updates, we can exceed the
size of the ring. To avoid this, use an IB to perform
the page table update.
v2(ck): cleanup the IB infrastructure and the use it instead
of filling the struct ourself.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Christian König <christian.koenig@amd.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_ring.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_ring.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c index cd72062d5a91..8d58e268ff6d 100644 --- a/drivers/gpu/drm/radeon/radeon_ring.c +++ b/drivers/gpu/drm/radeon/radeon_ring.c @@ -109,6 +109,25 @@ void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib *ib) } /** + * radeon_ib_sync_to - sync to fence before executing the IB + * + * @ib: IB object to add fence to + * @fence: fence to sync to + * + * Sync to the fence before executing the IB + */ +void radeon_ib_sync_to(struct radeon_ib *ib, struct radeon_fence *fence) +{ + struct radeon_fence *other; + + if (!fence) + return; + + other = ib->sync_to[fence->ring]; + ib->sync_to[fence->ring] = radeon_fence_later(fence, other); +} + +/** * radeon_ib_schedule - schedule an IB (Indirect Buffer) on the ring * * @rdev: radeon_device pointer |