summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2009-02-19 10:57:56 -0500
committerAlex Deucher <alexdeucher@gmail.com>2009-02-19 10:57:56 -0500
commit239acbbb27a62cf9c821d50f21cdc3592d84fb8a (patch)
tree61c03bbc7a15e05ee77f63d64b199c380a311849
parent62d391417d03a86c21a8e04389e86d009bccf08c (diff)
R6xx/R7xx: pad VB age submission to 8 dwords
also switch to standard VB age check
-rw-r--r--shared-core/r600_cp.c19
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;