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>
This commit is contained in:
parent
60d5f2a45b
commit
b9b2403845
|
@ -2330,6 +2330,7 @@ static u32 intel_adjust_tile_offset(int *x, int *y,
|
|||
u32 old_offset,
|
||||
u32 new_offset)
|
||||
{
|
||||
unsigned int pitch_pixels = pitch_tiles * tile_width;
|
||||
unsigned int tiles;
|
||||
|
||||
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;
|
||||
*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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue