GLAMOR Core Rendering Code Gets Rewritten
Keith wrote to the X.Org developers' list on Tuesday evening, "This replaces all of the X core rendering code in glamor with shiny new stuff. This is the second time around for this code, it now passes the X test suite for Xlib chapter 9 (thanks to Eric's work making that run under piglit). And, it also now runs correctly when debugging with tiny FBOs tiling the pixmaps. There are two core X server bug fixes at the head of this list, followed by some simple fixes to the core of glamor. Then a pile of new rendering code, followed by the removal of some of the old."
GLAMOR is the much talked about X.Org 2D acceleration architecture lately that provides 2D acceleration using OpenGL in a universal way that's independent of any hardware-specific code. The Radeon HD 7000 series and newer uses GLAMOR with having no dedicated 2D code-paths within their driver while this universal means of 2D acceleration over 3D is an optional method for older AMD Radeon GPUs and all Intel graphics processors.
As shown by my recent Intel SNA vs. UXA vs. GLAMOR benchmarks (among other recent Phoronix articles), GLAMOR still generates a performance loss compared to hand-tuned 2D back-ends, but with these patches coming out lately -- largely by Keith Packard and Eric Anholt, both of Intel -- there's some significant performance improvements. Some 2D operations with the very latest GLAMOR code is now up to 800% faster while tuning is still happening. The GLAMOR code was merged into the X.Org Server 1.16 code-base that will be released this summer. If the GLAMOR performance can be more competitive against EXA/UXA/SNA, this will be a big win for X.Org driver developers as it will lead to easier maintenance of DDX drivers, shared improvements amongst the drivers, easier enablement of new graphics hardware, etc.
Among the "shiny new stuff" in these 20 patches by Keith Packard is a lot of new code for supporting the generating of OpenGL GLSL shaders on-the-fly, a new method for migrating pixmaps in/out of CPU memory, support for offloading more geometry computations to the GPU, and much more. In the end of the patch series it drops the 2,000+ lines of old rendering code from GLAMOR.