[3/3] drm/i915: Return correct size for rotated views
diff mbox

Message ID 1435053882-27849-3-git-send-email-tvrtko.ursulin@linux.intel.com
State New
Headers show

Commit Message

Tvrtko Ursulin June 23, 2015, 10:04 a.m. UTC
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

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.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_gem_gtt.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Chris Wilson June 23, 2015, 10:29 a.m. UTC | #1
On Tue, Jun 23, 2015 at 11:04:42AM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> 
> 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.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/i915_gem_gtt.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index 43472c4..8e7cd22 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -2898,9 +2898,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.pages << PAGE_SHIFT;

Time to change that variable name. pages is already used in both the vma
and obj to represent the struct sg_table, not the count.
-Chris
Tvrtko Ursulin June 23, 2015, 11:59 a.m. UTC | #2
On 06/23/2015 11:29 AM, Chris Wilson wrote:
> On Tue, Jun 23, 2015 at 11:04:42AM +0100, Tvrtko Ursulin wrote:
>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>
>> 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.
>>
>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
>> ---
>>   drivers/gpu/drm/i915/i915_gem_gtt.c | 5 +++--
>>   1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
>> index 43472c4..8e7cd22 100644
>> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
>> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
>> @@ -2898,9 +2898,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.pages << PAGE_SHIFT;
>
> Time to change that variable name. pages is already used in both the vma
> and obj to represent the struct sg_table, not the count.

Changed to "size_t size" as per IRC discussion and resent the series. 
Thought that will be cleaner since two of of three patches are now v2.

Regards,

Tvrtko

Patch
diff mbox

diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index 43472c4..8e7cd22 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -2898,9 +2898,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.pages << PAGE_SHIFT;
 	} else if (view->type == I915_GGTT_VIEW_PARTIAL) {
 		return view->params.partial.size << PAGE_SHIFT;
 	} else {