From: Corbin Simpson Date: Sat, 9 May 2009 07:43:05 +0000 (-0700) Subject: radeon-gallium: Clean up some of the BO counting logic. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=53c2cc8fefa07723fc456d94eda292e201c41dae;p=mesa.git radeon-gallium: Clean up some of the BO counting logic. --- diff --git a/src/gallium/winsys/drm/radeon/core/radeon_r300.c b/src/gallium/winsys/drm/radeon/core/radeon_r300.c index cbe1652302f..be70ead68d0 100644 --- a/src/gallium/winsys/drm/radeon/core/radeon_r300.c +++ b/src/gallium/winsys/drm/radeon/core/radeon_r300.c @@ -35,21 +35,19 @@ static void radeon_r300_add_buffer(struct r300_winsys* winsys, /* Check to see if this BO is already in line for validation; * find a slot for it otherwise. */ - for (i = 0; i < RADEON_MAX_BOS; i++) { + assert(priv->bo_count <= RADEON_MAX_BOS); + for (i = 0; i < priv->bo_count; i++) { if (sc[i].bo == bo) { sc[i].read_domains |= rd; sc[i].write_domain |= wd; return; - } else if (sc[i].bo == NULL) { - sc[i].bo = bo; - sc[i].read_domains = rd; - sc[i].write_domain = wd; - priv->bo_count = i + 1; - return; } } - assert(FALSE && "Oh God too many BOs!"); + sc[priv->bo_count].bo = bo; + sc[priv->bo_count].read_domains = rd; + sc[priv->bo_count].write_domain = wd; + priv->bo_count++; } static boolean radeon_r300_validate(struct r300_winsys* winsys) @@ -148,6 +146,7 @@ static void radeon_r300_flush_cs(struct r300_winsys* winsys) /* Clean out BOs. */ memset(sc, 0, sizeof(struct radeon_cs_space_check) * RADEON_MAX_BOS); + priv->bo_count = 0; } /* Helper function to do the ioctls needed for setup and init. */