aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_drv.h
diff options
context:
space:
mode:
authorBen Widawsky <ben@bwidawsk.net>2013-07-31 19:59:56 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-08-05 13:04:08 -0400
commita70a3148b0c61cb7c588ea650db785b261b378a3 (patch)
tree63d9dbfe3c2ef436411b4e9aeb58abe99a78c9a0 /drivers/gpu/drm/i915/i915_drv.h
parent31a46c9c092afc6558e7be7eaa42eb9bd4d3de8b (diff)
drm/i915: Make proper functions for VMs
Earlier in the conversion sequence we attempted to quickly wedge in the transitional interface as static inlines. Now that we're sure these interfaces are sane, for easier debug and to decrease code size (since many of these functions may be called quite a bit), make them real functions While at it, kill off the set_color interface. We'll always have the VMA, or easily get to it. Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.h')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h83
1 files changed, 37 insertions, 46 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 67a15d00d5f2..79d4fed9d066 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1393,52 +1393,6 @@ struct drm_i915_gem_object {
1393 1393
1394#define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base) 1394#define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base)
1395 1395
1396/* This is a temporary define to help transition us to real VMAs. If you see
1397 * this, you're either reviewing code, or bisecting it. */
1398static inline struct i915_vma *
1399__i915_gem_obj_to_vma(struct drm_i915_gem_object *obj)
1400{
1401 if (list_empty(&obj->vma_list))
1402 return NULL;
1403 return list_first_entry(&obj->vma_list, struct i915_vma, vma_link);
1404}
1405
1406/* Whether or not this object is currently mapped by the translation tables */
1407static inline bool
1408i915_gem_obj_ggtt_bound(struct drm_i915_gem_object *o)
1409{
1410 struct i915_vma *vma = __i915_gem_obj_to_vma(o);
1411 if (vma == NULL)
1412 return false;
1413 return drm_mm_node_allocated(&vma->node);
1414}
1415
1416/* Offset of the first PTE pointing to this object */
1417static inline unsigned long
1418i915_gem_obj_ggtt_offset(struct drm_i915_gem_object *o)
1419{
1420 BUG_ON(list_empty(&o->vma_list));
1421 return __i915_gem_obj_to_vma(o)->node.start;
1422}
1423
1424/* The size used in the translation tables may be larger than the actual size of
1425 * the object on GEN2/GEN3 because of the way tiling is handled. See
1426 * i915_gem_get_gtt_size() for more details.
1427 */
1428static inline unsigned long
1429i915_gem_obj_ggtt_size(struct drm_i915_gem_object *o)
1430{
1431 BUG_ON(list_empty(&o->vma_list));
1432 return __i915_gem_obj_to_vma(o)->node.size;
1433}
1434
1435static inline void
1436i915_gem_obj_ggtt_set_color(struct drm_i915_gem_object *o,
1437 enum i915_cache_level color)
1438{
1439 __i915_gem_obj_to_vma(o)->node.color = color;
1440}
1441
1442/** 1396/**
1443 * Request queue structure. 1397 * Request queue structure.
1444 * 1398 *
@@ -1906,6 +1860,43 @@ struct dma_buf *i915_gem_prime_export(struct drm_device *dev,
1906 1860
1907void i915_gem_restore_fences(struct drm_device *dev); 1861void i915_gem_restore_fences(struct drm_device *dev);
1908 1862
1863unsigned long i915_gem_obj_offset(struct drm_i915_gem_object *o,
1864 struct i915_address_space *vm);
1865bool i915_gem_obj_bound_any(struct drm_i915_gem_object *o);
1866bool i915_gem_obj_bound(struct drm_i915_gem_object *o,
1867 struct i915_address_space *vm);
1868unsigned long i915_gem_obj_size(struct drm_i915_gem_object *o,
1869 struct i915_address_space *vm);
1870struct i915_vma *i915_gem_obj_to_vma(struct drm_i915_gem_object *obj,
1871 struct i915_address_space *vm);
1872/* Some GGTT VM helpers */
1873#define obj_to_ggtt(obj) \
1874 (&((struct drm_i915_private *)(obj)->base.dev->dev_private)->gtt.base)
1875static inline bool i915_is_ggtt(struct i915_address_space *vm)
1876{
1877 struct i915_address_space *ggtt =
1878 &((struct drm_i915_private *)(vm)->dev->dev_private)->gtt.base;
1879 return vm == ggtt;
1880}
1881
1882static inline bool i915_gem_obj_ggtt_bound(struct drm_i915_gem_object *obj)
1883{
1884 return i915_gem_obj_bound(obj, obj_to_ggtt(obj));
1885}
1886
1887static inline unsigned long
1888i915_gem_obj_ggtt_offset(struct drm_i915_gem_object *obj)
1889{
1890 return i915_gem_obj_offset(obj, obj_to_ggtt(obj));
1891}
1892
1893static inline unsigned long
1894i915_gem_obj_ggtt_size(struct drm_i915_gem_object *obj)
1895{
1896 return i915_gem_obj_size(obj, obj_to_ggtt(obj));
1897}
1898#undef obj_to_ggtt
1899
1909/* i915_gem_context.c */ 1900/* i915_gem_context.c */
1910void i915_gem_context_init(struct drm_device *dev); 1901void i915_gem_context_init(struct drm_device *dev);
1911void i915_gem_context_fini(struct drm_device *dev); 1902void i915_gem_context_fini(struct drm_device *dev);