aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/r600.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2010-02-04 11:01:52 -0500
committerDave Airlie <airlied@redhat.com>2010-02-08 18:32:24 -0500
commit44224c3f455886190b101dbb00befbaff5e98466 (patch)
tree51f618073d3c19a417fb707350846cfaa5f2813f /drivers/gpu/drm/radeon/r600.c
parenta0c07a69bc5d060362e4861d6c4f7c67dab57f1e (diff)
drm/radeon/kms/r600: reduce gpu cache flushing
Only flush the gpu caches before we submit a fence. This leads to a small performance boost when we take the extra gpu cache flushes out of the ddx and mesa. Once this patch is in and the drm version is bumped, we can remove the flushes from the ddx and drm. Also, remove the extra cache flushes from the blit routine. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/r600.c')
-rw-r--r--drivers/gpu/drm/radeon/r600.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index 9661a469f3bd..7c32a233b236 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -1783,6 +1783,13 @@ void r600_fence_ring_emit(struct radeon_device *rdev,
1783 struct radeon_fence *fence) 1783 struct radeon_fence *fence)
1784{ 1784{
1785 /* Also consider EVENT_WRITE_EOP. it handles the interrupts + timestamps + events */ 1785 /* Also consider EVENT_WRITE_EOP. it handles the interrupts + timestamps + events */
1786
1787 radeon_ring_write(rdev, PACKET3(PACKET3_EVENT_WRITE, 0));
1788 radeon_ring_write(rdev, CACHE_FLUSH_AND_INV_EVENT);
1789 /* wait for 3D idle clean */
1790 radeon_ring_write(rdev, PACKET3(PACKET3_SET_CONFIG_REG, 1));
1791 radeon_ring_write(rdev, (WAIT_UNTIL - PACKET3_SET_CONFIG_REG_OFFSET) >> 2);
1792 radeon_ring_write(rdev, WAIT_3D_IDLE_bit | WAIT_3D_IDLECLEAN_bit);
1786 /* Emit fence sequence & fire IRQ */ 1793 /* Emit fence sequence & fire IRQ */
1787 radeon_ring_write(rdev, PACKET3(PACKET3_SET_CONFIG_REG, 1)); 1794 radeon_ring_write(rdev, PACKET3(PACKET3_SET_CONFIG_REG, 1));
1788 radeon_ring_write(rdev, ((rdev->fence_drv.scratch_reg - PACKET3_SET_CONFIG_REG_OFFSET) >> 2)); 1795 radeon_ring_write(rdev, ((rdev->fence_drv.scratch_reg - PACKET3_SET_CONFIG_REG_OFFSET) >> 2));