[Fresco-devel] Re: Lots of Video drivers. (te quieres hw acceleration?)

Nathaniel Smith <[email protected]>
Newsgroups gmane.comp.video.fresco.devel
Message-ID <[email protected]>
On Thu, Sep 05, 2002 at 04:53:55AM -0700, J. Imlay wrote:
> 
> Hello,
> 
> I have read most of the stuff on the berlin projects web sight (well I
> shouldn't say most, but a lot of it) and I really don't know what to
> think of it, in particular, I like everything but the SVG that just
> doesn't make cence, pixel based is a good thing. It might just be the way
> I think about things. If you could explain why, or because you are
> probably quite busy, tell me where I can find why, I could possibly change
> my mind about the next bit.

Regarding SVG: not using vector graphics just doesn't make sense :-)
There are several related reasons, at different levels.  One is simply
aesthetic -- vector graphics can be anti-aliased, cleanly rotated, and
generally made to look nice.  Of course, all this can be done with a
pixel-based server as well, but only if the app does it by hand --
which takes us to the next point: apps are all in vectors anyway --
they're full of straight lines, smooth curves, gradients, text, and
so on.  This stuff starts out in vector form, and while you can cache
the raster versions, it makes them non-editable -- so someone has to
keep track of things in vector form anyway.  It could be the server,
or it could be a client-side toolkit, but it has to be done.  And it's
more efficient to do it in the server, and in Fresco we render
everything in the server anyway (there is no client side toolkit), so
it has to be in the server, so we might as well be the normal mode of
operation.  Then there're technical reasons -- vectors are strictly
more powerful a representation than rasters, in the sense that
anything you can do with a raster you can do with a vector, but not
everything you can do with vectors can you do with rasters.  In
particular, you can take advantage of hardware acceleration, and you
can render at different resolutions (which is going to be massively
important within a few years, once IBM starts producing those 300dpi
monitors they've been working on -- I have a suspicion the main reason
this sort of thing isn't available yet is that Windows/MacOS were
still raster-based, and therefore couldn't handle that kind of
resolution).  Finally there are the architectural reasons, and these
are in some sense the most important -- because everything on the
screen is vector based, we can freely embed chunks of the scene graph
in each other, and rendering, event handling, and so on, all work
seamlessly.  This would be nigh-impossible to handle elegantly or even
accurately with a raster-oriented setup, and the ability to endlessly
layer and embed pieces of apps is central to our architecture.

Oh, and we get resolution independence, so you can display things in
real sizes, which fixes a really stupid UI misfeature.  There's _no_
reason upping your resolution should shrink your desktop, and if you
want more screen estate, vectors let you simply shrink everything on
the desktop, whether you raise your resolution or not.

So, uh, I'm not really seeing any arguments on the pixel-based side of
things, but maybe you have some?  :-)

> I am working with the XFree86 Drivers and creating an abstraction layer
> that is like Xfree86 with out X. In otherwords, it uses the XFree86 binary
> video drivers and hardware acceleration, but it's not a program, it's just
> part of a larger project I am toying with. (a micro kernel based windowing
> system, for me. And who ever else likes it if such peoples exist)

Neat.

> What I'm offering is to work with you or whoever else on your team
> that would be more appropriate, to get the level of hardware support
> in Berlin EQUAL to that of XFree86, and keep it there. (this
> includes both 2D acceleration and 3D on hardware that supports it,
> but I don't know much about the 3D because it's so muckied up with
> GLX) You probably all ready know this, but that gets you aframe buffer
> with what ever supported acceleration features that particular driver
> offers.
> 
> Does this seem like something you'd be interested in?

Definitely something we're interested in, though perhaps we're not the
people you should be talking to directly.  Our general policy has been
to target whatever drivers were around (currently SDL and GGI are
well-supported, with some buggy support for GLUT, DirectFB, etc.), and
we'd generally like to avoid the way X sucked all graphics support
into itself, so that the only way to get decent graphics is to run
under X.  (_Why_ do Quake etc. require X?  Loading up X just to play
a full-screen game that needs all the memory/CPU it can get is
absurd.)

So our ideal architecture would have one library/framework/whatever
that provides good, solid, accelerated graphics support on the
console, that we could then use like any other program.  This way
everyone gets decent drivers, we get to spend our time thinking about
widgets instead of control registers and DMA buffers, and we don't
even have to run the server as root.

On the other hand, we'll take whatever we can get :-)  You might
consider talking to the KGI guys (kgi.sf.net), who have been working
on providing a real kernel-based graphics framework for years, but I'm
not sure how they're doing these days, and it sounds like your plan
could provide payoff rather more quickly than theirs, so don't let
their existence stop you.  Another possibility is that you should be
working those graphics drivers into a GGI backend, GGI already being
quite portable with a clean API -- that might benefit a lot of people
besides us.  Or, if none of these are viable, for whatever reason, I'm
sure we'd be interested in targeting the drivers directly; we're
already set up to plug-in new driver backends, so this wouldn't be
all that hard.

Good luck.

-- Nathaniel

-- 
The Universe may  /  Be as large as they say
But it wouldn't be missed  /  If it didn't exist.
  -- Piet Hein

This email may be read aloud.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.