> > Bitmapped fonts don't compress that well because there isn't
> > much repetition :-( And these days they are likely to be
> > antialiased pixmaps.
> >
> > I think we need somebody to sit down with a profiler for the
> > X server on a modern Linux distribution and find out what
> > really goes on.
> 
> Now, that would be an _excellent_ idea.  Maybe another list member
> will volunteer to do it or contact GNOME and KDE people and have this
> done, just to see...
> 
> I've dug very deeply into X for many years, so the results will make
> sense to me, although they may surprise me.  :)
> 
> Actually, I'm betting it's mostly PutImage and CopyArea.  X lacks
> primitives to render many of the things people want to see in these

It depends which API you use. If you use good old XAA, you'll hit those
2 above and fill rectangle too. You'll also hit the new Render hooks
with anything modern, but then, accelerating Render with XAA is awkward
at best.

If you use the new EXA API, it's a bit different. EXA is very agressive
at using video memory as a pixmap cache, so it will has 2 important
functions: UploadToScreen & DownloadFromScreen. It has  2 simple
primitives: Copy and Fill (local blit and color rectangle fill), and It
has one complex primitive: Composite, which can implement pretty much
all of Render primitives.

Composite/Render is what you hit the most nowadays on Gnome/KDE type
desktops, especially if you start using X Compositing extension & a
compositing manager to do things like alpha blending. But also, more
simply, when using anti aliased text. If you are using flat panels and
try to use subpixel AA for text, you'll hit component alpha blending
which is quite difficult to accelerate with current gfx cards. The
Render hook also can do transforms using matrixes.

With current EXA drivers, this is all mostly implemented using the 3D
engine (except Copy/Fill, though they could be too).

There is little point nowadays in implementing Bresenham, polygon
drawing, arcs, etc... those things aren't used anymore, so unless you
wnat a 10000fps xtank, there is little point in doing a full featured
"old style" 2D engine. It's fairly important to implement a good Render
acceleration though. This is typically done using the 3D engine (which
gives you the matrix transformations pratically for free), alpha
blending, if possible component alpha, etc...

If you want more details, you should really move that discussion to xorg
devel list or pop up on #freedesktop on freenode, and discuss that with
Keith Packard and/or Eric Anholt...

Ben.


_______________________________________________
Open-graphics mailing list
[email protected]
http://lists.duskglow.com/mailman/listinfo/open-graphics
List service provided by Duskglow Consulting, LLC (www.duskglow.com)

Reply via email to