Re: Re: [BK FBDEV] String drawing optim
From: Petr Vandrovec <hidden>
Date: 2003-05-16 16:33:27
Also in:
lkml
On 16 May 03 at 10:24, Geert Uytterhoeven wrote:
On Thu, 15 May 2003, James Simmons wrote:quoted
quoted
What about getting rid of one-char putc, implementing it in terms of putcs? I'm doing it in matroxfb patches, and nobody complained yet, and with current length of {fbcon,accel}_putc{s,} I was not able to find measurable speed difference between putc and putc through putcs variants.Hm. I compressed all the image drawing functions into accel_putcs which is used in many places. I then placed accel_putc() into fbcon_putc(). I could have accel_putcs() called in fbcon_putc(). The advantage is smaller amount of code. The offset is a big more overhead plus a function call. What do people think here?putc() is almost never called, IIRC. We did our best to combine as much data as possible and call putcs(). A quick grep showed ->con_putc() is called only in drivers/char/vt.c for: - Complementing the pointer position (for gpm) - Inserting/deleting single characters - Softcursor
Insert and Delete char are especially funny, as they do:
scr_memsetw(p, video_erase_char, nr * 2);
...
attr = video_erase_char >> 8;
while (nr--) {
sw->con_putc(vc_cons[currcons].d,
video_erase_char, y,
video_num_columns-1-nr);
}
attr = oldattr;
so we can turn whole loop into one single putcs() call, asking
for painting 'nr' characters from 'p' at y,video_num_columns-nr,
which will definitely help... And I believe that vc's attr is not
used by putc/putcs anymore, we always pass color explicit (in upper
bits of character).
Petr Vandrovec
-------------------------------------------------------
Enterprise Linux Forum Conference & Expo, June 4-6, 2003, Santa Clara
The only event dedicated to issues related to Linux enterprise solutions
www.enterpriselinuxforum.com