[Intel-gfx] [PATCH 2/6] drm/i915: write only object tracking
Ben Widawsky
ben at bwidawsk.net
Tue Sep 20 06:25:02 CEST 2011
Add the struct member to track write only objects, and display them in
our debugfs.
Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
---
drivers/gpu/drm/i915/i915_debugfs.c | 18 +++++++++++++-----
drivers/gpu/drm/i915/i915_drv.h | 2 ++
2 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 3c395a5..b0f1964 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -138,12 +138,14 @@ describe_obj(struct seq_file *m, struct drm_i915_gem_object *obj)
if (obj->gtt_space != NULL)
seq_printf(m, " (gtt offset: %08x, size: %08x)",
obj->gtt_offset, (unsigned int)obj->gtt_space->size);
- if (obj->pin_mappable || obj->fault_mappable) {
- char s[3], *t = s;
+ if (obj->pin_mappable || obj->fault_mappable || obj->cpu_write_only) {
+ char s[4], *t = s;
if (obj->pin_mappable)
*t++ = 'p';
if (obj->fault_mappable)
*t++ = 'f';
+ if (obj->cpu_write_only)
+ *t++ = 'w';
*t = '\0';
seq_printf(m, " (%s mappable)", s);
}
@@ -224,8 +226,8 @@ static int i915_gem_object_info(struct seq_file *m, void* data)
struct drm_info_node *node = (struct drm_info_node *) m->private;
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = dev->dev_private;
- u32 count, mappable_count;
- size_t size, mappable_size;
+ u32 count, mappable_count, womap_count;
+ size_t size, mappable_size, womap_size;
struct drm_i915_gem_object *obj;
int ret;
@@ -263,7 +265,7 @@ static int i915_gem_object_info(struct seq_file *m, void* data)
seq_printf(m, " %u [%u] freed objects, %zu [%zu] bytes\n",
count, mappable_count, size, mappable_size);
- size = count = mappable_size = mappable_count = 0;
+ size = count = mappable_size = mappable_count = womap_count = womap_size = 0;
list_for_each_entry(obj, &dev_priv->mm.gtt_list, gtt_list) {
if (obj->fault_mappable) {
size += obj->gtt_space->size;
@@ -273,11 +275,17 @@ static int i915_gem_object_info(struct seq_file *m, void* data)
mappable_size += obj->gtt_space->size;
++mappable_count;
}
+ if (obj->cpu_write_only) {
+ womap_size += obj->gtt_space->size;
+ ++womap_count;
+ }
}
seq_printf(m, "%u pinned mappable objects, %zu bytes\n",
mappable_count, mappable_size);
seq_printf(m, "%u fault mappable objects, %zu bytes\n",
count, size);
+ seq_printf(m, "%u write-only mappable objects, %zu bytes\n",
+ womap_count, womap_size);
seq_printf(m, "%zu [%zu] gtt total\n",
dev_priv->mm.gtt_total, dev_priv->mm.mappable_gtt_total);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index cee396c..c960763 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -883,6 +883,8 @@ struct drm_i915_gem_object {
* reaches 0, dev_priv->pending_flip_queue will be woken up.
*/
atomic_t pending_flip;
+
+ int cpu_write_only;
};
#define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base)
--
1.7.6.1
More information about the Intel-gfx
mailing list