Maximum 3D size limitations
@otaylor
Submitted by Owen Taylor Link to original bug (#646280)
Description
The Intel GM945 chipset is very common, and has a limitation that the maximum 3D rendered area is 2048 pixels wide. Which isn't wide enough to handle a 1024x600 netbook + a 1280x1024 monitor.
Mesa is pretty good about automatically falling back to software rendering, so the observed effect is that if you plug in such a monitor, things become dead slow and your system becomes unusable.
See https://bugzilla.redhat.com/show_bug.cgi?id=678791
Here's a plan for how we should handle this case:
-
gnome-session-check-accelerated should query GL_MAX_RENDERBUFFER_SIZE_EXT and set the result as a property on the root window. ( _GNOME_MAX_SCREEN_SIZE)
-
When in non-fallback mode, the xrandr code in gnome-settings-daemon should check this property and then only pick monitor configurations that fit within GL_MAX_RENDERBUFFER_SIZE_EX. Ordering of the initial default configuration should be:
- As currently, if it fits
- Mirrored displays if that would result in a resolution of at least 1024x600
- Otherwise, only the primary monitor with the secondary output off
- The panel should respect the same limitations, so if you try to enable the one monitor, then the other monitor turns off and the primary switches to the on monitor.
The reasons for doing the query in gnome-session-check-accelerated are:
- It already has the code to set up a glx context and query stuff from it
- It's very important that this code doesn't run unless gnome-session-check-accelerated passed, since GLX crashing on initialization is reasonable common and we want to handle it gracefully.