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