xserver/hw/kdrive/fbdev fbdev.c,1.46,1.47
Phil Blundell
xserver-commit at pdx.freedesktop.org
Tue Jul 20 07:33:44 PDT 2004
Committed by: pb
Update of /cvs/xserver/xserver/hw/kdrive/fbdev
In directory pdx:/tmp/cvs-serv30863/hw/kdrive/fbdev
Modified Files:
fbdev.c
Log Message:
2004-07-20 Phil Blundell <pb at nexus.co.uk>
* hw/kdrive/fbdev/fbdev.c (fbdevSetShadow): Select optimized
16bpp
shadow copy functions if screen is 16bpp. Select -YX versions
for
90 and 270 rotations if architecture is ARM.
Index: fbdev.c
===================================================================
RCS file: /cvs/xserver/xserver/hw/kdrive/fbdev/fbdev.c,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -d -r1.46 -r1.47
--- fbdev.c 28 Jun 2004 00:48:51 -0000 1.46
+++ fbdev.c 20 Jul 2004 14:33:42 -0000 1.47
@@ -391,13 +391,44 @@
KdScreenPriv(pScreen);
KdScreenInfo *screen = pScreenPriv->screen;
FbdevScrPriv *scrpriv = screen->driver;
+ FbdevPriv *priv = screen->card->driver;
ShadowUpdateProc update;
ShadowWindowProc window;
+ int useYX = 0;
+
+#ifdef __arm__
+ /* Use variant copy routines that always read left to right in the
+ shadow framebuffer. Reading vertical strips is exceptionally
+ slow on XScale due to cache effects. */
+ useYX = 1;
+#endif
window = fbdevWindowLinear;
update = 0;
if (scrpriv->randr)
- update = shadowUpdateRotatePacked;
+ if (priv->var.bits_per_pixel == 16) {
+ switch (scrpriv->randr) {
+ case RR_Rotate_90:
+ if (useYX)
+ update = shadowUpdateRotate16_90YX;
+ else
+ update = shadowUpdateRotate16_90;
+ break;
+ case RR_Rotate_180:
+ update = shadowUpdateRotate16_180;
+ break;
+ case RR_Rotate_270:
+ if (useYX)
+ update = shadowUpdateRotate16_270YX;
+ else
+ update = shadowUpdateRotate16_270;
+ break;
+ default:
+ update = shadowUpdateRotate16;
+ break;
+ }
+ } else
+ update = shadowUpdateRotatePacked;
else
update = shadowUpdatePacked;
return KdShadowSet (pScreen, scrpriv->randr, update, window);
More information about the xserver-commit
mailing list