📄 servermd.h
字号:
# define BITMAP_SCANLINE_PAD 64# define LOG2_BITMAP_PAD 6# define LOG2_BYTES_PER_SCANLINE_PAD 3# define GLYPHPADBYTES 4# define GETLEFTBITS_ALIGNMENT 1# define FAST_CONSTANT_OFFSET_MODE# define LARGE_INSTRUCTION_CACHE# define PLENTIFUL_REGISTERS/* Add for handling protocol XPutImage and XGetImage; see comment below */#define INTERNAL_VS_EXTERNAL_PADDING#define BITMAP_SCANLINE_UNIT_PROTO 32#define BITMAP_SCANLINE_PAD_PROTO 32#define LOG2_BITMAP_PAD_PROTO 5#define LOG2_BYTES_PER_SCANLINE_PAD_PROTO 2#endif /* alpha */#ifdef stellar#define IMAGE_BYTE_ORDER MSBFirst /* Values for the stellar only*/#define BITMAP_BIT_ORDER MSBFirst#define GLYPHPADBYTES 4#define GETLEFTBITS_ALIGNMENT 4#define IMAGE_BUFSIZE (64*1024)/* * Use SysV random number generator. */#define random rand#endif /* stellar */#ifdef luna#define IMAGE_BYTE_ORDER MSBFirst /* Values for the OMRON only*/#define BITMAP_BIT_ORDER MSBFirst#define GLYPHPADBYTES 4#define GETLEFTBITS_ALIGNMENT 1#ifndef mc68000#define FAST_CONSTANT_OFFSET_MODE#define AVOID_MEMORY_READ#define LARGE_INSTRUCTION_CACHE#define PLENTIFUL_REGISTERS#endif#endif /* luna */#if ((defined(__s390__) || defined(__s390x__)) && defined(linux))#define IMAGE_BYTE_ORDER MSBFirst#define BITMAP_BIT_ORDER MSBFirst#endif /* (__s390__ || __s390x__) && linux */ #if (defined(i386) && (defined(SVR4) || defined(SYSV) || (defined(sun) && defined(SVR4))) || defined(__bsdi__) || (defined(__NetBSD__) && defined(__i386__)) || (defined(__OpenBSD__) && defined(__i386__)) || defined(__FreeBSD__) || defined(MACH386) || (defined(linux) && !defined(__mc68000__)) || (defined(AMOEBA) && defined(i80386)) || defined(MINIX) || defined(__EMX__) || (defined(Lynx) && defined(__i386__)))#ifndef IMAGE_BYTE_ORDER#define IMAGE_BYTE_ORDER LSBFirst#endif#ifndef BITMAP_BIT_ORDER# if defined(XF86MONOVGA) || defined(XF86VGA16) || defined(XF86MONO)# define BITMAP_BIT_ORDER MSBFirst# else# define BITMAP_BIT_ORDER LSBFirst# endif#endif#ifndef BITMAP_SCANLINE_UNIT# if defined(XF86MONOVGA) || defined(XF86VGA16)# define BITMAP_SCANLINE_UNIT 8# endif#endif#ifndef GLYPHPADBYTES#define GLYPHPADBYTES 4#endif#define GETLEFTBITS_ALIGNMENT 1#define AVOID_MEMORY_READ#ifdef XSVGA#define AVOID_GLYPHBLT#define FAST_CONSTANT_OFFSET_MODE#define FAST_MEMCPY#define NO_ONE_RECT#endif/* Values for AMD Opteron and Intel 64 bit extensions. Copied from Alpha. */#ifdef __x86_64__# define BITMAP_SCANLINE_UNIT 64# define BITMAP_SCANLINE_PAD 64# define LOG2_BITMAP_PAD 6# define LOG2_BYTES_PER_SCANLINE_PAD 3/* Add for handling protocol XPutImage and XGetImage; see comment in * Alpha section. */#define INTERNAL_VS_EXTERNAL_PADDING#define BITMAP_SCANLINE_UNIT_PROTO 32#define BITMAP_SCANLINE_PAD_PROTO 32#define LOG2_BITMAP_PAD_PROTO 5#define LOG2_BYTES_PER_SCANLINE_PAD_PROTO 2#endif#endif /* SVR4 / BSD / i386 */#if defined (linux) && defined (__mc68000__)#define IMAGE_BYTE_ORDER MSBFirst#define BITMAP_BIT_ORDER MSBFirst#define FAST_UNALIGNED_READS#define GLYPHPADBYTES 4#define GETLEFTBITS_ALIGNMENT 1#endif /* linux/m68k */#if defined (linux) && defined(__powerpc__)#define IMAGE_BYTE_ORDER MSBFirst#define BITMAP_BIT_ORDER MSBFirst#define GLYPHPADBYTES 4#define GETLEFTBITS_ALIGNMENT 1#define LARGE_INSTRUCTION_CACHE #define FAST_CONSTANT_OFFSET_MODE#define PLENTIFUL_REGISTERS#define AVOID_MEMORY_READ#define FAST_MEMCPY#endif /* Linux/PPC */#if defined(__MACH__) && defined(__POWERPC__)#define IMAGE_BYTE_ORDER MSBFirst#define BITMAP_BIT_ORDER MSBFirst#define GLYPHPADBYTES 4#define GETLEFTBITS_ALIGNMENT 1#define LARGE_INSTRUCTION_CACHE #define FAST_CONSTANT_OFFSET_MODE#define PLENTIFUL_REGISTERS#define AVOID_MEMORY_READ#define FAST_MEMCPY#endif /* MACH/PPC */#ifdef sgi#define IMAGE_BYTE_ORDER MSBFirst#define BITMAP_BIT_ORDER MSBFirst#if (_MIPS_SZLONG == 64)# define GLYPHPADBYTES 4# define GETLEFTBITS_ALIGNMENT 1/* pad scanline to a longword */#define BITMAP_SCANLINE_UNIT 64#define BITMAP_SCANLINE_PAD 64#define LOG2_BITMAP_PAD 6#define LOG2_BYTES_PER_SCANLINE_PAD 3/* Add for handling protocol XPutImage and XGetImage; see comment below */#define INTERNAL_VS_EXTERNAL_PADDING#define BITMAP_SCANLINE_UNIT_PROTO 32#define BITMAP_SCANLINE_PAD_PROTO 32#define LOG2_BITMAP_PAD_PROTO 5#define LOG2_BYTES_PER_SCANLINE_PAD_PROTO 2#else#define GLYPHPADBYTES 2#define GETLEFTBITS_ALIGNMENT 4#endif#define AVOID_MEMORY_READ#define FAST_CONSTANT_OFFSET_MODE#define LARGE_INSTRUCTION_CACHE#define PLENTIFUL_REGISTERS#endif/* size of buffer to use with GetImage, measured in bytes. There's obviously * a trade-off between the amount of stack (or whatever ALLOCATE_LOCAL gives * you) used and the number of times the ddx routine has to be called. * * for a 1024 x 864 bit monochrome screen with a 32 bit word we get * 8192/4 words per buffer * (1024/32) = 32 words per scanline * 2048 words per buffer / 32 words per scanline = 64 scanlines per buffer * 864 scanlines / 64 scanlines = 14 buffers to draw a full screen */#ifndef IMAGE_BUFSIZE#define IMAGE_BUFSIZE 8192#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/* * 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 */} PaddingInfo;extern PaddingInfo PixmapWidthPaddingInfo[];#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)#ifdef INTERNAL_VS_EXTERNAL_PADDING/* This is defined if the server's internal padding is different from the padding * advertised in the protocol. The protocol does not allow for padding to * 64 bits, for example, so if the server wants to use 64 bit padding internally, * it has to advertise 32 bit padding and do padding fixups whenever images * cross the wire. (See ProcGetImage and ProcPutImage.) * * The macros and constants that end in Proto or PROTO refer to the advertised * padding, and the ones without Proto are for internal padding. */extern PaddingInfo PixmapWidthPaddingInfoProto[];#define PixmapWidthInPadUnitsProto(w, d) \ (PixmapWidthPaddingInfoProto[d].notPower2 ? \ (((int)(w) * PixmapWidthPaddingInfoProto[d].bytesPerPixel + \ PixmapWidthPaddingInfoProto[d].bytesPerPixel) >> \ PixmapWidthPaddingInfoProto[d].padBytesLog2) : \ ((int)((w) + PixmapWidthPaddingInfoProto[d].padRoundUp) >> \ PixmapWidthPaddingInfoProto[d].padPixelsLog2))#define PixmapBytePadProto(w, d) \ (PixmapWidthInPadUnitsProto(w, d) << \ PixmapWidthPaddingInfoProto[d].padBytesLog2)#define BitmapBytePadProto(w) \ ((((w) + BITMAP_SCANLINE_PAD_PROTO - 1) >> LOG2_BITMAP_PAD_PROTO) \ << LOG2_BYTES_PER_SCANLINE_PAD_PROTO)#else /* protocol and internal padding is the same */#define PixmapWidthInPadUnitsProto(w, d) PixmapWidthInPadUnits(w, d)#define PixmapBytePadProto(w, d) PixmapBytePad(w, d)#define BitmapBytePadProto(w) BitmapBytePad(w)#endif /* protocol vs. internal padding */#endif /* SERVERMD_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -