Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8fe301ad authored by Chris Wilson's avatar Chris Wilson Committed by Daniel Vetter
Browse files

drm/i915: Simplify fence finding



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: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 1c293ea3
Loading
Loading
Loading
Loading
+3 −13
Original line number Diff line number Diff line
@@ -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 */
@@ -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;
}

/**