RFC: dummy driver RandR improvements?

Antoine Martin antoine at nagafix.co.uk
Wed Jan 22 02:35:28 PST 2014


Hi,

To get xpra[1] to mirror the client's screen configuration, we use the
dummy driver as "Xdummy"[2].
This works well enough generally, but there are a number of niggling
issues we would like to fix:

* Limited RandR support:
http://lists.freedesktop.org/archives/xorg-devel/2011-October/026596.html
We can use XRRSetScreenConfigAndRate with some pre-defined resolutions
in xorg.conf, but we cannot use XRRSetScreenSize as this is not
supported by the dummy driver. This means that the server resolution
often does not match the client's, and also causes some problems with DPI:

* DPI: although we try to set the "Xft.dpi" property to a value suitable
for the client, there are many applications out there that will ignore
this value and query the X11 server directly and calculate the DPI
themselves.. (ie: Java)
Since the X11 server assumes that the virtual screen's physical
dimension is fixed (set in xorg.conf), the dpi will vary widely if you
connect from a VGA client or a 4K client... Even though most of the
time, we want 96dpi or so.

* Multi-screen setups: ideally, we want to mirror the client's layout
down to the number of screens and their exact dimensions, but again the
dummy driver only supports one screen, and using Xinerama is not a
viable option (no randr, etc). This causes problems with applications
that go "fullscreen" especially.


I believe the first two problems can be resolved by adding
XRRSetScreenSize support to the dummy driver. I don't think this is too
controversial, is it?
Any code pointers would be much appreciated. Is there a driver I can use
as a clean reference implementation?

The multi-screen issue is more tricky, using Xinerama on top of Xephyr
is not an option since it would not be dynamic. libfakexinerama[3] is
unreachable right now ( "Bad Gateway"). Anyway, LD_PRELOAD hacks are
useful but not really suitablefor use in production.
Some window managers have their own way of faking xinerama screens:
enlightenment [4] does. Some of the proprietary drivers have their own
fake xinerama options too.
Wouldn't it make sense to unify this and do it more properly somehow? Or
can you perhaps suggest a different approach we can take?

Thanks
Antoine

[1] xpra
http://xpra.org/
[2] Xdummy
http://xpra.org/trac/wiki/Xdummy
[3] libfakexinerama
http://home.kde.org/~seli/fakexinerama/
[4] enlightenment fake xinerama screens
http://git.enlightenment.org/core/enlightenment.git/commit/x-ui.sh?id=7544376cbd2a344a13d50c38f39d9e56aea02c32
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.x.org/archives/xorg-devel/attachments/20140122/b8c2d914/attachment.html>


More information about the xorg-devel mailing list