Index:
[thread]
[date]
[subject]
[author]
From: Marcus Sundberg <mackan@stacken.kth.se>
To : ggi-develop@eskimo.com
Date: Thu, 27 Aug 1998 16:30:01 +0200
Re: new design (Re: LibGGI2D, LibGGI3D and targets)
Thomas Tanner wrote:
> Jon M. Taylor wrote:
>
> > > That would make LibGGI useless.
> > By itself, yes, except maybe for the input stuff. Again, I
> > thought that was the idea. I thought that LibGGI would handle the "glue"
> > code - the concept of a visual with context, the generic API extension
> > handling, the DirectBuffer stuff, and other such common, foundational
> > code. If this is *not* the case (which appears to be true), I would like
> > to advocate that it become so. Maybe not right now, but someday. See
> > below for more on why I think this is a good idea.
>
> Jon, you're absolutely right. You're having _exactly_ the same thoughts
> like me.
> I often enough argued for moving all 2D functionality out of libggi
> (even directbuffer), moving events completely to libgii,
> extensions having their own context rather than storing their data in
> visuals
> etc.
>
> That's why I've written a specification for a new GGI design.
> Here are some excerpts of the README file and specification,
> which outline some of the differences to the "official GGI design":
[snip]
I'm not saying that you're system is bad, actually I think it's
quite good. But you're forgetting one important thing:
The _main_ purpose of GGI has always been to provide safe,
non-suid, hardware accelerated graphics for Linux, and any other
system that wishes to use the KGI drivers.
The problem is that it'll take time to write drivers and make the
system stable. And when that's finally done we still have to
convince application developers to port their apps to a completely
new API.
That's where libggi came into the picture. By having a small,
simple to use library which not only would run on KGI, but also
run on all the existing graphic targets on Linux, the hope was
that we could easily convince application developers to write
for this library instead of writing different versions for X,
SVGAlib and XFree86 DGA.
The reason this hope hasn't come true yet is simple: libggi
has been constantly changing, didn't have a defined API with
userdocumentation from the beginning, hasn't been as stable
as one wants a graphics library to be, and lacked important
things like real double buffering.
But now we've fixed the weird quirks that were in libggi,
most of the API is clearly defined (with some small things still
pending), and docs are being written. And as soon as Andy gets
back and we have agreed on all API issues we'll start ironing
out all the bugs.
Also, Linux 2.2 will be released any month now, and it will bring
fbcon to the masses. If we have libggi ready and running well on
fbcon by then there's a big chance that people will start using
coding for libggi.
If on the other hand we scrap the current design and start working
on a completely new one, the first thing that'll happen is
probably that someone writes a SVGAlib driver for fbcon, people
will continue to use SVGAlib, and we'll be stuck with that ugly
piece of a hack forever. :-(
For me it's VERY important that we get a stable release of libggi
out really soon now, and I certainly don't think scrapping the
current code will help any of the GGI project's goals.
Especially as there're some points in your new design that I find
completely incompatible with the libggi philosophy: every
application should run everywhere, without changing the source
and on the same architecture/OS - without recompilation.
(Example:
+ fallback API, but not a must
Also I don't get this at all:
+ direct access possible but not recommened
why???)
Also remember that libggi is NOT and never was intended to be
an advanced 2D/3D library. The single goal of libggi is to replace
SVGAlib, XFree86 DGA and XPutImage() for game/demo/multimedia
applications. If someone want's more functionality they have
two options:
Write a library that plugs into the libggi extension mechanism -
or write a library that doesn't.
And given that neither libggi2d or libggi3d are ready or have any
applications using them, there's nothing stopping you from
choosing the last option. Libggi, libggi2d and libggi3d have so
fundamentally different functionality that the gain of using
libggi as the base for the latter two is not very big.
To summarise:
* Libggi's purpose is to provide simple framebuffer access
and keyboard/mouse handling.
* The important thing for the GGI-Project right now is that we get
a stable version of libggi out as fast as possible. I doubt that
either libggi2d or libggi3d will reach version 1.0 in 1998 (even
if I'd be very happy if you proved me wrong), so they really
don't have much to do with this goal.
* If you don't like the libggi design, feel free to implement
another library core to use for libggi2d and libggi3d. They
provide completely different functionality from libggi so
there's no conflict here.
* MOST IMPORTANT OF ALL: Don't split the GGI-Project. We all have
the same long-term goal - to provide a good way to do all kinds
of graphics under UNIX, and other systems as well. Just because
we don't want the same thing doesn't mean we can't cooperate.
(If you think I'm overreacting here, you're probably right ;)
but I'd just hate to see a split because we couldn't agree on
something, and I wanted to get this said before it's too late)
//Marcus
--
-------------------------------+------------------------------------
Marcus Sundberg | http://www.stacken.kth.se/~mackan
Royal Institute of Technology | Phone: +46 707 295404
Stockholm, Sweden | E-Mail: mackan@stacken.kth.se
Index:
[thread]
[date]
[subject]
[author]