Re: SVGA kernel chipset drivers.

Jason McMullan (jmcc@yop)
5 Jun 1996 15:56:28 GMT




Ahemm....

The GGI concept (the 4 major pieces):

1) Kernel driver
2) User-space library
3) SVGAlib emulation library
4) GGI-based X server


1) Kernel driver

The kernel driver is about 5k-30k in size. It provides:
*) Mode switching
*) mmap() support
*) Multiple simultaneous graphics and text consoles
*) IOCTLs for acceleration features. If any.
(ie the VGA driver I wrote has no acceleration,
but some of the S3 drivers have bitblit, font, spline, etc)

*) Proprietary vendor support: -
ie Matrox makes a 'millenium.o', Samsung provides a 'FM590-17.o',
and it's a simple matter of setting /etc/conf.modules to:

alias gfx-card /opt/matrox/millenium.o
alias gfx-monitor /opt/samsung/FM590-17.o

*) Kernel independence, if possible
(we would like to support FreeBSD and any others
that have loadable modules)


2) User-space library

The library (call it libggi for now) is about 200k-400k in size. It provides:
*) A full API
*) Emulation for acceleration features not supported by your card.
(ie I can write a spline drawing app for my VGA, and not have
to change a line of code to get full acceleration under, say,
a Mach32 card)
*) Mouse/keyboard/etc handling

3) SVGAlib emulation library

Simply drop in this 50k-100k library in /usr/lib, (and the a.out version in
/usr/i486-linux-aout), run ldconfig, and DOOM, Maelstrom, etc. work.
Perfectly.

4) GGI-based X server

The XFree86 group could make an X-Server based on the libggi, and
would have these advantages:

*) Never have to hound vendors for driver specs again
(especially if FreeBSD can be brought in on the GGI)

*) Multiple X servers on the same machine - Test X11R7 while you
use X11R6 to develop!

*) Smaller XServer binaries (# X disks goes from 7 to 4!)