On Tue, 2009-09-15 at 12:06 -0400, Adam Jackson wrote:
In attempting to document how displays are expected to work in F12
[1],
I realized we still don't have a decent heuristic for some cases.
Broadly, displays are either fixed-format or variable-format. FF means
you have some set number of pixels, like an LCD. VF means you don't,
like a CRT. (Projectors are often somewhere in between, we'll pretend
they don't exist for a moment.) We get FF displays pretty much right,
since they tend to describe themselves well enough in EDID to figure out
what their native size is. Some VF displays are polite enough to define
a preferred mode, and for that case we'll default to that.
But, many VF displays don't define a preferred mode. How are we to
choose? What's currently implemented will pick something along the
lines of "the largest available mode that matches our guess at the
physical aspect ratio and that fits in the card's DAC and memory
bandwidth limits". Which is awful. So I'm thinking something like (in
wretched pseudopython):
def mode_dpi_cmp(x, y):
return cmp(abs(x.dpi - 96), abs(y.dpi - 96))
def mode_size_cmp(x, y):
return cmp(x.width * x.height, y.width * y.height)
def best_mode(modes, dpi_known = True):
l = filter(lambda x: x.refresh >= 72, modes)
if l == []:
l = modes
if dpi_known:
l.sort(cmp=mode_dpi_cmp)
else:
l.sort(cmp=mode_size_cmp)
return l[0]
Which is _pretty_ good, except you'd kinda like to match aspect ratio if
you happen to know AR but not DPI. Which is trivial to add, but starts
to be hard to read.
If anyone has ideas I'm all ears, but I'd like to get this implemented
sometime this week, so speak up.
I know that, in the dinosaur days of CRT, I could 'see' flicker (and get
flicker-generated headaches) at anything under 80Hz, and I know there
are even more sensitive people than that. So 72Hz may be a bit of a low
'safe refresh rate' cutoff. I'd like it to be 80 at least. 72/75 were
better than 65 for me, but definitely not acceptable for long-term work.
(/me remembers the days when you could gain any office worker's
everlasting friendship by changing their refresh rate from 60Hz to
85Hz...ahhh, good times.)
--
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Fedora Talk: adamwill AT fedoraproject DOT org
http://www.happyassassin.net