diff -u xc/config/cf/site.def.orig xc/config/cf/site.def --- xc/config/cf/site.def.orig Sat Aug 29 10:58:46 1998 +++ xc/config/cf/site.def Sun Aug 30 09:15:05 1998 @@ -132,3 +132,9 @@ #include #endif /* AfterVendorCF */ + +#define XF68FBDevServer YES +# define XF68FBDevCFB8 YES +# define XF68FBDevCFB16 YES +# define XF68FBDevCFB24 YES +# define XF68FBDevCFB32 YES diff -u xc/programs/Xserver/PEX5/dipex/swap/check.c.orig xc/programs/Xserver/PEX5/dipex/swap/check.c --- xc/programs/Xserver/PEX5/dipex/swap/check.c.orig Wed Apr 27 09:19:06 1994 +++ xc/programs/Xserver/PEX5/dipex/swap/check.c Sat Aug 29 16:44:24 1998 @@ -133,7 +133,7 @@ checkStdHeader *strmPtr; { /* HACK ALERT ON */ -extern INT16 lastfp[]; +extern INT16 lastfp[MAXCLIENTS]; /* HACK ALERT OFF */ pexEnumTypeIndex fp; @@ -193,7 +193,7 @@ pexContext *cntxtPtr; checkStdHeader *strmPtr; { -extern INT16 lastfp[]; +extern INT16 lastfp[MAXCLIENTS]; pexEnumTypeIndex fp; diff -u xc/programs/Xserver/cfb/cfbcmap.c.orig xc/programs/Xserver/cfb/cfbcmap.c --- xc/programs/Xserver/cfb/cfbcmap.c.orig Sat Aug 29 10:58:46 1998 +++ xc/programs/Xserver/cfb/cfbcmap.c Sat Aug 29 16:22:08 1998 @@ -413,6 +413,25 @@ return TRUE; } +static int cfbRedBits; +static int cfbRedOffset; +static int cfbGreenBits; +static int cfbGreenOffset; +static int cfbBlueBits; +static int cfbBlueOffset; + +Bool +cfbSetColorMasks(rb,ro,gb,go,bb,bo) + int rb,ro,gb,go,bb,bo; +{ + cfbRedBits = rb; + cfbRedOffset = ro; + cfbGreenBits = gb; + cfbGreenOffset = go; + cfbBlueBits = bb; + cfbBlueOffset = bo; +} + /* * Given a list of formats for a screen, create a list * of visuals and depths for the screen which coorespond to @@ -524,12 +543,21 @@ visual->ColormapEntries = _CE(d); /* fall through */ case StaticColor: - visual->redMask = _RM(d); - visual->greenMask = _GM(d); - visual->blueMask = _BM(d); - visual->offsetRed = _RS(d); - visual->offsetGreen = _GS(d); - visual->offsetBlue = _BS(d); + if (cfbRedBits && cfbGreenBits && cfbBlueBits) { + visual->redMask = ((1 << cfbRedBits) - 1) << cfbRedOffset; + visual->greenMask = ((1 << cfbGreenBits) - 1) << cfbGreenOffset; + visual->blueMask = ((1 << cfbBlueBits) - 1) << cfbBlueOffset; + visual->offsetRed = cfbRedOffset; + visual->offsetGreen = cfbGreenOffset; + visual->offsetBlue = cfbBlueOffset; + } else { + visual->redMask = _RM(d); + visual->greenMask = _GM(d); + visual->blueMask = _BM(d); + visual->offsetRed = _RS(d); + visual->offsetGreen = _GS(d); + visual->offsetBlue = _BS(d); + } } vid++; visual++; diff -u xc/programs/Xserver/hw/xfree68/fbdev/fbdev.c.orig xc/programs/Xserver/hw/xfree68/fbdev/fbdev.c --- xc/programs/Xserver/hw/xfree68/fbdev/fbdev.c.orig Sat Aug 29 10:58:46 1998 +++ xc/programs/Xserver/hw/xfree68/fbdev/fbdev.c Sun Aug 30 09:23:10 1998 @@ -100,6 +100,11 @@ extern void cfb16DoBitblt(); #endif /* CONFIG_CFB16 */ +#ifdef CONFIG_CFB24 +extern int cfb24ScreenPrivateIndex; +extern void cfb24DoBitblt(); +#endif /* CONFIG_CFB24 */ + #ifdef CONFIG_CFB32 extern int cfb32ScreenPrivateIndex; extern void cfb32DoBitblt(); @@ -400,6 +405,9 @@ #ifdef CONFIG_CFB16 ErrorF(", cfb16"); #endif +#ifdef CONFIG_CFB24 + ErrorF(", cfb24"); +#endif #ifdef CONFIG_CFB32 ErrorF(", cfb32"); #endif @@ -742,7 +750,6 @@ break; case FB_VISUAL_STATIC_PSEUDOCOLOR: - case FB_VISUAL_STATIC_DIRECTCOLOR: if (var->grayscale) visuals = StaticGrayMask; else @@ -805,7 +812,6 @@ break; case FB_VISUAL_STATIC_PSEUDOCOLOR: - case FB_VISUAL_STATIC_DIRECTCOLOR: if (var->grayscale) visuals = StaticGrayMask; else @@ -849,6 +855,14 @@ #ifdef CONFIG_CFB16 case 16: fbtype = "cfb16"; + cfbSetColorMasks(initscrvar.red.length, + initscrvar.red.offset, + initscrvar.green.length, + initscrvar.green.offset, + initscrvar.blue.length, + initscrvar.blue.offset); + if (!cfbSetVisualTypes (bpp, TrueColorMask, 6)) + FatalError("cfbSetVisualTypes: FALSE\n"); cfb16ScreenInit(pScreen, fbdevVirtBase, xsize, ysize, dxres, dyres, width); fbdevPrivateIndexP = &cfb16ScreenPrivateIndex; @@ -856,10 +870,37 @@ CreateDefColormap = cfbCreateDefColormap; break; #endif + +#ifdef CONFIG_CFB24 + case 24: + fbtype = "cfb24"; + cfbSetColorMasks(initscrvar.red.length, + initscrvar.red.offset, + initscrvar.green.length, + initscrvar.green.offset, + initscrvar.blue.length, + initscrvar.blue.offset); + if (!cfbSetVisualTypes (bpp, TrueColorMask, 8)) + FatalError("cfbSetVisualTypes: FALSE\n"); + cfb24ScreenInit(pScreen, fbdevVirtBase, xsize, ysize, + dxres, dyres, width); + fbdevPrivateIndexP = &cfb24ScreenPrivateIndex; + fbdevBitBlt = cfb24DoBitblt; + CreateDefColormap = cfbCreateDefColormap; + break; +#endif #ifdef CONFIG_CFB32 case 32: fbtype = "cfb32"; + cfbSetColorMasks(initscrvar.red.length, + initscrvar.red.offset, + initscrvar.green.length, + initscrvar.green.offset, + initscrvar.blue.length, + initscrvar.blue.offset); + if (!cfbSetVisualTypes (bpp, TrueColorMask, 8)) + FatalError("cfbSetVisualTypes: FALSE\n"); cfb32ScreenInit(pScreen, fbdevVirtBase, xsize, ysize, dxres, dyres, width); fbdevPrivateIndexP = &cfb32ScreenPrivateIndex; diff -u xc/programs/Xserver/hw/xfree68/fbdev/Imakefile.orig xc/programs/Xserver/hw/xfree68/fbdev/Imakefile --- xc/programs/Xserver/hw/xfree68/fbdev/Imakefile.orig Sun Aug 30 09:23:21 1998 +++ xc/programs/Xserver/hw/xfree68/fbdev/Imakefile Sun Aug 30 09:23:48 1998 @@ -32,6 +32,9 @@ #if XF68FBDevCFB16 FB_DEFINES:= $(FB_DEFINES) -DCONFIG_CFB16 #endif +#if XF68FBDevCFB24 +FB_DEFINES:= $(FB_DEFINES) -DCONFIG_CFB24 +#endif #if XF68FBDevCFB32 FB_DEFINES:= $(FB_DEFINES) -DCONFIG_CFB32 #endif diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c.orig xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c --- xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c.orig Sat Aug 29 10:58:46 1998 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c Sat Aug 29 10:59:18 1998 @@ -87,7 +87,7 @@ { struct termios nTty; - ioctl(xf86Info.consoleFd, KDSKBMODE, K_RAW); + ioctl(xf86Info.consoleFd, KDSKBMODE, K_MEDIUMRAW); nTty = kbdtty; nTty.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP); nTty.c_oflag = 0; diff -u xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c.orig xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c --- xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c.orig Sat Aug 29 10:58:46 1998 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c Sat Aug 29 10:59:18 1998 @@ -100,7 +100,7 @@ #ifdef USE_DEV_FB fb_dev_name=getenv("FRAMEBUFFER"); if (!fb_dev_name) - fb_dev_name="/dev/fb0current"; + fb_dev_name="/dev/fb0"; if ((fbfd = open(fb_dev_name, O_RDONLY)) < 0) FatalError("xf86OpenConsole: Cannot open %s (%s)\n", fb_dev_name, strerror(errno)); diff -u xc/programs/Xserver/Imakefile.orig xc/programs/Xserver/Imakefile --- xc/programs/Xserver/Imakefile.orig Sun Aug 30 09:17:51 1998 +++ xc/programs/Xserver/Imakefile Sun Aug 30 09:20:07 1998 @@ -1560,13 +1560,17 @@ CFB16DIR = cfb16 FBDEVFBLIBS:= $(FBDEVFBLIBS) $(CFB16) #endif +#if XF68FBDevCFB24 +CFB24DIR = cfb24 +FBDEVFBLIBS:= $(FBDEVFBLIBS) $(CFB24) +#endif #if XF68FBDevCFB32 CFB32DIR = cfb32 FBDEVFBLIBS:= $(FBDEVFBLIBS) $(CFB32) #endif XF68FBDevSUBDIRS = $(STDDIRS) $(MFBDIR) $(IPLAN2P2DIR) $(IPLAN2P4DIR) \ $(IPLAN2P8DIR) $(ILBMDIR) $(AFBDIR) $(CFB8DIR) \ - $(CFB16DIR) $(CFB32DIR) $(DDXDIR3) $(DEPDIRS) + $(CFB16DIR) $(CFB24DIR) $(CFB32DIR) $(DDXDIR3) $(DEPDIRS) XF68FBDevOBJS = $(XF68COMSRC)/XF68_FBDev.o XF68FBDevLIBS = $(XF68SRC)/fbdev/LibraryTargetName(fbdev) $(XF68LIBS) \ PreFbLibs $(FBDEVFBLIBS) PostFbLibs