summaryrefslogtreecommitdiff
path: root/shared-core/i915_drv.h
diff options
context:
space:
mode:
Diffstat (limited to 'shared-core/i915_drv.h')
-rw-r--r--shared-core/i915_drv.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/shared-core/i915_drv.h b/shared-core/i915_drv.h
index 296e1823..870726c5 100644
--- a/shared-core/i915_drv.h
+++ b/shared-core/i915_drv.h
@@ -247,9 +247,18 @@ typedef struct drm_i915_private {
/**
* List of objects currently involved in rendering from the
* ringbuffer.
+ *
+ * A reference is held on the buffer while on this list.
*/
struct list_head active_list;
- /** LRU List of non-executing objects still in the GTT. */
+ /**
+ * LRU List of non-executing objects still in the GTT.
+ * There may still be dirty cachelines that need to be flushed
+ * before unbind.
+ * A reference is not held on the buffer while on this list,
+ * as merely being GTT-bound shouldn't prevent its being
+ * freed, and we'll pull it off the list in the free path.
+ */
struct list_head inactive_list;
} mm;
} drm_i915_private_t;
@@ -271,6 +280,13 @@ struct drm_i915_gem_object {
/** This object's place on the active or inactive lists */
struct list_head list;
+ /**
+ * This is set if the object is on the active list
+ * (has pending rendering), and is not set if it's on inactive (ready
+ * to be unbound).
+ */
+ int active;
+
/** AGP memory structure for our GTT binding. */
DRM_AGP_MEM *agp_mem;