Subject: radeonfb(4) resolution
To: None <port-macppc@netbsd.org>
From: Marco Trillo <marcotrillo@gmail.com>
List: port-macppc
Date: 09/19/2007 20:48:04
------=_Part_31539_16058521.1190227684402
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 picker will try to select the best physical resolution based
on parameters such as "preffered mode" or "best refreshing rate". But
the virtual resolution picker 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
picker 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
choosed (as it was before).

I hope that this patch is useful.
Before the patch, the dmesg was:

[snip]
Preferred mode: 1024x768 @ 89Hz
radeonfb0: display 0: initial virtual resolution 1280x960 at 32 bpp
radeonfb0: port 0: physical 1024x768 89Hz
radeonfb0: port 1: physical 1024x768 89Hz
[snip]

After the patch, it is:

[snip]
Preferred mode: 1024x768 @ 89Hz
radeonfb0: display 0: initial virtual resolution 1024x768 at 32 bpp
radeonfb0: port 0: physical 1024x768 89Hz
radeonfb0: port 1: physical 1024x768 89Hz
[snip]

--
Thanks,
Marco.

------=_Part_31539_16058521.1190227684402
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_31539_16058521.1190227684402--