diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2009-02-19 10:57:56 -0500 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2009-02-19 10:57:56 -0500 |
commit | 239acbbb27a62cf9c821d50f21cdc3592d84fb8a (patch) | |
tree | 61c03bbc7a15e05ee77f63d64b199c380a311849 | |
parent | 62d391417d03a86c21a8e04389e86d009bccf08c (diff) |
R6xx/R7xx: pad VB age submission to 8 dwords
also switch to standard VB age check
-rw-r--r-- | shared-core/r600_cp.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/shared-core/r600_cp.c b/shared-core/r600_cp.c index 22a9864c..a4b48577 100644 --- a/shared-core/r600_cp.c +++ b/shared-core/r600_cp.c @@ -2572,23 +2572,20 @@ static void r600_cp_discard_buffer(struct drm_device * dev, struct drm_buf * buf buf_priv->age = ++dev_priv->sarea_priv->last_dispatch; /* Emit the vertex buffer age */ - BEGIN_RING(2); + BEGIN_RING(8); R600_DISPATCH_AGE(buf_priv->age); + OUT_RING(CP_PACKET2()); + OUT_RING(CP_PACKET2()); + OUT_RING(CP_PACKET2()); + OUT_RING(CP_PACKET2()); + OUT_RING(CP_PACKET2()); + OUT_RING(CP_PACKET2()); ADVANCE_RING(); buf->pending = 1; buf->used = 0; } -#define R600_VB_AGE_TEST_WITH_RETURN( dev_priv ) \ -do { \ - drm_radeon_sarea_t *sarea_priv = dev_priv->sarea_priv; \ - if ( sarea_priv->last_dispatch >= RADEON_MAX_VB_AGE ) { \ - sarea_priv->last_dispatch = 0; \ - radeon_freelist_reset( dev ); \ - } \ -} while (0) - int r600_cp_indirect(struct drm_device *dev, struct drm_buf *buf, drm_radeon_indirect_t *indirect) { drm_radeon_private_t *dev_priv = dev->dev_private; @@ -2596,7 +2593,7 @@ int r600_cp_indirect(struct drm_device *dev, struct drm_buf *buf, drm_radeon_ind RING_LOCALS; RING_SPACE_TEST_WITH_RETURN(dev_priv); - R600_VB_AGE_TEST_WITH_RETURN(dev_priv); + VB_AGE_TEST_WITH_RETURN(dev_priv); buf->used = indirect->end; |