diff options
author | Egbert Eich <eich@freedesktop.org> | 2011-06-07 19:31:16 +0200 |
---|---|---|
committer | Egbert Eich <eich@freedesktop.org> | 2013-07-31 11:46:06 +0200 |
commit | 12af175fee1d3f6f17f8391ec642d904deca3783 (patch) | |
tree | 92d78aefe51b6c6f4da6110496060872a97cf9de | |
parent | 49381ff2c3aa98be5bb84494b2ad3f81a0d31bcc (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.h | 5 | ||||
-rw-r--r-- | src/mga_storm.c | 4 |
2 files changed, 9 insertions, 0 deletions
@@ -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 = |