Hi all,
radeonfb(4) works fine using the EDID data, automatically
detecting
the resolution and videomode required for the monitor.
Nice!
However, I noticed a problem with the virtual
resolution/physical
resolution distinction.
The EDID resolution chooser will try to select the best
physical
resolution based
on parameters such as "preferred mode" or
"best refresh-rate". But
the virtual resolution chooser will always build a list of
all
resolutions and pick the largest one.
For example, these are the EDID video modes for my monitor:
1024x768 89Hz
1280x960 72Hz
>From the list, the physical resolution picker will
select the
"Preferred mode: 1024x768 89Hz". However, the
virtual resolution
chooser will select the largest one, 1280x960 72Hz.
This means that not all the virtual screen will be visible
in the
physical screen.
The attached patch tries to deal with this as follows: for
each
monitor, instead of adding all video modes to the list, add
only the
best video mode (the preferred mode or the one with a
better
refreshing rate). Then, the largest resolution from the list
will be
used (as it was before).
I hope that this patch is useful, it works fine for me now.
Before the patch, the dmesg was:
[snip]
radeonfb0 at pci0 dev 16 function 0: ATI Technologies Radeon
9200 5962
radeonfb0: Video BIOS not present
radeonfb0: No video BIOS, using default clocks
radeonfb0: refclk = 27.000 MHz, refdiv = 12 minpll = 125000,
maxpll = 350000
radeonfb0: using static EDID
max_dotclock according to supported modes: 122240
Vendor: [APP] Apple Computer
Product: [9D07] iMac
Serial number: 01010101
Manufactured 1990 Week 0
EDID Version 1.3
EDID Comment:
Video Input: 68
Analog
-0.7, 0.0V
Seperate syncs
Gamma: 2.11
Max Size: 33 cm x 24 cm
Features: 8
RGB
Chroma Info:
Red X: 0.635
Red Y: 0.635
Grn X: 0.278
Grn Y: 0.599
Blu X: 0.144
Blu Y: 0.064
Wht X: 0.283
Wht Y: 0.297
Range:
Horizontal: 71 - 73 kHz
Vertical: 70 - 140 Hz
Max Dot Clock: 130 MHz
Video modes:
1024x768 89Hz
1280x960 72Hz
Preferred mode: 1024x768 89Hz
[snip]
radeonfb0: 64 MB aperture at 0x98000000, 64 KB registers at
0x90000000
radeonfb0: display 0: initial virtual resolution 1280x960 at
32 bpp
radeonfb0: port 0: physical 1024x768 89Hz
radeonfb0: port 1: physical 1024x768 89Hz
init engine
wsdisplay0 at radeonfb0 kbdmux 1: console (fb, vt100
emulation)
[snip]
After the patch, the virtual resolution is the correct one:
[snip]
radeonfb0: display 0: initial virtual resolution 1024x768 at
32 bpp
[snip]
Thanks,
Marco.
|