[PATCH 3/3] UBUNTU: [Upstream] drm/nouveau: Fix fbcon corruption with font width not divisible by 8
Andy Whitcroft
apw at canonical.com
Tue Mar 30 13:21:42 UTC 2010
On Fri, Mar 26, 2010 at 09:25:56AM +1100, Chris Halse Rogers wrote:
> From: Christopher James Halse Rogers <raof at ubuntu.com>
>
> NV50 is nice and has a switch that autoaligns stuff for us. Pre-NV50, we need to align input bitmap width manually.
>
> BugLink: http://bugs.launchpad.net/bugs/544739
> OriginalLocation: http://cgit.freedesktop.org/nouveau/linux-2.6/commit/?id=8af16649e7290eb361e9cf6724d050150e16a993
>
> Signed-off-by: Marcin KoĆcielnicki <koriakin at 0x04.net>
> Signed-off-by: Francisco Jerez <currojerez at riseup.net>
> Signed-off-by: Christopher James Halse Rogers <raof at ubuntu.com>
> ---
> drivers/gpu/drm/nouveau/nv04_fbcon.c | 6 +++---
> drivers/gpu/drm/nouveau/nv50_fbcon.c | 2 +-
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nv04_fbcon.c b/drivers/gpu/drm/nouveau/nv04_fbcon.c
> index fd01caa..813b25c 100644
> --- a/drivers/gpu/drm/nouveau/nv04_fbcon.c
> +++ b/drivers/gpu/drm/nouveau/nv04_fbcon.c
> @@ -118,8 +118,8 @@ nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
> return;
> }
>
> - width = (image->width + 31) & ~31;
> - dsize = (width * image->height) >> 5;
> + width = ALIGN(image->width, 8);
> + dsize = ALIGN(width * image->height, 32) >> 5;
>
> if (info->fix.visual == FB_VISUAL_TRUECOLOR ||
> info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
> @@ -136,8 +136,8 @@ nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
> ((image->dx + image->width) & 0xffff));
> OUT_RING(chan, bg);
> OUT_RING(chan, fg);
> - OUT_RING(chan, (image->height << 16) | image->width);
> OUT_RING(chan, (image->height << 16) | width);
> + OUT_RING(chan, (image->height << 16) | image->width);
> OUT_RING(chan, (image->dy << 16) | (image->dx & 0xffff));
>
> while (dsize) {
> diff --git a/drivers/gpu/drm/nouveau/nv50_fbcon.c b/drivers/gpu/drm/nouveau/nv50_fbcon.c
> index 0f57cdf..195c866 100644
> --- a/drivers/gpu/drm/nouveau/nv50_fbcon.c
> +++ b/drivers/gpu/drm/nouveau/nv50_fbcon.c
> @@ -233,7 +233,7 @@ nv50_fbcon_accel_init(struct fb_info *info)
> BEGIN_RING(chan, NvSub2D, 0x0808, 3);
> OUT_RING(chan, 0);
> OUT_RING(chan, 0);
> - OUT_RING(chan, 0);
> + OUT_RING(chan, 1);
I do wish upstream would _comment_ things like this. Clearly this is
the 'align stuff for me' bit, yet they don't ... sigh.
> BEGIN_RING(chan, NvSub2D, 0x081c, 1);
> OUT_RING(chan, 1);
> BEGIN_RING(chan, NvSub2D, 0x0840, 4);
Other than the slightly inobvious second chunk here it looks fine. I am
inclined to assume its right as it has a visible effect.
Acked-by: Andy Whitcroft <apw at canonical.com>
-apw
More information about the kernel-team
mailing list