> > 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)
