summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsg <jsg@openbsd.org>2013-04-03 07:36:57 +0000
committerjsg <jsg@openbsd.org>2013-04-03 07:36:57 +0000
commit28d93ca9b3c5b5fb31a053235400a2a3ea283f96 (patch)
tree35f3f8547d49dc574d7dd9a431c14d2c1be944b6
parentfix EDID detailed timing frame rate (diff)
downloadwireguard-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.c43
-rw-r--r--sys/dev/pci/drm/i915/i915_drv.h7
-rw-r--r--sys/dev/pci/drm/i915/i915_gem_evict.c45
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)
{