From 84b35d18d0b84909f7216fc6a7487ffa72bd3f18 Mon Sep 17 00:00:00 2001 From: marha Date: Fri, 24 Sep 2010 10:10:29 +0000 Subject: xserver xkbcomp libxcb pixman git update 24/9/2010 --- xorg-server/include/servermd.h | 689 +++++++++++++++++++++-------------------- 1 file changed, 355 insertions(+), 334 deletions(-) (limited to 'xorg-server/include/servermd.h') diff --git a/xorg-server/include/servermd.h b/xorg-server/include/servermd.h index e1d644e00..b5ae6ac71 100644 --- a/xorg-server/include/servermd.h +++ b/xorg-server/include/servermd.h @@ -1,334 +1,355 @@ -/*********************************************************** - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - - -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ - -#ifndef SERVERMD_H -#define SERVERMD_H 1 - -/* - * Note: much of this is vestigial from mfb/cfb times. This should - * really be simplified even further. - */ - -/* - * Machine dependent values: - * GLYPHPADBYTES should be chosen with consideration for the space-time - * trade-off. Padding to 0 bytes means that there is no wasted space - * in the font bitmaps (both on disk and in memory), but that access of - * the bitmaps will cause odd-address memory references. Padding to - * 2 bytes would ensure even address memory references and would - * be suitable for a 68010-class machine, but at the expense of wasted - * space in the font bitmaps. Padding to 4 bytes would be good - * for real 32 bit machines, etc. Be sure that you tell the font - * compiler what kind of padding you want because its defines are - * kept separate from this. See server/include/font.h for how - * GLYPHPADBYTES is used. - */ - -#ifdef __avr32__ - -#define IMAGE_BYTE_ORDER MSBFirst -#define BITMAP_BIT_ORDER MSBFirst -#define GLYPHPADBYTES 4 - -#endif /* __avr32__ */ - -#ifdef __arm32__ - -#define IMAGE_BYTE_ORDER LSBFirst -#define BITMAP_BIT_ORDER LSBFirst -#define GLYPHPADBYTES 4 - -#endif /* __arm32__ */ - -#if defined __hppa__ - -#define IMAGE_BYTE_ORDER MSBFirst -#define BITMAP_BIT_ORDER MSBFirst -#define GLYPHPADBYTES 4 /* to make fb work */ - /* byte boundries */ -#endif /* hpux || __hppa__ */ - -#if defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) - -#define IMAGE_BYTE_ORDER MSBFirst -#define BITMAP_BIT_ORDER MSBFirst -#define GLYPHPADBYTES 4 - -#endif /* PowerPC */ - -#if defined(__sh__) - -#if defined(__BIG_ENDIAN__) -# define IMAGE_BYTE_ORDER MSBFirst -# define BITMAP_BIT_ORDER MSBFirst -# define GLYPHPADBYTES 4 -#else -# define IMAGE_BYTE_ORDER LSBFirst -# define BITMAP_BIT_ORDER LSBFirst -# define GLYPHPADBYTES 4 -#endif - -#endif /* SuperH */ - -#if defined(__m32r__) - -#if defined(__BIG_ENDIAN__) -# define IMAGE_BYTE_ORDER MSBFirst -# define BITMAP_BIT_ORDER MSBFirst -# define GLYPHPADBYTES 4 -#else -# define IMAGE_BYTE_ORDER LSBFirst -# define BITMAP_BIT_ORDER LSBFirst -# define GLYPHPADBYTES 4 -#endif - -#endif /* __m32r__ */ - -#if (defined(sun) && (defined(__sparc) || defined(sparc))) || \ - (defined(__uxp__) && (defined(sparc) || defined(mc68000))) || \ - defined(__sparc__) || defined(__mc68000__) - -#if defined(__sparc) || defined(__sparc__) -# if !defined(sparc) -# define sparc 1 -# endif -#endif - -#if defined(sun386) || defined(sun5) -# define IMAGE_BYTE_ORDER LSBFirst /* Values for the SUN only */ -# define BITMAP_BIT_ORDER LSBFirst -#else -# define IMAGE_BYTE_ORDER MSBFirst /* Values for the SUN only */ -# define BITMAP_BIT_ORDER MSBFirst -#endif - -#define GLYPHPADBYTES 4 - -#endif /* sun && !(i386 && SVR4) */ - - -#if defined(ibm032) || defined (ibm) - -#ifdef __i386__ -# define IMAGE_BYTE_ORDER LSBFirst /* Value for PS/2 only */ -#else -# define IMAGE_BYTE_ORDER MSBFirst /* Values for the RT only*/ -#endif -#define BITMAP_BIT_ORDER MSBFirst -#define GLYPHPADBYTES 1 -/* ibm pcc doesn't understand pragmas. */ - -#ifdef __i386__ -#define BITMAP_SCANLINE_UNIT 8 -#endif - -#endif /* ibm */ - -#if (defined(mips) || defined(__mips)) - -#if defined(MIPSEL) || defined(__MIPSEL__) -# define IMAGE_BYTE_ORDER LSBFirst /* Values for the PMAX only */ -# define BITMAP_BIT_ORDER LSBFirst -# define GLYPHPADBYTES 4 -#else -# define IMAGE_BYTE_ORDER MSBFirst /* Values for the MIPS only */ -# define BITMAP_BIT_ORDER MSBFirst -# define GLYPHPADBYTES 4 -#endif - -#endif /* mips */ - -#if defined(__alpha) || defined(__alpha__) -# define IMAGE_BYTE_ORDER LSBFirst /* Values for the Alpha only */ -# define BITMAP_BIT_ORDER LSBFirst -# define GLYPHPADBYTES 4 - -#endif /* alpha */ - -#if defined (linux) && defined (__s390__) - -#define IMAGE_BYTE_ORDER MSBFirst -#define BITMAP_BIT_ORDER MSBFirst -#define GLYPHPADBYTES 4 - -#define BITMAP_SCANLINE_UNIT 8 -#define FAST_UNALIGNED_READ - -#endif /* linux/s390 */ - -#if defined (linux) && defined (__s390x__) - -#define IMAGE_BYTE_ORDER MSBFirst -#define BITMAP_BIT_ORDER MSBFirst -#define GLYPHPADBYTES 4 - -#define BITMAP_SCANLINE_UNIT 8 -#define FAST_UNALIGNED_READ - -#endif /* linux/s390x */ - - -#if defined(__ia64__) || defined(ia64) - -# define IMAGE_BYTE_ORDER LSBFirst -# define BITMAP_BIT_ORDER LSBFirst -# define GLYPHPADBYTES 4 - -#endif /* ia64 */ - -#if defined(__amd64__) || defined(amd64) || defined(__amd64) -# define IMAGE_BYTE_ORDER LSBFirst -# define BITMAP_BIT_ORDER LSBFirst -# define GLYPHPADBYTES 4 -/* ???? */ -#endif /* AMD64 */ - -#if defined(SVR4) && (defined(__i386__) || defined(__i386) ) || \ - defined(__alpha__) || defined(__alpha) || \ - defined(__i386__) || \ - defined(__s390x__) || defined(__s390__) - -#ifndef IMAGE_BYTE_ORDER -#define IMAGE_BYTE_ORDER LSBFirst -#endif - -#ifndef BITMAP_BIT_ORDER -# define BITMAP_BIT_ORDER LSBFirst -#endif - -#ifndef GLYPHPADBYTES -#define GLYPHPADBYTES 4 -#endif - -#endif /* SVR4 / BSD / i386 */ - -#if defined (linux) && defined (__mc68000__) - -#define IMAGE_BYTE_ORDER MSBFirst -#define BITMAP_BIT_ORDER MSBFirst -#define GLYPHPADBYTES 4 - -#endif /* linux/m68k */ - - -/* linux on ARM */ -#if defined(linux) && defined(__arm__) -#define IMAGE_BYTE_ORDER LSBFirst -#define BITMAP_BIT_ORDER LSBFirst -#define GLYPHPADBYTES 4 -#endif - -/* linux on IBM S/390 */ -#if defined (linux) && defined (__s390__) -#define IMAGE_BYTE_ORDER MSBFirst -#define BITMAP_BIT_ORDER MSBFirst -#define GLYPHPADBYTES 4 -#endif /* linux/s390 */ - -/* size of buffer to use with GetImage, measured in bytes. There's obviously - * a trade-off between the amount of heap used and the number of times the - * ddx routine has to be called. - */ -#ifndef IMAGE_BUFSIZE -#define IMAGE_BUFSIZE (64*1024) -#endif - -/* pad scanline to a longword */ -#ifndef BITMAP_SCANLINE_UNIT -#define BITMAP_SCANLINE_UNIT 32 -#endif - -#ifndef BITMAP_SCANLINE_PAD -#define BITMAP_SCANLINE_PAD 32 -#define LOG2_BITMAP_PAD 5 -#define LOG2_BYTES_PER_SCANLINE_PAD 2 -#endif - -#include -/* - * This returns the number of padding units, for depth d and width w. - * For bitmaps this can be calculated with the macros above. - * Other depths require either grovelling over the formats field of the - * screenInfo or hardwired constants. - */ - -typedef struct _PaddingInfo { - int padRoundUp; /* pixels per pad unit - 1 */ - int padPixelsLog2; /* log 2 (pixels per pad unit) */ - int padBytesLog2; /* log 2 (bytes per pad unit) */ - int notPower2; /* bitsPerPixel not a power of 2 */ - int bytesPerPixel; /* only set when notPower2 is TRUE */ - int bitsPerPixel; /* bits per pixel */ -} PaddingInfo; -extern _X_EXPORT PaddingInfo PixmapWidthPaddingInfo[]; - -/* The only portable way to get the bpp from the depth is to look it up */ -#define BitsPerPixel(d) (PixmapWidthPaddingInfo[d].bitsPerPixel) - -#define PixmapWidthInPadUnits(w, d) \ - (PixmapWidthPaddingInfo[d].notPower2 ? \ - (((int)(w) * PixmapWidthPaddingInfo[d].bytesPerPixel + \ - PixmapWidthPaddingInfo[d].bytesPerPixel) >> \ - PixmapWidthPaddingInfo[d].padBytesLog2) : \ - ((int)((w) + PixmapWidthPaddingInfo[d].padRoundUp) >> \ - PixmapWidthPaddingInfo[d].padPixelsLog2)) - -/* - * Return the number of bytes to which a scanline of the given - * depth and width will be padded. - */ -#define PixmapBytePad(w, d) \ - (PixmapWidthInPadUnits(w, d) << PixmapWidthPaddingInfo[d].padBytesLog2) - -#define BitmapBytePad(w) \ - (((int)((w) + BITMAP_SCANLINE_PAD - 1) >> LOG2_BITMAP_PAD) << LOG2_BYTES_PER_SCANLINE_PAD) - -#define PixmapWidthInPadUnitsProto(w, d) PixmapWidthInPadUnits(w, d) -#define PixmapBytePadProto(w, d) PixmapBytePad(w, d) -#define BitmapBytePadProto(w) BitmapBytePad(w) - -#endif /* SERVERMD_H */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ + +#ifndef SERVERMD_H +#define SERVERMD_H 1 + +/* + * Note: much of this is vestigial from mfb/cfb times. This should + * really be simplified even further. + */ + +/* + * Machine dependent values: + * GLYPHPADBYTES should be chosen with consideration for the space-time + * trade-off. Padding to 0 bytes means that there is no wasted space + * in the font bitmaps (both on disk and in memory), but that access of + * the bitmaps will cause odd-address memory references. Padding to + * 2 bytes would ensure even address memory references and would + * be suitable for a 68010-class machine, but at the expense of wasted + * space in the font bitmaps. Padding to 4 bytes would be good + * for real 32 bit machines, etc. Be sure that you tell the font + * compiler what kind of padding you want because its defines are + * kept separate from this. See server/include/font.h for how + * GLYPHPADBYTES is used. + */ + +#ifdef __avr32__ + +#define IMAGE_BYTE_ORDER MSBFirst +#define BITMAP_BIT_ORDER MSBFirst +#define GLYPHPADBYTES 4 + +#endif /* __avr32__ */ + +#ifdef __arm32__ + +#define IMAGE_BYTE_ORDER LSBFirst +#define BITMAP_BIT_ORDER LSBFirst +#define GLYPHPADBYTES 4 + +#endif /* __arm32__ */ + +#if defined(__nds32__) + +#define IMAGE_BYTE_ORDER LSBFirst + +#if defined(XF86MONOVGA) || defined(XF86VGA16) || defined(XF86MONO) +# define BITMAP_BIT_ORDER MSBFirst +#else +# define BITMAP_BIT_ORDER LSBFirst +#endif + +#if defined(XF86MONOVGA) || defined(XF86VGA16) +# define BITMAP_SCANLINE_UNIT 8 +#endif + +#define GLYPHPADBYTES 4 +#define GETLEFTBITS_ALIGNMENT 1 +#define LARGE_INSTRUCTION_CACHE +#define AVOID_MEMORY_READ + +#endif /* __nds32__ */ + +#if defined __hppa__ + +#define IMAGE_BYTE_ORDER MSBFirst +#define BITMAP_BIT_ORDER MSBFirst +#define GLYPHPADBYTES 4 /* to make fb work */ + /* byte boundries */ +#endif /* hpux || __hppa__ */ + +#if defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) + +#define IMAGE_BYTE_ORDER MSBFirst +#define BITMAP_BIT_ORDER MSBFirst +#define GLYPHPADBYTES 4 + +#endif /* PowerPC */ + +#if defined(__sh__) + +#if defined(__BIG_ENDIAN__) +# define IMAGE_BYTE_ORDER MSBFirst +# define BITMAP_BIT_ORDER MSBFirst +# define GLYPHPADBYTES 4 +#else +# define IMAGE_BYTE_ORDER LSBFirst +# define BITMAP_BIT_ORDER LSBFirst +# define GLYPHPADBYTES 4 +#endif + +#endif /* SuperH */ + +#if defined(__m32r__) + +#if defined(__BIG_ENDIAN__) +# define IMAGE_BYTE_ORDER MSBFirst +# define BITMAP_BIT_ORDER MSBFirst +# define GLYPHPADBYTES 4 +#else +# define IMAGE_BYTE_ORDER LSBFirst +# define BITMAP_BIT_ORDER LSBFirst +# define GLYPHPADBYTES 4 +#endif + +#endif /* __m32r__ */ + +#if (defined(sun) && (defined(__sparc) || defined(sparc))) || \ + (defined(__uxp__) && (defined(sparc) || defined(mc68000))) || \ + defined(__sparc__) || defined(__mc68000__) + +#if defined(__sparc) || defined(__sparc__) +# if !defined(sparc) +# define sparc 1 +# endif +#endif + +#if defined(sun386) || defined(sun5) +# define IMAGE_BYTE_ORDER LSBFirst /* Values for the SUN only */ +# define BITMAP_BIT_ORDER LSBFirst +#else +# define IMAGE_BYTE_ORDER MSBFirst /* Values for the SUN only */ +# define BITMAP_BIT_ORDER MSBFirst +#endif + +#define GLYPHPADBYTES 4 + +#endif /* sun && !(i386 && SVR4) */ + + +#if defined(ibm032) || defined (ibm) + +#ifdef __i386__ +# define IMAGE_BYTE_ORDER LSBFirst /* Value for PS/2 only */ +#else +# define IMAGE_BYTE_ORDER MSBFirst /* Values for the RT only*/ +#endif +#define BITMAP_BIT_ORDER MSBFirst +#define GLYPHPADBYTES 1 +/* ibm pcc doesn't understand pragmas. */ + +#ifdef __i386__ +#define BITMAP_SCANLINE_UNIT 8 +#endif + +#endif /* ibm */ + +#if (defined(mips) || defined(__mips)) + +#if defined(MIPSEL) || defined(__MIPSEL__) +# define IMAGE_BYTE_ORDER LSBFirst /* Values for the PMAX only */ +# define BITMAP_BIT_ORDER LSBFirst +# define GLYPHPADBYTES 4 +#else +# define IMAGE_BYTE_ORDER MSBFirst /* Values for the MIPS only */ +# define BITMAP_BIT_ORDER MSBFirst +# define GLYPHPADBYTES 4 +#endif + +#endif /* mips */ + +#if defined(__alpha) || defined(__alpha__) +# define IMAGE_BYTE_ORDER LSBFirst /* Values for the Alpha only */ +# define BITMAP_BIT_ORDER LSBFirst +# define GLYPHPADBYTES 4 + +#endif /* alpha */ + +#if defined (linux) && defined (__s390__) + +#define IMAGE_BYTE_ORDER MSBFirst +#define BITMAP_BIT_ORDER MSBFirst +#define GLYPHPADBYTES 4 + +#define BITMAP_SCANLINE_UNIT 8 +#define FAST_UNALIGNED_READ + +#endif /* linux/s390 */ + +#if defined (linux) && defined (__s390x__) + +#define IMAGE_BYTE_ORDER MSBFirst +#define BITMAP_BIT_ORDER MSBFirst +#define GLYPHPADBYTES 4 + +#define BITMAP_SCANLINE_UNIT 8 +#define FAST_UNALIGNED_READ + +#endif /* linux/s390x */ + + +#if defined(__ia64__) || defined(ia64) + +# define IMAGE_BYTE_ORDER LSBFirst +# define BITMAP_BIT_ORDER LSBFirst +# define GLYPHPADBYTES 4 + +#endif /* ia64 */ + +#if defined(__amd64__) || defined(amd64) || defined(__amd64) +# define IMAGE_BYTE_ORDER LSBFirst +# define BITMAP_BIT_ORDER LSBFirst +# define GLYPHPADBYTES 4 +/* ???? */ +#endif /* AMD64 */ + +#if defined(SVR4) && (defined(__i386__) || defined(__i386) ) || \ + defined(__alpha__) || defined(__alpha) || \ + defined(__i386__) || \ + defined(__s390x__) || defined(__s390__) + +#ifndef IMAGE_BYTE_ORDER +#define IMAGE_BYTE_ORDER LSBFirst +#endif + +#ifndef BITMAP_BIT_ORDER +# define BITMAP_BIT_ORDER LSBFirst +#endif + +#ifndef GLYPHPADBYTES +#define GLYPHPADBYTES 4 +#endif + +#endif /* SVR4 / BSD / i386 */ + +#if defined (linux) && defined (__mc68000__) + +#define IMAGE_BYTE_ORDER MSBFirst +#define BITMAP_BIT_ORDER MSBFirst +#define GLYPHPADBYTES 4 + +#endif /* linux/m68k */ + + +/* linux on ARM */ +#if defined(linux) && defined(__arm__) +#define IMAGE_BYTE_ORDER LSBFirst +#define BITMAP_BIT_ORDER LSBFirst +#define GLYPHPADBYTES 4 +#endif + +/* linux on IBM S/390 */ +#if defined (linux) && defined (__s390__) +#define IMAGE_BYTE_ORDER MSBFirst +#define BITMAP_BIT_ORDER MSBFirst +#define GLYPHPADBYTES 4 +#endif /* linux/s390 */ + +/* size of buffer to use with GetImage, measured in bytes. There's obviously + * a trade-off between the amount of heap used and the number of times the + * ddx routine has to be called. + */ +#ifndef IMAGE_BUFSIZE +#define IMAGE_BUFSIZE (64*1024) +#endif + +/* pad scanline to a longword */ +#ifndef BITMAP_SCANLINE_UNIT +#define BITMAP_SCANLINE_UNIT 32 +#endif + +#ifndef BITMAP_SCANLINE_PAD +#define BITMAP_SCANLINE_PAD 32 +#define LOG2_BITMAP_PAD 5 +#define LOG2_BYTES_PER_SCANLINE_PAD 2 +#endif + +#include +/* + * This returns the number of padding units, for depth d and width w. + * For bitmaps this can be calculated with the macros above. + * Other depths require either grovelling over the formats field of the + * screenInfo or hardwired constants. + */ + +typedef struct _PaddingInfo { + int padRoundUp; /* pixels per pad unit - 1 */ + int padPixelsLog2; /* log 2 (pixels per pad unit) */ + int padBytesLog2; /* log 2 (bytes per pad unit) */ + int notPower2; /* bitsPerPixel not a power of 2 */ + int bytesPerPixel; /* only set when notPower2 is TRUE */ + int bitsPerPixel; /* bits per pixel */ +} PaddingInfo; +extern _X_EXPORT PaddingInfo PixmapWidthPaddingInfo[]; + +/* The only portable way to get the bpp from the depth is to look it up */ +#define BitsPerPixel(d) (PixmapWidthPaddingInfo[d].bitsPerPixel) + +#define PixmapWidthInPadUnits(w, d) \ + (PixmapWidthPaddingInfo[d].notPower2 ? \ + (((int)(w) * PixmapWidthPaddingInfo[d].bytesPerPixel + \ + PixmapWidthPaddingInfo[d].bytesPerPixel) >> \ + PixmapWidthPaddingInfo[d].padBytesLog2) : \ + ((int)((w) + PixmapWidthPaddingInfo[d].padRoundUp) >> \ + PixmapWidthPaddingInfo[d].padPixelsLog2)) + +/* + * Return the number of bytes to which a scanline of the given + * depth and width will be padded. + */ +#define PixmapBytePad(w, d) \ + (PixmapWidthInPadUnits(w, d) << PixmapWidthPaddingInfo[d].padBytesLog2) + +#define BitmapBytePad(w) \ + (((int)((w) + BITMAP_SCANLINE_PAD - 1) >> LOG2_BITMAP_PAD) << LOG2_BYTES_PER_SCANLINE_PAD) + +#define PixmapWidthInPadUnitsProto(w, d) PixmapWidthInPadUnits(w, d) +#define PixmapBytePadProto(w, d) PixmapBytePad(w, d) +#define BitmapBytePadProto(w) BitmapBytePad(w) + +#endif /* SERVERMD_H */ -- cgit v1.2.3