www.winischhofer.net
Friday, 03-Dec-2004 09:44:22 CET
Home Inhalt Hem

Disclaimer: The information and software available on this site is provided AS IS and I herewith disclaim all warranties with regard to this information and software, including all implied warranties of merchantability and fitness. In no event shall I 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 of this information and/or the use or performance of this software.

Since I do not see any valid reason to protect genuine ways of thinking, I don't care about software patents. In case any software available on this site infringes any of these so called software patents, this infringement is entirely unintentional and a pure coincident.

[Driver options] * [FAQ] * [Changelog] * [Download]

SiS/XGI graphics chipsets and X.org/XFree86/Linux

Table of contents

VI. Changelog

I frequently update this page whenever I have time, so the information is more actual the farther down. And please: Before reporting bugs, always try the most current version of the drivers and read this page.

[Older information on changes was moved to a separate page.]

UPDATE (05/02/23) X driver: Quite a big update. 1) Fixed FSTN support for SiS550 and 320x240 panels. This is verified working correctly now (including 2D acceleration and Xv video support). 2) Numerous changes for the 661/741/760. The 760 gets very special treatment now, please see here. / sisfb: Match changes of the X driver. / SiSCtrl: Update to support the new X driver's special treatment of the SiS76x.

UPDATE (05/03/02) X driver: Added 800x480 (NTSC and PAL) and 1024x576 (PAL only) to the list of supported modes for s-video and cvbs TV output via SiS video bridges. These are widescreen modes and your TV must be able to display widescreen in the correct proportions in order to use these modes properly. / Now the X driver also accepts Option "MergedFB" "auto" instead of Option "MergedFBAuto" "on"; and Option "ForceCRT1Type" "NONE" instead of Option "ForceCRT1" "off". / sisfb/sisfbctrl: Finally fixed FSTN (for 320x240 LCD panels) - there was a small glitch in the previous version. Added -setcrt1 parameter to sisfbctrl so that users of sisfb can enable and disable CRT1 after sisfb has been started. Also, fixed a small bug on machines with a Trumpion Zurac LVDS scaler.

UPDATE (05/03/03) X driver: New MergedFB mode feature: Non-rectangular screen layouts. For more information, please see here.

UPDATE (05/03/04) X driver: Another new MergedFB mode feature: Now the Resize and Rotate Extension (RandR) can be used in MergedFB mode (even with Pseudo-Xinerama enabled). This allows resizing the screen in order avoid panning if a display mode is smaller than the (original) virtual screen. For more information, please see here. A new version of sisctrl is required to use this properly.

UPDATE (05/03/05) X driver: Fixed bug in SaveScreen() which caused the X server to crash if DPMS gets activated while switched away. Rewrote the whole DPMS code, added something DPMS-like for TV output (SiS bridges only).

UPDATE (05/03/09) X driver: Added option Reflection which allows "mirroring" the screen in x, y or x and y direction. This is, like screen rotation, entirely unaccelerated and uses the shadow framebuffer. / 315/330/340 series: Added detection for analog (VGA) devices whether they are widescreen or normal (4:3, 5:4) format; this will produce different built-in default modes for 800x480, 1024x576, 1280x720, 1280x768, 1280x800 accordingly. For "normal" devices, these modes with show black bars above and below (aka be "faked"), for "wide" devices these modes are real widescreen modes (all at 60Hz). Added options ForceCRT1VGAAspect and ForceCRT2VGAAspect to overrule the aspect detection. Note that this is for analog (VGA) devices only. / MergedFB mode: Enhanced default meta mode generation. Now the default meta modes generated in case the option MetaModes is missing depend on whether or not non-rectangular screen layouts are enabled. Fix DGA in MergedFB mode (again); since there is no panning in DGA mode, only display modes for DGA that don't require panning are allowed. / 315/330/340 series: Changed default output device selection: If the machine supports LCD-via-CRT1 and the driver detects LCD and TV, both LCD and TV will be used. Previously, TV would have been enabled and the LCD would have been disabled.

UPDATE (05/03/11) X driver: Mostly clean-ups. Fixed a small bug in the pseudo-Xinerama layout calculation.

