Simulating a lower resolution on the OLPC XO Laptop
Jordan Crouse
jordan at cosmicpenguin.net
Tue Nov 25 14:13:22 EST 2008
Thanks to Mitch, I fixed the scaling problem. Based on conversations on
IRC, I am afraid that you will be very disappointed, so I am going to
try to explain in great detail how this all works.
First of all, you are going to need either build a new driver on your
own, or convince your favorite maintainer to build one for you. The fix
is checked into the xf86-video-geode GIT tree HEAD.
Secondly, a bit of background on how this all works. Unlike most modern
GPUs, the Geode does not support scaling transforms - in simple terms,
we cannot use the hardware to automatically scale a given rectangle on
the screen, which is how scaling would normally work in a modern 3D
compositor. However, we do have the ability to scale the entire screen
at once. Again in simple terms, this means you can scale an effective
display of say, 800x600 to 1200x900. But this also means that the
entire display needs to be put into a 800x600 mode. This means you need
to execute a mode switch, and your underlying display manager and window
manager need to be able to grok the switch. If you want to switch back
to 1200x900 mode, then again, you'll have to take a mode switch.
So, assuming you are still with me, lets discuss how to actually pull
this off. The method depends on which X server you are using. To
easily tell, type 'xrandr' in a terminal - if you see a single 1200x900
mode, then you are using X 1.4. If you see multiple modes, then you
are using X 1.5.
** X 1.4 instructions **
For X 1.4, you need to add the mode that you want scale to 1200x900.
For this example, lets use 800x600. Add the mode to the xrandr database:
xrandr --newmode 800x600 0 800 0 0 0 600 0 0 0
You don't need to worry about setting accurate timings, since the driver
is going to scale the mode to 1200x900 anyway.
Next, add the mode to the default output:
xrandr --addmode default 800x600
Now, if you type 'xrandr' you will see your new mode in the list.
Skip ahead to the X 1.5 instructions.
** X 1.5 instructions **
Type 'xrandr' in a terminal. You will see a list of possible modes.
Any mode not equal to 1200x900 will be scaled on the XO. To set a mode,
type the following:
xrandr --output default --mode <modname>
The modename can be anything in the list. If you want to add something
not in the list, refer to the X 1.4 instructions for how to do that.
The screen should immediately scale. To return to "normal" mode, set
the 1200x900 mode.
That should be enough to get you started.
Jordan
More information about the Devel
mailing list