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

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.

I. Introduction

0. Summary

Want a X.org/XFree86 driver (hereinafter called “X driver”) for your Silicon Integrated Systems (SiS) or XGI Volari (some desktop and server models only) graphics card? Download it from the download section, install it as described in the installation instructions and simply place Driver "sis" in the Device section of /etc/X11/XF86Config or /etc/X11/XF86Config-4 or /etc/X11/xorg.conf. Simple example configuration files are in the download section.

The X driver is optionally accompanied by a display management tool called sisctrl that lets you tune the display without the need to restart the X server. This tool is available in the download section, too.

Additionally, a Linux kernel framebuffer driver for some SiS and XGI graphics cards is available here as well. This driver is meant for more advanced users as its installation requires some knowledge about kernel configuration and compilation.

Installing any driver downloaded from this website does not mean installing some sort of “third party” software. I am, in fact, the author and maintainer of both the official X.org and XFree86 SiS/XGI driver as well as the Linux kernel’s SiS/XGI framebuffer driver.

I know, there is a lot of information on these pages. But you don’t have to read them entirely if you don’t want to; well, at least in the beginning. As regards the X driver, for basic operation, no special settings or options are needed. The only requirement is to tell the X server that you want to use the “sis” driver (as stated in the first paragraph of this summary). For novice users, I recommend playing with sisctrl as the next step. This will teach you the driver’s features and it will show you what options are to be put in your XF86Config(-4)/xorg.conf in order to make permanent changes.

1. Why this page?

Pretty simple: SiS is unfortunately one of those companies that do not support Linux or X.org/XFree86. They don’t (and will not) release any documentation on their products (with a few exceptions) and write drivers only for Microsoft’s DOS-extensions (called “Windows” by many people; and yes, “Windows” is a trademark). Although they have released XFree86 drivers previously and have released a (binary) driver for the SiS650 in the past, these are and were heavily buggy and not developed any further from a certain point. In other words: Their XFree86 drivers are useless. If you have a notebook, you don’t even need to consider trying them.

I bought a SiS-based laptop in 2000 without checking for Linux/XFree86 support. So I had to take things into my own hands.

In June, 2003, the SiS graphics department has been merged with Trident’s graphics department, together forming a new company which goes by the name of XGI. The first and second generation XGI graphics chips Volari V3XT, V5, V8 and Z7 are, as regards parts relevant for my drivers, quite compatible to recent SiS chips which is why the drivers now handle both SiS and XGI chips. (The XGI Volari V3, without “XT” in the model number, is not compatible with any SiS chip; it’s a Trident-based design. My drivers don’t support this chip.)

Before starting, there are some technical details you should know about in order to be able to configure X.org/XFree86 or the Linux kernel properly. I am really sorry not being able to provide you with a “God system” which configures itself automagically. Instead, consider this information as a kind of installation guide that goes beyond Plug & Pray; it will help you solve problems more easily. But don’t worry: At least the X driver is nearly fully capable of configuring itself.

2. Supported SiS/XGI graphics chips and video bridges
There are currently five groups of SiS graphics controllers:

  • The old series (SiS 5597/5598, 6326/AGP/DVD, 530, 620),
  • the 300 series (SiS 300/305, 540, 630/S/ST, 730/S),
  • the 315 series (SiS 315/E/PRO, 550, [M]650, 651, 740, [M]661[FMG]X, [M]741[GX]),
  • the 330 series (SiS 330 “Xabre”, [M]760[GX], [M]761[GX]), and
  • the 340 series (XGI V3XT, V5, V8, Z7; SiS342 – yet to be released).

(Even older chipsets than the ones mentioned are not and will not be supported.)

Knowing what chipset your machine has is a Good Thing(tm) as they differ heavily in supported features.

The controllers within these groups are (more or less) compatible to each other. Chips with numbers > 3xx (except the 6326) are integrated chipsets which also contain a PCI/AGP/ISA bridge, sometimes a memory controller and a lot of other stuff. The SiS 550 is somewhat special; this one is a complete one-chip computer (“system on chip” = SOC), even including an x86 compatible CPU, but lacking a 3D engine.

