Linux Graphics News
The X.org Developer's Conference was held in Portland this September, providing a venue to discuss a range of topics relating to OpenGL, drivers, the X server, Wayland and Mir. Core X.org development has been in a bit of a lull, evidenced by the fact that there wasn't enough change to warrant a near-term 1.15 release of the server, but this is more than made up by increased progress made in Mesa at implementing OpenGL specifications.
Bug-fix point releases of numerous minor packages appeared this month. xorg-server 1.14.3 is probably the most interesting change here, as the 1.14 branch is being used in a number of Linux distros, and will be maintained as an important stable branch for some time to come. This release is mainly focused on backported input fixes by Peter Hutterer that makes touch support more usable, along with a few fixes for gpu screens and glx.
The xf86-video-intel releases are of note due to addition and then dropping of XMir patches from the driver, due to what the community perceives as a controversial management decision by Intel. Beyond that saw some work on the intel-virtual-output code, and continuing fixes to SNA (Sandybridge's New Acceleration) as they begin switching to SNA by default. UXA (Unified Acceleration Architecture) will remain available as an alternate AccelMethod settable via xorg.conf. SNA and UXA are 2D acceleration technologies unique to the -intel driver, in contrast to the EXA and older XAA technologies used in other open source drivers. Some distros, such as Arch and Ubuntu, already ship SNA enabled by default as it has proven to be faster than UXA and comparitively stable.
Chris Wilson posted his xf86VGAarbiter work to move VGA initialization from xf86 common code to the vgaHW module. VGA arbitration allows the X server to provide legacy VGA access via the kernel to multiple VGA devices.
At XDC was discussion about dropping support for XAA, and along with it XAA-only drivers. XAA (the XFree86 Acceleration Architecture) was introduced in 1996 and over the years many X drivers were introduced that use it; however these days it provides almost no speed advantage for modern graphics hardware and is largely superceded by EXA. Most of the widely used graphics drivers have converted to EXA (or UXA/SNA in the case of Intel), but some of the less actively maintained drivers have not evolved beyond XAA. This month Gaeton Nadon proposed patches to drop the -newport and -s3 drivers from the build. Other minor drivers like -sis and -ark received patches to fix up various ABI breakages and build issues. In the coming months we can expect seeing more of these minor drivers either be updated or dropped from X.org.
Discussion at XDC on timing of the xserver 1.15 release noted there has not been much feature development to warrant a near-term release. While there have been a number of bug fixes in the tree, the most important ones have been (or likely will be) backported to 1.14. It was decided to delay 1.15 to give more time for inclusion of feature work such as DRI3.
Adam Jackson is embarking on a rewriting of GLX, to eliminate large amounts of redundant or obsolete driver code. DRI1 is targeted for complete elimination.
Eric Anholt has been working on cleaning up the DRI drivers. Each driver used to link in a copy of mesa, which was very wasteful of disk space; dricore was introduced by Christopher James Halse Rogers a couple years ago to clean this up, resulting in 30 MB on-disk savings; this was made mandatory in 2012. However, this resulted in a 2-3% performance hit and some internal mesa symbols becoming public unintentionally. At XDC 2013, Eric proposed restructuring the package such that all the drivers are built together with the Mesa core. This will recover the lost performance, save even more disk space, and reduce the number of public symbols to just the driver entry-points. The remaining problems are solvable, and XDC participants agreed with the concept and plan. Eric has posted three large sets of patches to the Mesa mailing list this month to kick off this refactorization work.
nvFX, a high-language / file format for encapsulating drawing methods available from NVIDIA, was discussed at XDC 2013 for possible use with Piglit. It wouldn't necessarily make test writing any easier, but might be a way to tap into drawing algorithm wisdom from the larger graphics community, to provide additional avenues for testing.
The Mesa project has made great progress with catching up with support for the OpenGL spec, and as of August 2012 became one of the first shipping implementations of the new OpenGL ES 2.0 specification. In order to help make Mesa releases more shippable by distros they're moving from a 6-month to a 3-month release cycle. For Mesa 10.0, goals include OpenGL 3.3 (geometry shaders still need added) and some shader-related APIs. The planned dates for branching and release are Nov 1st and Nov 27th, respectively. For Mesa 10.1, a possible goal is compute shaders, which seem to be a highly requested feature. This release will target mid-January for branching, and mid-February 2014 for release. Beyond that, the team is looking at OpenGL 4.x specification support.
Mesa, NVIDIA, and AMD each provide their own implementations of /usr/lib/libGL.so.1, which historically have always conflicted with one another, leading to all manner of bugs. Generally, it means you have to uninstall and reinstall this in order to switch between FOSS and proprietary drivers. This becomes a problem with hybrid graphics, where you want to switch between GPUs on the fly. At XDC 2013, NVIDIA presented a concept whereby new vendor-neutral client API libraries are introduced, which wrapper access to vendor-specific libraries, libGLX_${VENDOR}.so.1 and libEGL_${VENDOR}.so.1. A libGL.so.1 would be provided with the vendor-neutral libraries which simply re-exports all the symbols from all vendors libGL.so.1's, and uses ELF DT_FILTER to resolve symbols provided via the neutral libGLX.so.1 and libOpenGL.so.1. The talk was quite well received, and agreement was reached that the set of vendor-neutral libraries would be maintained by the mesa project (although separate from the mesa package itself).
WaylandThe weston 1.2.2 release brings four fixes to critical regressions. Notably it fixes a crash when clicking on the titlebar, and a crash during evdev device cleanup. Other fixes to xwm, in-place touch screen coordinate calibration, fbdev compile breakage, etc.
The 1.2.91 releases of wayland and weston are development release candidates for the upcoming 1.3 release due end of September. Key features include:
- Send out events to all listeners for wl_pointer, wl_keyboard, and wl_touch from a client
- weston-launch rewrite. This lets weston-launch handle VT switching, providing more consistent and reliable error recovery
Other work planned for inclusion post-1.3 includes weston_view, clone mode, swap interval 0, and nested buffer pass-through.
In general, a lot of the development efforts this month continued to target Raspberry Pi support, automotive embedded support (IVI), and keyboard support improvements.
Neil Roberts proposed a set of patches for allowing nested compositors to use subsurfaces without blitting. Subsurfaces allow a client application to delegate an area of its window to be composited by Wayland. This can be used by video players, for instance, that need overlays for sub-titles and other content to be composited and blended together using hardware accelerated functionality for high performance. Neil's changes improve performance by avoiding bitmap copying during display.
At XDC it was mentioned that Fedora 20 will include wayland/weston as an optional component that can be selected via gdm. This is just a tech preview however, and not something of usefulness to end users. A fully working deployment may be more realistic for Fedora 21 / GNOME 3.12.
XDC also saw a presentation of Wayland current status, and a presentation by Christ Halse Rogers of Canonical's alternative, Mir. The latter presentation sought to find ways to better collaborate between the efforts, yet the general feeling appeared to be that the Contributor License Agreement that Canonical requires and differences in implementational approach make collaboration too difficult at this time.
CairoThere were no new cairo or pixman releases this month, so the latest versions are 0.12.16 and 0.30.2, respectively.
Krzysztof Kosiǹski's downscaling fix was merged to trunk after the development tree reopened. The downscaling bug occurs when raster images are included in an Inkscape drawing and then scaled smaller; the bug results in severe pixellation and image degredation. The fix is to use Pixman's new convolution functionality available in pixman 0.30 and in cairo master. For Ubuntu 12.04 users, I've packaged both these releases, along with the pixman downscaling fix in Inkscape's trunk PPA, and wrote a testcase for cairo. A VCS snapshot of Inkscape built against these packages is also available there, which can be used to verify the fix. This bug doesn't affect Inkscape 0.48, because that predates the move to Cairo as their backend renderer, but it does affect other applications besides Inkscape which use scaled bitmaps in their cairo-based graphics drawing code.
In discussion of features ready for inclusion in Cairo, Henry Song mentioned the cairogles branch that he has been working on. This includes adding gaussian blur, gl MSAA compositor support, drop shadow and insert shadow, and shadow caching. Upstream would like to recast the API for this, but a new design has yet to be announced so further work on upstreaming this branch is blocked on that.
Much work this month focused on improvements and cleanup to the test suite and documentation. Also, mime data improvements for the ps and pdf backends were added by Adrian Johnson including support for JBIG2 data. Alexander Larsson landed a patch series for adding support for device-scaled subsurfaces.
It sounds like a 1.14.0 release may be coming soon, although no dates have been mentioned, so perhaps in a month or two. The pixman downscaling fix is highly desired by projects like Inkscape, that want to allow shrinking of embedded bitmaps without the pixel corruption currently seen. So hopefully the release will indeed come soon.
Final ThoughtsSeveral major refactorings announced at XDC 2013 promise to solve significant deficiencies. The GLX rewrite, elimination of XAA and DRI1, merging the DRI drivers into Mesa core will simplify long term maintenance and drop legacy code that's no longer well supported. DRI3000 and the vendor-neutral GL libraries promise to solve fundamental architectural problems that have plagued users of X.org in composited environments. DRI3000, in particular, promises to bring desktop users some of the key performance benefits of Wayland without needing to transition off of X.
Meanwhile, Wayland is progressing steadily and is seeing porting activity by other projects, with several window managers and at least one distro committing development efforts towards supporting it. Wayland is also seeing notable uptake in niche areas such as automotive.
Upcoming Events- LibreGraphics Meeting: LGM2014 - April 2-5, 2014: Leipzig, Germany