radeonfb and 16bit color problem

2 messages, 2 authors, 2002-06-25 · open the first message on its own page

radeonfb and 16bit color problem

From: Bryan Stillwell <hidden>
Date: 2002-06-21 03:30:07

I'm using version 0.1.5 of the radeonfb driver that Ani Joshi posted on
this list earlier this month with kernel 2.4.19pre10, and I've run into
a problem with the colors not being right in 16bit color mode.  In 15bit
color mode, everything seems to look good...

Since running `fbset 800x600-75 -depth 16` seems to want to switch to
15bit color and not 16bit color, I had to use `fbset 800x600-75 -depth
16 -rgba 5,6,5,0` to get into 16bit color mode.  However, once I'm in
16bit color and try to view some jpegs using fbi, the colors are messed
up.

Based of of how the colors in the images are changing, I'm guessing
that the video card is only using the lower 5 bits of green instead of
all 6 bits (chopping off the most significant bit.)  This causes colors
that were only 50% green before to become 100% green (and 25% green
before to become 50%.)

Any ideas would be helpful.  I tried looking at the code myself, but I'm
still quite new to the framebuffer code.  However, this part looked kind
of strange to me:

   /* For 565, the green component is mixed one order below */
   if (rinfo->depth == 16) {
      OUTREG(PALETTE_INDEX, pindex>>1);
      OUTREG(PALETTE_DATA, (rinfo->palette[regno>>1].red << 16) |
             (green << 8) | (rinfo->palette[regno>>1].blue));
      green = rinfo->palette[regno<<1].green;
   }


BTW, I have a Radeon 8500 (QL).

Thanks,
Bryan


-------------------------------------------------------
Sponsored by:
ThinkGeek at http://www.ThinkGeek.com/

Re: radeonfb and 16bit color problem

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2002-06-25 14:17:39

Any ideas would be helpful.  I tried looking at the code myself, but I'm
still quite new to the framebuffer code.  However, this part looked kind
of strange to me:

  /* For 565, the green component is mixed one order below */
  if (rinfo->depth == 16) {
     OUTREG(PALETTE_INDEX, pindex>>1);
     OUTREG(PALETTE_DATA, (rinfo->palette[regno>>1].red << 16) |
            (green << 8) | (rinfo->palette[regno>>1].blue));
     green = rinfo->palette[regno<<1].green;
  }


BTW, I have a Radeon 8500 (QL).
I wrote that part and it works just fine on my powerbook... at least with
the radeonfb version that is in my tree, but I don't think it differs
from the official one in this regard. You can try making sure it's properly
setting 32 palette entries for green when using that mode.

Ben.




-------------------------------------------------------
Sponsored by:
ThinkGeek at http://www.ThinkGeek.com/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help