summaryrefslogtreecommitdiff
path: root/xc/programs
diff options
context:
space:
mode:
authordawes <dawes>2000-11-30 18:49:38 +0000
committerdawes <dawes>2000-11-30 18:49:38 +0000
commit055ef92b0fcbf4afffd0a6b1e0593f3e9c44b623 (patch)
treec75c2f8883c8b6fff44f9c7b0aea55be7c4f3001 /xc/programs
parentd129f7fd02961869422c111dd8c3cf824bc54243 (diff)
XFree86 4.0.1f mergeX_4_0_1f-20001130-merge
Diffstat (limited to 'xc/programs')
-rw-r--r--xc/programs/Xserver/GL/dri/dri.c2
-rw-r--r--xc/programs/Xserver/hw/xfree86/common/xf86Config.c4
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/README.DRIcomp8
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/DRI.sgml59
-rw-r--r--xc/programs/Xserver/hw/xfree86/doc/sgml/DRIcomp.sgml2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/r128.h2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/r128_cursor.c2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dga.c2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.h2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dripriv.h2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.c2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.h2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/r128_reg.h2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/r128_sarea.h2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/r128_video.c2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.h3
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_accel.c2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_cursor.c2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_dga.c2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c3
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.c2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.h2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h3
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_video.c3
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/glint/README.pm348
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h7
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c77
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/glint/pm3_accel.c207
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c4
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h4
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/mga/mga_dri.c2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c3
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/mga/mga_reg.h2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/mga/mga_video.c113
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/sis/sis_dri.c8
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c30
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/vesa/vesa.c5
-rw-r--r--xc/programs/Xserver/hw/xfree86/loader/xf86sym.c4
-rw-r--r--xc/programs/Xserver/hw/xfree86/os-support/hurd/Imakefile7
-rw-r--r--xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Imakefile2
-rw-r--r--xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c5
-rw-r--r--xc/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h7
-rw-r--r--xc/programs/Xserver/hw/xfree86/xf86cfg/loader.c5
-rw-r--r--xc/programs/Xserver/hw/xfree86/xf86cfg/vidmode.c3
47 files changed, 483 insertions, 183 deletions
diff --git a/xc/programs/Xserver/GL/dri/dri.c b/xc/programs/Xserver/GL/dri/dri.c
index bbc8622db..23f410b53 100644
--- a/xc/programs/Xserver/GL/dri/dri.c
+++ b/xc/programs/Xserver/GL/dri/dri.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/GL/dri/dri.c,v 1.21 2000/09/26 15:57:01 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/GL/dri/dri.c,v 1.22 2000/11/08 05:02:55 dawes Exp $ */
/**************************************************************************
Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
diff --git a/xc/programs/Xserver/hw/xfree86/common/xf86Config.c b/xc/programs/Xserver/hw/xfree86/common/xf86Config.c
index 49e5b540a..2556136e6 100644
--- a/xc/programs/Xserver/hw/xfree86/common/xf86Config.c
+++ b/xc/programs/Xserver/hw/xfree86/common/xf86Config.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Config.c,v 3.234 2000/11/06 19:24:06 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Config.c,v 3.235 2000/11/14 18:20:36 dawes Exp $ */
/*
@@ -41,7 +41,7 @@ extern DeviceAssocRec mouse_assoc;
#if (defined(i386) || defined(__i386__)) && \
(defined(__FreeBSD__) || defined(__NetBSD__) || defined(linux) || \
- (defined(SVR4) && !defined(sun)))
+ (defined(SVR4) && !defined(sun)) || defined(__GNU__))
#define SUPPORT_PC98
#endif
diff --git a/xc/programs/Xserver/hw/xfree86/doc/README.DRIcomp b/xc/programs/Xserver/hw/xfree86/doc/README.DRIcomp
index b577262a7..8a0a8ea33 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/README.DRIcomp
+++ b/xc/programs/Xserver/hw/xfree86/doc/README.DRIcomp
@@ -2,7 +2,7 @@
VA Linux Systems, Inc. Professional Services - Graphics.
- 8 August 2000
+ 29 October 2000
1. Preamble
@@ -403,7 +403,7 @@ Issue the following commands:
cd /usr/X11R6/bin
mv Xwrapper Xwrapper.old
rm X
- ln -s /usr/X11R6-4.0.1/lib/X11/XFree86 X
+ ln -s /usr/X11R6-DRI/bin/XFree86 X
This will cause the new X server to be used instead of the original one.
@@ -486,7 +486,7 @@ At this point your X server should be up and running with hardware-acceler-
ated direct rendering. Please read the DRI User Guide for information about
trouble shooting and how to use the DRI-enabled X server for 3D applications.
- Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DRIcomp.sgml,v 1.6 2000/09/24 13:51:26 alanh Exp $
+ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DRIcomp.sgml,v 1.7 2000/11/08 05:03:03 dawes Exp $
-$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.DRIcomp,v 3.3 2000/11/06 22:07:05 dawes Exp $
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/README.DRIcomp,v 3.4 2000/11/16 15:50:04 dawes Exp $
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/DRI.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/DRI.sgml
index f4dd63b09..4a533cc4a 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/DRI.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/DRI.sgml
@@ -15,7 +15,7 @@
<date>20 November 2000
<ident>
- $XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DRI.sgml,v 1.8 2000/09/24 13:51:26 alanh Exp $
+ $XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DRI.sgml,v 1.12 2000/11/16 18:36:25 dawes Exp $
</ident>
<toc>
@@ -74,16 +74,53 @@
Edits, corrections and updates to this document may be mailed
to brianp@valinux.com.
+ <sect>Supported Architectures & Hardware
+ <p>
+ <sect1>Architectures
+ <p>
+ The Architectures currently supported by the DRI have grown
+ from the initial Intel i386 based machines to now include,
+ the Alpha Processor and the Sun SPARC machines.
- <sect>Supported Hardware
-<p>
- 3D acceleration is currently only available for systems with
- Intel-compatible CPUs.
- Support for Alpha, and perhaps other CPUs, should be available in the
- future.
- <p>
- XFree86 4.0 (or later versions) includes 3D acceleration for the
- following graphics hardware:
+ The build environment for both of these new architectures
+ have a pre-build environment that will correctly build the
+ DRI drivers and Mesa meaning no extra configuration is necessary
+ to build the DRI for these architectures.
+
+ <sect2>Alpha Features
+ <p>
+ On newer Alpha processors, it should be noted that a
+ significant performance increase can be seen with the
+ addition of the -mcpu= command that should be passed to
+ GCC upon compilation. Dependent of the architecture of the
+ processor, for example -mcpu=ev6 will build specifically
+ for the EV6 based AXP's, giving both byte and word alignment
+ access to the DRI/Mesa drivers.
+
+ Use this as an example of compiling with this extra speed.
+ In your host.def file that should reside in the xc/config
+ directory, add the line.
+
+ #define DefaultCCOptions -ansi GccWarningOptions -pipe -mcpu=ev6
+
+ Additional speed improvements to 3D rendering can be achieved
+ by installing Compaq's Math Libraries (CPML) which can be
+ obtained from the following URL.
+
+ http://www.support.compaq.com/alpha-tools/software/index.html
+
+ Once installed, you can set this option in your host.def
+ to build against the CPML libraries.
+
+ #define UseCompaqMathLibrary YES
+
+ <sect1> Graphics Hardware
+ <p>
+ XFree86 4.0 (or later versions) includes 3D acceleration for the
+ following graphics hardware:
+
+ NOTE: This is a complete list of graphics hardware supported. It
+ may not be supported on your platform.
<itemize>
<item>3dfx:
@@ -766,7 +803,7 @@
The Voodoo5 supports 3D rendering in 16 and 32 bpp modes.
When running in 32bpp mode an 8-bit stencil buffer and 24-bit
Z (depth) buffer are offered.
- When running in 32bpp mode only a 16-bit Z (depth) buffer is
+ When running in 16bpp mode only a 16-bit Z (depth) buffer is
offered and stencil is implemented in software.
<p>
A software-based accumulation buffer is available in both
diff --git a/xc/programs/Xserver/hw/xfree86/doc/sgml/DRIcomp.sgml b/xc/programs/Xserver/hw/xfree86/doc/sgml/DRIcomp.sgml
index a6ce69277..d8974f398 100644
--- a/xc/programs/Xserver/hw/xfree86/doc/sgml/DRIcomp.sgml
+++ b/xc/programs/Xserver/hw/xfree86/doc/sgml/DRIcomp.sgml
@@ -15,7 +15,7 @@
<date>29 October 2000
<ident>
- $XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DRIcomp.sgml,v 1.6 2000/09/24 13:51:26 alanh Exp $
+ $XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DRIcomp.sgml,v 1.7 2000/11/08 05:03:03 dawes Exp $
</ident>
<toc>
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128.h b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128.h
index c024e35d3..680d076f0 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128.h
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128.h,v 1.1 2000/11/02 16:55:29 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128.h,v 1.2 2000/11/09 03:24:35 martin Exp $ */
/*
* Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
* Precision Insight, Inc., Cedar Park, Texas, and
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c
index 7ba150663..5b68c8cd3 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c,v 1.1 2000/11/02 16:55:30 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c,v 1.2 2000/11/09 03:24:35 martin Exp $ */
/*
* Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
* Precision Insight, Inc., Cedar Park, Texas, and
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_cursor.c b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_cursor.c
index 7bd580fb0..23ae3d7da 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_cursor.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_cursor.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_cursor.c,v 1.1 2000/11/02 16:55:31 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_cursor.c,v 1.2 2000/11/09 03:24:35 martin Exp $ */
/*
* Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
* Precision Insight, Inc., Cedar Park, Texas, and
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dga.c b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dga.c
index 9bfc7daeb..fd4b93fa0 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dga.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dga.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dga.c,v 1.1 2000/11/02 16:55:32 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dga.c,v 1.2 2000/11/09 03:24:35 martin Exp $ */
/*
* Authors:
* Ove Kĺven <ovek@transgaming.com>,
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c
index a1228da9f..50dd50c7d 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c,v 1.2 2000/11/03 01:15:49 martin Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c,v 1.3 2000/11/09 03:24:35 martin Exp $ */
/*
* Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
* Precision Insight, Inc., Cedar Park, Texas, and
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.h b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.h
index b74deaa43..db0100b67 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.h
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.h,v 1.1 2000/11/02 16:55:33 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.h,v 1.2 2000/11/09 03:24:35 martin Exp $ */
/*
* Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
* Precision Insight, Inc., Cedar Park, Texas, and
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dripriv.h b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dripriv.h
index 7c2ff59c7..e0fe31bbe 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dripriv.h
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dripriv.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dripriv.h,v 1.1 2000/11/02 16:55:34 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dripriv.h,v 1.2 2000/11/09 03:24:35 martin Exp $ */
/*
* Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
* Precision Insight, Inc., Cedar Park, Texas, and
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c
index 4833a0670..3db0ab519 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c,v 1.2 2000/11/08 23:13:10 alanh Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c,v 1.3 2000/11/09 03:24:35 martin Exp $ */
/*
* Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
* Precision Insight, Inc., Cedar Park, Texas, and
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.c b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.c
index b7d680df4..b96bb4702 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.c,v 1.1 2000/11/02 16:55:37 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.c,v 1.2 2000/11/09 03:24:36 martin Exp $ */
/*
* Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
* Precision Insight, Inc., Cedar Park, Texas, and
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.h b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.h
index b7fafe8d1..9d09c7ef3 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.h
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.h,v 1.1 2000/11/02 16:55:37 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_probe.h,v 1.2 2000/11/09 03:24:36 martin Exp $ */
/*
* Copyright 2000 ATI Technologies Inc., Markham, Ontario,
* VA Linux Systems Inc., Fremont, California.
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_reg.h b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_reg.h
index 916acefb8..f94b74dfe 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_reg.h
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_reg.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_reg.h,v 1.1 2000/11/02 16:55:37 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_reg.h,v 1.2 2000/11/09 03:24:36 martin Exp $ */
/*
* Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
* Precision Insight, Inc., Cedar Park, Texas, and
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_sarea.h b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_sarea.h
index 2683b75e0..e7bc1f539 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_sarea.h
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_sarea.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_sarea.h,v 1.1 2000/11/02 16:55:38 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_sarea.h,v 1.2 2000/11/09 03:24:36 martin Exp $ */
/*
* Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
* Precision Insight, Inc., Cedar Park, Texas, and
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_video.c b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_video.c
index cb1c68c05..d1446b767 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_video.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_video.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_video.c,v 1.1 2000/11/02 16:55:39 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_video.c,v 1.2 2000/11/09 03:24:36 martin Exp $ */
/*
* Copyright 2000 Stuart R. Anderson and Metro Link, Inc.
*
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.h b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.h
index b37f12d16..745795e8b 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.h
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.h,v 1.1 2000/11/02 16:55:40 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.h,v 1.3 2000/11/09 10:30:53 alanh Exp $ */
/*
* Copyright 2000 ATI Technologies Inc., Markham, Ontario,
* VA Linux Systems Inc., Fremont, California.
@@ -31,6 +31,7 @@
* Authors:
* Kevin E. Martin <martin@valinux.com>
* Rickard E. Faith <faith@valinux.com>
+ * Alan Hourihane <ahourihane@valinux.com>
*
*/
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_accel.c b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_accel.c
index d920ba56c..acc7cc235 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_accel.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_accel.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_accel.c,v 1.2 2000/11/03 09:52:54 alanh Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_accel.c,v 1.3 2000/11/09 03:24:36 martin Exp $ */
/*
* Copyright 2000 ATI Technologies Inc., Markham, Ontario,
* VA Linux Systems Inc., Fremont, California.
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_cursor.c b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_cursor.c
index ceb7b36da..f24327408 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_cursor.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_cursor.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_cursor.c,v 1.1 2000/11/02 16:55:41 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_cursor.c,v 1.2 2000/11/09 03:24:36 martin Exp $ */
/*
* Copyright 2000 ATI Technologies Inc., Markham, Ontario,
* VA Linux Systems Inc., Fremont, California.
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_dga.c b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_dga.c
index dc064947f..e41984df3 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_dga.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_dga.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_dga.c,v 1.2 2000/11/03 09:52:55 alanh Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_dga.c,v 1.3 2000/11/09 03:24:36 martin Exp $ */
/*
* Copyright 2000 ATI Technologies Inc., Markham, Ontario,
* VA Linux Systems Inc., Fremont, California.
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c
index c4e1a66db..d30bac412 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c,v 1.4 2000/11/08 23:21:27 alanh Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c,v 1.6 2000/11/09 10:30:53 alanh Exp $ */
/*
* Copyright 2000 ATI Technologies Inc., Markham, Ontario,
* VA Linux Systems Inc., Fremont, California.
@@ -31,6 +31,7 @@
* Authors:
* Kevin E. Martin <martin@valinux.com>
* Rickard E. Faith <faith@valinux.com>
+ * Alan Hourihane <ahourihane@valinux.com>
*
* Credits:
*
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.c b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.c
index d6e1205d2..9260cc39b 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.c,v 1.1 2000/11/02 16:55:44 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.c,v 1.2 2000/11/09 03:24:37 martin Exp $ */
/*
* Copyright 2000 ATI Technologies Inc., Markham, Ontario,
* VA Linux Systems Inc., Fremont, California.
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.h b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.h
index faf79cd67..5a66d002c 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.h
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.h,v 1.1 2000/11/02 16:55:45 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_probe.h,v 1.2 2000/11/09 03:24:37 martin Exp $ */
/*
* Copyright 2000 ATI Technologies Inc., Markham, Ontario,
* VA Linux Systems Inc., Fremont, California.
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h
index 170cb3332..4af590a3e 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h,v 1.1 2000/11/02 16:55:46 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h,v 1.3 2000/11/09 10:30:53 alanh Exp $ */
/*
* Copyright 2000 ATI Technologies Inc., Markham, Ontario,
* VA Linux Systems Inc., Fremont, California.
@@ -31,6 +31,7 @@
* Authors:
* Kevin E. Martin <martin@valinux.com>
* Rickard E. Faith <faith@valinux.com>
+ * Alan Hourihane <ahourihane@valinux.com>
*
* References:
*
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_video.c b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_video.c
index 9a3f4fe23..550324ed7 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_video.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_video.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_video.c,v 1.1 2000/11/02 16:55:47 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_video.c,v 1.3 2000/11/09 10:30:54 alanh Exp $ */
/*
* Copyright 2000 Stuart R. Anderson and Metro Link, Inc.
*
@@ -42,6 +42,7 @@
* should be brought forward.
*
* RADEON ALERT !
+ * Alan Hourihane <ahourihane@valinux.com>
* This is an extremely quick port to the Radeon, it hasn't been tested
* thoroughly, although it appears to work.
*/
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/glint/README.pm3 b/xc/programs/Xserver/hw/xfree86/drivers/glint/README.pm3
index 3d5835856..5519a8713 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/glint/README.pm3
+++ b/xc/programs/Xserver/hw/xfree86/drivers/glint/README.pm3
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/README.pm3,v 1.3 2000/10/17 09:07:03 alanh Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/README.pm3,v 1.4 2000/11/14 17:32:59 dawes Exp $ */
STATUS as of Mon, 16 Oct 2000 21:24:51 +0200
@@ -7,7 +7,8 @@ Working :
1280x1024 only as my monitor don't support higher modes.
* HW cursor.
* ShadowFb works.
- * Full 2D Accels. (Need testing and tuning on big endian systems.)
+ * Full 2D Accels.
+ - It should be endian clean, need testing on a big endian box though.
- Sync.
- Pixmap cache.
- Offscreen pixmaps.
@@ -17,13 +18,22 @@ Working :
- HorVert Solid Lines .
- 8x8 Mono Pattern Fills.
- Color Expansion Fills.
+ - Bitmap Writes using direct FIFO writes with or without FIFO Disconnect.
- Images Writes.
+ - Pixmap Writes using direct FIFO writes with or without FIFO Disconnect.
* Appian J2000 second head initialization.
* Dual head : The console fonts will get trashed, but dual head works.
+ * DRI :
+ - Gamma, if available, get's claimed with the UseGamma option.
Not Working :
- * 2D Accel hooks not implemented :
+ * 2D Accel :
- Solid & Dashed Lines are not possible on glint hardware.
- 8x8 Color Pattern Fill is almost never used.
+ - Clipping needs cleaning up.
+ * 2D Accel hooks for the Rendering extension ?
+ - Render extension initialization.
+ - CPUToScreenTexture.
+ - CPUToScreenAlphaTexture.
* Video Overlay.
* DRI.
@@ -33,12 +43,19 @@ Known Problem :
the vga graphics index & port (GraphicsIndexReg : 0x63ce, GraphicsPort :
0x3cf). I had to use IO acces for both these two, because if not, console
fonts would get trashed even in mono headed mode.
+ [FIX] Well, if you really need the console and are running linux, just use
+ vesafb, it will be a bit slower, but the fonts will no more become
+ corrupt. Maybe i will even try writting a specific fbdev for the pm3,
+ which will be much faster and have more functionality.
* R-B inversion. Sometimes, all of a sudden, it seems as the RGB order
gets changed. going to console and back solves this.
* [TRIGGERED IN ENLIGTHENMENT ONLY] When moving a window around a lot
quicly, the video outputs dies. I have to switch to a console and back
to have it restored. Is it possible that the accel engine gets
- overloaded or something such ?
+ overloaded or something such ? Don't think so, it happens even when
+ PCIRetry is used too ...
+ * Sometimes there are blue transparent garbage in the form of small
+ horizontal bands, few pixels high, and more pixels width, maybe 64pixels ?
Video Overlay [NOTHING DONE YET] :
@@ -55,3 +72,26 @@ DRI/3D Accels [NOTHING DONE YET] :
pm3 drm kernel driver as well as a pm3 OpenGL driver. Could be useful for
boards without gamma chips though.
+ * Claiming the Gamma (in the one head only approach) :
+ - The first possibility is the use of the UseGamma Option in the driver
+ section. The UseGamma option then tries to claim a gamma chip, if
+ available, on the same device. This enable the use of the gamma on
+ either head, in a two head setup.
+ - The second possibility is the automatic claiming of a gamma chip if
+ available. This works ok in single headed mode, but in dual head setup,
+ only the first head will be accelerated.
+ * Using the Gamma :
+ - A first try of using the Gamma (for 2D only) gave me a system freeze.
+ This is probably due to bad initialization since i only set the IOBase
+ to the Gamma registers, and did nothing more to initialize the Gamma.
+ I need more info on initialization of the Gamma chip, especially on how
+ to tell it which Permedia3 to use.
+ - A Second try, after initializing MultiGLINTAperture and MultiGLINT1 did
+ end in the same way.
+ - Once that is done, i need to write a pm3_dri.c file, inspired on the
+ glint_dri.c file, which does the dri setup, and the 2d/3d state saving.
+ * Changes to the 2D driver when using the Gamma :
+ - Well, there could be some changes, but in particular, the Gamma has only
+ a 32 entries deep Input FIFO, and not a 120 entries deep one like
+ permedia3.
+
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h b/xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h
index 41adfd348..d7467a00d 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h
+++ b/xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h,v 1.36 2000/10/17 09:07:04 alanh Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h,v 1.37 2000/11/14 17:32:59 dawes Exp $ */
/*
* Copyright 1997,1998 by Alan Hourihane <alanh@fairlite.demon.co.uk>
*
@@ -146,6 +146,11 @@ typedef struct {
int PM3_Render2D;
int PM3_AreaStippleMode;
int PM3_VideoControl;
+ Bool PM3_UseGamma;
+ pciVideoPtr PM3_GammaPciInfo;
+ PCITAG PM3_GammaPciTag;
+ CARD32 PM3_GammaIOAddress;
+ unsigned char * PM3_GammaIOBase;
#ifdef XF86DRI
Bool directRenderingEnabled;
DRIInfoPtr pDRIInfo;
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c b/xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c
index 8744c7c91..827aaad3d 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c
@@ -28,7 +28,7 @@
* this work is sponsored by S.u.S.E. GmbH, Fuerth, Elsa GmbH, Aachen,
* Siemens Nixdorf Informationssysteme and Appian Graphics.
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c,v 1.98 2000/10/17 09:07:04 alanh Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c,v 1.99 2000/11/14 17:32:59 dawes Exp $ */
#include "fb.h"
#include "cfb8_32.h"
@@ -179,10 +179,12 @@ typedef enum {
OPTION_OVERLAY,
OPTION_SHADOW_FB,
OPTION_FBDEV,
- OPTION_NOWRITEBITMAP
+ OPTION_NOWRITEBITMAP,
+ OPTION_PM3_USE_GAMMA
} GLINTOpts;
static OptionInfoRec GLINTOptions[] = {
+ { OPTION_PM3_USE_GAMMA, "UseGamma", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_SW_CURSOR, "SWcursor", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_HW_CURSOR, "HWcursor", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_PCI_RETRY, "PciRetry", OPTV_BOOLEAN, {0}, FALSE },
@@ -1205,6 +1207,57 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
xf86DrvMsg(pScrn->scrnIndex, from, "Chipset: \"%s\"\n", pScrn->chipset);
+ /* SVEN : Claim a Gamma chip if available. */
+ if (pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_PERMEDIA3) {
+ int eIndex = -1;
+ from = X_DEFAULT;
+ pGlint->PM3_UseGamma = FALSE;
+ if (xf86ReturnOptValBool(GLINTOptions, OPTION_PM3_USE_GAMMA, FALSE)) {
+ from = X_CONFIG;
+ pGlint->PM3_UseGamma = TRUE;
+ }
+ xf86DrvMsg(pScrn->scrnIndex, from, "%s to use Gamma with Permedia 3.\n",
+ (pGlint->PM3_UseGamma ? "Trying" : "Not trying"));
+ if (pGlint->PM3_UseGamma) {
+ pciVideoPtr *checkusedPci;
+ checkusedPci = xf86GetPciVideoInfo();
+ while (*checkusedPci != NULL) {
+ /* Is there a free gamma on the same device ? */
+ if (((*checkusedPci)->chipType == PCI_CHIP_GAMMA) &&
+ (((*checkusedPci)->bus == pGlint->PciInfo->bus)) &&
+ (((*checkusedPci)->device == pGlint->PciInfo->device)))
+ if ((eIndex = xf86ClaimPciSlot((*checkusedPci)->bus,
+ (*checkusedPci)->device,
+ (*checkusedPci)->func,
+ pScrn->drv, -1,
+ NULL, FALSE)) != -1) break;
+ }
+ checkusedPci++;
+ }
+ if (eIndex == -1) {
+ xf86DrvMsg(pScrn->scrnIndex, X_PROBED,
+ "No free Gamma chip was found.\n");
+ pGlint->PM3_UseGamma = FALSE;
+ } else {
+ unsigned int r;
+ /* Add the Gamma to the screen info structure. */
+ xf86AddEntityToScreen(pScrn,eIndex);
+ pGlint->PM3_GammaPciInfo =
+ xf86GetPciInfoForEntity(eIndex);
+ pGlint->PM3_GammaPciTag = pciTag(
+ pGlint->PM3_GammaPciInfo->bus,
+ pGlint->PM3_GammaPciInfo->device,
+ pGlint->PM3_GammaPciInfo->func);
+ xf86DrvMsg(pScrn->scrnIndex, X_PROBED,
+ "Gamma Claimed at BusID PCI:%d:%d:%d.\n",
+ pGlint->PM3_GammaPciInfo->bus,
+ pGlint->PM3_GammaPciInfo->device,
+ pGlint->PM3_GammaPciInfo->func);
+ /* Let's dump the Gamma registers, at least some of them ... */
+ pGlint->PM3_GammaIOAddress =
+ pGlint->PM3_GammaPciInfo->memBase[0] & 0xFFFFC000;
+ }
+ }
if ((pGlint->Chipset == PCI_VENDOR_TI_CHIP_PERMEDIA2) ||
(pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_PERMEDIA3) ||
(pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_PERMEDIA2V) ||
@@ -1261,6 +1314,11 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
*/
pGlint->IOAddress = pGlint->pEnt->device->IOBase;
from = X_CONFIG;
+#if 0 /* This freezes the box, why ? */
+ } else if ((pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_PERMEDIA3) &&
+ pGlint->PM3_UseGamma) {
+ pGlint->IOAddress = pGlint->PM3_GammaPciInfo->memBase[0] & 0xFFFFC000;
+#endif
} else {
pGlint->IOAddress = pGlint->PciInfo->memBase[0] & 0xFFFFC000;
}
@@ -2036,6 +2094,7 @@ GLINTUnmapMem(ScrnInfoPtr pScrn)
xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pGlint->FbBase, pGlint->FbMapSize);
pGlint->FbBase = NULL;
+ TRACE_EXIT("GLINTUnmapMem");
return TRUE;
}
@@ -2308,7 +2367,6 @@ GLINTScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/* Timing problem with PM3 & PM2V chips dont like being blasted */
/* This solves the dual head problem but trahses the console font. */
-
if (pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_PERMEDIA3) {
/* Graphics Index VGA register don't work in mmio mode
* for the Permedia3 chip, it thrashes the console font.
@@ -2743,9 +2801,6 @@ GLINTEnterVT(int scrnIndex, int flags)
Permedia2VideoEnterVT(pScrn);
}
- if (pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_PERMEDIA3)
- pGlint->PM3_VideoControl = GLINT_READ_REG(PMVideoControl);
-
if (!pGlint->NoAccel) {
switch (pGlint->Chipset) {
case PCI_VENDOR_TI_CHIP_PERMEDIA2:
@@ -2797,12 +2852,6 @@ GLINTLeaveVT(int scrnIndex, int flags)
GLINTRestore(pScrn);
if (pGlint->VGAcore)
vgaHWLock(VGAHWPTR(pScrn));
-
- if (pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_PERMEDIA3)
- GLINT_SLOW_WRITE_REG(0, PMVideoControl);
- /* Don't know why the follwong is wrong, should be ok ?
- GLINT_SLOW_WRITE_REG(pGlint->PM3_VideoControl, PMVideoControl);
- */
if (xf86IsPc98())
outb(0xfac, 0x00);
@@ -2839,9 +2888,9 @@ GLINTCloseScreen(int scrnIndex, ScreenPtr pScreen)
if (pScrn->vtSema) {
if(pGlint->CursorInfoRec)
- pGlint->CursorInfoRec->HideCursor(pScrn);
+ pGlint->CursorInfoRec->HideCursor(pScrn);
if (pGlint->FBDev)
- fbdevHWRestore(pScrn);
+ fbdevHWRestore(pScrn);
else {
GLINTRestore(pScrn);
if (pGlint->VGAcore)
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/glint/pm3_accel.c b/xc/programs/Xserver/hw/xfree86/drivers/glint/pm3_accel.c
index db94756b2..9d765803a 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/glint/pm3_accel.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/glint/pm3_accel.c
@@ -26,7 +26,7 @@
*
* Permedia 3 accelerated options.
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/pm3_accel.c,v 1.5 2000/10/26 17:57:56 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/pm3_accel.c,v 1.6 2000/11/14 17:32:59 dawes Exp $ */
#include "Xarch.h"
#include "xf86.h"
@@ -47,6 +47,7 @@
#include "xaalocal.h" /* For replacements */
#define DEBUG 0
+#define USE_DIRECT_FIFO_WRITES 1
#if DEBUG
# define TRACE_ENTER(str) ErrorF("pm3_accel: " str " %d\n",pScrn->scrnIndex)
@@ -89,22 +90,21 @@ static void Permedia3SetupForCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
int fg, int bg, int rop,unsigned int planemask);
static void Permedia3SubsequentCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
int x, int y, int w, int h, int skipleft);
+/* Direct Fifo Bitmap Writes */
+static void Permedia3WriteBitmap(ScrnInfoPtr pScrn, int x, int y, int w, int h,
+ unsigned char *src, int srcwidth, int skipleft,
+ int fg, int bg, int rop,unsigned int planemask);
/* Images Writes */
static void Permedia3SetupForImageWrite(ScrnInfoPtr pScrn, int rop,
unsigned int planemask, int trans_color,
int bpp, int depth);
static void Permedia3SubsequentImageWriteRect(ScrnInfoPtr pScrn,
int x, int y, int w, int h, int skipleft);
-
-#define MAX_FIFO_ENTRIES 256
-
-/* Mirror stipple pattern horizontally */
-#if X_BYTE_ORDER == X_BIG_ENDIAN
-# define STIPPLE_SWAP 1<<18
-#else
-# define STIPPLE_SWAP 0
-#endif
-
+/* Direct Fifo Pixmap Writes */
+static void Permedia3WritePixmap(ScrnInfoPtr pScrn, int x, int y, int w, int h,
+ unsigned char *src, int srcwidth, int rop,
+ unsigned int planemask, int transparency_color,
+ int bpp, int depth);
void
Permedia3InitializeEngine(ScrnInfoPtr pScrn)
@@ -240,28 +240,26 @@ Permedia3InitializeEngine(ScrnInfoPtr pScrn)
PM3FBSourceReadMode_ReadEnable,
PM3FBSourceReadMode);
TRACE("Permedia3InitializeEngine : SourceRead");
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- pGlint->RasterizerSwap = 1;
-#else
- pGlint->RasterizerSwap = 0;
-#endif
switch (pScrn->bitsPerPixel) {
case 8:
GLINT_SLOW_WRITE_REG(0x2, PixelSize);
#if X_BYTE_ORDER == X_BIG_ENDIAN
- pGlint->RasterizerSwap |= 3<<15; /* Swap host data */
+ pGlint->RasterizerSwap = 3<<15; /* Swap host data */
#endif
break;
case 16:
GLINT_SLOW_WRITE_REG(0x1, PixelSize);
#if X_BYTE_ORDER == X_BIG_ENDIAN
- pGlint->RasterizerSwap |= 2<<15; /* Swap host data */
+ pGlint->RasterizerSwap = 2<<15; /* Swap host data */
#endif
break;
case 32:
GLINT_SLOW_WRITE_REG(0x0, PixelSize);
break;
}
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+ GLINT_SLOW_WRITE_REG(1 | pGlint->RasterizerSwap, RasterizerMode);
+#endif
TRACE("Permedia3InitializeEngine : PixelSize");
Permedia3Sync(pScrn);
@@ -409,9 +407,17 @@ Permedia3AccelInit(ScreenPtr pScreen)
infoPtr->SubsequentMono8x8PatternFillRect =
Permedia3SubsequentMono8x8PatternFillRect;
+#if USE_DIRECT_FIFO_WRITES
+ /* Direct Fifo Bitmap Writes */
+ infoPtr->WriteBitmapFlags = 0;
+ infoPtr->WriteBitmap = Permedia3WriteBitmap;
+#endif
+
/* Color Expand Fills */
infoPtr->CPUToScreenColorExpandFillFlags =
+ /*
SYNC_AFTER_COLOR_EXPAND |
+ */
LEFT_EDGE_CLIPPING |
BIT_ORDER_IN_BYTE_LSBFIRST |
CPU_TRANSFER_BASE_FIXED |
@@ -423,21 +429,31 @@ Permedia3AccelInit(ScreenPtr pScreen)
infoPtr->SubsequentCPUToScreenColorExpandFill =
Permedia3SubsequentCPUToScreenColorExpandFill;
+#if USE_DIRECT_FIFO_WRITES
+ /* Direct Fifo Images Writes */
+ infoPtr->WritePixmapFlags = 0;
+ infoPtr->WritePixmap = Permedia3WritePixmap;
+#else
/* Images Writes */
infoPtr->ImageWriteFlags =
NO_GXCOPY |
+ /*
SYNC_AFTER_IMAGE_WRITE |
+ */
LEFT_EDGE_CLIPPING |
+ LEFT_EDGE_CLIPPING_NEGATIVE_X |
BIT_ORDER_IN_BYTE_LSBFIRST |
CPU_TRANSFER_BASE_FIXED |
CPU_TRANSFER_PAD_DWORD;
infoPtr->ImageWriteBase = pGlint->IOBase + PM3FBSourceData;
- infoPtr->ImageWriteRange = 8;
+ infoPtr->ImageWriteRange = 4;
infoPtr->SetupForImageWrite =
Permedia3SetupForImageWrite;
infoPtr->SubsequentImageWriteRect =
Permedia3SubsequentImageWriteRect;
-
+#endif
+
+ /* Available Framebuffer Area for XAA. */
AvailFBArea.x1 = 0;
AvailFBArea.y1 = 0;
AvailFBArea.x2 = pScrn->displayWidth;
@@ -634,6 +650,10 @@ Permedia3SetupForMono8x8PatternFill(ScrnInfoPtr pScrn,
pGlint->PM3_Config2D |= PM3Config2D_UserScissorEnable;
*/
pGlint->PM3_AreaStippleMode = 1;
+/* Mirror stipple pattern horizontally */
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+ pGlint->PM3_AreaStippleMode |= (1<<18);
+#endif
pGlint->PM3_AreaStippleMode |= (2<<1);
pGlint->PM3_AreaStippleMode |= (2<<4);
if (bg != -1) {
@@ -729,6 +749,73 @@ static void Permedia3SubsequentCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
TRACE_EXIT("Permedia3SubsequentCPUToScreenColorExpandFill");
}
+/* Direct Fifo BItmap Writes */
+
+/* Be carefull, if we use the gamma, the fifo is only 32 entries deep. */
+#define BitmapWriteRange 120
+#define BitmapWriteBase_Fixed ((CARD32 *)(pGlint->IOBase + BitMaskPattern))
+#define BitmapWriteBase ((CARD32 *)(pGlint->IOBase + OutputFIFO + 4))
+
+static void
+Permedia3WriteBitmap(ScrnInfoPtr pScrn,
+ int x, int y, int w, int h,
+ unsigned char *src,
+ int srcwidth, int skipleft,
+ int fg, int bg, int rop,
+ unsigned int planemask
+)
+{
+ int dwords;
+ GLINTPtr pGlint = GLINTPTR(pScrn);
+ TRACE_ENTER("Permedia3WriteBitmap");
+
+ w += skipleft;
+ x -= skipleft;
+ dwords = (w + 31) >>5;
+
+ /* width of the stuff to copy in 32 bit words */
+ Permedia3SetupForCPUToScreenColorExpandFill(pScrn, fg, bg, rop, planemask);
+ Permedia3SubsequentCPUToScreenColorExpandFill(pScrn, x, y, w, h, skipleft);
+
+ if (dwords > BitmapWriteRange) {
+ while(h--) {
+ XAAMoveDWORDS_FixedBase(BitmapWriteBase_Fixed,
+ (CARD32*)src, dwords);
+ src += srcwidth;
+ }
+ } else {
+ /* the src is exatcly as wide as the target rectangle. We copy all
+ * of it, so no need to separate stuff by scanline */
+ if(srcwidth == (dwords << 5)) {
+ /* decrement contains the number of lines that can be
+ * put in the fifo */
+ int decrement = BitmapWriteRange/dwords;
+
+ while(h > decrement) {
+ GLINT_WAIT(dwords * decrement);
+ GLINT_WRITE_REG((((dwords * decrement)-1) << 16) | 0xd,
+ OutputFIFO);
+ XAAMoveDWORDS(BitmapWriteBase, (CARD32*)src, dwords * decrement);
+ src += (srcwidth * decrement);
+ h -= decrement;
+ }
+ if(h) {
+ GLINT_WAIT(dwords * h);
+ GLINT_WRITE_REG((((dwords * h)-1) << 16) | 0xd, OutputFIFO);
+ XAAMoveDWORDS(BitmapWriteBase, (CARD32*)src, dwords * h);
+ }
+ } else {
+ while(h--) {
+ GLINT_WAIT(dwords);
+ GLINT_WRITE_REG(((dwords-1) << 16) | 0xd, OutputFIFO);
+ XAAMoveDWORDS(BitmapWriteBase, (CARD32*)src, dwords);
+ src += srcwidth;
+ }
+ }
+ }
+ TRACE_EXIT("Permedia3WriteBitmap");
+}
+
/* Images Writes */
static void Permedia3SetupForImageWrite(ScrnInfoPtr pScrn, int rop,
unsigned int planemask, int trans_color, int bpp, int depth)
@@ -770,3 +857,83 @@ static void Permedia3SubsequentImageWriteRect(ScrnInfoPtr pScrn,
TRACE_EXIT("Permedia3SubsequentImageWrite");
}
+/* Direct Fifo Images Writes */
+
+/* Be carefull, if we use the gamma, the fifo is only 32 entries deep. */
+#define ImageWriteRange 120
+#define ImageWriteBase_Fixed ((CARD32 *)(pGlint->IOBase + PM3FBSourceData))
+#define ImageWriteBase ((CARD32 *)(pGlint->IOBase + OutputFIFO + 4))
+static void
+Permedia3WritePixmap(
+ ScrnInfoPtr pScrn,
+ int x, int y, int w, int h,
+ unsigned char *src,
+ int srcwidth,
+ int rop,
+ unsigned int planemask,
+ int trans,
+ int bpp, int depth
+)
+{
+ int dwords;
+ int skipleft = (long)src & 0x03L;
+ int Bpp = bpp >> 3;
+ GLINTPtr pGlint = GLINTPTR(pScrn);
+ TRACE_ENTER("Permedia3WritePixmap");
+
+ if (skipleft) {
+ /* Skipleft is either
+ * - 0, 1, 2 or 3 in 8 bpp
+ * - 0 or 1 in 16 bpp
+ * - 0 in 32 bpp
+ */
+ skipleft /= Bpp;
+
+ x -= skipleft;
+ w += skipleft;
+
+ src = (unsigned char*)((long)src & ~0x03L);
+ }
+ Permedia3SetupForImageWrite(pScrn, rop, planemask, trans, bpp, depth);
+ Permedia3SubsequentImageWriteRect(pScrn, x, y, w, h, skipleft);
+
+ /* width of the stuff to copy in 32 bit words */
+ dwords = ((w * Bpp) + 3) >> 2;
+
+ if (dwords > ImageWriteRange) {
+ while(h--) {
+ XAAMoveDWORDS_FixedBase(ImageWriteBase_Fixed, (CARD32*)src, dwords);
+ src += srcwidth;
+ }
+ } else {
+ /* the src is exatcly as wide as the target rectangle. We copy all
+ * of it, so no need to separate stuff by scanline */
+ if(srcwidth == (dwords << 2)) {
+ /* decrement contains the number of lines that can be
+ * put in the fifo */
+ int decrement = ImageWriteRange/dwords;
+
+ while(h > decrement) {
+ GLINT_WAIT(dwords * decrement);
+ GLINT_WRITE_REG((((dwords * decrement)-1) << 16) | 0x155,
+ OutputFIFO);
+ XAAMoveDWORDS(ImageWriteBase, (CARD32*)src, dwords * decrement);
+ src += (srcwidth * decrement);
+ h -= decrement;
+ }
+ if(h) {
+ GLINT_WAIT(dwords * h);
+ GLINT_WRITE_REG((((dwords * h)-1) << 16) | 0x155, OutputFIFO);
+ XAAMoveDWORDS(ImageWriteBase, (CARD32*)src, dwords * h);
+ }
+ } else {
+ while(h--) {
+ GLINT_WAIT(dwords);
+ GLINT_WRITE_REG(((dwords-1) << 16) | 0x155, OutputFIFO);
+ XAAMoveDWORDS(ImageWriteBase, (CARD32*)src, dwords);
+ src += srcwidth;
+ }
+ }
+ }
+ TRACE_EXIT("Permedia3WritePixmap");
+}
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c b/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c
index 7997567c5..7f0d32958 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c
@@ -25,7 +25,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
**************************************************************************/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c,v 1.34 2000/09/26 15:57:11 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c,v 1.35 2000/11/13 23:06:08 dawes Exp $ */
/*
* Authors:
@@ -1951,7 +1951,7 @@ I810CloseScreen(int scrnIndex, ScreenPtr pScreen)
static void
I810FreeScreen(int scrnIndex, int flags) {
I810FreeRec(xf86Screens[scrnIndex]);
- if (vgaHWFreeHWRec)
+ if (xf86LoaderCheckSymbol("vgaHWFreeHWRec"))
vgaHWFreeHWRec(xf86Screens[scrnIndex]);
}
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h b/xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h
index 3826b94a8..429010ca6 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h
+++ b/xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h,v 1.65 2000/10/24 22:45:06 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h,v 1.67 2000/11/08 05:03:04 dawes Exp $ */
/*
* MGA Millennium (MGA2064W) functions
*
@@ -82,7 +82,7 @@ typedef struct {
typedef struct {
unsigned char brightness;
unsigned char contrast;
- FBAreaPtr area;
+ FBLinearPtr linear;
RegionRec clip;
CARD32 colorKey;
CARD32 videoStatus;
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_dri.c b/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_dri.c
index 9a41dc848..ce3d45611 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_dri.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_dri.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_dri.c,v 1.10 2000/11/02 19:10:51 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_dri.c,v 1.12 2000/11/13 23:31:39 dawes Exp $ */
#include "xf86.h"
#include "xf86_OSproc.h"
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c b/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c
index 1e2302ffa..c5897b7b5 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c
@@ -43,7 +43,7 @@
* Fixed 32bpp hires 8MB horizontal line glitch at middle right
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c,v 1.178 2000/11/03 18:46:10 eich Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c,v 1.180 2000/11/13 23:07:31 dawes Exp $ */
/*
* This is a first cut at a non-accelerated version to work with the
@@ -2230,7 +2230,6 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
return FALSE;
}
reqSym = "fbScreenInit";
- xf86LoaderReqSymbols("fbScreenInit", NULL);
#ifdef RENDER
xf86LoaderReqSymbols("fbPictureInit", NULL);
#endif
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_reg.h b/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_reg.h
index f6660771a..ba0d8fabc 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_reg.h
+++ b/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_reg.h
@@ -2,7 +2,7 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_reg.h,v 1.13 2000/11/01 21:55:09 mvojkovi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_reg.h,v 1.14 2000/11/08 05:03:04 dawes Exp $ */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_video.c b/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_video.c
index c6b5a59c4..3899ef258 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_video.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_video.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_video.c,v 1.19 2000/11/02 19:10:53 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_video.c,v 1.20 2000/11/08 00:51:10 mvojkovi Exp $ */
#include "xf86.h"
#include "xf86_OSproc.h"
@@ -451,9 +451,9 @@ MGAStopVideo(ScrnInfoPtr pScrn, pointer data, Bool exit)
if(exit) {
if(pPriv->videoStatus & CLIENT_VIDEO_ON)
OUTREG(MGAREG_BESCTL, 0);
- if(pPriv->area) {
- xf86FreeOffscreenArea(pPriv->area);
- pPriv->area = NULL;
+ if(pPriv->linear) {
+ xf86FreeOffscreenLinear(pPriv->linear);
+ pPriv->linear = NULL;
}
pPriv->videoStatus = 0;
} else {
@@ -613,45 +613,45 @@ MGACopyMungedData(
}
-static FBAreaPtr
+static FBLinearPtr
MGAAllocateMemory(
ScrnInfoPtr pScrn,
- FBAreaPtr area,
- int numlines
+ FBLinearPtr linear,
+ int size
){
ScreenPtr pScreen;
- FBAreaPtr new_area;
+ FBLinearPtr new_linear;
- if(area) {
- if((area->box.y2 - area->box.y1) >= numlines)
- return area;
+ if(linear) {
+ if(linear->size >= size)
+ return linear;
- if(xf86ResizeOffscreenArea(area, pScrn->displayWidth, numlines))
- return area;
+ if(xf86ResizeOffscreenLinear(linear, size))
+ return linear;
- xf86FreeOffscreenArea(area);
+ xf86FreeOffscreenLinear(linear);
}
pScreen = screenInfo.screens[pScrn->scrnIndex];
- new_area = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth,
- numlines, 0, NULL, NULL, NULL);
+ new_linear = xf86AllocateOffscreenLinear(pScreen, size, 16,
+ NULL, NULL, NULL);
- if(!new_area) {
- int max_w, max_h;
+ if(!new_linear) {
+ int max_size;
- xf86QueryLargestOffscreenArea(pScreen, &max_w, &max_h, 0,
- FAVOR_WIDTH_THEN_AREA, PRIORITY_EXTREME);
+ xf86QueryLargestOffscreenLinear(pScreen, &max_size, 16,
+ PRIORITY_EXTREME);
- if((max_w < pScrn->displayWidth) || (max_h < numlines))
+ if(max_size < size)
return NULL;
xf86PurgeUnlockedOffscreenAreas(pScreen);
- new_area = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth,
- numlines, 0, NULL, NULL, NULL);
+ new_linear = xf86AllocateOffscreenLinear(pScreen, size, 16,
+ NULL, NULL, NULL);
}
- return new_area;
+ return new_linear;
}
static void
@@ -820,9 +820,9 @@ MGAPutImage(
MGAPortPrivPtr pPriv = pMga->portPrivate;
INT32 x1, x2, y1, y2;
unsigned char *dst_start;
- int pitch, new_h, offset, offset2, offset3;
+ int pitch, new_size, offset, offset2, offset3;
int srcPitch, srcPitch2, dstPitch;
- int top, left, npixels, nlines;
+ int top, left, npixels, nlines, bpp;
BoxRec dstBox;
CARD32 tmp;
@@ -847,11 +847,12 @@ MGAPutImage(
dstBox.y2 -= pScrn->frameY0;
}
- pitch = pScrn->bitsPerPixel * pScrn->displayWidth >> 3;
+ bpp = pScrn->bitsPerPixel >> 3;
+ pitch = bpp * pScrn->displayWidth;
dstPitch = ((width << 1) + 15) & ~15;
- new_h = ((dstPitch * height) + pitch - 1) / pitch;
-
+ new_size = ((dstPitch * height) + bpp - 1) / bpp;
+
switch(id) {
case FOURCC_YV12:
case FOURCC_I420:
@@ -867,26 +868,25 @@ MGAPutImage(
break;
}
- if(!(pPriv->area = MGAAllocateMemory(pScrn, pPriv->area, new_h)))
+ if(!(pPriv->linear = MGAAllocateMemory(pScrn, pPriv->linear, new_size)))
return BadAlloc;
/* copy data */
- top = y1 >> 16;
- left = (x1 >> 16) & ~1;
- npixels = ((((x2 + 0xffff) >> 16) + 1) & ~1) - left;
- left <<= 1;
+ top = y1 >> 16;
+ left = (x1 >> 16) & ~1;
+ npixels = ((((x2 + 0xffff) >> 16) + 1) & ~1) - left;
+ left <<= 1;
- offset = pPriv->area->box.y1 * pitch;
- dst_start = pMga->FbStart + offset + left + (top * dstPitch);
+ offset = pPriv->linear->offset * bpp;
+ dst_start = pMga->FbStart + offset + left + (top * dstPitch);
- if(pMga->TexturedVideo && pMga->AccelInfoRec->NeedToSync &&
+ if(pMga->TexturedVideo && pMga->AccelInfoRec->NeedToSync &&
((long)data != pPriv->lastPort))
- {
+ {
MGAStormSync(pScrn);
- pMga->AccelInfoRec->NeedToSync = FALSE;
- }
+ }
- switch(id) {
+ switch(id) {
case FOURCC_YV12:
case FOURCC_I420:
top &= ~1;
@@ -1005,9 +1005,9 @@ MGAVideoTimerCallback(ScrnInfoPtr pScrn, Time time)
}
} else { /* FREE_TIMER */
if(pPriv->freeTime < time) {
- if(pPriv->area) {
- xf86FreeOffscreenArea(pPriv->area);
- pPriv->area = NULL;
+ if(pPriv->linear) {
+ xf86FreeOffscreenLinear(pPriv->linear);
+ pPriv->linear = NULL;
}
pPriv->videoStatus = 0;
pMga->VideoTimerCallback = NULL;
@@ -1021,7 +1021,7 @@ MGAVideoTimerCallback(ScrnInfoPtr pScrn, Time time)
/****************** Offscreen stuff ***************/
typedef struct {
- FBAreaPtr area;
+ FBLinearPtr linear;
Bool isOn;
} OffscreenPrivRec, * OffscreenPrivPtr;
@@ -1033,8 +1033,8 @@ MGAAllocateSurface(
unsigned short h,
XF86SurfacePtr surface
){
- FBAreaPtr area;
- int pitch, fbpitch, numlines;
+ FBLinearPtr linear;
+ int pitch, fbpitch, size, bpp;
OffscreenPrivPtr pPriv;
if((w > 1024) || (h > 1024))
@@ -1042,38 +1042,39 @@ MGAAllocateSurface(
w = (w + 1) & ~1;
pitch = ((w << 1) + 15) & ~15;
- fbpitch = pScrn->bitsPerPixel * pScrn->displayWidth >> 3;
- numlines = ((pitch * h) + fbpitch - 1) / fbpitch;
+ bpp = pScrn->bitsPerPixel >> 3;
+ fbpitch = bpp * pScrn->displayWidth;
+ size = ((pitch * h) + bpp - 1) / bpp;
- if(!(area = MGAAllocateMemory(pScrn, NULL, numlines)))
+ if(!(linear = MGAAllocateMemory(pScrn, NULL, size)))
return BadAlloc;
surface->width = w;
surface->height = h;
if(!(surface->pitches = xalloc(sizeof(int)))) {
- xf86FreeOffscreenArea(area);
+ xf86FreeOffscreenLinear(linear);
return BadAlloc;
}
if(!(surface->offsets = xalloc(sizeof(int)))) {
xfree(surface->pitches);
- xf86FreeOffscreenArea(area);
+ xf86FreeOffscreenLinear(linear);
return BadAlloc;
}
if(!(pPriv = xalloc(sizeof(OffscreenPrivRec)))) {
xfree(surface->pitches);
xfree(surface->offsets);
- xf86FreeOffscreenArea(area);
+ xf86FreeOffscreenLinear(linear);
return BadAlloc;
}
- pPriv->area = area;
+ pPriv->linear = linear;
pPriv->isOn = FALSE;
surface->pScrn = pScrn;
surface->id = id;
surface->pitches[0] = pitch;
- surface->offsets[0] = area->box.y1 * fbpitch;
+ surface->offsets[0] = linear->offset * bpp;
surface->devPrivate.ptr = (pointer)pPriv;
return Success;
@@ -1103,7 +1104,7 @@ MGAFreeSurface(
if(pPriv->isOn)
MGAStopSurface(surface);
- xf86FreeOffscreenArea(pPriv->area);
+ xf86FreeOffscreenLinear(pPriv->linear);
xfree(surface->pitches);
xfree(surface->offsets);
xfree(surface->devPrivate.ptr);
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/sis/sis_dri.c b/xc/programs/Xserver/hw/xfree86/drivers/sis/sis_dri.c
index 7d72a139d..1ef028274 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/sis/sis_dri.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/sis/sis_dri.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/sis/sis_dri.c,v 1.6 2000/10/10 16:38:19 alanh Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/sis/sis_dri.c,v 1.7 2000/11/09 11:32:21 alanh Exp $ */
/* modified from tdfx_dri.c, mga_dri.c */
@@ -9,11 +9,7 @@
#include "xf86PciInfo.h"
#include "xf86Pci.h"
-#define PSZ 8
-#include "cfb.h"
-#undef PSZ
-#include "cfb16.h"
-#include "cfb32.h"
+#include "fb.h"
#include "miline.h"
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c b/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c
index 48c16e61e..72a7bef23 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c
@@ -25,7 +25,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
**************************************************************************/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c,v 1.43 2000/09/24 13:51:31 alanh Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c,v 1.45 2000/11/14 13:12:21 alanh Exp $ */
/*
* Authors:
@@ -667,11 +667,6 @@ TDFXPreInit(ScrnInfoPtr pScrn, int flags)
if (pTDFX->pEnt->location.type != BUS_PCI) return FALSE;
- if (flags & PROBE_DETECT) {
- TDFXProbeDDC(pScrn, pTDFX->pEnt->index);
- return TRUE;
- }
-
/* The vgahw module should be loaded here when needed */
if (!xf86LoadSubModule(pScrn, "vgahw")) return FALSE;
@@ -701,8 +696,11 @@ TDFXPreInit(ScrnInfoPtr pScrn, int flags)
match=pTDFX->PciInfo=xf86GetPciInfoForEntity(pTDFX->pEnt->index);
TDFXFindChips(pScrn, match);
- if (xf86RegisterResources(pTDFX->pEnt->index, 0, ResNone))
+ if (xf86RegisterResources(pTDFX->pEnt->index, 0, ResExclusive)) {
+ TDFXFreeRec(pScrn);
return FALSE;
+ }
+
if (pTDFX->usePIO)
pScrn->racIoFlags = RAC_FB | RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT;
else
@@ -1764,16 +1762,19 @@ TDFXScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) {
miSetPixmapDepths ();
+ pTDFX->NoAccel=xf86ReturnOptValBool(TDFXOptions, OPTION_NOACCEL, FALSE);
#ifdef XF86DRI
/*
* Setup DRI after visuals have been established, but before fbScreenInit
* is called. fbScreenInit will eventually call into the drivers
* InitGLXVisuals call back.
*/
- pTDFX->directRenderingEnabled = TDFXDRIScreenInit(pScreen);
- /* Force the initialization of the context */
- if (pTDFX->directRenderingEnabled)
+ if (!pTDFX->NoAccel) {
+ pTDFX->directRenderingEnabled = TDFXDRIScreenInit(pScreen);
+ /* Force the initialization of the context */
+ if (pTDFX->directRenderingEnabled)
TDFXLostContext(pScreen);
+ }
#endif
switch (pScrn->bitsPerPixel) {
@@ -1823,7 +1824,6 @@ TDFXScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) {
}
REGION_UNINIT(pScreen, &MemRegion);
- pTDFX->NoAccel=xf86ReturnOptValBool(TDFXOptions, OPTION_NOACCEL, FALSE);
if (!pTDFX->NoAccel) {
if (!TDFXAccelInit(pScreen)) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
@@ -1863,17 +1863,19 @@ TDFXScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) {
#endif
#ifdef XF86DRI
+ if (!pTDFX->NoAccel) {
if (pTDFX->directRenderingEnabled) {
/* Now that mi, fb, drm and others have done their thing,
* complete the DRI setup.
*/
pTDFX->directRenderingEnabled = TDFXDRIFinishScreenInit(pScreen);
}
- if (pTDFX->directRenderingEnabled) {
+ }
+ if (pTDFX->directRenderingEnabled) {
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering enabled\n");
- } else {
+ } else {
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering disabled\n");
- }
+ }
#endif
#ifdef XvExtension
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/vesa/vesa.c b/xc/programs/Xserver/hw/xfree86/drivers/vesa/vesa.c
index 558652a18..78f21c575 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/vesa/vesa.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/vesa/vesa.c
@@ -26,7 +26,7 @@
*
* Authors: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vesa/vesa.c,v 1.4 2000/10/27 18:31:04 dawes Exp $
+ * $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vesa/vesa.c,v 1.6 2000/11/14 16:54:54 dawes Exp $
*/
#include "vesa.h"
@@ -1621,12 +1621,13 @@ VESASaveScreen(ScreenPtr pScreen, int mode)
{
ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
Bool on = xf86IsUnblank(mode);
- unsigned char scrn = ReadSeq(0x01);
if (on)
SetTimeSinceLastInputEvent();
if (pScrn->vtSema) {
+ unsigned char scrn = ReadSeq(0x01);
+
if (on)
scrn &= ~0x20;
else
diff --git a/xc/programs/Xserver/hw/xfree86/loader/xf86sym.c b/xc/programs/Xserver/hw/xfree86/loader/xf86sym.c
index 77523bee5..e235b5732 100644
--- a/xc/programs/Xserver/hw/xfree86/loader/xf86sym.c
+++ b/xc/programs/Xserver/hw/xfree86/loader/xf86sym.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/xf86sym.c,v 1.170 2000/11/06 19:24:08 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/xf86sym.c,v 1.171 2000/11/14 16:54:54 dawes Exp $ */
/*
*
@@ -915,7 +915,7 @@ LOOKUP xfree86LookupTab[] = {
SYMFUNC(xf86WriteMmioNB8)
SYMFUNC(memcpy)
#endif
-#if defined(sun) || defined(SVR4) && !defined(USL)
+#if defined(sun) && defined(SVR4)
SYMFUNC(inb)
SYMFUNC(inw)
SYMFUNC(inl)
diff --git a/xc/programs/Xserver/hw/xfree86/os-support/hurd/Imakefile b/xc/programs/Xserver/hw/xfree86/os-support/hurd/Imakefile
index 0740c0c31..6adb8a6e4 100644
--- a/xc/programs/Xserver/hw/xfree86/os-support/hurd/Imakefile
+++ b/xc/programs/Xserver/hw/xfree86/os-support/hurd/Imakefile
@@ -1,4 +1,4 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/hurd/Imakefile,v 1.12 2000/08/15 16:05:38 dawes Exp $
+XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/hurd/Imakefile,v 1.13 2000/11/14 18:20:37 dawes Exp $
#include <Server.tmpl>
@@ -8,11 +8,11 @@ MOUSESRC = hurd_mouse.c
MOUSEOBJ = hurd_mouse.o
SRCS = hurd_init.c hurd_video.c hurd_io.c libc_wrapper.c $(BIOS_MOD).c \
- VTsw_noop.c posix_tty.c std_kbdEv.c $(MOUSESRC) \
+ VTsw_noop.c posix_tty.c $(MOUSESRC) \
stdResource.c stdPci.c sigiostubs.c pm_noop.c kmod_noop.c agp_noop.c
OBJS = hurd_init.o hurd_video.o hurd_io.o libc_wrapper.o $(BIOS_MOD).o \
- VTsw_noop.o posix_tty.o std_kbdEv.o $(MOUSEOBJ) \
+ VTsw_noop.o posix_tty.o $(MOUSEOBJ) \
stdResource.o stdPci.o sigiostubs.o pm_noop.o kmod_noop.o agp_noop.o
INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
@@ -28,7 +28,6 @@ NormalLibraryObjectRule()
LinkSourceFile(VTsw_noop.c,../shared)
LinkSourceFile(posix_tty.c,../shared)
-LinkSourceFile(std_kbdEv.c,../shared)
LinkSourceFile(libc_wrapper.c,../shared)
LinkSourceFile(stdResource.c,../shared)
LinkSourceFile(stdPci.c,../shared)
diff --git a/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Imakefile b/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Imakefile
index 6457b2732..1b24a75a1 100644
--- a/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Imakefile
+++ b/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Imakefile
@@ -1,4 +1,4 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Imakefile,v 1.2 2000/02/23 04:47:24 martin Exp $
+XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Imakefile,v 1.3 2000/11/08 05:03:06 dawes Exp $
#include <Server.tmpl>
diff --git a/xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c b/xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c
index e603af4d7..7f8cbc1db 100644
--- a/xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c
+++ b/xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c
@@ -25,7 +25,7 @@
*
* Authors: Rickard E. (Rik) Faith <faith@valinux.com>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c,v 1.11 2000/06/17 00:03:43 martin Exp $
+ * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c,v 1.12 2000/11/14 21:59:24 dawes Exp $
*
*/
@@ -46,6 +46,7 @@
# include <errno.h>
# include <stdio.h>
# include <string.h>
+# define SYSCALL(call) while(((call) == -1) && (errno == EINTR))
#endif
/*
@@ -76,8 +77,6 @@ static int xf86SigIOMax;
static int xf86SigIOMaxFd;
static fd_set xf86SigIOMask;
-#define SYSCALL(call) while(((call) == -1) && (errno == EINTR))
-
/*
* SIGIO gives no way of discovering which fd signalled, select
* to discover
diff --git a/xc/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h b/xc/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h
index ad389070d..1096a242d 100644
--- a/xc/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h
+++ b/xc/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h
@@ -64,11 +64,15 @@
*
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h,v 3.46 2000/08/23 21:06:21 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h,v 3.47 2000/11/14 18:20:37 dawes Exp $ */
#ifndef _XF86_OSPROC_H
#define _XF86_OSPROC_H
+#ifdef XF86_OS_PRIVS
+#include "xf86Pci.h"
+#endif
+
/*
* The actual prototypes have been pulled into this seperate file so
* that they can can be used without pulling in all of the OS specific
@@ -257,6 +261,7 @@ resPtr xf86PciBusAccWindowsFromOS(void);
resPtr xf86IsaBusAccWindowsFromOS(void);
resPtr xf86AccResFromOS(resPtr ret);
#endif /* NEED_OS_RAC_PROTOS */
+
Bool xf86GetPciSizeFromOS(PCITAG tag, int index, int* bits);
#endif /* XF86_OS_PRIVS */
diff --git a/xc/programs/Xserver/hw/xfree86/xf86cfg/loader.c b/xc/programs/Xserver/hw/xfree86/xf86cfg/loader.c
index 6d836644c..4a562d422 100644
--- a/xc/programs/Xserver/hw/xfree86/xf86cfg/loader.c
+++ b/xc/programs/Xserver/hw/xfree86/xf86cfg/loader.c
@@ -26,7 +26,7 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/loader.c,v 1.1 2000/10/20 14:59:05 alanh Exp $
+ * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/loader.c,v 1.2 2000/11/08 17:58:43 alanh Exp $
*/
#define LOADER_PRIVATE
#include "loader.h"
@@ -227,9 +227,6 @@ LOOKUP xfree86LookupTab[] = {
SYMFUNC(xf86shmctl)
SYMFUNC(xf86setjmp)
SYMFUNC(xf86longjmp)
-#ifdef __alpha__
- SYMFUNC(_bus_base)
-#endif
SYMFUNC(xf86AddDriver)
{0,0}
diff --git a/xc/programs/Xserver/hw/xfree86/xf86cfg/vidmode.c b/xc/programs/Xserver/hw/xfree86/xf86cfg/vidmode.c
index e9dafe5cf..9316a5211 100644
--- a/xc/programs/Xserver/hw/xfree86/xf86cfg/vidmode.c
+++ b/xc/programs/Xserver/hw/xfree86/xf86cfg/vidmode.c
@@ -26,7 +26,7 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/vidmode.c,v 1.3 2000/10/20 14:59:08 alanh Exp $
+ * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/vidmode.c,v 1.4 2000/11/14 21:59:24 dawes Exp $
*/
/*
@@ -34,7 +34,6 @@
*/
#include "vidmode.h"
-#include <X11/extensions/Xinerama.h>
#include <X11/Xaw/Command.h>
#include <X11/Xaw/Form.h>
#include <X11/Xaw/Label.h>