--- /dev/null
+--- XFree86-4.2.1/xc/lib/GL/mesa/src/Imakefile.inc.orig Tue Apr 3 00:15:47 2001
++++ XFree86-4.2.1/xc/lib/GL/mesa/src/Imakefile.inc Wed Sep 18 16:11:39 2002
+@@ -197,7 +197,6 @@
+ $(MESABUILDDIR)context.o \
+ $(MESABUILDDIR)copypix.o \
+ $(MESABUILDDIR)cva.o \
+- $(MESABUILDDIR)debug_xform.o \
+ $(MESABUILDDIR)depth.o \
+ $(MESABUILDDIR)dlist.o \
+ $(DISPATCHOBJS) \
+@@ -282,7 +281,6 @@
+ $(MESABUILDDIR)unshared/context.o \
+ $(MESABUILDDIR)unshared/copypix.o \
+ $(MESABUILDDIR)unshared/cva.o \
+- $(MESABUILDDIR)unshared/debug_xform.o \
+ $(MESABUILDDIR)unshared/depth.o \
+ $(DISPATCHUOBJS) \
+ $(MESABUILDDIR)unshared/dlist.o \
--- /dev/null
+--- XFree86-4.2.1/xc/lib/font/Type1/t1funcs.c.orig Fri Dec 14 20:56:44 2001
++++ XFree86-4.2.1/xc/lib/font/Type1/t1funcs.c Wed Sep 18 16:04:20 2002
+@@ -523,7 +523,9 @@
+ if (hypot(vals->pixel_matrix[0], vals->pixel_matrix[1]) < 1.0 ||
+ hypot(vals->pixel_matrix[2], vals->pixel_matrix[3]) < 1.0)
+ return BadFontName;
+-
++ /* Reject large sizes too - may cause DoS in xfs or X-server due to abort() */
++ if (hypot(vals->pixel_matrix[0], vals->pixel_matrix[3]) > 5000.0)
++ return BadFontName;
+ /* set up default values */
+ FontDefaultFormat(&bit, &byte, &glyph, &scan);
+ /* get any changes made from above */
--- /dev/null
+--- XFree86-4.2.1/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfxdefs.h.orig Thu Apr 5 23:29:17 2001
++++ XFree86-4.2.1/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfxdefs.h Thu Sep 5 21:46:01 2002
+@@ -45,6 +45,7 @@
+ #define SST_DESKTOP_EN BIT(7)
+ #define SST_DESKTOP_PIXEL_FORMAT_SHIFT 18
+ #define SST_DESKTOP_CLUT_BYPASS BIT(10)
++#define SST_INTERLACE BIT(3)
+ #define SST_HALF_MODE BIT(4)
+ #define SST_CURSOR_EN BIT(27)
+ #define SST_FBI_BUSY BIT(7)
+--- XFree86-4.2.1/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c.orig Wed Sep 18 03:02:14 2002
++++ XFree86-4.2.1/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c Wed Sep 18 13:41:20 2002
+@@ -960,7 +960,18 @@
+ clockRanges->minClock= 12000; /* !!! What's the min clock? !!! */
+ clockRanges->maxClock=pTDFX->MaxClock;
+ clockRanges->clockIndex = -1;
+- clockRanges->interlaceAllowed = FALSE;
++ switch (pTDFX->ChipType) {
++ case PCI_CHIP_BANSHEE:
++ clockRanges->interlaceAllowed = FALSE;
++ break;
++ case PCI_CHIP_VOODOO3:
++ case PCI_CHIP_VOODOO5:
++ clockRanges->interlaceAllowed = TRUE;
++ break;
++ default:
++ clockRanges->interlaceAllowed = FALSE;
++ break;
++ }
+ clockRanges->doubleScanAllowed = TRUE;
+
+ /*
+@@ -990,7 +1001,7 @@
+ return FALSE;
+ }
+
+- xf86SetCrtcForModes(pScrn, INTERLACE_HALVE_V);
++ xf86SetCrtcForModes(pScrn, 0);
+
+ pScrn->currentMode = pScrn->modes;
+
+@@ -1666,6 +1677,10 @@
+ tdfxReg->screensize=mode->HDisplay|(mode->VDisplay<<12);
+ tdfxReg->vidcfg &= ~SST_HALF_MODE;
+ }
++ if (mode->Flags&V_INTERLACE) {
++ tdfxReg->vidcfg|=SST_INTERLACE;
++ } else
++ tdfxReg->vidcfg&=~SST_INTERLACE;
+
+ TDFXTRACEREG("cpp=%d Hdisplay=%d Vdisplay=%d stride=%d screensize=%x\n",
+ pTDFX->cpp, mode->HDisplay, mode->VDisplay, tdfxReg->stride,
+@@ -2394,12 +2409,29 @@
+
+ static int
+ TDFXValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags) {
++ ScrnInfoPtr pScrn;
++ TDFXPtr pTDFX;
++
+ TDFXTRACE("TDFXValidMode start\n");
+ if ((mode->HDisplay>2048) || (mode->VDisplay>1536))
+ return MODE_BAD;
+- /* Banshee doesn't support interlace. Does V3? */
+- if (mode->Flags&V_INTERLACE)
+- return MODE_BAD;
++ /* Banshee doesn't support interlace, but Voodoo 3 and higher do. */
++ pScrn = xf86Screens[scrnIndex];
++ pTDFX = TDFXPTR(pScrn);
++ if (mode->Flags&V_INTERLACE) {
++ switch (pTDFX->ChipType) {
++ case PCI_CHIP_BANSHEE:
++ return MODE_BAD;
++ break;
++ case PCI_CHIP_VOODOO3:
++ case PCI_CHIP_VOODOO5:
++ return MODE_OK;
++ break;
++ default:
++ return MODE_BAD;
++ break;
++ }
++ }
+ /* In clock doubled mode widths must be divisible by 16 instead of 8 */
+ if ((mode->Clock>TDFX2XCUTOFF) && (mode->HDisplay%16))
+ return MODE_BAD;
Summary(uk): âÁÚÏצ ÛÒÉÆÔÉ, ÐÒÏÇÒÁÍÉ ÔÁ ÄÏËÕÍÅÎÔÁÃ¦Ñ ÄÌÑ ÒÏÂÏÞϧ ÓÔÁÎæ§ Ð¦Ä X
Name: XFree86
Version: 4.2.1
-Release: 2
+Release: 2.1
License: MIT
Group: X11/XFree86
Source0: ftp://ftp.xfree86.org/pub/XFree86/4.2.0/source/X420src-1.tgz
Patch45: %{name}-i740-driver-update-cvs-20020617.patch
Patch46: %{name}-neomagic-Xv-support.patch
Patch47: %{name}-tdfx-disable-dri-on-16Mb-cards-in-hires.patch
-Patch48: %{name}-tdfx-enable-interlaced-modes.patch
-Patch49: %{name}-tdfx-fix-compiler-warnings.patch
-Patch50: %{name}-tdfx-fix-vtswitch-font-corruption.patch
-Patch51: %{name}-tdfx-should-be-2048-not-2046.patch
+Patch48: %{name}-tdfx-should-be-2048-not-2046.patch
+Patch49: %{name}-tdfx-interlace.patch
+Patch50: %{name}-tdfx-fix-compiler-warnings.patch
+Patch51: %{name}-tdfx-fix-vtswitch-font-corruption.patch
Patch52: %{name}-sis-option-swcursor.patch
Patch53: %{name}-sis-unresolved-symbols.patch
Patch54: %{name}-sis-maxxfbmem-fixup.patch
Patch55: %{name}-Radeon9000.patch
-
+Patch56: %{name}-Xfont-Type1-large-DoS.patch
+# "strip -g libGLcore.a" left empty object debug_xform.o, which caused GLcore
+# loading failure with "debug_xform.o: no symbols"
+Patch57: %{name}-GLcore-strip-a-workaround.patch
BuildRequires: bison
BuildRequires: flex
BuildRequires: freetype-devel >= 2.0.0
# Glide3 (libglide3.so.3) can be provided by Glide_V3-DRI or Glide_V5-DRI
%define _noautoreqdep libGL.so.1 libGLU.so.1 libOSMesa.so.3.3 libglide3.so.3
+# gcc 3.2 is still broken
+%ifarch athlon
+%define optflags -O2 -march=athlon -mno-mmx -mno-3dnow
+%endif
+
%description
If you want to install the X Window System (TM) on your machine,
you'll need to install XFree86.
%patch45 -p1
%patch46 -p1
%patch47 -p0
-# Causes build error - FIXME:
-#%patch48 -p0
-#%patch49 -p0
-%patch50 -p0
+%patch48 -p0
+%patch49 -p1
+#%patch50 -p0
%patch51 -p0
#%patch52 -p1
#%patch53 -p1
%patch54 -p1
%patch55 -p0
+%patch56 -p1
+%{!?debug:%patch57 -p1}
rm -f xc/config/cf/host.def