[i915gm] (Needs UXA) Front buffer dynamic resize not supported

Bug #158415 reported by unggnu
50
This bug affects 2 people
Affects Status Importance Assigned to Milestone
xf86-video-intel
Fix Released
Medium
xorg (Ubuntu)
Invalid
Undecided
Unassigned
xserver-xorg-video-intel (Ubuntu)
Fix Released
Wishlist
Unassigned

Bug Description

X supports front buffer screen resolution resizing up to certain (static) maximum X and Y values. These maximums are set statically via the 'Virtual' option in xorg.conf, thus requiring a reboot.

Why not set the virtual option to something very high as a temporary workaround, like 8192x8192? Because there are trade-offs. For instance, DRI is supported only up to a certain maximum size (2048x2048 on Intel i945 and earlier); without DRI, you have no hardware accelerated 3d, no compiz, etc. Also, the larger the front buffer the more memory it consumes, which can be a problem for some hardware.

No one likes that this is a static setting. But making it dynamic is a hard development project. The good news is that the development work has been well under way for DRI2, which some video drivers are starting to support.

[Original Report]
It seems that Xorg sets an Virtual size on start which is as high as the needed resolution (x resolution value * x resolution value) but if a Display with a higher resolution is connected it can only use resolutions which are the same or lower than the virtual one.
There are two possible solutions imho.
Xorg should use the maximum virtual size if it doesn't need so much mem or the better one: Xorg should be able to change the virtual size on the fly if a monitor with a higher resolution is hotplugged.

[lspci]
00:00.0 Host bridge [0600]: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller [8086:2590] (rev 03)
     Subsystem: Sony Corporation Unknown device [104d:81e2]
00:02.0 VGA compatible controller [0300]: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller [8086:2592] (rev 03) (prog-if 00 [VGA])
     Subsystem: Sony Corporation Unknown device [104d:81e2]

Revision history for this message
In , Eric Anholt (eric-anholt) wrote :

We don't allow front buffer resize currently, so we just allocate enough memory for the screens you have connected at startup, squared so you can rotate. If you want more, you can use the Virtual option in your screen section to set a larger front buffer allocation.

(Also, please attach files instead of inlining them in bug reports)

Revision history for this message
In , Gordon Jin (gordon-jin) wrote :

Eric, does the current TTM code support front buffer resize?

Revision history for this message
unggnu (unggnu) wrote : widescreen resolution isn't recognized for external monitor after hotplugging but after system start [i915]

Binary package hint: xserver-xorg-video-intel

Thanks to the great new Intel driver my external widescreen monitor Samsung 215tw with the native resolution 1680x1050 works fine out of the box after system start.
But if I start my laptop without the external monitor connected and plug it afterwards it is recognized but the maximum resolution is 1280x1024 and the default refresh rate 75 which is to high for my monitor. It is possible to enable the monitor with 1280x1024@59.9 but it looks awful.

Revision history for this message
unggnu (unggnu) wrote :
Revision history for this message
unggnu (unggnu) wrote :
Revision history for this message
unggnu (unggnu) wrote :
Revision history for this message
unggnu (unggnu) wrote :
Revision history for this message
unggnu (unggnu) wrote :
Revision history for this message
unggnu (unggnu) wrote :
Revision history for this message
unggnu (unggnu) wrote :
Revision history for this message
unggnu (unggnu) wrote :
Revision history for this message
unggnu (unggnu) wrote :

If I restart gdm everything works fine so it seems that xrandr doesn't use all capabilities to get the correct resolution.

Revision history for this message
unggnu (unggnu) wrote :

Still happens in current Hardy.

Bryce Harrington (bryce)
Changed in xserver-xorg-video-intel:
importance: Undecided → Medium
status: New → Triaged
Revision history for this message
unggnu (unggnu) wrote : Re: widescreen resolution isn't recognized for external monitor after hotplugging but after X start [i915]

According to Bug #94994 it should work in Hardy Alpha 3 but it still doesn't. Xrandr still doesn't show the wide screen resolution after hotplugging.

Revision history for this message
unggnu (unggnu) wrote :

