drm/i915: Return correct size for rotated views
authorTvrtko Ursulin <tvrtko.ursulin@intel.com>
Tue, 23 Jun 2015 11:57:43 +0000 (12:57 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 24 Jun 2015 13:11:06 +0000 (15:11 +0200)
Currently object size is returned for the rotated VMA size which can be
bigger than the rotated view itself. Since the binding code pads all
excess size with scratch pages the only minor issue with this is wasting
some GGTT space, but still feels nicer to fix and report the real size.

v2: Rebase for tracking size in bytes instead of pages.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem_gtt.c

index 53a59b89462f1c9eb6d5d196fbd86edb176e955b..2279e030570cd4612f6c2244cebf4e276bb8c9e5 100644 (file)
@@ -2899,9 +2899,10 @@ size_t
 i915_ggtt_view_size(struct drm_i915_gem_object *obj,
                    const struct i915_ggtt_view *view)
 {
-       if (view->type == I915_GGTT_VIEW_NORMAL ||
-           view->type == I915_GGTT_VIEW_ROTATED) {
+       if (view->type == I915_GGTT_VIEW_NORMAL) {
                return obj->base.size;
+       } else if (view->type == I915_GGTT_VIEW_ROTATED) {
+               return view->rotation_info.size;
        } else if (view->type == I915_GGTT_VIEW_PARTIAL) {
                return view->params.partial.size << PAGE_SHIFT;
        } else {