Note that there is no SiS 6325. 0x6325 is the PCI ID of the graphics part of the SiS 650, 651, M650 and 740. This number does not identify the device in a unique manner. So you don’t have a “SiS 6325” but a SiS 650, 651 and so on. The same applies to 0x6330 – it’s either a 661, 741, 760 or 761 (which is sometimes called “661 series” hereinafter). Finally, “Real256”, “Ultra256” and “Mirage” are marketing names for the 3D engines of the 661, 741, 760 and 761.

About the 300, 315, 330 and 340 series

All information on the 650, 661, 741, 760, 761 covers these and all model variations with letters in names (like “M650”, “760GX” and so on), unless otherwise noted. Graphics-wise there is no difference, except to some extent between the 650 and M650.

The 300/315/330/340 series, except the XGI Volari Z7, have two CRT controllers for simultanious output on two different display devices. While the first CRT controller “CRT1” is mainly for traditional VGA output, the second CRT controller “CRT2” is, in most cases, wired to a so-called “video bridge” or a similar device for controlling LCD/Plasma/DVI-D (digital) output, TV output or secondary VGA/DVI-A (analog) output.

Once again: The XGI Volari V3, without “XT” in its name, is not supported by my drivers. It is no SiS-based, but a Trident-based design.

See the following figure on how the graphics controller and the video bridge interact:

Graphics

Newer machines can drive (digitally connected) LCD/DVI-D devices via the graphics controller’s CRT1 output (marked with green-purple arrows in the figure above). This is true for 650, 651, 661, 741, 760, 761 and later (including all versions with letters in the model number) as well as all XGI Volari chips, in combination with some video bridges. More information on this follows immediately below.

The VGA plug (15 pin D-sub) that is found on most (if not all) machines including laptops is for primary VGA output, thus driven by CRT1.

So, in the following,

  • CRT1 means the chip’s primary output which can drive traditional analog VGA devices such as monitors, projectors via 15 pin D-sub connector or, on some machines, digitally connected LCD/DVI-D devices;
  • CRT2 means the chip’s secondary output which, if a video bridge is present, can drive either
    • LCD (or any device digitally connected through DVI-D), or
    • TV (S-Video, composite, YPbPr, HiVision) or
    • secondary VGA (or any device connected through analog DVI-A or an eventual second 15-pin D-sub connector)
1. SiS video bridges

There are several types of SiS video bridges available, which are also used on XGI cards. Currently there are

LCD/DVI-D TV PAL/NTSC HDTV secondary VGA (DVI-A) simultanious LCD+TV output
301 TMDS up to 800×600 HiVision 1080i yes
301B TMDS up to 1024×768 HiVision 1080i yes
301B-DH up to 1024×768 HiVision 1080i yes
301C TMDS up to 1024×768 YPbPr yes yes
301LV LVDS up to 1024×768 YPbPr yes
302LV LVDS (dual) up to 1024×768 YPbPr yes
302ELV LVDS (dual)

a) Digital output: The 301, 301B and 301C can only control TMDS (“Panel Link” = DVI-D) devices such as LCD and plasma panels, projectors, etc.; the 301LV, 302LV and 302ELV can only control LVDS devices such as flat panels (which is why these bridges mostly come in notebooks). The 301B-DH is a cut-down version of the 301B as it lacks the capability of controlling any digital devices. Laptops containing a 301B-DH manage LCD output through a separate LVDS transmitter (such as the ECS Desknote 90x series). If your machine has a DVI connector, it has a 301/301B/301C.

The 302LV/ELV bridges are dual-link capable, while the 301/B/C/LV bridges are single link devices. Panels up to 1600×1200 or a dotclock up to 165MHz can be driven with a single-link device. However, the 301 and 301B are limited to 108Mhz which means a maximum resolution for digital panels of 1280×1024. The 301C can drive panels up to 1600×1200.

b) TV output: All SiS bridges, except the 302ELV, support S-Video and Composite (CVBS) for PAL/NTSC. The 301/301B furthermore support HiVision 1080i output (a japanese 1080i standard, similar to YPbPr 1080i). The 301C/301LV/302LV support YPbPr 480i, 480p, 576i, 576p, 720p and 1080i instead, but not HiVision. “YPbPr” means separate analog output/input of Y, Pb and Pr data, usually through three chinch connectors (colored green, blue and red on the devices I have seen so far). You cannot output YPbPr via the S-Video or composite (CVBS) plug. And if you’re thinking about connecting your HDTV via DVI, you’re reading the wrong paragraph right now. YPbPr means direct and analog YPbPr output, see above for digital output.

