Skip to content

Commit

Permalink
drm/i915: Simplify fence finding
Browse files Browse the repository at this point in the history
As the fences are stored in LRU order, we can simply reuse the oldest if
we do not have an unused register.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
  • Loading branch information
Chris Wilson authored and Daniel Vetter committed Apr 18, 2012
1 parent 1c293ea commit 8fe301a
Showing 1 changed file with 3 additions and 13 deletions.
16 changes: 3 additions & 13 deletions drivers/gpu/drm/i915/i915_gem.c
Original file line number Diff line number Diff line change
Expand Up @@ -2352,7 +2352,7 @@ static struct drm_i915_fence_reg *
i915_find_fence_reg(struct drm_device *dev)
{
struct drm_i915_private *dev_priv = dev->dev_private;
struct drm_i915_fence_reg *reg, *first, *avail;
struct drm_i915_fence_reg *reg, *avail;
int i;

/* First try to find a free reg */
Expand All @@ -2370,24 +2370,14 @@ i915_find_fence_reg(struct drm_device *dev)
return NULL;

/* None available, try to steal one or wait for a user to finish */
avail = first = NULL;
list_for_each_entry(reg, &dev_priv->mm.fence_list, lru_list) {
if (reg->pin_count)
continue;

if (first == NULL)
first = reg;

if (reg->obj->last_fenced_seqno == 0) {
avail = reg;
break;
}
return reg;
}

if (avail == NULL)
avail = first;

return avail;
return NULL;
}

/**
Expand Down

0 comments on commit 8fe301a

Please sign in to comment.