GTK+ performance without RENDER

Federico, cworth and I came up with a patch to Cairo that greatly improves the performance of GTK+ applications on X servers without the RENDER extension.

In this case the profiler didn’t really help much, it just showed that all of the time was spent in the X server. The real progress was made when Federico just made a guess on IRC, asking about how gdk_window_clear_backing_rect() goes through to cairo, and how the RENDER fallback code worked.

I think we were very lucky here. It’s hard to know whether it’s worth investigating performance on X servers without RENDER. While some people care a lot about these configurations, it is tempting to just let them deal with it. That’s the “open source” way, right? However, I found it disappointing to see how easy Federico’s steps were to recreate the problem, how obviously broken it was, and how simple the fix seems to be.

4 Responses to “GTK+ performance without RENDER”

  1. Jon Dowland says:

    Is XRENDER the GL-dependent thing? I’m having a lot of trouble reminding myself what it is. If it was, I would have ranted as follows: “since there are very few open source 3D card drivers out there, I’d argue the open source way was *NOT* to make more and more of the desktop be useless without the proprietry software.”. Since I can’t figure it out, I will rant thusly instead: “xrender is one of those things where the authors and those responsible for the site etc. are, intentionally or not, making vast assumptions that people looking for their software already know what it is, how it works, what it needs, etc.”

  2. Billy Biggs says:

    Jon, RENDER is an X extension and is part of every Linux X server released in the past few years. It is not a GL-dependent thing. The problem I am describing is only an issue when using GTK+ applications on old X servers or thin clients, and maybe some Win32 X servers.

  3. Shawn says:

    how about looking at some of the currently implemented do-it-myself work arounds that are in use which seem to improve performance and comparing the approach they tkae. the work the guys from the enlightenment do come to mind, in that they seem to beable to achieve alot without have to rely on XRENDER. Basically Imlib2 seems able to achieve some decent performance, maybe some approaches they use can be used as well?

  4. Karsten says:

    FWIW a quote from the NVIDIA closed-source Linux driver README:

    Option “RenderAccel” “boolean”

    Enable or disable hardware acceleration of the RENDER extension. THIS
    OPTION IS EXPERIMENTAL. ENABLE IT AT YOUR OWN RISK. There is no
    correctness test suite for the RENDER extension so NVIDIA can not
    verify that RENDER acceleration works correctly. Default: hardware
    acceleration of the RENDER extension is disabled.