I think I have found a solution. According to http://www.thinkwiki.org/wiki/Xorg_RandR_1.2#xorg.conf Virtual Size should be set to 2048x2048 (maximum possible 3D accelerated resolution for Intel chips) in xorg.conf.
If I do this hotplugging of the widescreen monitor works fine. Xrandr shows the correct resolution. So it seems that Xorg sets an Virtual size on start which is as high as the needed resolution (x resolution value * x resolution value) but if a Display with a higher resolution is connected it can only use resolutions which are the same or lower than the virtual one.
There are two possible solutions imho.
Xorg should use the maximum virtual size if it doesn't need so much mem or the better one: Xorg should be able to change the virtual size on the fly if a monitor with a higher resolution is hotplugged.

Revision history for this message
unggnu (unggnu) wrote :

Btw. the virtual size is shown in xrandr with the maximum value.

Revision history for this message
unggnu (unggnu) wrote : Re: higher resolutions aren't recognized for external monitors after hotplugging but after X start [intel]

Bug #164049 reports a similar problem but it also describes the problem of the rendering limit. Because of this limitation it isn't possible for Xorg/xrandr atm. to use my LFP 1366x768 left or right of my VGA device 1680x1050.

unggnu (unggnu)
Changed in xserver-xorg-video-intel:
status: New → Unknown
Changed in xserver-xorg-video-intel:
status: Unknown → In Progress
Revision history for this message
GiuseppeVerde (launchpad-digitasaru) wrote :

Bug #196318 that I just filed has a description of what is happening and why the Virtual resolution works.

If you're bumping into a hardware limitation on the total framebuffer size, you will probably have to use xrandr to resize your LVDS output to make room for the external display in the giant fb shared by both outputs.

I hope to have a patch to dynamically allocate the big fb when I have a chance to learn the code and make a patch (so it could be a while ;) That won't help if you're hitting a hardware limit, but it'll remove the need for the virtual workaround.

The full solution would be multiple, dynamic fb allocations, but I don't know if or how that is possible atm.

Revision history for this message
In , Michael Fu (michael-fu-intel) wrote :

sounds like a wontfix bug...

Changed in xserver-xorg-video-intel:
status: In Progress → Won't Fix
unggnu (unggnu)
description: updated
unggnu (unggnu)
description: updated
Revision history for this message
Bryce Harrington (bryce) wrote : Re: higher resolutions aren't recognized for external monitors after hotplugging but after X start (Virtual is static)

Hi unggnu,

Thank you for taking the time to report this bug and helping to make Ubuntu better. You reported this bug a while ago and there hasn't been any activity in it recently. We were wondering is this still an issue for you? Can you try with the latest development release of Ubuntu? (ISOs are available from cdimage.ubuntu.com)

If it remains an issue, could you also attach a new /var/log/Xorg.0.log?
Thanks in advance.

Changed in xorg:
status: New → Incomplete
Revision history for this message
Julian Edwards (julian-edwards) wrote :

I am happy to re-confirm this, it happened to me this morning when I was fighting to get Kubuntu on Intrepid to start up :)

Changed in xorg:
status: Incomplete → New
Revision history for this message
Tom Haddon (mthaddon) wrote :

This is also still affecting me in Intrepid with the latest updates. Attaching my /var/log/Xorg.0.log

Revision history for this message
Bryce Harrington (bryce) wrote :

No need for 2 X source package tasks

Changed in xorg:
status: New → Invalid
Bryce Harrington (bryce)
Changed in xserver-xorg-video-intel:
importance: Medium → Wishlist
Revision history for this message
Tom Haddon (mthaddon) wrote : Re: [Needs GEM] higher resolutions aren't recognized for external monitors after hotplugging but after X start (Virtual is static)

The workaround of adding a "Virtual" line to the "Screen" section of /etx/X11/xorg.conf was working for me in hardy, but no longer works in intrepid. The only way I can get the correct resolution for my external monitor (1680x1050) is to start up the machine with the monitor already plugged in.

Revision history for this message
unggnu (unggnu) wrote :

A X/gdm restart should be enough.

Revision history for this message
Tom Haddon (mthaddon) wrote : Re: [Bug 158415] Re: [Needs GEM] higher resolutions aren't recognized for external monitors after hotplugging but after X start (Virtual is static)

On Sun, 2008-12-14 at 11:11 +0000, unggnu wrote:
> A X/gdm restart should be enough.
>

It is, but this is also a regression from hardy, since I didn't need to
do that in hardy. Restarting X/gdm means closing all programs, logging
out, logging back in and re-opening all programs, so is a pretty
intrusive way to change resolutions.

Revision history for this message
In , Gordon Jin (gordon-jin) wrote :

Keith says he is working on this, after 2.6.

Revision history for this message
In , Keith Packard (keithp) wrote :

I've pushed the fix for this to master. It requires GEM, DRI2 and UXA.

Bryce Harrington (bryce)
description: updated
Revision history for this message
Alex Krastelev (alex-netrc) wrote : Re: [Needs GEM] higher resolutions aren't recognized for external monitors after hotplugging but after X start (Virtual is static)

Confirm the problem in Intrepid 8.10 running on eee 901. After initial install, both xrandr -q and System-->Preferences--> Screen Resolution detect the external monitor, but report incorrect maximum resolution 1024x768 for the monitor capable of 1280x1024.

lspci shows
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03)

Changing Virtual in /etc/X11/xorg.conf and restarting X solves the problem:

--- xorg.conf.orig 2009-01-03 10:36:18.000000000 +0100
+++ xorg.conf 2009-01-18 16:50:53.000000000 +0100
@@ -27,7 +27,7 @@
        Monitor "Configured Monitor"
        Device "Configured Video Device"
        SubSection "Display"
- Virtual 2048 768
+ Virtual 2304 1024
        EndSubSection
 EndSection

The bug can be confusing for a user, because it creates an impression of graphic card or monitor being incapable of higher resolutions (resolutions higher than virtual are not shown at all).

Changed in xserver-xorg-video-intel:
status: Won't Fix → Confirmed
Revision history for this message
In , unggnu (unggnu) wrote :

In which version this will possibly be released?

Revision history for this message
positivek (anonyhole) wrote : Re: [Needs GEM] higher resolutions aren't recognized for external monitors after hotplugging but after X start (Virtual is static)

I can confirm the incorrect maximum resolution reporting that Alex Krastelev wrote of (above, 2009-01-18) well in my 8.10 (via the distribution upgrade process).

My process to reproduce:
1. Using laptop, no external monitor plugged in, at max resolution (1280x800).
2. Plug in my external monitor into the VGA port of my laptop and power on the monitor.
3. Run Gnome's "System-->Preferences-->Screen Resolution" (which brings up a window called "Monitor Resolution Settings").
4. My external monitor is shown, as off.
5. Select my external monitor.
6. View drop-down list of resolutions. BUG: The max res shown available is 1280x1024. My external monitor is *capable* of 1680x1050.
7. Choose the 1280x1024 resolution for the external monitor and select "Off" for my laptop display. Click "Apply".
8. Correctly, my laptop monitor turns off and the external display uses this non-native resolution of 1280x1024.
9. View the available resolutions again (using the window or xrandr) shows that the resolutions are limited to 1280x1024 (i.e. no change).
10. Quit all programs and quit X ("log out").
11. The Ubuntu login screen is now mirrored on my external monitor at 1024x768.
12. Proceed to log back in.
13. The laptop monitor turns off. The external monitor switches to the resolution used when I last set it (step 7). All seems to be the same. But...
14. Re-run "Screen Resolution" app again (or xrandr).
15. Now the the external monitor has more of the resolutions available in the drop-down list, including the external monitor's native (max) resolution of 1680x1050.
16. The drop-down list shows a resolution beyond what my external monitor can support (1600x1200).
17. I can switch between these freely and achieve my external monitor's native (max) resolution. I can even turn off the external and turn on the laptop displays and back again, keeping this fuller list of resolutions in the drop-down list. THIS is the behavior that I expect when I plug a monitor into the system and use the Screen Resolution to change monitors.

Software:
  Gnome 2.24.1
  Compiz is turned off.
  Ubuntu 8.10 via online distro upgrade from prior dist.
  Linux machname 2.6.27-9-generic #1 SMP Thu Nov 20 22:15:32 UTC 2008 x86_64 GNU/Linux

lspci includes:
  00:00.0 Host bridge: Intel Corporation Mobile PM965/GM965/GL960 Memory Controller Hub (rev 03)
  00:02.0 VGA compatible controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (rev 03)

Laptop computer:
  Acer TravelMate 4720, native resolution of 1280x800.
  2.5GB memory

External monitor:
  Acer X223W, native resolution of 1680x1050.

Changed in xserver-xorg-video-intel:
status: Confirmed → Fix Released
Revision history for this message
Alex Krastelev (alex-netrc) wrote :

A simple workaround without manual editing of /etc/X11/xorg.conf:
temporary arrange both monitors in a diagonal way in Gnome Screen Resolution.
This forces Gnome to adjust Virtual resolution to a higher value. Gnome will ask you to log out and after login, all resolutions of the external monitor will be visible.

Bryce Harrington (bryce)
description: updated
summary: - [Needs GEM] higher resolutions aren't recognized for external monitors
- after hotplugging but after X start (Virtual is static)
+ [Needs DRI2] Front buffer dynamic resize not supported
Bryce Harrington (bryce)
summary: - [Needs DRI2] Front buffer dynamic resize not supported
+ [i915gm] [Needs DRI2] Front buffer dynamic resize not supported
Bryce Harrington (bryce)
summary: - [i915gm] [Needs DRI2] Front buffer dynamic resize not supported
+ [i915gm] (Needs UXA) Front buffer dynamic resize not supported
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package xserver-xorg-video-intel - 2:2.7.99.1+git20090602.ec2fde7c-0ubuntu1

---------------
xserver-xorg-video-intel (2:2.7.99.1+git20090602.ec2fde7c-0ubuntu1) karmic; urgency=low

  * Update to git 20090602 (master branch) up to commit ec2fde7c
    - xvmc is disabled since DRI1 no longer supported
    - LP: #96991 - 3D stuff breaks with Compiz: Redirected Direct Rendering
      is needed in DRI
    - LP: #120834 - X freezes with I830WaitLpRing error when running OpenGL apps
    - LP: #337608 - X crashes in fbBlt() when using Sun Java Plugin 6 + firefox3.0
    - LP: #339555 - compiz slowmotion after Jaunty upgrade
    - LP: #363900 - X.org freezes with intel driver, no apparent trigger
    - LP: #331719 - VT switching doesn't work on Intel 915GM
    - LP: #339091 - X freezes a few minutes after resuming
    - LP: #348436 - Kubuntu: X server crash when screensaver is started (4500MHD)
    - LP: #279727 - Kubuntu: Display Corruption w/ Intel 4700MHD
    - LP: #357851 - Kubuntu: Distorted display after switching virtual desktops w/ exa
    - LP: #158415 - Front buffer dynamic resize not supported
    - LP: #324998 - x server restarts itself w/ compiz on Intel 945GM
    - LP: #355593 - after upgrade to 9.04, rotating desktop cube ran slow
    - LP: #357290 - 1 fps in 3d apps like neverball with EXA
    - LP: #360774 - Graphical Corruption with EXA on X4500
    - LP: #364126 - screensaver prefs dialog in 9.04 RC livecd leaves dirt
    - LP: #375712 - Native resolution for dell "2005fpw" monitor not listed
    - LP: #375264 - Choppy flash video and poor performance with compiz
    - LP: #349568 - Jaunty / Compiz slow and tearing on GMA 4500MHD
    - LP: #356056 - window tearing during movement on 965 (no compiz)
    - LP: #330460 - xorg shows black image/hangs with jpg in firefox
    - LP: #347587 - X asserts on pI830->batch_ptr != 0 on resume from suspend
  * Merge with Debian experimental. Remaining Ubuntu changes:
    - Add lpia architecture
    - Re-enable the patch system, add quilt to build-deps.
    - 110_quirk_hp_mini.patch: quirk (sent upstream)
    - 117_quirk_thinkpad_x30.patch: quirk (sent upstream)
  * Drop 116_8xx_disable_dri.patch. There have been fixes for 3d on 8xx
    chipsets upstream, so drop the DRI disablement so the fixes can be
    re-tested.
  * Drop 103_quirk_intel_mb890.patch. Better quirk available upstream.
    (LP: #305269)

 -- Bryce Harrington <email address hidden> Tue, 02 Jun 2009 10:47:32 -0700

Changed in xserver-xorg-video-intel (Ubuntu):
status: Triaged → Fix Released
Changed in xserver-xorg-video-intel:
importance: Unknown → Medium
Changed in xserver-xorg-video-intel:
importance: Medium → Unknown
Changed in xserver-xorg-video-intel:
importance: Unknown → Medium
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.