9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: presotto@plan9.bell-labs.com
To: 9fans@cse.psu.edu
Subject: Re: [9fans] What a poor VGA support !
Date: Thu, 13 Jun 2002 10:21:32 -0400	[thread overview]
Message-ID: <02580f2e9d1062be41b15fe4acf73ae0@plan9.bell-labs.com> (raw)

> Simple, because it is supported by the 28 other
> operating systems I managed to install on that machine.

My interest is clearly piqued.  What are those 28 OS's and
what to you use to boot them all?

> But , please, tell me, because I'm curious : Why is it so difficult, so
> impossible to add some kind of minimum VGA support  ?

We used to have minimum support, i.e., 640x480x{1,2,4}.  Those modes are
standard and normally grey scale.  You can use a color map with them
but 16 or fewer colors doesn't make for great viewing, red letters on
a blue backround was my favorite headache producer.

We nuked support for the standard modes because
a) it was very odd to implement especially after we changed
  graphics models.  It doesn't really fit the
  model of a frame buffer.  Instead you had to do odd things
  to write the different bits to diferent planes.
b) it was made clear to us that supporting 640x480x4 grey scale
  was so inferior to what people wanted that it wasn't worth the
  effort.

All other modes are non-standard, i.e., different from card type
to card type.  There are a smaller number of VGA chips than cards
though even that number is unwieldy.  How the differenty
card manufacturers map the chips and plug them together varies.
Often the only extra info we have to know about a card is how to
recognize it.  PCI is helping there though in the past we had to
look at the onboard BIOS and look for patterns; half of /lib/vgadb
is just trying to figure out what's there.  If you wc /sys/src/cmd/aux/vga
you'll see that the ammount of code per chip type is pretty small
(often with an equivalent amount in the kernel to support
cursors and such).  However figuring out that code is hard:

- documentation is usually poor or non-existant.  Drivers from
 more popular OS's (or X) are often the only documentation
- Some registers bits lock out other registers; just reading the
 settings used by windows and rewriting them back is usually
 impossible.
- setup requires writing values into MANY registers, most of
 which are different from chip to chip.  The values are dependent
 on clock speed, bit depth, screen size, and chip version.  Just
 getting them working on one machine doesn't ensure they'll work
 on another.  In some cases it takes futzing with a number of
 machines and board revs to get a `stable' implementation.

Our most popular laptop is the T23 (because of a company deal with
IBM) and we set it up by being careful not to touch too many registers
since we have no idea what the LCD extension registers do.

In our group, we have one person, jmk, who sepnds a considerable amount
of time just getting the cards we have working.  However, that's
in addition to what he's supposed to be doing, not what he's paid
for.  Some of the community is also nice enough to send us the /lib/vgadb
info + drivers to get other cards working.  However, because the
Plan 9 distribution is a 'free time' effort at the Labs we can't
aim one person to doing full time VGA support.  If the community
were larger, we'ld probably get enough contributions to cover a
larger percentage of the cards or if Plan 9 were actually popular
we might be able to get manufacturers to write drivers.

It would be useful if the manufacturers could get together and
come up with another VGA standard so that we would waste less
time and angst.  However, there's no real motivation for this.
To first order, there's only one OS for PC's, and to second order
only two.  It's not that hard for a manufacturer to put together
drivers for their new board for 2 OS's.  I'm pretty impressed that
there are 26 others that manage to support all cards.

Besides, if you ever got your ATI Xpert (Rage Pro) working,
we'ld have to go through this conversation again explaining why
we don't have a web browser worth using.


             reply	other threads:[~2002-06-13 14:21 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-06-13 14:21 presotto [this message]
2002-06-14 11:08 ` Agnelo de la Crotche
2002-06-14 14:26   ` Agnelo de la Crotche
2002-06-14 16:37   ` Lyndon Nerenberg
2002-06-14 20:16     ` Jason Gurtz
2002-06-15  0:27       ` Lyndon Nerenberg
2002-06-17  9:14         ` Douglas A. Gwyn
2002-06-16 22:41     ` Digby Tarvin
2002-06-19  8:45       ` Agnelo de la Crotche
2002-06-17  9:14     ` Agnelo de la Crotche
  -- strict thread matches above, loose matches on Subject: below --
2002-06-14 15:51 Russ Cox
2002-06-14 14:42 andrey mirtchovski
2002-06-14  9:44 Fco.J.Ballesteros
2002-06-14 13:50 ` Agnelo de la Crotche
2002-06-13 14:47 Russ Cox
2002-06-13 13:16 forsyth
2002-06-13 16:45 ` plan9
2002-06-13  9:29 Agnelo de la Crotche
2002-06-13 14:19 ` Ronald G Minnich
2002-06-13 17:46   ` Dan Cross
2002-06-14  8:45   ` Douglas A. Gwyn
2002-06-14 14:41     ` Ronald G Minnich
2002-06-14  8:45   ` Agnelo de la Crotche

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=02580f2e9d1062be41b15fe4acf73ae0@plan9.bell-labs.com \
    --to=presotto@plan9.bell-labs.com \
    --cc=9fans@cse.psu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).