Browse Source

drm/i915: Allow calling intel_adjust_tile_offset() multiple times

Minimize the resulting X coordinate after intel_adjust_tile_offset() is
done with it's offset adjustment. This allows calling
intel_adjust_tile_offset() multiple times in case we need to adjust
the offset several times.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1470821001-25272-9-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Ville Syrjälä 9 years ago
parent
commit
b9b2403845
1 changed files with 5 additions and 0 deletions
  1. 5 0
      drivers/gpu/drm/i915/intel_display.c

+ 5 - 0
drivers/gpu/drm/i915/intel_display.c

@@ -2330,6 +2330,7 @@ static u32 intel_adjust_tile_offset(int *x, int *y,
 				    u32 old_offset,
 				    u32 old_offset,
 				    u32 new_offset)
 				    u32 new_offset)
 {
 {
+	unsigned int pitch_pixels = pitch_tiles * tile_width;
 	unsigned int tiles;
 	unsigned int tiles;
 
 
 	WARN_ON(old_offset & (tile_size - 1));
 	WARN_ON(old_offset & (tile_size - 1));
@@ -2341,6 +2342,10 @@ static u32 intel_adjust_tile_offset(int *x, int *y,
 	*y += tiles / pitch_tiles * tile_height;
 	*y += tiles / pitch_tiles * tile_height;
 	*x += tiles % pitch_tiles * tile_width;
 	*x += tiles % pitch_tiles * tile_width;
 
 
+	/* minimize x in case it got needlessly big */
+	*y += *x / pitch_pixels * tile_height;
+	*x %= pitch_pixels;
+
 	return new_offset;
 	return new_offset;
 }
 }