Hi all,

I thought I'd take a little time to write down some recent thoughts of
mine regarding the state of graphics (2D, 3D, and video) in Linux.  I'm
by no means an expert on the subject, though I have been dipping my toes
in things here and there.  Hopefully, this will get people talking,
especially if I said something wrong ;-)

For a long time, I've been frustrated with the levels of development in
many areas.  Fortunately, I think things are making a big turnaround,
thanks to some relatively new developments in the graphics arena. 
Anyway, like I said, I'm not an expert, but I thougt it would be good to
try and figure out the current state of some of this stuff, as well as
where it's all going.

Many of us have taken the time to play with XFree86 4.0.  I know that I
tried out a 3.9 release last spring, though I didn't get a chance to
play with many of the newer features until just recently.  Sometimes,
this is just because programs don't support them yet.  (Some of these
features I'll mention have been available on commercial X servers for a
while, but I don't know of many people who use those..)

Probably one of the most anticipated features of X 4.0 was the addition
of Xinerama.  Xinerama added the long-missing feature of multi-display
support.  Considering that MacOS had this ability eons ago, we're just
catching up.

I don't know about the rest of you, but I get very hung up on making
sure that things are displayed in the way that they should be
displayed.  X has given me many headaches in this area, but fixes are
still coming in.  One thing that excited me about X 4.0 was the expanded
support for gamma correction.  Unfortunately, I know that not all cards
are able to do this.  I have an old Trio64-based card at work (that I
really should get rid of, but that's another story) that apparently
doesn't support gamma correction.  My G400 at home, on the other hand,
does support gamma correction.  While I can't say that it makes
everything suddenly display perfectly, I will say that it definitely
improves the viewability of newly scanned images.  Many of you have
probably been disappointed by scanned images that appear very dark.  For
me, it turned out that they had been scanned just fine -- the problem
was just that my monitor was not displaying them correctly.  If you've
come across similar problems, I encourage you to check the `-gamma' flag
for X.  (This may be one area where the free Unixes have pulled ahead of
other OSes).

For the gamers in the crowd, the biggest addition is probably the
combination of DRI (Direct Rendering Infrastructure) and an integrated
OpenGL implementation.  DRI has been one of the `big things' that I've
been peeking at every so often over the last year.  In cooperation with
a kernel module (the Direct Rendering Manager), DRI allows programs to
communicate much more freely with the 3D acceleration hardware on modern
machines, while still integrating the security that we expect from
Unix-like systems.  Previously, it was difficult to get high speed
graphics while also allowing normal users (not root) to play the fun
games that are out there today..

An emerging area of entertainment via the computer is the playback of
movies, both from online sources and from local media like DVDs.  One
important component in modern video playback on computers is the YUV
overlay.  YUV overlay has two big parts to it.  The first is that it
converts source video encoded in Luminance and Chrominance into video
consisting of Red, Green, and Blue.  The second part involves scaling
the image (this is also called BES, for Back-End Scaler) to a desired
size.  This allows video window to be maximized to the whole screen
without any extra strain getting placed on the CPU.  Many of the Open
Source video players out there have already implemented YUV overlay, and
I believe that the newer releases of SDL (Simple DirectMedia Layer, made
by Loki, and used in lots of stuff) support it.  Who knows when other
companies like Real will start using it.  The overlay system is also
what allows cards such as the G400 to display video fullscreen on the
second head (which is often hooked up to a TV).  Hopefully the necessary
tweaks to get that to work will be discovered shortly..

Another kind of overlay (I'm not sure if it's related to YUV overlay or
not) is the ability of X 4.0 to accept connections from programs that
need to run at 8 bits per pixel (PseudoColor), while the rest of your
desktop is running at a much higher bit depth (probably 24 or 32 bits). 
This usually occurs within business environments where you have to run a
piece of commercial software that was never rewritten with the ability
to handle higher bit depths.  Most people won't need it, but this is
another area where Linux et al are again on par with commercial X
servers.

One of the most recent advancements in the Linux desktop is the addition
of the XRender extension.  XRender allows for much better display of
fonts and line graphics.  It supports anti-aliasing (or something
similar, I'm not exactly sure), and even supports something similar to
Microsoft (not quite sure it's an invention or not) ClearType, which
improves readability on LCD panels by individually accessing the RGB
segments of a pixel.  Support for XRender is very limited right now,
though many people in the KDE/Qt and Gnome/Gtk+ camps are actively
trying to add support.

Just a few days ago, I heard about a new graphics library created by
Raster (one of the original developers of Enlightenment) called EVAS. 
I'm not sure what the name stands for (if anything), but if the buzz
around it is correct, EVAS could drastically change the way we use our
desktops.  From what I understand, EVAS is an attempt to much more fully
utilize the features of modern graphics cards.  The end result of EVAS
is probably going to be very similar to what Enlightenment did for the
desktop -- much more eye candy.  The good thing about EVAS is that it is
*fast*.  Hardware acceleration can do wonders.  Hopefully, the rumors
are true...


-- 
 _  _  _  _ _  ___    _ _  _  ___ _ _  __   Zen T-Shirt: 
/ \/ \(_)| ' // ._\  / - \(_)/ ./| ' /(__   Enlightenment Available  
\_||_/|_||_|_\\___/  \_-_/|_|\__\|_|_\ __)  -- Enquire Within. 
[ Mike Hicks | http://umn.edu/~hick0088/ | mailto:hick0088 at tc.umn.edu ]