NetBSD-Bugs archive

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

port-arm/50356: X server with wsfb broken on armeb environment



>Number:         50356
>Category:       port-arm
>Synopsis:       X server with wsfb broken on armeb environment
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    port-arm-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Oct 22 12:45:00 +0000 2015
>Originator:     Rin Okuyama
>Release:        7.99.21
>Organization:
Department of Physics, Tohoku University
>Environment:
NetBSD cubietruck 7.99.21 NetBSD 7.99.21 (CT) #0: Thu Oct 22 21:27:06 JST 2015  root@XXX:XXX evbarm
>Description:
Display output of X server with wsfb is terribly corrupted on armeb
environments. For example, see a miserable xeyes below:

  https://twitter.com/LabDrunker/status/657169238948360192

Output for external X servers is sanity, and an other application using
wsfb, namely, pkgsrc/x11/mlterm works fine. These suggest that X server
is broken.
>How-To-Repeat:
Run X server with wsfb driver on armeb environments.
>Fix:
Codes in X.org distribution assumes little endian for arm machines.
Check __ARMEB__ macro appropriately. Then, output gets sanity:

  https://twitter.com/LabDrunker/status/657169452610400256

--- xsrc/external/mit/xorg-server/dist/include/servermd.h.orig	2015-10-22 18:53:27.000000000 +0900
+++ xsrc/external/mit/xorg-server/dist/include/servermd.h	2015-10-22 20:29:52.000000000 +0900
@@ -83,11 +83,15 @@
 
 #endif /* __avr32__ */ 
 
-/* XXX arm is not always LE */
 #if defined(__arm32__) || defined(__arm__)
 
+#ifdef __ARMEB__
+#define IMAGE_BYTE_ORDER        MSBFirst
+#define BITMAP_BIT_ORDER        MSBFirst
+#else
 #define IMAGE_BYTE_ORDER        LSBFirst
 #define BITMAP_BIT_ORDER        LSBFirst
+#endif
 #define GLYPHPADBYTES           4
 
 #endif /* __arm32__ */



Home | Main Index | Thread Index | Old Index