libxrandr XRRGetCrtcInfo() misinterpretation by nouveau or NVIDIA?
Thomas Richter
thor at math.tu-berlin.de
Tue Jun 16 12:51:27 PDT 2015
Hi folks,
recently, I run into a problem enabling panning on a system enabled with
NVIDIA hardware and the proprietary NVIDIA X11 driver. The bug manifests
itself in Xfce4's desktop only covering the upper left corner of the
screen when panning is enabled, and not the entire panning area.
After hunting the problem down, the result seems to be that the nouveau
driver and the NVIDIA driver seem to disagree on what to return as
information on XRRGetCrtcInfo() from libxrandr.
For the sake of giving an example, consider that I have a 1280x1024
screen and enable a 2560x2048 panning area with
xrandr --output DVI-I-3 --panning 2560x2048
It seems to me that the nouveau driver returns the dimension of the
entire panning area, i.e. 2560x2048, whereas the NVIDIA driver returns
only the dimension of the visible screen, i.e. the monitor dimension of
1280x1024.
Running xrandr on the same system, but with two different X11 drivers
active seems to confirm this hypothesis.
Given the name of the libxrandr call, I'm tempted to believe that the
proprietary NVIDIA X11 driver might actually be correct, but the
documentation of libxrandr seems to be lacking in some respect, so I
wonder how XRRGetCrtcInfo() should work in the combination of panning.
Problem is that libgtk+ currently uses this call to return a "monitor
dimension" (for whatever this is with panning enabled), and Xfce4
depends on this "monitor dimension" to fill the screen background. This
works fine with nouveau (returning the entire screen area) but fails
with NVIDIA (returning only the monitor area).
My question would now be where the actual protocol/interface violation
is. At NVIDIA/nouveau? At libxrandr? At gtk+ using the wrong low-level
call (instead of X11 screen->width / screen->height) or at Xfce4 (using
gdk_screen_get_monitor_geometry(), expecting screen dimensions rather
than monitor dimensions).
Thanks for any hints.
Greetings,
Thomas
More information about the xorg
mailing list