[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [PATCH] drm/nouveau: Fix fbcon corruption with font width not divisible by 8



On 10/13/2010 04:37 AM, Ben Hutchings wrote:
> From: Marcin Kościelnicki <koriakin@0x04.net>
> 
> commit c82b88d578847909797945824851a6a9a84f9c20 upstream.
> 
> NV50 is nice and has a switch that autoaligns stuff for us. Pre-NV50,
> we need to align input bitmap width manually.
> 
> Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net>
> Signed-off-by: Francisco Jerez <currojerez@riseup.net>
> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> ---
>  drivers/gpu/drm/nouveau/nv04_fbcon.c |    6 +++---
>  drivers/gpu/drm/nouveau/nv50_fbcon.c |    2 +-
>  2 files changed, 4 insertions(+), 4 deletions(-)
> 
ACK
> diff --git a/drivers/gpu/drm/nouveau/nv04_fbcon.c b/drivers/gpu/drm/nouveau/nv04_fbcon.c
> index 3da90c2..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 = ALIGN(image->width, 32);
> -	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 993c712..25a3cd8 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);
>  	BEGIN_RING(chan, NvSub2D, 0x081c, 1);
>  	OUT_RING(chan, 1);
>  	BEGIN_RING(chan, NvSub2D, 0x0840, 4);



Reply to: