Subject: Re: qtopia
To: Garrett D'Amore <garrett_damore@tadpole.com>
From: Michael Lorenz <macallan@netbsd.org>
List: tech-kern
Date: 06/03/2006 16:43:16
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello,

>>>> Even with a single output port (typically VGA) you
>>>> have the questions of detecting monitor resolutions, virtual vs.
>>>> physical resolutions (you can use a much bigger virtual desktop with
>>>> panning), and e.g. autoexpansion to drive a lower resolution on a
>>>> higher resolution monitor (ratiometric expansion that is supported 
>>>> on Radeon
>>>> and perhaps other devices.)
>>
>> And then there are things like the FFB which support multiple colour
>> depths on the same screen.
>
> Hmm... so its not a linear framebuffer I guess?  Or does it use some
> weird combination of indexing and 24bpp?

Several more or less linear framebuffer views, a few in 8 bit, others 
in 24/32 bit, and some control planes. Depends on the chip - the tcx 
has three views - 8bit, 32bit, control, the ffb has a few more, like 
framebuffer views with or without rasops being carried out on whatever 
you write etc.

>>>> It might also be nice to have an event call back so that 
>>>> applications
>>>> can detect monitor changes.  E.g. some boards have a way to check 
>>>> for
>>>> the existence of a monitor.  (And DVI/TMDS actually has pins
>>>> defined for the purpose.)  But maybe we can leave this a poll 
>>>> interface for now.
>>
>> Yes, tctrl actually does that and enables the VGA port when it detects
>> a monitor.
>
> Interesting.  I should take a look at that.

the microcontroller sends a message when it detects a change, i simply 
catch it and enable or disable the port.

>>>> No doubt I've missed things.  I've not tried to implement any of
>>>> this - this is all just intended to act as food for thought.  Let 
>>>> me know your
>>>> opinions.
>>
>> I think video mode and colour depth should be programmed
>> independently, especially with boards that support multiple depths
>> simultaneously.
>
> I'm reasonably okay with that, I think.  The considerations here are as
> follows:
>
> * changing _either_ depth or resolution changes the memory layout in 
> the
> framebuffer
> * some cards have limitations that are imposed by the combination of
> resolution and depth.  (I.e. can run at SXGA at 16bpp, but only XGA or
> 24bpp or somesuch, depending on available memory)

Exactly, we should have a list with supported resolutions and then 
supported colour depths for each.

> The other interesting piece in here is for OLPC, where they have a
> display that can do either mono/grayscale or color depending on power
> conditions.  I have no idea how exactly that works, but I can see it
> breaking whatever abstraction we're likely to come up with. :-)

Hmm, interesting.

> FWIW, I only bother to run  radeon at 32-bpp.  I can't see a compelling
> reason to run it lower resolution.  (At this resolution I can still run
> even the lowest end board at 1920x1200 on two independent displays.
> They don't come with less than 32MB, AFAIK.)

I'm thinking about machines where the firmware sets up the graphics 
display, usually whatever resolution it considers 'native' in 8 bit. I 
see no real reason to switch to something higher just for text display 
- - on older hardware using more than 8 bit may be considerably slower - 
that's why I want colour depth switching. Leave the display timing, 
resolution etc. alone.

have fun
Michael
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Darwin)

iQEVAwUBRIH0ZcpnzkX8Yg2nAQIUSQf6AwLmEw0J5wbz0u/gMj8Dd/ryKdWpe6f+
CXySmaHm23TkOMTFhoYOlevpmQRijq1lTDckIwi3RIWtF9nrb0+/sq/8IaAibUdT
di6owmxEy/3bTypcRFVsrU4P4Kv/W1SwwodZb+y6l3yVjE7I2jm0MJJhGYcA0G2T
LVmQug8N7gtBgHct9LawftgnuUGRtzfAHVVTgzB1iCbGS27dHVQxAszu8VMUN57P
gFlbddCMf7yTll8yXwdzowjOwasp4LflwOkHO7wiXTiUnkyg8YGGBi0e9gFgj0Rc
KFWW//OKXuQWzDq6FRP/poICLm9PHe5EU7jAY2W1JJGsrsaVeHop8w==
=n6Qi
-----END PGP SIGNATURE-----