summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEgbert Eich <eich@freedesktop.org>2011-06-07 19:31:16 +0200
committerEgbert Eich <eich@freedesktop.org>2013-07-31 11:46:06 +0200
commit12af175fee1d3f6f17f8391ec642d904deca3783 (patch)
tree92d78aefe51b6c6f4da6110496060872a97cf9de
parent49381ff2c3aa98be5bb84494b2ad3f81a0d31bcc (diff)
Disable Linear Expansion on BE
Linear Expansion doesn't work on BE as the bit order in a word is reversed. ScreenToScreenColorExpansion allows to adjust the bit order in a byte, still the bytes have the wrong order. Reviewed-by: <wharms@bfs.de> Signed-off-by: Egbert Eich <eich@freedesktop.org>
-rw-r--r--src/mga.h5
-rw-r--r--src/mga_storm.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/src/mga.h b/src/mga.h
index 34695c1..0c5d71d 100644
--- a/src/mga.h
+++ b/src/mga.h
@@ -688,7 +688,12 @@ extern CARD32 MGAAtypeNoBLK[16];
#define NICE_DASH_PATTERN 0x00000020
#define TWO_PASS_COLOR_EXPAND 0x00000040
#define MGA_NO_PLANEMASK 0x00000080
+/* linear expansion doesn't work on BE due to wrong byte order */
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+#define USE_LINEAR_EXPANSION 0x00000000
+#else
#define USE_LINEAR_EXPANSION 0x00000100
+#endif
#define LARGE_ADDRESSES 0x00000200
#define MGAIOMAPSIZE 0x00004000
diff --git a/src/mga_storm.c b/src/mga_storm.c
index fb0e7be..84a4c8c 100644
--- a/src/mga_storm.c
+++ b/src/mga_storm.c
@@ -710,7 +710,11 @@ Bool mgaAccelInit( ScreenPtr pScreen )
/* screen to screen color expansion */
if(pMga->AccelFlags & USE_LINEAR_EXPANSION) {
infoPtr->ScreenToScreenColorExpandFillFlags =
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+ BIT_ORDER_IN_BYTE_MSBFIRST;
+#else
BIT_ORDER_IN_BYTE_LSBFIRST;
+#endif
infoPtr->SetupForScreenToScreenColorExpandFill =
mgaSetupForScreenToScreenColorExpandFill;
infoPtr->SubsequentScreenToScreenColorExpandFill =