diff options
author | 2013-04-03 07:36:57 +0000 | |
---|---|---|
committer | 2013-04-03 07:36:57 +0000 | |
commit | 28d93ca9b3c5b5fb31a053235400a2a3ea283f96 (patch) | |
tree | 35f3f8547d49dc574d7dd9a431c14d2c1be944b6 | |
parent | fix EDID detailed timing frame rate (diff) | |
download | wireguard-openbsd-28d93ca9b3c5b5fb31a053235400a2a3ea283f96.tar.xz wireguard-openbsd-28d93ca9b3c5b5fb31a053235400a2a3ea283f96.zip |
move i915_gem_find_inactive_object() into i915_gem_evict.c
-rw-r--r-- | sys/dev/pci/drm/i915/i915_drv.c | 43 | ||||
-rw-r--r-- | sys/dev/pci/drm/i915/i915_drv.h | 7 | ||||
-rw-r--r-- | sys/dev/pci/drm/i915/i915_gem_evict.c | 45 |
3 files changed, 46 insertions, 49 deletions
diff --git a/sys/dev/pci/drm/i915/i915_drv.c b/sys/dev/pci/drm/i915/i915_drv.c index 554c42c584d..f3192b09a65 100644 --- a/sys/dev/pci/drm/i915/i915_drv.c +++ b/sys/dev/pci/drm/i915/i915_drv.c @@ -1,4 +1,4 @@ -/* $OpenBSD: i915_drv.c,v 1.14 2013/03/30 13:14:33 kettenis Exp $ */ +/* $OpenBSD: i915_drv.c,v 1.15 2013/04/03 07:36:57 jsg Exp $ */ /* * Copyright (c) 2008-2009 Owain G. Ainsworth <oga@openbsd.org> * @@ -1497,47 +1497,6 @@ inteldrm_set_max_obj_size(struct inteldrm_softc *dev_priv) } -struct drm_obj * -i915_gem_find_inactive_object(struct inteldrm_softc *dev_priv, - size_t min_size) -{ - struct drm_obj *obj, *best = NULL, *first = NULL; - struct drm_i915_gem_object *obj_priv; - - /* - * We don't need references to the object as long as we hold the list - * lock, they won't disappear until we release the lock. - */ - list_for_each_entry(obj_priv, &dev_priv->mm.inactive_list, mm_list) { - obj = &obj_priv->base; - if (obj->size >= min_size) { - if ((!obj_priv->dirty || - i915_gem_object_is_purgeable(obj_priv)) && - (best == NULL || obj->size < best->size)) { - best = obj; - if (best->size == min_size) - break; - } - } - if (first == NULL) - first = obj; - } - if (best == NULL) - best = first; - if (best) { - drm_ref(&best->uobj); - /* - * if we couldn't grab it, we may as well fail and go - * onto the next step for the sake of simplicity. - */ - if (drm_try_hold_object(best) == 0) { - drm_unref(&best->uobj); - best = NULL; - } - } - return (best); -} - void inteldrm_wipe_mappings(struct drm_obj *obj) { diff --git a/sys/dev/pci/drm/i915/i915_drv.h b/sys/dev/pci/drm/i915/i915_drv.h index 32ffa0a5a9a..c3a6f99ffa6 100644 --- a/sys/dev/pci/drm/i915/i915_drv.h +++ b/sys/dev/pci/drm/i915/i915_drv.h @@ -1,4 +1,4 @@ -/* $OpenBSD: i915_drv.h,v 1.11 2013/03/31 11:43:23 kettenis Exp $ */ +/* $OpenBSD: i915_drv.h,v 1.12 2013/04/03 07:36:57 jsg Exp $ */ /* i915_drv.h -- Private header for the I915 driver -*- linux-c -*- */ /* @@ -1093,9 +1093,6 @@ int i915_gem_execbuffer_reserve_object(struct drm_i915_gem_object *, struct intel_ring_buffer *); void i915_gem_execbuffer_unreserve_object(struct drm_i915_gem_object *); -struct drm_obj *i915_gem_find_inactive_object(struct inteldrm_softc *, - size_t); - extern int i915_gem_get_seqno(struct drm_device *, u32 *); int i915_gem_object_set_to_gtt_domain(struct drm_i915_gem_object *, @@ -1140,8 +1137,6 @@ void inteldrm_verify_inactive(struct inteldrm_softc *, char *, int); #endif void i915_gem_retire_requests(struct inteldrm_softc *); -struct drm_obj *i915_gem_find_inactive_object(struct inteldrm_softc *, - size_t); int i915_gem_object_unbind(struct drm_i915_gem_object *); int i915_wait_seqno(struct intel_ring_buffer *, uint32_t); #define I915_GEM_GPU_DOMAINS (~(I915_GEM_DOMAIN_CPU | I915_GEM_DOMAIN_GTT)) diff --git a/sys/dev/pci/drm/i915/i915_gem_evict.c b/sys/dev/pci/drm/i915/i915_gem_evict.c index 5343d6e8771..d3874da96a4 100644 --- a/sys/dev/pci/drm/i915/i915_gem_evict.c +++ b/sys/dev/pci/drm/i915/i915_gem_evict.c @@ -1,4 +1,4 @@ -/* $OpenBSD: i915_gem_evict.c,v 1.1 2013/03/18 12:36:52 jsg Exp $ */ +/* $OpenBSD: i915_gem_evict.c,v 1.2 2013/04/03 07:36:57 jsg Exp $ */ /* * Copyright (c) 2008-2009 Owain G. Ainsworth <oga@openbsd.org> * @@ -52,6 +52,49 @@ #include <sys/queue.h> #include <sys/workq.h> +struct drm_obj *i915_gem_find_inactive_object(struct inteldrm_softc *, size_t); + +struct drm_obj * +i915_gem_find_inactive_object(struct inteldrm_softc *dev_priv, + size_t min_size) +{ + struct drm_obj *obj, *best = NULL, *first = NULL; + struct drm_i915_gem_object *obj_priv; + + /* + * We don't need references to the object as long as we hold the list + * lock, they won't disappear until we release the lock. + */ + list_for_each_entry(obj_priv, &dev_priv->mm.inactive_list, mm_list) { + obj = &obj_priv->base; + if (obj->size >= min_size) { + if ((!obj_priv->dirty || + i915_gem_object_is_purgeable(obj_priv)) && + (best == NULL || obj->size < best->size)) { + best = obj; + if (best->size == min_size) + break; + } + } + if (first == NULL) + first = obj; + } + if (best == NULL) + best = first; + if (best) { + drm_ref(&best->uobj); + /* + * if we couldn't grab it, we may as well fail and go + * onto the next step for the sake of simplicity. + */ + if (drm_try_hold_object(best) == 0) { + drm_unref(&best->uobj); + best = NULL; + } + } + return (best); +} + int i915_gem_evict_something(struct inteldrm_softc *dev_priv, size_t min_size) { |