From: Jon Smirl <jonsmirl@gmail.com>
To: linux-fbdev-devel@lists.sourceforge.net,
Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Subject: Re: Choosing the correct framebuffer configuration
Date: Sun, 7 Aug 2005 11:33:17 -0400 [thread overview]
Message-ID: <9e473391050807083327b190f9@mail.gmail.com> (raw)
In-Reply-To: <Pine.LNX.4.62.0508071145100.31010@gorilla.sonytel.be>
On 8/7/05, Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> On Fri, 5 Aug 2005, Jon Smirl wrote:
> > The chips actually allow nine configs (maybe more when I get a look at
> > the R300 doc). It is ambiguous to set these configs based on BPP since
> > there are multiple configs for various BPP. These configs should
> > instead be set with the transp/red/blue/green fields.
> >
> > 4bpp Index = /4
> > 8bpp Index = /8
> > 16bpp aRGB 1555 = 1/5/5/5
> > 16bpp RGB 565 = /5/6/5
> > 16bpp aRGB 4444 = 4/4/4/4
> > 16bpp aIndex 88 = 8/8
> > 24bpp RGB 888 = /8/8/8
> > 32bpp aRGB 8888 = 8/8/8/8
> > 32bpp aRGB 2:10:10:10 = 2/10/10/10
> >
> > What is the best way to fix this?
>
> Just follow the FBIOPUT_VSCREENINFO rules:
> - If a value doesn't fit, round it up.
> - If rounding is impossible, return an error.
>
> So if a user asks for e.g. bpp 16, transp.length = 1,
> {red,green,blue}.length = 0, you can give him 1555 if your hardware supports
> it. Or 4444 if your hardware doesn't support anything in between 1000 and 4444
> (w.r.t. rounding). But you must not give him 565, since this implies you
> rounded down transp.length.
>
> > The interesting hidden config is 30b color.
>
> Piece of cake!
>
> bpp = 32
> transp.length = 2, {red,green,blue}.length = 10
The problem is that the radeonfb driver sees bpp = 32 and then sets
rgbt = 8/8/8/8. It stomps rgbt without looking at it.
Is this a general problem? Do a lot of drivers look at bpp and then
overwrite rgbt? If so I can look at putting better fixup code in base
fbdev and then remove the code that converts from bpp to rgbt in the
various drivers.
The basic problem is what happens if bpp and rgbt are set in
conflicting ways. For example bpp = 16 and rgbt = 8/8/8/8. Which one
should win? I think the config should always be controlled by rgbt and
bpp is read only and computed from rgbt. But fixing everything to work
that way may break some apps. radeonfb is definitely not working in
this manner.
Best fix would be for the core fbdev to zero out bpp before handing it
to check_par. That would force the chip drivers to compute it from
rgbt. Some of the chip drivers will probably need their code adjusted.
This may also break some apps since they are not setting rgbt.
So I guess the fallback position is leave this driver dependent. So
for the radeonfb case if you set bpp it will work like it always has.
I'll then fix radeonfb to look at rgbt if bpp = 0. rgbt with bpp=0
will then be able to select the other configs.
It would also be nice to build a string with the list of legal configs
into each driver. For radeon the string would contain: /4, /8,
1/5/5/5, /5/6/5, 4/4/4/4, 8/8, /8/8/8, 8/8/8/8, 2/10/10/10. This would
let me display the list of legal configs in sysfs.
--
Jon Smirl
jonsmirl@gmail.com
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
next prev parent reply other threads:[~2005-08-07 15:33 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-08-06 1:47 Choosing the correct framebuffer configuration Jon Smirl
2005-08-06 23:12 ` Petr Vandrovec
2005-08-07 9:48 ` Geert Uytterhoeven
2005-08-07 15:33 ` Jon Smirl [this message]
2005-08-07 16:00 ` Michel Dänzer
2005-08-07 16:14 ` Benjamin Herrenschmidt
2005-08-07 16:32 ` Michel Dänzer
2005-08-07 16:53 ` Jon Smirl
2005-08-07 20:34 ` Geert Uytterhoeven
2005-08-07 20:38 ` Michel Dänzer
2005-08-07 20:47 ` Antonino A. Daplas
2005-08-07 16:15 ` Jon Smirl
2005-08-07 11:00 ` Antonino A. Daplas
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=9e473391050807083327b190f9@mail.gmail.com \
--to=jonsmirl@gmail.com \
--cc=benh@kernel.crashing.org \
--cc=geert@linux-m68k.org \
--cc=linux-fbdev-devel@lists.sourceforge.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.