Why does the GTK3 vcl sal plugin default to SvpSalGraphics / software rendering?

Clemens Eisserer linuxhippy at gmail.com
Wed Feb 14 11:29:46 UTC 2018

Hi Tomaz,

Thanks for your time taking a look at this.

> Not sure what you mean software - it is using cairo, which is used for
> canvas in GTK 2/3 for example. Whatever that triggers on cairo's
> backend could be done in software and some code paths could trigger
> code path in X ....

This is what I initially assumed too, but it doesn't seem to be the case:

When compiled for GTK3 GtkInstance::CreateVirtualDevice always returns
a SvpSalVirtualDevice (instead of a CreateX11VirtualDevice), which in
turn seems to be unconditionally backed by a cairo image surface.
This is also what I am seeing in my profiles, as soon as I switch to
GTK3 all time is spent inside some cairo/pixman software loops.

Maybe this was done by accident and nobody noticed (except some
performance sensitive users) - but before trying to get X11/Xrender
accelerated rendering working, I thought whether maybe there are
reasons this was implemented this was.

> code path in X which could be performed on the GPU using Glamor (and
> the GPU data upload would kill any performance advantage you would get
> from doing that)

Currently, the X11/GTK2 backend seems to perform a lot better (despite
doing ugly things like XGetImage when extracting the AlphaMap) even
when layered on top of glamor, even with the XServer (and the
additional IPC it causes) in between.

Thanks and best regards, Clemens

More information about the LibreOffice mailing list