[haiku-development] S3 Video Driver

  • From: Gerald Zajac <zajacg@xxxxxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Tue, 20 May 2008 14:16:12 -0400

The S3 video driver has finally been completed. If the time spent developing the s3savage video driver is included, it has been a very long road; however, much of it was a learning experience since I knew virtually nothing about video drivers and video chips before developing the s3savage driver.


Anyway, this S3 driver is intended as a REPLACEMENT for the s3savage driver, and I've chosen the names "s3" and s3.accelerant" for the driver and accelerant. The attached zip file contains the source code and jam files for this driver. I believe that the jam files are setup correctly; however, I have never used them since I do not have a build system for Haiku that works.

In addition to supporting the same Savage chips as the s3savage driver, the S3 driver also supports the S3 Trio64, Trio 3D, and Virge chips. It also has the following improvements and fixes for the Savage chips:

1) The common accelerant code is used for creating the mode list.
2) Reads EDID info for use in creating the mode list.
3) Fixed some problems with the Savage 3D, Savage MX, ProSavage, and Savage 2000 chips.

#1 applies to all chips handled by this driver, and with regard to #2, all the Virge and Trio 3D chips also attempt to read the EDID info. Both Trio 3D chips successfully read the EDID info, but only the Virge VX successfully reads the EDID info.

The list of chips supported by this driver is:

8811    * Trio64
8811    * Trio64 V+
8814      Trio64 UV+
8901    * Trio64 V2/DX/GX

5631    * Virge
883D    * Virge VX
8A01    * Virge DX/GX
8A10    * Virge GX2
8C01      Virge MX
8C03    * Virge MX+
8904    * Trio 3D
8A13    * Trio 3D/2X

8a20      Savage3D
8a21    * Savage3D-MV
8a22    * Savage4
8a25      ProSavage PM133
8a26    * ProSavage KM133
8c10    * Savage/MX-MV
8c11      Savage/MX
8c12    * Savage/IX-MV
8c13      Savage/IX
8c22      SuperSavage/MX 128
8c24      SuperSavage/MX 64
8c26      SuperSavage/MX 64C
8c2a      SuperSavage/IX 128SDR
8c2b      SuperSavage/IX 128DDR
8c2c      SuperSavage/IX 64SDR
8c2d      SuperSavage/IX 64DDR
8c2e    * SuperSavage/IXC 64SDR
8c2f      SuperSavage/IXC 64DDR
8d01      Twister PN133
8d02    * Twister KN133
8d03      ProSavage DDR
8d04    * ProSavage DDR-K
9102    * Savage2000

The first column contains the chip ID's, and the second column contains the chip names. The names preceded by an asterisk, are chips that have actually been tested. Except for the SuperSavage and the Twister chips, I have personally tested them under BeOS, Zeta, and Haiku; and with a few exceptions listed below, they perform quite well. The SuperSavage was tested by Ronny Wisor and Meanwhile; whereas, the Twister chip was tested by Rudyk Alexander aka totish.

The only problems found with the chips are:

1) With the Virge VX chip, the hardware cursor disappears when the resolution is set to 640 x 480. Since Haiku uses a software cursor, this is only a problem for BeOS and Zeta.

2) The Savage 3D and Savage MX chips perform rather poorly. In fact most of the Trio and Virge chips perform better. If the Savage 3D is stressed, it sometimes locks up.

Best regards,
Gerald

Other related posts: