Subject: radeonfb(4) resolution
To: None <port-macppc@netbsd.org>
From: Marco Trillo <marcotrillo@gmail.com>
List: port-macppc
Date: 09/19/2007 22:45:52
------=_Part_32298_14450816.1190234752719
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

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.

------=_Part_32298_14450816.1190234752719
Content-Type: text/plain; name="radeonfb.c.diff.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="radeonfb.c.diff.txt"

SW5kZXg6IHJhZGVvbmZiLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3JjL3N5cy9k
ZXYvcGNpL3JhZGVvbmZiLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjAKZGlmZiAtdSAtcjEu
MjAgcmFkZW9uZmIuYwotLS0gcmFkZW9uZmIuYwkzIFNlcCAyMDA3IDAyOjQ1OjA2IC0wMDAwCTEu
MjAKKysrIHJhZGVvbmZiLmMJMTkgU2VwIDIwMDcgMTg6MjU6MjkgLTAwMDAKQEAgLTMyMjYsMjAg
KzMyMjYsMTUgQEAKIAkJCXZtcCA9ICZlcC0+ZWRpZF9tb2Rlc1tpXTsKIAogCQkvKiBlbGltaW5h
dGUgc21hbGxlciBtb2RlcyAqLwotCQlpZiAoKHZtcC0+aGRpc3BsYXkgPj0gZXAtPmVkaWRfbW9k
ZXNbaV0uaGRpc3BsYXkpIHx8Ci0JCSAgICAodm1wLT52ZGlzcGxheSA+PSBlcC0+ZWRpZF9tb2Rl
c1tpXS52ZGlzcGxheSkpCi0JCQljb250aW51ZTsKLQogCQlpZiAoKHZtcC0+aGRpc3BsYXkgPCBl
cC0+ZWRpZF9tb2Rlc1tpXS5oZGlzcGxheSkgfHwKLQkJICAgICh2bXAtPnZkaXNwbGF5IDwgZXAt
PmVkaWRfbW9kZXNbaV0udmRpc3BsYXkpKSB7Ci0JCQl2bXAgPSAmZXAtPmVkaWRfbW9kZXNbaV07
CisJCSAgICAodm1wLT52ZGlzcGxheSA8IGVwLT5lZGlkX21vZGVzW2ldLnZkaXNwbGF5KSkKIAkJ
CWNvbnRpbnVlOwotCQl9Ci0KLQkJS0FTU0VSVCh2bXAtPmhkaXNwbGF5ID09IGVwLT5lZGlkX21v
ZGVzW2ldLmhkaXNwbGF5KTsKLQkJS0FTU0VSVCh2bXAtPnZkaXNwbGF5ID09IGVwLT5lZGlkX21v
ZGVzW2ldLnZkaXNwbGF5KTsKIAotCQl2bXAgPSByYWRlb25mYl9iZXN0X3JlZnJlc2godm1wLCAm
ZXAtPmVkaWRfbW9kZXNbaV0pOworCQlpZiAoKHZtcC0+aGRpc3BsYXkgPj0gZXAtPmVkaWRfbW9k
ZXNbaV0uaGRpc3BsYXkpIHx8CisJCSAgICAodm1wLT52ZGlzcGxheSA+PSBlcC0+ZWRpZF9tb2Rl
c1tpXS52ZGlzcGxheSkpIHsKKwkJCXZtcCA9IHJhZGVvbmZiX2Jlc3RfcmVmcmVzaCh2bXAsIAor
CQkJCQkJICAgICZlcC0+ZWRpZF9tb2Rlc1tpXSk7CisJCX0KIAl9CiAKIAlyZXR1cm4gKHZtcCA/
IHZtcCA6IHJhZGVvbmZiX21vZGVsb29rdXAoc2MtPnNjX2RlZmF1bHRtb2RlKSk7CkBAIC0zMzEw
LDkgKzMzMDUsMTAgQEAKIAkJfQogCiAJfSBlbHNlIHsKKwkJY29uc3Qgc3RydWN0IHZpZGVvbW9k
ZQkqdm1wOwogCQlzdHJ1Y3QgdmlkZW9tb2RlCW1vZGVzWzY0XTsKIAkJaW50CQkJbm1vZGVzID0g
MDsKLQkJaW50CQkJdmFsaWQgPSAwOworCQlib29sCQkJdmFsaWQgPSBmYWxzZTsKIAogCQlmb3Ig
KGkgPSAwOyBpIDwgZHAtPnJkX25jcnRjczsgaSsrKSB7CiAJCQkvKgpAQCAtMzMyMywzMiArMzMx
OSwxOSBAQAogCiAJCQlpZiAoIXJwLT5ycF9lZGlkX3ZhbGlkKQogCQkJCWNvbnRpbnVlOwotCisJ
CQl2bXAgPSByYWRlb25mYl9wb3J0X21vZGUoZHAtPnJkX3NvZnRjLCBycCwKKwkJCQkJCSBkcC0+
cmRfc29mdGMtPnNjX21heHgsCisJCQkJCQkgZHAtPnJkX3NvZnRjLT5zY19tYXh5KTsKIAkJCWlm
ICghdmFsaWQpIHsKLQkJCQkvKiBpbml0aWFsaXplIHN0YXJ0aW5nIGxpc3QgKi8KLQkJCQlmb3Ig
KGogPSAwOyBqIDwgZXAtPmVkaWRfbm1vZGVzOyBqKyspIHsKLQkJCQkJLyoKLQkJCQkJICogaWdu
b3JlIHJlc29sdXRpb25zIHRoYXQgYXJlCi0JCQkJCSAqIHRvbyBiaWcgZm9yIHRoZSByYWRlb24K
LQkJCQkJICovCi0JCQkJCWlmIChlcC0+ZWRpZF9tb2Rlc1tqXS5oZGlzcGxheSA+Ci0JCQkJCSAg
ICBkcC0+cmRfc29mdGMtPnNjX21heHgpCi0JCQkJCQljb250aW51ZTsKLQkJCQkJaWYgKGVwLT5l
ZGlkX21vZGVzW2pdLnZkaXNwbGF5ID4KLQkJCQkJICAgIGRwLT5yZF9zb2Z0Yy0+c2NfbWF4eSkK
LQkJCQkJCWNvbnRpbnVlOwotCi0JCQkJCW1vZGVzW25tb2Rlc10gPSBlcC0+ZWRpZF9tb2Rlc1tq
XTsKLQkJCQkJbm1vZGVzKys7Ci0JCQkJfQotCQkJCXZhbGlkID0gMTsKKwkJCQltb2Rlc1tubW9k
ZXMrK10gPSAqdm1wOworCQkJCXZhbGlkID0gdHJ1ZTsKIAkJCX0gZWxzZSB7CiAJCQkJLyogbWVy
Z2UgaW50byBwcmVleGlzdGluZyBsaXN0ICovCiAJCQkJZm9yIChqID0gMDsgaiA8IG5tb2Rlczsg
aisrKSB7CiAJCQkJCWlmICghcmFkZW9uZmJfaGFzcmVzKGVwLT5lZGlkX21vZGVzLAogCQkJCQkJ
ZXAtPmVkaWRfbm1vZGVzLAotCQkJCQkJbW9kZXNbal0uaGRpc3BsYXksCi0JCQkJCQltb2Rlc1tq
XS52ZGlzcGxheSkpIHsKKwkJCQkJCXZtcC0+aGRpc3BsYXksCisJCQkJCQl2bXAtPnZkaXNwbGF5
KSkgewogCQkJCQkJbW9kZXNbal0gPSBtb2Rlc1tubW9kZXNdOwogCQkJCQkJai0tOwogCQkJCQkJ
bm1vZGVzLS07Cg==
------=_Part_32298_14450816.1190234752719--