Hello
The recent ~331.20 nvidia drivers has broken the resolution settings. Only with the nvidia-settings panel seems have the ability to use the non native resolutions on my laptop screen.
Editing the xorg.conf by adding metamodes (by using the nvidia-control’s "save to X configuration file’), seems also failing. It has got effect, for example when I set 1280800 with nvidia settings then added the metamodes with nvidia.settings, I will boot into a 1280800 resolution, but still I will recieve a 1280*1024 resolution virtually. My 12.04 ubuntu will simply scroll the screen when the mouse pointer is being moved. Manual one time setting works without bugs though.
Here is a xrandr report about the available resolutions. LVDS-0 is my notebook screen, as you can see I can only select the netive maximum resolution from there.
$ xrandr
Screen 0: minimum 8 x 8, current 1280 x 1024, maximum 8192 x 8192
VGA-0 disconnected (normal left inverted right x axis y axis)
TV-0 disconnected (normal left inverted right x axis y axis)
LVDS-0 connected (normal left inverted right x axis y axis)
1440x900 60.0 + 60.0
DVI-D-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
1280x1024 60.0*+ 75.0
1024x768 75.0 70.1 60.0
800x600 75.0 72.2 60.3 56.2
640x480 75.0 72.8 59.9
Using randr protocol 1.1, it provides the resolutions though. But since almost all applications probably use 1.3 version when a program wants a 640*480 resolution it simply fails. Also with 1.1 randr, I cant choose which monitor I will use laptop LCD or external screen. It just mixes all resolutions of laptop screen and external monitor. For example, when I switch to 1280x800, it will use my laptop LCD, even if I close my laptop, and use an external monitor. All fullscreen applications with lower resolutions than native will suffer from this I think.
For example, Wine has been patched to revert to the old xrandr version. It still does not in my ubuntu 12.04 though probably I will try a beta version of wine someday. But I have a fear about that it will just mix the laptop LCD, and external screen resolutions.
$ xrandr --q1
SZ: Pixels Physical Refresh
*0 1280 x 1024 ( 301mm x 245mm ) 50 *51
1 1440 x 900 ( 338mm x 215mm ) 52 54
2 1440 x 809 ( 338mm x 193mm ) 53
3 1280 x 720 ( 301mm x 172mm ) 55
4 1024 x 768 ( 240mm x 184mm ) 56
5 800 x 600 ( 188mm x 143mm ) 57
6 1200 x 900 ( 282mm x 215mm ) 58
7 1440 x 810 ( 338mm x 194mm ) 59
Current rotation - normal
Current reflection - none
Rotations possible - normal left inverted right
Reflections possible - X Axis Y Axis
After reading this, I expect this will be broken for the next upcoming years. And legacy programs will fail since the recent nvidia drivers has dropped backwards compatibility as I understand there. Something that was working in the past now working with only workarounds:( At least we should have an option in nvidia-settings to bring the old behavior back.
For example, I can set any resolutions with my command with typing ‘setres 1280x800’ but thats not mean its user friendly. Also applications still use the xrandr for resolution change. Perhaps a wrapper script which add metamode support “virtually” to xrandr should work.
#!/bin/bash
RESOLUTION=$1
nvidia-settings --assign CurrentMetaMode="LVDS-0: nvidia-auto-select @$RESOLUTION +0 +0 {ViewPortIn=$RESOLUTION, ViewPortOut=$RESOLU