Index: [thread] [date] [subject] [author]
  From: Olivier Galibert <galibert@pobox.com>
  To  : ggi-develop@eskimo.com
  Date: Sun, 23 Aug 1998 04:07:03 +0200

Re: Can I do that ?

On Fri, Aug 21, 1998 at 03:03:55PM -0700, Jon M. Taylor wrote:
> On Fri, 21 Aug 1998, Marcus Sundberg wrote:
> > I think what he meant is that a KGI driver should be accompanied by
> > a special libbggi driver-library that is optimized for that driver.
> 
> 	IMHO this is a bad idea.  LibGGI is NOT the only userspace
> library/platform which can have KGI-using driver-libraries.  Suppose
> someday XGGI, Mesa, Berlin, DirectX, LibGGI2D, LibGGI3D, LibGWT and God
> only knows how many more have their own specialized driver-libs.  Should
> we include *all* of them with the KGI drivers?  And there is another
> issue, too.  If we ever expect to get into the kernel, we can't have KGI
> drivers dragging around userspace code.  I guarantee you Linus won't
> accept that.  Package the driver-libs with the userspace code that uses
> them.

When is the lastest time you used syscall()  directly instead of going
thru the libc?

libggi/ggi2d/ggi3d are the  equivalent of the  libc.   They present to
mere mortals   (i.e.   higher  level  libraries  or  applications) the
semantics the kernel interface gives.  XGGI, Mesa, Berlin, DirectX and
GWT[1] should *never*  *ever* go to  the KGI driver directly, for  the
same reason than programs and libraries use open() and not syscall(5).

Now, if you  want to do a *really*  accelerated KGI driver for a card,
you need   a specific libggi*<->kernel   interaction.   This means the
kernel side of the driver is tied to the user side.  The KGI interface
is something fuzzy which is going to  change a *lot* through time, and
probably in  a card-specific way.  Hence, each  time you release a KGI
driver, you're  going to have to  release  the card-specific subset of
all ggi* libs too.  And the release cycle  of said drivers is going to
be independant from the release cycle of the full libs.

Actually,  the full libs define  the  API and a default implementation
which  probably   goes  all the  way     to dumb  framebuffers.    The
driver-specific   additions plug in   that   to use  the card-specific
accelerations.  Because  of the plugging   system you can upgrade  the
full libs independantly   from  the card-specific  addons.   You can't
upgrade  the card-specific   addons independently from  the associated
kernel-level driver.

BTW, the kernel drags  around a  *lot*  of userspace code.  The  libc,
init, fsck, *mount,  shutdown, cyrix utilities... comes  to mind.  And
there were a lot more before the advent of /proc.

  OG.

[1]  Is  there any  hardware out  there  that  provides functionnality
implemented in gwt?

Index: [thread] [date] [subject] [author]