Re: [Linux-fbdev-devel] Re: Console rotation problems

From: Antonino A. Daplas
Date: Thu Nov 24 2005 - 05:14:24 EST


Geert Uytterhoeven wrote:
> On Thu, 24 Nov 2005, Antonino A. Daplas wrote:
>> Benjamin Herrenschmidt wrote:
>>> Remove bogus usage of test/set_bit() from fbcon rotation code and just
>>> manipulate the bits directly. This fixes an oops on powerpc among others
>>> and should be faster. Seems to work fine on the G5 here.
>> Thanks, I reached a point when my head became muddled with bit
>> manipulations, so I used arch-specific bitops but complete forgot
>> that they were atomic :-)
>
> I haven't really looked at the rotation code, but I guess it can be optimized a
> lot by using similar techniques like c2p (chunky-to-planar) conversions.
>

Actually, BenH's patch touched code that is in the slow path. The font
rotation is done on the entire fontdata, then stored, on a console switch.
Thus the rest of the drawing functions need not do repetitive and expensive
bitmap rotation.

Scrolling performance of a normally oriented and upside-down rotation is
practically the same (1024x768 8x16 redraw).

con_rotate = 0
real 0m2.550s
user 0m0.000s
sys 0m2.543s

con_rotate = 2
real 0m2.559s
user 0m0.001s
sys 0m2.545s


CCW and CW rotation, is of course slower, because the blit direction
tends to be top->down, rather than left->right.

con_rotate = 1
real 0m4.675s
user 0m0.000s
sys 0m4.663s

con_rotate = 3
real 0m4.701s
user 0m0.001s
sys 0m4.684s

Tony
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/