Accelerated X Server for SiS video on Fedora 18

In a recent push for code clarity, the X.org folks decided that they will no longer support XAA acceleration (2D). It was supposed to be replaced by EXA. However, it turns that EXA implementation in many of their drivers for legacy video adapters (like SiS) is broken to a point of crashing the whole X server.

Fedora 18 comes with X.org version 1.13. Since there is no such release on the X.org site, it is likely that Fedora guys have taken some of the 1.12.9x development releases and shipped it as ‘1.13’. (Not their first, actually – remember gcc-2.96 back in RedHat times?)

The combination of the above two, however, leads to the fact that you cannot even install F18 on a system with a legacy card like SiS – and if you do, however, your only bet is unaccelerated X. The only way to get the SiS driver working is to enable ‘NoAccel’ in xorg.conf – which means significantly slower desktop and no Xv, i.e. all video playback goes through X11, making it slower and of poorer quality.

While I don’t have the knowledge to fix EXA in the SiS driver, with some efforts it is still possible to get back your XAA acceleration:

  • Downgrading X.org and the SiS driver to F17’s RPMs is posisble, but useless: in F17 the XAA was already broken (although X.org did not crash, just silently disabled any acceleration).
  • Downgrading X.org and the SiS driver to F16’s RPMs is not possible, because in F16 the X.org RPMs were built against ConsoleKit and F18 uses systemd; even if you force their installation, you’ll get a non-functions X server.
  • Therefore the source is the only path: luckily, it is much easier than one would expect.

There are several ways to get the job done, but the easiest is to install from scratch (if you already have a working F18 and still want accelerated X, use the instructions below as a guideline). For a clean install we shall follow this path:

  • Make a base install using the netinst
  • Install X.org and SiS driver from source
  • Install everything else you like the usual way.

When installing from netinst disk, it is easier to burn it on a CD. Use the ‘Install with basic graphics’ option, press ‘Tab’ to edit the line and append ‘resolution=800×600’. If you boot directly into VESA, you’ll likely get screwed resolution (with 800×600 you’ll still face some quirks with wrong window placement on the partitioning screens, but going back and forth will fix it).

If you must use USB to install, bear in mind it won’t work out-of-the-box if your pen drive is MBR-formatted: the installer will fail saying it is unable to mount root. It is due to the fact that the installer tries to mount a partition by its name and the name which is specified is too long for an MBR-formatted pen drive. To workaround it:

  • Set up your pen drive as usual (e.g., with UNetbootin)
  • Open ‘Disk Utility’ and unmount the drive; then change the partition’s name to something short like ‘F18’.
  • Follow the instructions for DVD set in the previous paragraph
  • When editing the boot command line, look for the name of the boot partition – it should be in the form inst.stage2=Fedora%20… and replace the string after the ‘=’ with the name of your partition (F18).

Proceed with the install as usual. (Note: the new anaconda is rather unstable and the user experience is quite screwed – be prepared). In ‘Software Selection’ only chose ‘Base install’ and unselect everything else (you will still get over 200 packages).

Boot into F18 and add the necessary tools:

yum groupinstall 'Development Tools'

You’ll need OpenSSL:

yum install openssl-devel

Make a new directory and fetch everything the X server needs, but do not install it (yet):

cd /var/tmp
yum --downloadonly --downloaddir=/var/tmp install xorg-x11-drv-sis

When downloading completes, move the X.org package and the drvers away (we’ll need them later), then install everything else:

mv xorg-x11-drv* ..
mv xorg-x11-server-Xorg* ..

Install all other RPMs:

yum install *rpm

For the RPMs we moved away, only put them into the database without actually installing:

cd ..
rpm --justdb -ivh *rpm

Clean-up:

rm -rf tmp/*rpm
rm -f *rpm

Prevent yum from updating X packages, blacklist them in /etc/yum.conf:

exclude=xorg-x11-*

Get the sources for X.org and the drivers; we’ll use the 1.11.4 release from early 2012 which is known to work and verisons for the dribvers from the similar time:

wget ftp://xorg.mirrors.pair.com/individual/xserver/xorg-server-1.11.4.tar.gz
wget ftp://xorg.mirrors.pair.com/individual/driver/xf86-video-sis-0.10.3.tar.gz
wget ftp://xorg.mirrors.pair.com/individual/driver/xf86-input-keyboard-1.6.1.tar.gz
wget ftp://xorg.mirrors.pair.com/individual/driver/xf86-input-mouse-1.7.1.tar.gz
wget ftp://xorg.mirrors.pair.com/individual/driver/xf86-input-evdev-2.6.0.tar.gz

For the X server, uncompress the xorg sources and configure them like this:

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var

You may need to install several more ‘-devel’ packages; when the configure script tells you a package is missing (<PACKAGE_NAME>), use this command to find out the RPM name, then install the RPM file with yum:

yum provdies */<PACKAGE_NAME>.pc

Finally, make and install Xorg.

For the drivers, uncompress them one by one and configure them like this:

./configure --prefix=/usr

Then make and install them.

Now you can continue installing your preferred desktop environment; since my choice is MATE:

yum groupinstall 'MATE Desktop'

Reboot and enjoy your accelerated X server!

This entry was posted in Нули и единици. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.