UPDATE (05/03/15) X driver: Added 4-tap video scaling for upcoming SiS761 and SiS342. / Fixed bug on 661/741/760 that caused wrong screen pitch on CRT1 (VGA and LCD). / Fixed missing scanling in LCD-via-CRT1 mode on 1280x800 panels. / Fixed missing pixel row on 302LV in single-link mode.

UPDATE (05/03/20) SiSCtrl: Fixed segfault at exit.

UPDATE (05/03/23) X driver: Fixed LCD+TV mode for dual link LCD panels (with native resolutions of 1280x1024, 1400x1050, 1600x1200, etc). Hopefully fixed "TV blue tint"-problem for some 651+301B-DH systems.

UPDATE (05/04/05) Long awaited, finally here... a BIIIIIIIG update. X driver: Fixed a bug with clock evaluation in Dual head mode (1280x800 and larger panels were eventually not driven at this resolution due to incorrect bandwidth reservation). / Added option TVBlueWorkAround for machines with a 315 series chipset and a 301B-DH video bridge in order to work-around the driver's inability to detect a certain hardware configuration. This resulted in strange, mostly blue, colors on the TV on a very few such machines. See the options chapter for more information. / Removed the GammaPreBrightness feature; this was really useless. / Renamed the option GammaBrightnessCRT2 to CRT2GammaBrightness; the old one is still accepted, though. / X driver/SiSCtrl: Rewrote the SiSCtrl interface. Previously, SiSCtrl worked via Xv attributes. The new X driver has a dedicated SISCTRL server extension and to make this more fun, it comes with a lot of new features right from the start. For taking advantage of these, updating SiSCtrl to today's version is required as well. For a while, old versions of SiSCtrl (up to 2005/04/04) will continue to work with the new driver but the Xv interface is deprecated and will be removed in May 2005. SiSCtrl got rewritten to a large extent to separate the GUI from the main code and it got a bunch of enhancements which are mostly self-explanatory (but require the new X driver): MergedFB Metamodes are shown, Xinerama is handled much better, the "Current" tab got a "hints" section, the "Gamma" tab got a whole new outfit and new features, etc. Have fun, folks.

