Xpra: Ticket #56: add new resolutions to Xdummy on the fly - dummy driver needs randr support added?

Instead of finding the nearest match, we should just add the modeline, assign it to the output then select it. This would allow us to match the client's screen size exactly.

(somewhat blocked by #10)

Tue, 06 Dec 2011 19:32:08 GMT - Antoine Martin: attachment set

this patch would add a new mode to Xdummy so we can use it... but does not work

Tue, 06 Dec 2011 19:37:34 GMT - Antoine Martin: owner, status, summary changed

After asking xorg-devel, it would seem that the dummy driver does not support randr - or at least not fully.

The patch above attempts to replicate xrandr's command line functionality and even includes its own modeline calculator, so from xpra's side it is pretty much ready.

Mon, 20 Feb 2012 19:32:43 GMT - Antoine Martin: component, milestone changed

Fri, 04 May 2012 09:58:26 GMT - Antoine Martin: milestone changed

Not heard back, and less critical now that the default config contains many of the typical resolutions found on desktops and even android devices.

Fri, 21 Sep 2012 04:20:43 GMT - onlyjob: attachment set

refreshed patch to apply over 0.6.1

Sun, 07 Oct 2012 09:17:07 GMT - Antoine Martin:

Closed #186 (duplicate - some info there)

Mon, 09 Sep 2013 19:06:50 GMT - Thomas Koch: cc set

Wed, 22 Jan 2014 11:27:58 GMT - Antoine Martin:

Asked xorg dev again: RFC: dummy driver RandR improvements?

Some other links:

Tue, 22 Apr 2014 14:34:43 GMT - Antoine Martin:

Forgot to update this ticket:

Fri, 21 Nov 2014 17:49:08 GMT - Antoine Martin: milestone changed

Nicolas Boichat has just posted X11 patches to do exactly this!: PATCH dummy: Add support for custom resolutions (RandR 1.2)

Maybe this will fix #728 We'll just have to ensure this works with DPI (#163) - that we deal with #732 if possible, see also #349

Mon, 26 Jan 2015 08:52:19 GMT - Antoine Martin: milestone changed

Looks like the discussion of what to do for randr 1.2 support is ongoing: Cleanups and RandR 1.2 support, with different implementations suggested.

And so this will have to wait until this gets merged in one form or another, and maybe we only have to package it then which would be great (assuming that the new code can be built against older servers that is...)

Mon, 18 May 2015 15:23:19 GMT - Antoine Martin:

Maybe this can help us: RandR 1.5 Brings Monitor Objects & Tile Support For X.Org

Tue, 09 Jun 2015 08:10:03 GMT - Antoine Martin:

Re-post: xvfb: add randr support (v2)

I think we should update the dummy driver with the same changes.

Thu, 18 Jun 2015 16:12:08 GMT - Antoine Martin:

In one of the responses to the patch above: PATCH xf86-video-dummy 0/6: Cleanups and RandR 1.2 support - which is a better approach IMO.

Wed, 16 Sep 2015 11:23:13 GMT - Antoine Martin:

See also #969, in particular the ramdac fix in ticket:969#comment:3

Wed, 16 Sep 2015 11:49:47 GMT - Antoine Martin: attachment set

dummy randr 1.2: patch 1 Remove pointless empty functions

Wed, 16 Sep 2015 11:50:09 GMT - Antoine Martin: attachment set

dummy randr 1.2: patch 2 Delete XV stuff

Wed, 16 Sep 2015 11:50:30 GMT - Antoine Martin: attachment set

dummy randr 1.2: patch 3 Delete dPtr->screenSaver

Wed, 16 Sep 2015 11:50:47 GMT - Antoine Martin: attachment set

dummy randr 1.2: patch 4 Remove DGA support

Wed, 16 Sep 2015 11:51:18 GMT - Antoine Martin: attachment set

dummy randr 1.2: patch 5 Get rid of dPtr->FBBase

Wed, 16 Sep 2015 11:51:34 GMT - Antoine Martin: attachment set

dummy randr 1.2: patch 6 Support RandR 1.2

Wed, 16 Sep 2015 12:17:31 GMT - Antoine Martin:

just tried the patch series above and hit a snag: my xorg-devel reply

Wed, 14 Oct 2015 05:53:41 GMT - Antoine Martin:

See also: MST monitors and the proposal for RandR 1.5 which would have the concept of "monitors" (without requiring us to have virtual CRTCs attached to them apparently)

Fri, 23 Oct 2015 06:09:53 GMT - Antoine Martin: priority, milestone changed; keywords set

No movement on this upstream, re-scheduling.

Wed, 09 Dec 2015 15:23:45 GMT - Antoine Martin: milestone changed

The randr v2 patch has been merged: http://lists.x.org/archives/xorg-devel/2015-December/048228.html. Commit: 3d68d1f26709ecb5ce22a9baa0d3d8162574ed6a. So either we figure out how to use the same code in Xdummy, or we switch back to Xvfb with newer versions? Will have to test this new stuff: re-scheduling.

Sun, 10 Apr 2016 06:31:36 GMT - Antoine Martin: milestone changed


Wed, 15 Jun 2016 04:00:08 GMT - Antoine Martin:

We're not alone in needing this: xf86-video-dummy: resize to exact resolution from Chrome Remote Desktop developer Erik Jensen.

Tue, 12 Jul 2016 16:52:22 GMT - Antoine Martin: milestone changed

Milestone renamed

Wed, 10 Aug 2016 03:28:00 GMT - Antoine Martin: milestone changed

I don't have time for this, new links:

Fri, 23 Sep 2016 05:58:59 GMT - Antoine Martin: attachment set

for testing the latest upstream patches for dummy

Mon, 26 Sep 2016 13:58:03 GMT - Antoine Martin:

Recent discussion: remove dead code in dummy driver: In 2014 I had also modified the dummy driver while working with Teradici Corporation to support not only arbitrary pixel dimensions, but also multiple monitors. The latter feature might not make sense to some folks, but if you have a server-side Xserver mapped to a hardware thin client sitting across a network, which has multiple physical monitors attached, you want the Xserver to be configured in the exact same manner as the tin client. Even though there is just a virtual framebuffer in main memory, X applications need to know the number/size/location of monitors so that toolbars are placed properly, windows are fullscreen'ed properly, etc. And when the user moves from one hardware thin client to another, which may have a different monitor configuration, the Xserver session needs to change to that configuration.

Mon, 23 Jan 2017 09:26:48 GMT - Antoine Martin:

This will also make #1008 redundant.

Fri, 14 Jul 2017 07:01:59 GMT - Antoine Martin: milestone changed

Raising again.

This is the commit that added randr to Xvfb: vfb: add randr support (v2)

Fri, 29 Sep 2017 17:55:53 GMT - Antoine Martin:

Done for Xvfb in r16994. To use it, switch to Xvfb in browser/xpra/trunk/src/etc/xpra/conf.d/55_server_x11.conf.in. The server should then create new resolutions for every client, the "-d screen,randr" debug output looks like this (shown here for 1080p, but this works for any reasonable resolution):

dpi=120, dpi.x=120, dpi.y=120, double_click_time=400, double_click_distance=(-1, -1), \
    antialias={'hinting': True, 'enabled': True, 'orientation': 'NONE', 'contrast': 1000, 'hintstyle': 'hintslight'}, \
Python/Gtk2 Linux Fedora 26 TwentySix x11 client version 2.2-r16976 64-bit
 connected from 'desktop' as 'antoine' - 'Antoine Martin'
 mmap is enabled using 256MB area in /run/user/1000/xpra/xpra.7Ap0oy.mmap
 client root window size is 3840x2160 with 1 display:
  :1.0 (1016x572 mm - DPI: 96x95) workarea: 3840x2126 at 0x34
    monitor 1 (708x398 mm - DPI: 137x137)
maximum client resolution is 3840x2160 (current server resolution is 5760x2560)
set_screen_size(3840, 2160)
set_screen_size(3840, 2160) xdpi=120, ydpi=120
set_dpi(120, 120)
add_screen_size(3840, 2160)
Modeline 3840x2160 230 3840 4108 4492 5068 2160 2161 2164 2293
XRRCreateMode returned 0x275
screen_resources: crtcs=1, outputs=1, modes=2
adding mode 0x275 to output 0x3d
randr_added_sizes=[(3840, 2160)]
using XRRSetScreenConfigAndRate with 3840x2160
XRRSetScreenSize(0x555a8dbc8240, 0x25c, 3840, 2160, 813, 457)

Still TODO:

Sat, 30 Sep 2017 10:44:14 GMT - Antoine Martin: status changed

r16996: improvements, client fixes (inc html5)

Sat, 30 Sep 2017 10:44:58 GMT - Antoine Martin: owner changed

@maxmylyn: ready for some testing as it is.

Tue, 03 Oct 2017 02:01:01 GMT - J. Max Mena: owner changed

With a Trunk r17074 Fedora 25 server and client, I played around with this for a few minutes:

I edited my conf file to uncomment the default Xvfb command for Ubuntu, so it read:

Xvfb +extension Composite -nolisten tcp -noreset \
        -auth $XAUTHORITY \
        -screen 0 5760x2560x24+32

And played around with it for a bit. I made sure to turn on -d screen,randr and saw I got the relevant prints. Nothing seems to have been broken, and resizing the HTML5 client seems to work fine. But, I didn't do much other than some xterms and glxgears. Is there anything in particular we should be looking at?

Of note:

I booted my local test bot up, but I need to reconfigure its display settings to work headless. Once I do that, I can do a run-through of the automated tests with Xvfb, maybe that'll catch something I wouldn't.

(Thanks for mentioning that, Smo)

Tue, 03 Oct 2017 03:07:40 GMT - J. Max Mena:


test bot up and running. The tests are failing after the first run because the server does not get shut down properly. This will require editing the test_measure_perf.py file.

Tue, 03 Oct 2017 04:40:48 GMT - Antoine Martin:

Note: rather than editing the xvfb= option, you can just build with --without-Xdummy (easier)

Wed, 28 Mar 2018 06:14:27 GMT - Antoine Martin: priority, milestone changed

Lowering priority: we have support for resizing via xvfb (see comment:25). See also #1467

Sat, 23 Jan 2021 04:44:20 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/56