c) Secondary (analog) VGA output: Secondary VGA output (VGA2 = DVI-A) is only supported by the 301, 301B and 301C. The different models of video bridges support different maximum dotclocks: The 301 is limited to 135Mhz (maximum resolution 1280×1024 at 60Hz), the 301B to 162Mhz (max 1600×1200 at 60Hz). The 301B-DH is limited to a dotclock of 100Mhz (max 1024×768 at 85Hz). The 301C supports up to 202Mhz (max 1600×1200 at 75Hz).

2. Other devices for CRT2 output

If the machine does not contain a SiS video bridge, LCD output is done through a third party LVDS transmitter (eventually in combination with a Trumpion Zurac LVDS scaler) while TV output is accomplished by a separate TV encoder. The most commonly used TV encoders are the Chrontel 7005 in combination with a 300 series chip, and the Chrontel 7019 in combination with the 315/330/340 series.

For simplicity reasons, the term “video bridge” is hereinafter the synonym for “SiS video bridge or third party device”.

3. Possible combinations of output devices

All machines with a 300/315/330/340 series chipset and a video bridge support simultanious output on

  • VGA (analog, via CRT1) and LCD/DVI-D (digital, via CRT2)
  • VGA (analog, via CRT1) and TV (analog, via CRT2)
  • VGA (analog, via CRT1) and VGA2/DVI-A (analog, via CRT2)

Additionally, some chipset/videobridge combinations also support simultanious output on

  • LCD/DVI-D (digital, via CRT1) and TV (analog, via CRT2)

The chipsets that support this are 315PRO/650/651/661/741/760/761 and later, as well as all XGI Volari Vx chips. The video bridges that support this are 301C, 301LV and 302LV. If the combination of chipset and video bridge supports simultanious LCD and TV output and this mode is enabled, LCD/DVI-D output is managed through CRT1. Hence this we hereinafter call this “LCD-via-CRT1”.

On all types of machines, there can only be one CRT2 device active at the same time. Therefore, if your machine is not capable of driving the LCD/DVI-D device through CRT1, when you select TV output, the LCD panel is switched off.

3. A few words about the SiS 760 (all versions)
The SiS760 is a chipset for the AMD64 and AMD Sempron platform. These CPUs have a memory controller built-in, ie in systems based on these CPUs, there is no dedicated memory controller present.

As with all integrated SiS chipsets, the SiS 760 supports shared video memory, ie. memory that is shared between the system and the graphics (this technique is called “UMA”). However, the 76x also supports dedicated video RAM (so-called “local framebuffer memory” = “LFB”) which connects directly to the graphics chip and is accessible for the CPU via the bus. Shared memory and local memory can be combined (“hybrid mode”).

Shared memory is slower, because the graphics chip has to access it via the system memory bus, while it can access local framebuffer RAM directly. Most if not all modern graphics cards therefore use local video memory.

While shared memory was quite usable on all previous integrated chips (630/730, 65x, 661, 74x), there is a serious problem with it on the SiS760 – caused by the aforementioned fact that the CPU contains the system memory controller. This leads to severe memory bandwidth limitations if only shared system memory is used and no local framebuffer memory is present.

Therefore, the 760 – if used with shared memory only – is not really usable in dual head configurations; even in single-head operation, some features are limited. This especially affects video overlay support (Xv): Although the SiS760 supports two video overlays, these are in most cases not usable: Heavy flicker in the video and the graphics may occure as a result of exceeding the available memory bandwidth. The X driver takes some counter-measures on such systems (even advanced ones in the Premium Version), but it can’t avoid the problems entirely. On systems with both shared and local video memory, the drivers will only use the local memory part. You may likewise disable the shared memory in the BIOS.

My advice: Don’t buy a machine with a SiS760 unless this machine has dedicated local video memory. And please don’t complain about “driver bugs” if you see “flashing lines” on the screen; these are the typical effects of a bandwidth problem and unavoidable – even the Windows driver can’t do better. In such cases, reduce the resolution and/or refresh rate and/or color depth, or use one output (CRT1 or CRT2) only. Sorry, can’t help it. There is no driver bug involved.

For poor Averatec 6240 users: My drivers at least allow 1280×800 on the LCD if the external monitor is enabled… the Windows driver kicks you back to 1024×768 in such a case.