Subject: Kernel Graphics Interface
To: None <tech-kern@netbsd.org>
From: =?iso-8859-1?q?Pedro=20F.=20Giffuni?= <giffunip@yahoo.com>
List: tech-kern
Date: 02/02/2003 02:58:37
Hi gang;

Someone suggested me to write something about KGI to
this list. I'm not very used to NetBSD or kernel
hacking in general, so my description will be
deliberately not very technical.

1) How this started.
The GGI project was born on Linux with the idea of
generating a complete graphic system for multiuser
unix-like systems. There were also security concerns
with the way XWindows and svgalib adressed memory. The
Berlin consortium and GGI were born at the same time.
The initial release was under the GPL to gain
acceptance of the linux crowd but after a flamewar
Linus killed this attempt. The old version of GGI
continued living for somewhile in the form of KGICon
(a set of graphic drivers) and EVStack (a terminal
emulator). I don't know much more on this stage since
the license was not acceptable for FreeBSD.

2) The redesign.
For convinience, GGI moved to an X11 style license and
got split into two projects: Kernel Graphics Interface
(http://kgi.sourcefourge.net/) and GGI (only a
graphics library). Both projects had a period of slow
development but with a lot of design being made.
Steffen Seeger, the KGI project leader, designed a
complete driver structure, with some influence from
project UDI (http://www.project-udi.org/). KGI is in
principle platform independent, and permits the
building of graphics driver using building blocks with
chipsets. A driver from one platform should work on a
different platform just be recompiling it (we are
about to prove that in FreeBSD). Steffen also spend
some time studying how X does things and he has a
prototype called PhoeniX where KGI is the base system.
Performance is expected to be similar to that of
native X.

3) FreeBSD's rationale
Since XFree86 4.x has been producing multiplatform
modules we have always considered itīs better to have
multiplatform userland drivers than to have
uniplatform kernel drivers. Many graphic card
developers have complained about userland drivers
though and sooner or later there might be a tendency
to do that in kernel.
There are other tendencies that make kernel support
for graphics very desirable. Some developers have
recognized that Linux has failed in the desktop market
precisely do to it's unfriendliness and lack of
graphic support. Many platforms have by default
graphic support and new platforms are planned that
might not have a text console.

4) The current state.
For some months Nicholas Souchu from FreeBSD has been
working on porting KGI to FreeBSD. While he has been
finding Linuxisms, he has also been looking into
incorporating some FreeBSD especifics, in particular
newbus. There has been a lot of discussion on the
kgi-devel@sourceforge.net list about modifications to
memory management for other systems. There was also a
preliminary discussion in FreeBSD-arch towards
modernizing the console, also possibly porting wscons
to FreeBSD. 

Even when we are few developers from the BSD side,
there is a first port of KGI to FreeBSD, we expect the
KGI key developers to adopt FreeBSD as their primary
platform. More information on this port can be found
here:
     http://people.freebsd.org/~nsouch/ggiport.html
Future steps include defining a good interface (we are
looking at IOkit but nothing has been decided) and
porting other graphic libraries like MGL and Allegro
to support the accelerated infraestructure.

NetBSD developers would be very welcome to contribute
on the lists. Graphic developers are not easy to find
in the BSDs, but the IMHO best graphical UNIX-like
systems right now (MachOS X and IRIX) are based on BSD
4.4.

best regards and see you in kgi-devel,

    Pedro.

______________________________________________________________________
Yahoo! Cellulari: loghi, suonerie, picture message per il tuo telefonino
http://it.yahoo.com/mail_it/foot/?http://it.mobile.yahoo.com/index2002.html