diff options
author | Dave Airlie <airlied@redhat.com> | 2008-11-03 09:46:54 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2008-11-03 09:46:54 +1000 |
commit | 31b8a640db9b55638bf9967f0d78ec665fa8839f (patch) | |
tree | 368693b6f1dbb294817a4d30f018be2ca31ac647 /linux-core/radeon_buffer.c | |
parent | ce2cd141c36f330da7e9fb9a281e51abab88e0d1 (diff) |
radeon: overhaul ring interactions
emit in 16-dword blocks, emit irqs at same time as everything else
Diffstat (limited to 'linux-core/radeon_buffer.c')
-rw-r--r-- | linux-core/radeon_buffer.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/linux-core/radeon_buffer.c b/linux-core/radeon_buffer.c index e88378a4..571a0b9c 100644 --- a/linux-core/radeon_buffer.c +++ b/linux-core/radeon_buffer.c @@ -170,10 +170,12 @@ void radeon_emit_copy_blit(struct drm_device * dev, ADVANCE_RING(); } - BEGIN_RING(4); + BEGIN_RING(6); OUT_RING(CP_PACKET0(RADEON_RB2D_DSTCACHE_CTLSTAT, 0)); OUT_RING(RADEON_RB2D_DC_FLUSH_ALL); RADEON_WAIT_UNTIL_2D_IDLE(); + OUT_RING(CP_PACKET2()); + OUT_RING(CP_PACKET2()); ADVANCE_RING(); COMMIT_RING(); @@ -265,10 +267,14 @@ void radeon_emit_solid_fill(struct drm_device * dev, ADVANCE_RING(); } - BEGIN_RING(4); + BEGIN_RING(8); OUT_RING(CP_PACKET0(RADEON_RB2D_DSTCACHE_CTLSTAT, 0)); OUT_RING(RADEON_RB2D_DC_FLUSH_ALL); RADEON_WAIT_UNTIL_2D_IDLE(); + OUT_RING(CP_PACKET2()); + OUT_RING(CP_PACKET2()); + OUT_RING(CP_PACKET2()); + OUT_RING(CP_PACKET2()); ADVANCE_RING(); COMMIT_RING(); |