UPDATE (05/04/06) SiSCtrl: Fix segfault when quitting through window manager. / X driver: Small fix (don't print error in X log when CRT2Position is set to "RightOf"). Added updated AMD64 driver.

UPDATE (05/04/10) X driver: Found out that LCD-via-CRT1 is also supported on the 315PRO (if a suitable video bridge is present), added support for this in the driver. / SiSCtrl: Fix CRT selection for video overlay.

UPDATE (05/06/08) X driver: Add support for 1280x854 LCD panels. (Could anybody tell me if all pixel columns and rows are visible, both when using the LCD via CRT1 and CRT2?). Note that support for XFree86 4.1 and 4.2 is fading out now that Debian Sarge has been released. Woody users please change the /etc/source.list entry for the sis driver from "stable" to "woody".

UPDATE (05/06/14) X driver: Fix stupid typo that kept 1152x864 being used at refresh rates other than 60Hz.

UPDATE (05/06/18) SiSCtrl: Small additions like a confirmation window after mode changes (can be switched off by command line), a system tray icon and some new command line switches.

UPDATE (05/06/20) X driver: Discovered that the 300 series (300, 630, 730) can actually handle overlays up to 768x576. I previously assumed the width was limited to 720.

UPDATE (05/06/24) X driver: Fixed TV mode 512x384. Major code cleanup.

UPDATE (05/06/26) For once, DRI-related: Found the problem with DRI and linux >= 2.6.9. Patch submitted to the MESA people. A patched SiS DRI driver is in the download secion (see section 8).

UPDATE (05/06/27) X driver: Various code cleanups. Please folks, report eventual bugs and errors, X.org 6.9/7.0 feature freeze is ahead. Note: XFree86 Drivers for 4.1 and 4.2 will not be updated anymore. / SiSCtrl: Fix two GTK errors on video-bridge-less systems. Extend the confirmation delay to 7 seconds (some monitors don't sync fast enough to give a chance to confirm within the previous timeout of only 5 seconds).

UPDATE (05/06/29) X driver: Deactivated the old SiSCtrl communication interface. If SiSCtrl fails to work from now on, you need to update (which would be about time anyway). / Code cleanups. / Preparations for new acceleration architecture, but yet entirely disfunctional, added only conceptional code.

UPDATE (05/06/30) X driver: Fix a small glitch with non-rectangular MergedFB layouts. / SiSCtrl: Fix -setxvcrt and -setcrt1 command line parameters.

UPDATE (05/07/05) X driver: The X driver now also supports the XGI Volari V3XT, V5, V8 and Z7 chips. Please note: The X driver does NOT support the binary XGI DRI driver. If you want 3D acceleration, you need to use XGI's "own" driver (how well that one might work; please allow me a minute of pure selfishness: XGI's Linux driver, as it is published on their website, was mainly written by... me. What the folks at XGI did was to take the sis driver as of 2004/02/26, to delete all interesting features like dual head, mergedfb and what-not, to add a flaky mode switching code that doesn't even correctly support TV or DVI and a DRI driver, and released it as "their" driver. At least they were so nice to keep my copyright notices intact.). I am not going to do anything DRI related for XGI as long as the DRI driver is closed-source. / Ported the X driver to X.org 6.9.0/7.0 EXA acceleration architecture. This change has no effect if it is compiled and run under an older version of X.org or XFree86. / Some minor bug fixes; amonst others, I fixed a bug for people running more than one SiS/XGI card in their box. / SiSCtrl: Added support for XGI Volari chips.

UPDATE (05/07/06) sisfb: Quite a big update; sync some features with the X driver (mode switching code); added support for XGI chipsets. Note: Even for 2.6, you need to use a new Makefile now which is included in the archive and called "Makefile_2.6".

UPDATE (05/07/08) X driver/SiSCtrl: Some cleanups.

UPDATE (05/07/09) sisfb: Fix accelerator initialisation for XGI cards. Some cleanups.

UPDATE (05/07/10) sisfb: Make console-switching a bit faster (Linux 2.6.12 and later only).

UPDATE (05/07/15) sisfb: sisfb can now reset ("POST") all XGI cards. This means that these can be used on non-X86 architectures as well now (provided that the hardware can cope with the cards in general). Furthermore, sisfb can run on XGI cards if these are "secondary" in the system.

UPDATE (05/07/17) X driver: Some fixes for using multiple SiS (or other) cards in one system, especially if the cards are "secondary" (ie not initialized by the BIOS) and if the upcoming sisfb is being used to initialize the card. / sisfb: Enhanced card initialization for XGI cards. Added simple DVI-D/LCD detection (which will performed if the card is initialized by sisfb, or if the BIOS didn't detect any DVI-D device). Also, secondary cards work better now.

UPDATE (05/07/18) X driver: Fix for EXA (offscreen allocation for Xv and other stuff). SiSCtrl: Fix for situations where another application has grabbed the Xv (overlay).

UPDATE (05/07/20) X driver/sisfb: Attempted to fix vt-switching issues on brand new machines. I'd be grateful for any testing reports (no matter whether bugs are found or not). X.org 6.9/7.0 is nearing completion....

UPDATE (05/08/25) X driver/sisctrl: Some visual improvements for SiSCtrl.

UPDATE (05/08/30) X driver: Fixed all 1080i, 750p/720p and 525p/480p HDTV modes. Added support for scaling 525p/480p output vertically (like NTSC and PAL). Found out that XGI cards can output YPbPr via the S-video plug... (which is also the reason for disturbances in S-video mode if SVIDEO+COMPOSITE is active. Folks at XGI just routed the CVBS output to one of the ground pins of the S-video connector. Bright side is that a HDTV/YpbPr adapter is easy to produce, downside is the mentioned disturbances.)

UPDATE (05/09/02) X driver: Added support for scaling 720p/750p and 1080i HDTV output vertically. Added support for 800x480 and 1024x576 in 720p/750p mode. Changed horizontal scaling factor's and X/Y position values' effectiveness in HDTV mode.

UPDATE (05/09/06) X driver: Added support for PAL progressive scan YPbPr output (576p=625p) as well as PAL interlaced YPbPr output (576i=625i). Nearly all TV modes (PAL/NTSC/etc and all YPbPr signal types) can be scaled vertically now, including 1024x768 for PAL and NTSC. Added support for 960x540 in 1080i mode. SiSCtrl: Added support for 576i/576p output. Re-arranged CRT2-tab. If the current display mode is not support for a certain device type, this is now indicated in the CRT1 and CRT2 tabs.

UPDATE (05/09/08) SiSCtrl: Fixed the Xv-demo to work if a composite manager (xcompmgr, kompmgr) is running. Debian/Ubuntu users: Since I don't have any Debian "stable" systems and unstable updated to gtk+ 2.6.10 and glib 2.6.8 recently, I had to drop the binary sisctrl package from my "stable" repository. SiSCtrl must from now on be built from source. / All others: I also dropped the pre-compiled sisctrl binary. So unless you use Debian unstable, you need to build sisctrl from source (which isn't hard, believe me).

UPDATE (05/09/13) SiSCtrl: Added a little aspect ratio helper to TV tab: Since you can adjust TV's x and y scaling (zooming) separately, it can be hard to hit the correct aspect ratio. The red rectangle must be a square to achieve a correct ratio. SiSCtrl also now can set the mode and resize the desktop by command line switches. Furthermore, -setmode, -setcrt1 and -setcrt2 arguments can now be used in combination, ie you can switch the mode and change the crt1 and/or crt2 type with one single execution. This is cool for scripting, eg for starting SiSCtrl with -setmode, -resize and so on at server start.

UPDATE (05/09/16) X driver: Fixed a small HW cursor glitch in dual head mode (I wonder why nobody ever reported "two pointers"...). The option "GammaBrightness" (and its CRT2 pendent) is now deprecated, it's replacement is "NewGammaBrightness" (plus a CRT2 pendant) which uses a new better calculation algorithm. Also, option "NewGammaContrast" (also, with a CRT2 pendant) allows adjusting the display contrast. For more info, see here. / SiSCtrl: Added support for new gamma brightness and contrast.

UPDATE (05/09/18) X driver: Improved vertical scaling quality for TV output on 301C-equipped systems (the 4-tap scaler is now used for all sizes of all modes).

UPDATE (05/10/24) sisfb: Fix compilation issues on Linux 2.4. Sync mode switching code with X driver. / sisctrl: Prepare for upcoming X driver. Some gtk-internal updates. Slight interface facelift. / Note: There will be no more updates for Debian Woody from now on.

UPDATE (05/10/25) sisctrl: Well, I accidently uploaded last week's version yesterday. Now (10/25) it's the correct one.

UPDATE (05/10/31) sisctrl: Some further enhancements for upcoming X driver features.

UPDATE (05/12/02) sisctrl: Some further enhancements, mainly for upcoming X driver features. Facelift in MergedFB mode. Fixed compilation issued with very old versions of gcc.

(08/12/05) Announcement: As of Dec 8, 2005, there will be two versions of the X driver available. Please see immediately below.

UPDATE (05/12/08) X driver: Premium Version available for x86/32bit, see below. x86/64bit and an update of the Free Version will follow soon.

UPDATE (05/12/09) X driver: Xv overlay: Improved scaling quality in MergedFB mode if the overlay is only visible on one of the screens (315 series and chips with two overlays only); SiS760: Hopefully fixed the hangs or drawing errors some users experienced; new option ConstantDPI for keeping the screen DPI constant during screen resizing through RandR, see here; new option MergedXineramaScreen0 replacing the old MergedXineramaCRT2IsScreen0 option, see here; new color saturation facility for CRT1 (315 series only), see here; the option MergedNonRectangular is now set by default; binaries compiled with gcc 4.0.2 available.

UPDATE (06/09/29) X driver: Version for X.org 7.1 available. The X.org folks managed to break the SIS driver's EXA acceleration in 7.1, so here is a corrected version. (I recompiled all other versions as well, but there are no changes for these apart from the date they carry.)

VII. Download the latest versions

I have developed this driver since 2000 and spent a lot of my spare time for doing so and prividing support by e-mail and the forum. We are taking about approx 4000-5000 hours here; I stopped counting a long time ago. Since none of the involved hardware manufacturers ever supported me in this process and I - opposed to nearly all other X.org developers - am not paid by anyone for my efforts, I for now decided to stop wasting my precious and rare spare time by supporting these companies by selflessly providing them with the means to sell more of their hardware.

Therefore, starting Dec 8, 2005, there are two versions of the X driver available:

  1. The Free Version. This version is free for download and use and its codebase will from time to time be committed to the X.org CVS so that it shows up in releases of X.org.
  2. The Premium Version. This version is only available in binary form and for a fee. It has advanced features not available in the Free Version.

Which version you choose is entirely up to you. However, please observe that these two versions have different license terms. The license terms of the Premium version will be provided by e-mail and depend on the intended usage.

If you or your company wants to support development of the Free Version, please feel free to sponsor. Upon clicking on one of the download links below, you will be presented a page describing how to do so.

License terms, unless otherwise stated in the source code:

Code which is contained in both the SiS Linux kernel framebuffer driver and the Free Version of the X.org/XFree86 driver is dual-licensed. If distributed as part of the Linux kernel, this duplicate code is licensed under the terms of the GPL version 2. Otherwise, the license terms for unique X.org/XFree86 driver code, as stated below in italics and in the source code, apply.

The remaining part of the SiS Linux kernel framebuffer driver (which is unique to this driver and does not appear in the X.org/XFree86 driver) is licensed under the terms of the GPL only. Its source code contains the respective license terms in each file.

The remaining part of the Free Version of the X.org/XFree86 driver (which is unique to this driver and does not appear in the SiS Linux kernel framebuffer driver) is licensed under the following terms (written in italics), unless otherwise stated in the source code:

"Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."

SiSCtrl and sisfbctrl are licensed under the terms of the GPL version 2.

For newbies: What you probably want is a binary (=precompiled) X.org/XFree86 driver. The "source" of the driver is only required if your system does not work with one of the binary ones (or, of course, if you want to compile X.org/XFree86 for yourself; but then again, if you intend to do this, you're certainly no newbie...)

1. The Premium X.org/XFree86 driver (pre-compiled = binary)

(2007/10/06) Despite of what is written below: Development is ceased. The source of the Premium version is available for download here. THERE IS NO SUPPORT WHATSOEVER FOR THIS CODE. A BINARY IS NOT AVAILABLE.

The Premium Version has the following features not found in the Free Version*:

  • Hardware accelerated display/screen rotation support, including support for video playback (315 series only; 180 degree rotation and video playback in rotation mode only supported on SiS M650/651, 330, 661/741/760, XGI V3XT/V5/V8). [Requires X.org 6.9/7.0 or later for optimum performance]
  • Real CRT1/VGA and CRT2/LCD hotplugging, redetection and modelist rebuilding; if you hotplug a VGA monitor (or projector or any other analog device) which is DDC2-capable, the driver can detect this, rebuild its modelist and adapt it thereby to the new monitor's frequency capabilities. The same applies to hotplugging LCD panels.
  • Advanced video blitter Xv adaptor (including scaling support)
  • Advanced Xv video support for overcoming most overlay size/dotclock/etc limitations/restrictions (only on SiS M650/651, 661/741/760, 330, XGI V3XT/V5/V8).
  • Screen enlargement after server start: For example, if your LCD is 1280x800 and you start X, all modes beyond this resolution are usually not available afterwards. The Premium version allows switching to larger modes (such as eg 1280x1024) later, if you, say, switch from LCD to a VGA monitor. (Not supported in MergedFB mode.) [Requires X.org 6.9/7.0 or later for optimum performance]
  • Advanced MergedFB mode display device placement specification, including swapping (reversing) the relative position for specific metamodes.
  • Optional: TV (analog) copy protection support for SiS video bridges. (Available for companies only)
  • Optional: Customized LCD support for ICOP/Vortex86 or other embedded boards
  • Optional: Other customizations (upon request; hardware sample eventually required)
  • Eventual bugs might be fixed quicker than in the Free Version.
  • And for those who unfortunately can't read: No, the premium version does not support DRI(OpenGL).

Features named as "optional" are subject to a separate agreement and a separate fee. Extended support is available upon request.

(* Note that some of these features might at a later time show up in the Free Version as well as development progresses.)

2. The Free X.org/XFree86 driver (pre-compiled = binary)

In this section, you find the download links for the pre-compiled (binary) of the Free Version of the X driver for X.org/XFree86 on x86 CPUs. You will very probably only want one of these, and not the source of the driver (which is in the following section). The important issue is that you choose a driver which is for your version of X.org/XFree86 and has been compiled with the version of the C compiler (gcc) which your version of X.org/XFree86 has been compiled with.

Binaries for x86 (32 bit):

Binary for AMD64 (64 bit) (might be outdated):

Binaries for older versions of XFree86 (x86 32 bit; final version as of 2005/06/24):

Installation:

  • Find out which version of X.org/XFree86 your system is running. Do so by typing X -version in the console.
  • For XFree86 4.2 and 4.3: Find out which version of gcc your system is using. Do so by typing gcc -v in the console. However, XFree 4.2 was almost in all cases compiled with gcc 2.x, despite the default compiler on your system might be gcc 3.x. XFree86 4.3 was almost in all cases compiled with gcc 3.x.
  • Download the X.org/XFree86 driver binary archive (sis_drv.o_XVERSION_GCCVERSION_VERSION.tar.gz) for your version of X.org/XFree86. Save the downloaded file in any directory, for example your home directory. Please note: To install this file, you need to be root.
  • Extract the downloaded archive file and ignore eventual "ignoring trailing garbage" warning messages during extraction. The archive contains only one file named "sis_drv.o" (starting with X.org 6.9, this file is called "sis_drv.so").
  • Starting from X.org 6.9, you MUST stop X.org before proceeding.
  • Copy "sis_drv.o" (sis_drv.so for X.org 6.9 and later) over the existing one which usually is located at /usr/X11R6/lib/modules/drivers/. Starting with X.org 7.0, the file is located at /usr/lib/xorg/modules/drivers.
  • (Re-)start X.org/XFree86. If you get "unresolved symbol" errors when starting X.org/XFree86, you chose the wrong version.
3. X.org/XFree86 driver (source of the Free Version)

In this section you find the download link for the source code of the X driver. Please read the installation instructions below for information on what to do with this. If you have downloaded and installed a binary version and X.org/XFree86 works, you will not need this. This source is for all versions of XFree86 since 4.3 and X.org as of 6.7.0.

Installation:

  • Note 1: The following instructions assume that you have installed binary XFree86/X.org packages and only want to (re)compile sis-related code and not the whole XFree86/X.org environment.
  • Note 2: You need the whole XFree86 or X.org source tree to build the SiS XFree86/X.org driver.
  • Note 3: These instructions do not apply to the modular tree (ie X.org >= 7.0).
  • Extract my source archive to a temporary directory, ie. anywhere but the XFree86/X.org source tree. Ignore an eventual "ignoring trailing garbage" message during extraction.
  • Copy all .c and .h files from that temporary directory over the existing ones inside the XFree86/X.org source tree (programs/Xserver/hw/xfree86/drivers/sis/)
  • Delete the existing Imakefile. Rename the one matching your version of XFree86/X.org to "Imakefile". (These files are named Imakefile_4.1, Imakefile_4.2 and so on for XFree86 4.1, 4.2 and so on, and Imakefile_6.7.0 and Imakefile_6.8.1 for X.org. The version for 6.8.1 is also for 6.8.2.)
  • If you use the XFree86/X.org source from XFree.org/X.org: cd into the "xc" directory of the XFree86/X.org source tree and run "make World". At first, this will create Makefiles, convert font files and do some other stuff. Then it will start compiling. If you only want to compile the sis X driver and not the whole XFree86/X.org environment, you can cancel the building process as soon as there is a "Makefile" in the SiS driver directory (where you copied the files one step before).
  • Debian source: cd into the directory where the Debian source code is located (where you see a "debian" and a "build-tree" directory) and run "debian/rules build". At first, this will create Makefiles, convert font files and do some other stuff. Then it will start compiling. If you only want to compile the sis X driver and not the whole X environment, you can cancel the building process as soon as there is a "Makefile" in the SiS driver directory (programs/Xserver/hw/xfree86/drivers/sis/).
  • cd into the sis directory (programs/Xserver/hw/xfree86/drivers/sis/), run "make clean" and then "make".
  • Copy the newly generated sis_drv.o (sis_drv.so starting with X.org 6.9) from programs/Xserver/hw/xfree86/drivers/sis/ (which you made the current directory one step ealier) over the existing one. Normally, the file is located in /usr/X11R6/lib/modules/drivers/, or, starting with X.org 7.0, at /usr/lib/xorg/modules/drivers/.
  • To install the sis manpage, gzip the file sis._man, rename the gzipped file to sis.4.gz and copy this file to /usr/X11R6/man/man4/. (This path and filename may vary depending on your distribution.)
4. SiSCtrl (SiS/XGI Display Control Panel)

SiSCtrl is a gtk2 tool for manipulating various driver parameters during runtime (switching the CRT2 type, re-position TV output, etc). Please see here for more information.

For compilation, SiSCtrl requires the gtk+ 2.4 (or later) and the X11 headers (in some distributions called "development headers") as well as a program called pkg-config. The source archive also contains some icons for SiSCtrl in the icons/ directory.

If you are running Debian or Ubuntu, please proceed to section 5.

  • Source for SiSCtrl (2005/12/02)

Installation:

  • Download the source archive and extract it somewhere, for example in /usr/src. Ignore eventual "ignoring trailing garbage" messages during extraction.
  • cd into the directory where you extracted the archive (/usr/src/sisctrl...), and type ./configure - this will check if all necessary tools and library headers are installed. You need the X11 development headers, pkg-config and the gtk/glib 2.x development headers.
  • Type make - this compiles sisctrl into the current directory.
  • Type make install - this installs sisctrl to /usr/local/bin, its manpage into /usr/local/man and some icons to /usr/local/share.
5. Debian and Ubuntu

For Debian unstable (sid) and comparable Ubuntu versions, there are 32-bit x86 Debian/Ubuntu packages available for SiSCtrl. (AMD64 users need to go the common way as described above. Sorry for the inconvenience.)

Add the following to your /etc/apt/sources.list:

  • For binaries: deb http://www.winischhofer.net/sis/debian/unstable ./
  • For source: deb-src http://www.winischhofer.net/sis/debian/unstable ./

The sisctrl source contains the complete source for sisctrl. This source package can be built (ie converted into a binary package) either the hard way (by downloading the package, extracting it into /usr/src, cd-ing into the /usr/src/sisctrl... directory and by invoking debian/rules binary) or the simple way by apt-src build sisctrl. The latter variant downloads the source package and all packages the source package depends on and then builds the package. Either way will result in a .deb file which can then easily be installed with dpkg.

Note on package authentication: Unfortunately, my server still runs Debian stable which does not support the required apt tools in order to provide a package signature. I don't know yet when the server will be updated (it certainly will, some day). In the meantime, if you want to prepare, you can add my gpg key to your apt keyring by (as root)

   gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 092dc947
   gpg --armor --export 092dc947 | apt-key add -

6. The Linux SiS/XGI framebuffer driver (sisfb)

Sisfb is only provided in source code. This source code compiles under Linux 2.4 and 2.6, provided you use 2.4.14 or later, or 2.6.9 or later.

Installation:

  • You need a complete Linux kernel source tree on your machine.
  • It has come to my attention that RedHat and perhaps some other distros have patched the kernel in a way that makes it impossible to compile my version of sisfb. Bad luck. Use a stock kernel instead. These work well, too.
  • Download the sisfb source archive and extract it somewhere. Ignore eventual "ignoring trailing garbage" messages during extraction. Do NOT extract the archive inside the kernel source tree!
  • Read the README file in the archive.
  • For Linux kernel 2.4:
    • Copy all .c and .h files EXCEPT "sisfb.h" over the existing ones in the Linux kernel source tree ([kernel-tree]/drivers/video/sis/)
    • Copy Makefile_2.4 as "Makefile" over the existing one in the sis driver directory (same as in step above)
    • Copy sisfb.h over the existing one in [kernel-tree]/include/linux.
  • For Linux kernel 2.6:
    • Copy all .c and .h files EXCEPT "sisfb.h" over the existing ones in the kernel source tree ([kernel-tree]/drivers/video/sis/).
    • Copy Makefile_2.6 as "Makefile" over the existing one in the sis driver directory (same as in step above)
    • Copy sisfb.h over the existing one in [kernel-tree]/include/video/.
  • Locate eventual further copies of sisfb.h on your harddrive and replace them with the new file as well.
  • cd to the kernel tree directory, in most cases /usr/src/linux/.
  • Run "make clean". This is important, otherwise the kernel might ignore your startup parameters for sisfb.
  • Then reconfigure the kernel (using, for instance, "make menuconfig"):
    • For 2.4: Enable "Prompt for development and/or incomplete code/drivers" in Code Maturity Level Options, "SiS Acceleration" or "SiS display support" along with your type of chipset in Console Drivers->Framebuffer support. If you happen to select Advanced Low Level Driver Options (which I do not recommend), you *must* select "8 bpp packed pixel support", "16 bpp packed pixel support" and "32 bpp packed pixel support" as well.
    • For 2.6: Go to "Device Drivers"->"Graphics Support" and enable "Support for framebuffer devices", "SiS acceleration" along with your type of chipset (for XGI, select "SiS315/330"). Then go to the sub-menu Console display driver support and enable "Framebuffer Console support". Leave "Select compile-in fonts" unchecked. Furthermore make sure that "VESA VGA graphics support" is disabled as well.
  • Run "make dep" (for kernel 2.4 only), then recompile and reinstall the kernel and the modules. If you don't know how to do this, please consult kernelnewbies.org.
7. sisfbctrl (sisfb utility)

sisfbctrl a small utility to change the screen's position on the TV, and to enable or disable CRT1 VGA output after sisfb has been started. This works similar to SiSCtrl in that regard. It requires sisfb from 2004/05/25 or later for TV position adjustments, and 2005/02/03 or later for CRT1 en/disabling.

8. XFree86 XAA library patch

This is only for XFree86 4.1, 4.2 and 4.3.0, notably not any version of X.org or Debian's/Ubuntu's XFree86 4.3.

In these old versions of XFree86 have two bugs in the 2D acceleration code. One of these bugs is a memory management bug and is often triggered by the RENDER acceleration, but might show up even without it, for example, after heavy Xv usage. The other one might cause drawing errors.

I have binaries for download to fix these two bugs. Download the archive for your version of XFree86 below, extract the archive and copy the file "libxaa.a" over the old one in /usr/X11R6/lib/modules. Don't forget to do that again everytime you update your X packages!

All binaries below have been compiled for x86 32 bit systems.

9. DRI driver for X.org 6.8.2

Beginning from Linux kernel 2.6.9, DRI stopped working. Usually, folks only got a black screen. The binary below fixes this problem. The corresponding patch is already checked into the MESA CVS (see here)

  • sis_dri.so for X.org 6.8.2 (x86; compiled with gcc 3.3.6)
  • sis_dri.so for X.org 6.8.2 (x86; compiled with gcc 3.4.3)
10. Other stuff (mostly educational)

VIII. Other information

In case the internet and google can't help you, please observe the following guidelines:

  • Try the most recent drivers; if you are using sisfb and XFree86/X.org, update both (even if you think the problem is only one of them)
  • Read these pages from top to bottom
  • And for the last time: There is no DRI/OpenGL (hardware accelerated 3D) support for the SiS 315/65x/74x/330/66x/760/761/340/XGI.

<<< Previous ^ Top ^ That's a wrap >>>
BACK