[PATCH 2.6][RESEND] tdfxfb fillrect fix for truecolor modes

From: Jakub Bogusz
Date: Wed Mar 17 2004 - 18:32:04 EST


tdfxfb fillrect (used e.g. for "clear" terminal commands) uses wrong
colour in 16/32-bpp modes - attached patch fixes it.

This change has been already applied into fbdev-2.5 tree, applies
cleanly to Linux 2.6.4 tree - so can be easily merged as small part
of integration.


--
Jakub Bogusz http://cyber.cs.net.pl/~qboosh/
This fixes background used for "clear" terminal commands (^[[J, ^[[K etc.)
in 16/24/32bpp modes.

This patch has been already integrated into fbdev-2.5 tree.

-- Jakub Bogusz <qboosh@xxxxxxxxxxxxx>

--- linux-2.6.0-test2/drivers/video/tdfxfb.c.orig 2003-07-30 08:31:57.000000000 +0200
+++ linux-2.6.0-test2/drivers/video/tdfxfb.c 2003-07-31 00:44:26.000000000 +0200
@@ -890,7 +890,11 @@

banshee_make_room(par, 5);
tdfx_outl(par, DSTFORMAT, fmt);
- tdfx_outl(par, COLORFORE, rect->color);
+ if (info->fix.visual == FB_VISUAL_PSEUDOCOLOR) {
+ tdfx_outl(par, COLORFORE, rect->color);
+ } else { /* FB_VISUAL_TRUECOLOR */
+ tdfx_outl(par, COLORFORE, ((u32*)(info->pseudo_palette))[rect->color]);
+ }
tdfx_outl(par, COMMAND_2D, COMMAND_2D_FILLRECT | (tdfx_rop << 24));
tdfx_outl(par, DSTSIZE, rect->width | (rect->height << 16));
tdfx_outl(par, LAUNCH_2D, rect->dx | (rect->dy << 16));