Subject: thoughts on display resolution selection...
To: None <tech-kern@NetBSD.org>
From: Garrett D'Amore <garrett@damore.org>
List: tech-kern
Date: 05/22/2006 16:29:16
I now have a Radeon framebuffer driver that supports multiple output
ports, and can detect the supported resolutions (and preferred) of
monitors connected to it.  (No, this driver isn't open source -- YET,
I'm still trying to make that happen.)

Anyway, I am faced with a dilemma that others may soon face, and I'd
like thoughts so that ultimately we arrive to a common solution. :-)

Basically, I can run each port independently (multihead, though not all
the code is there *yet*), but I can also do things like have the ports
show the same thing, within the resolution capabilities of the
monitors.  (This is normally the "default" operation in OS' like
Windows, etc.)

Right now what I'm doing is detecting the resolutions of both monitors,
picking the highest (best) resolution they have in common, and using
that.  If no monitor is connected (or the monitor doesn't support EDID)
I run that port at 640x480 and ignore it when selecting a resolution. 
So in this circumstance, you're likely to have one display at XGA or
SXGA, while the other runs at VGA.

In graphics mode, I have code in the kernel to pan a smaller monitor
across a larger physical desktop based on the pointer position.  This
works with wsdisplay(4) quite well now.

But when the display is acting as a text console, you don't have a
pointer, and it isn't clear how to drive panning.   So the lower
resolution display just loses.

Should I just force a VGA resolution by default, rather than trying to
be friendly to larger displays.

Should we have a common method to support panning (hot keys?) of text
screens?  Perhaps also panning based on a mouse position in a text
console?  (Though not all h/w will have mice available.)

Another problem comes in the selection of monitor resolutions.  I think
I need to add some ioctl to export the list of resolutions in "common",
separately from resolutions that may require panning.  We have a user
app that runs in graphics mode and wants to pick the largest mode
supported by either monitor, rather than picking a mode "in common",
because we can then readily pan the lower resolution screen.

How much do folks hate panning?  To what lengths should I go to avoid it?

    -- Garrett