diff --git a/shared-core/r600_cp.c b/shared-core/r600_cp.c index 207f050..c2720cb 100644 --- a/shared-core/r600_cp.c +++ b/shared-core/r600_cp.c @@ -2597,6 +2597,15 @@ static void r600_cp_discard_buffer(struct drm_device * dev, struct drm_buf * buf 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; @@ -2604,7 +2613,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); - VB_AGE_TEST_WITH_RETURN(dev_priv); + R600_VB_AGE_TEST_WITH_RETURN(dev_priv); buf->used = indirect->end;