linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* fixing fbdev for various framebuffer configs
@ 2005-07-29 10:53 Jon Smirl
  2005-07-29 11:21 ` Geert Uytterhoeven
  2005-07-29 11:44 ` Antonino A. Daplas
  0 siblings, 2 replies; 11+ messages in thread
From: Jon Smirl @ 2005-07-29 10:53 UTC (permalink / raw)
  To: fbdev, Antonino A. Daplas, Geert Uytterhoeven, James Simmons

It has been determined that bits per pixel is insuffucient to
enumerate all the needed fbconfigs. Here are the possible fgconfigs
from the OpenGL headers:

total bits 
8     GL_R3_G3_B2
8     GL_RGBA2
12   GL_RGB4
15   GL_RGB5
16   GL_R5_G6_B5
16   GL_RGBA4
16   GL_RGB5_A1
24   GL_RGB8
30   GL_RGB10
32   GL_RGBA8
32   GL_RGB10_A2
36   GL_RGB12
48   GL_RGB16
48   GL_RGBA12
48   GL_FLOAT_RGB16
64   GL_RGBA16
64   GL_FLOAT_RGBA16
96   GL_FLOAT_RGB32
128 GL_FLOAT_RGBA32

We need to be able to set any of these through the fbdev interface. We
also need to allow for possible future expansion.

Ideas on how to adjust the fbdev interface?

What is the effect of alpha bits on the scanout buffer, do they do anything?

-- 
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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: fixing fbdev for various framebuffer configs
  2005-07-29 10:53 fixing fbdev for various framebuffer configs Jon Smirl
@ 2005-07-29 11:21 ` Geert Uytterhoeven
  2005-07-29 11:30   ` Jon Smirl
  2005-07-29 11:44 ` Antonino A. Daplas
  1 sibling, 1 reply; 11+ messages in thread
From: Geert Uytterhoeven @ 2005-07-29 11:21 UTC (permalink / raw)
  To: Jon Smirl; +Cc: fbdev, Antonino A. Daplas, James Simmons

On Fri, 29 Jul 2005, Jon Smirl wrote:
> It has been determined that bits per pixel is insuffucient to
> enumerate all the needed fbconfigs. Here are the possible fgconfigs
> from the OpenGL headers:
> 
> total bits 
> 8     GL_R3_G3_B2
> 8     GL_RGBA2
> 12   GL_RGB4
> 15   GL_RGB5
> 16   GL_R5_G6_B5
> 16   GL_RGBA4
> 16   GL_RGB5_A1
> 24   GL_RGB8
> 30   GL_RGB10
> 32   GL_RGBA8
> 32   GL_RGB10_A2
> 36   GL_RGB12
> 48   GL_RGB16
> 48   GL_RGBA12
> 64   GL_RGBA16

All above (and many more) can be handled fine, cfr.
fb_var_screeninfo.{red,green,blue,transp}.

> 48   GL_FLOAT_RGB16
> 64   GL_FLOAT_RGBA16
> 96   GL_FLOAT_RGB32
> 128 GL_FLOAT_RGBA32
>
> We need to be able to set any of these through the fbdev interface. We
> also need to allow for possible future expansion.
> 
> Ideas on how to adjust the fbdev interface?

Floating point pixel values could be handled by a new nonstd flag:

    #define FB_NONSTD_FLOAT	2
    fb_var_screeninfo.nonstd |= FB_NONSTD_FLOAT

> What is the effect of alpha bits on the scanout buffer, do they do anything?

They determine the transparency of the pixel w.r.t. to the underlying plane, if
the hardware supports it.

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds


-------------------------------------------------------
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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: fixing fbdev for various framebuffer configs
  2005-07-29 11:21 ` Geert Uytterhoeven
@ 2005-07-29 11:30   ` Jon Smirl
  2005-07-29 12:25     ` Geert Uytterhoeven
  0 siblings, 1 reply; 11+ messages in thread
From: Jon Smirl @ 2005-07-29 11:30 UTC (permalink / raw)
  To: Geert Uytterhoeven; +Cc: fbdev, Antonino A. Daplas, James Simmons

On 7/29/05, Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> On Fri, 29 Jul 2005, Jon Smirl wrote:
> > It has been determined that bits per pixel is insuffucient to
> > enumerate all the needed fbconfigs. Here are the possible fgconfigs
> > from the OpenGL headers:
> >
> > total bits
> > 8     GL_R3_G3_B2
> > 8     GL_RGBA2
> > 12   GL_RGB4
> > 15   GL_RGB5
> > 16   GL_R5_G6_B5
> > 16   GL_RGBA4
> > 16   GL_RGB5_A1
> > 24   GL_RGB8
> > 30   GL_RGB10
> > 32   GL_RGBA8
> > 32   GL_RGB10_A2
> > 36   GL_RGB12
> > 48   GL_RGB16
> > 48   GL_RGBA12
> > 64   GL_RGBA16
> 
> All above (and many more) can be handled fine, cfr.
> fb_var_screeninfo.{red,green,blue,transp}.
> 
> > 48   GL_FLOAT_RGB16
> > 64   GL_FLOAT_RGBA16
> > 96   GL_FLOAT_RGB32
> > 128 GL_FLOAT_RGBA32
> >
> > We need to be able to set any of these through the fbdev interface. We
> > also need to allow for possible future expansion.
> >
> > Ideas on how to adjust the fbdev interface?
> 
> Floating point pixel values could be handled by a new nonstd flag:

Why non-standard? All of the current higher end ATI/Nvidia cards support it.

> 
>     #define FB_NONSTD_FLOAT     2
>     fb_var_screeninfo.nonstd |= FB_NONSTD_FLOAT
> 
> > What is the effect of alpha bits on the scanout buffer, do they do anything?
> 
> They determine the transparency of the pixel w.r.t. to the underlying plane, if
> the hardware supports it.
> 
> Gr{oetje,eeting}s,
> 
>                                                 Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                                             -- Linus Torvalds
> 


-- 
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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: fixing fbdev for various framebuffer configs
  2005-07-29 10:53 fixing fbdev for various framebuffer configs Jon Smirl
  2005-07-29 11:21 ` Geert Uytterhoeven
@ 2005-07-29 11:44 ` Antonino A. Daplas
  2005-07-29 11:52   ` Jon Smirl
  1 sibling, 1 reply; 11+ messages in thread
From: Antonino A. Daplas @ 2005-07-29 11:44 UTC (permalink / raw)
  To: linux-fbdev-devel; +Cc: Antonino A. Daplas, Geert Uytterhoeven, James Simmons

Jon Smirl wrote:
> It has been determined that bits per pixel is insuffucient to
> enumerate all the needed fbconfigs. Here are the possible fgconfigs
> from the OpenGL headers:
> 
> total bits 
> 8     GL_R3_G3_B2
> 8     GL_RGBA2
> 12   GL_RGB4
> 15   GL_RGB5
> 16   GL_R5_G6_B5
> 16   GL_RGBA4
> 16   GL_RGB5_A1
> 24   GL_RGB8
> 30   GL_RGB10
> 32   GL_RGBA8
> 32   GL_RGB10_A2
> 36   GL_RGB12
> 48   GL_RGB16
> 48   GL_RGBA12
> 48   GL_FLOAT_RGB16
> 64   GL_RGBA16
> 64   GL_FLOAT_RGBA16
> 96   GL_FLOAT_RGB32
> 128 GL_FLOAT_RGBA32
> 
> We need to be able to set any of these through the fbdev interface. We
> also need to allow for possible future expansion.

To set for example, RGBA16, set {transp|green|red|blue}.len to 16, the
offsets to 0, 16, 32, 48, and bits_per_pixel to 64.  Then let the driver
sort it out.  I don't know what we can do about the FLOAT formats...

> 
> Ideas on how to adjust the fbdev interface?

Well, no need to adjust the interface.  But it is limited though to
16 bits per channel.  Redefining them to 32 will break a lot of apps.

> 
> What is the effect of alpha bits on the scanout buffer, do they do anything?
> 

I think if there is another layer such as an overlay, the alpha bits can
control the transparency between the framebuffer and the overlay. If only
the framebuffer is active,  I don't believe it has any effects.

Tony


-------------------------------------------------------
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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: fixing fbdev for various framebuffer configs
  2005-07-29 11:44 ` Antonino A. Daplas
@ 2005-07-29 11:52   ` Jon Smirl
  2005-07-29 12:01     ` Geert Uytterhoeven
  0 siblings, 1 reply; 11+ messages in thread
From: Jon Smirl @ 2005-07-29 11:52 UTC (permalink / raw)
  To: linux-fbdev-devel; +Cc: Antonino A. Daplas, Geert Uytterhoeven, James Simmons

On 7/29/05, Antonino A. Daplas <adaplas@gmail.com> wrote:
> Jon Smirl wrote:
> > It has been determined that bits per pixel is insuffucient to
> > enumerate all the needed fbconfigs. Here are the possible fgconfigs
> > from the OpenGL headers:
> >
> > total bits
> > 8     GL_R3_G3_B2
> > 8     GL_RGBA2
> > 12   GL_RGB4
> > 15   GL_RGB5
> > 16   GL_R5_G6_B5
> > 16   GL_RGBA4
> > 16   GL_RGB5_A1
> > 24   GL_RGB8
> > 30   GL_RGB10
> > 32   GL_RGBA8
> > 32   GL_RGB10_A2
> > 36   GL_RGB12
> > 48   GL_RGB16
> > 48   GL_RGBA12
> > 48   GL_FLOAT_RGB16
> > 64   GL_RGBA16
> > 64   GL_FLOAT_RGBA16
> > 96   GL_FLOAT_RGB32
> > 128 GL_FLOAT_RGBA32
> >
> > We need to be able to set any of these through the fbdev interface. We
> > also need to allow for possible future expansion.
> 
> To set for example, RGBA16, set {transp|green|red|blue}.len to 16, the
> offsets to 0, 16, 32, 48, and bits_per_pixel to 64.  Then let the driver
> sort it out.  I don't know what we can do about the FLOAT formats...
> 
> >
> > Ideas on how to adjust the fbdev interface?
> 
> Well, no need to adjust the interface.  But it is limited though to
> 16 bits per channel.  Redefining them to 32 will break a lot of apps.

We can change fb_info since the only thing that sees it is fbconsole.
That will let me set the 32bit modes via sysfs. We leave the ioctl's
alone at 16 bits so that the old apps don't notice.

My current idea is to get rid of the bit_per_pixel attribute and
replace it with config. Config would take strings like 8,8,8 or
5,5,5,1 or 32.,32.,32.


> 
> >
> > What is the effect of alpha bits on the scanout buffer, do they do anything?
> >
> 
> I think if there is another layer such as an overlay, the alpha bits can
> control the transparency between the framebuffer and the overlay. If only
> the framebuffer is active,  I don't believe it has any effects.
> 
> Tony
> 
> 
> -------------------------------------------------------
> 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
> _______________________________________________
> Linux-fbdev-devel mailing list
> Linux-fbdev-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
> 


-- 
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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: fixing fbdev for various framebuffer configs
  2005-07-29 11:52   ` Jon Smirl
@ 2005-07-29 12:01     ` Geert Uytterhoeven
  2005-07-29 12:13       ` Jon Smirl
  2005-07-29 13:32       ` Antonino A. Daplas
  0 siblings, 2 replies; 11+ messages in thread
From: Geert Uytterhoeven @ 2005-07-29 12:01 UTC (permalink / raw)
  To: Jon Smirl
  Cc: Linux Frame Buffer Device Development, Antonino A. Daplas,
	James Simmons

On Fri, 29 Jul 2005, Jon Smirl wrote:
> On 7/29/05, Antonino A. Daplas <adaplas@gmail.com> wrote:
> > Jon Smirl wrote:
> > > It has been determined that bits per pixel is insuffucient to
> > > enumerate all the needed fbconfigs. Here are the possible fgconfigs
> > > from the OpenGL headers:
> > >
> > > total bits
> > > 8     GL_R3_G3_B2
> > > 8     GL_RGBA2
> > > 12   GL_RGB4
> > > 15   GL_RGB5
> > > 16   GL_R5_G6_B5
> > > 16   GL_RGBA4
> > > 16   GL_RGB5_A1
> > > 24   GL_RGB8
> > > 30   GL_RGB10
> > > 32   GL_RGBA8
> > > 32   GL_RGB10_A2
> > > 36   GL_RGB12
> > > 48   GL_RGB16
> > > 48   GL_RGBA12
> > > 48   GL_FLOAT_RGB16
> > > 64   GL_RGBA16
> > > 64   GL_FLOAT_RGBA16
> > > 96   GL_FLOAT_RGB32
> > > 128 GL_FLOAT_RGBA32
> > >
> > > We need to be able to set any of these through the fbdev interface. We
> > > also need to allow for possible future expansion.
> > 
> > To set for example, RGBA16, set {transp|green|red|blue}.len to 16, the
> > offsets to 0, 16, 32, 48, and bits_per_pixel to 64.  Then let the driver
> > sort it out.  I don't know what we can do about the FLOAT formats...
> > 
> > >
> > > Ideas on how to adjust the fbdev interface?
> > 
> > Well, no need to adjust the interface.  But it is limited though to
> > 16 bits per channel.  Redefining them to 32 will break a lot of apps.

It's only the colormap entries that are limited to 16 bits per color component,
right? The color components in pixel values can be much larger (up to 2^31 bits
:-).

> My current idea is to get rid of the bit_per_pixel attribute and
> replace it with config. Config would take strings like 8,8,8 or
> 5,5,5,1 or 32.,32.,32.

That's not acceptable. How do you differentiate between RGB888 (without alpha)
using 24 or 32 bits per pixel?

Or more general, what with hardware that has unused bits in its pixel values,
e.g. hardware that has 8 bits per pixel but uses only 1 bit per byte in
monochrome mode and 4 bits in 16-color mode?

> > > What is the effect of alpha bits on the scanout buffer, do they do anything?
> > 
> > I think if there is another layer such as an overlay, the alpha bits can
> > control the transparency between the framebuffer and the overlay. If only
> > the framebuffer is active,  I don't believe it has any effects.

It has on e.g. Set Top Box hardware.

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds


-------------------------------------------------------
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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: fixing fbdev for various framebuffer configs
  2005-07-29 12:01     ` Geert Uytterhoeven
@ 2005-07-29 12:13       ` Jon Smirl
  2005-07-29 12:17         ` Geert Uytterhoeven
  2005-07-29 13:32       ` Antonino A. Daplas
  1 sibling, 1 reply; 11+ messages in thread
From: Jon Smirl @ 2005-07-29 12:13 UTC (permalink / raw)
  To: linux-fbdev-devel; +Cc: Antonino A. Daplas, James Simmons

On 7/29/05, Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> On Fri, 29 Jul 2005, Jon Smirl wrote:
> > On 7/29/05, Antonino A. Daplas <adaplas@gmail.com> wrote:
> > > Jon Smirl wrote:
> > > > It has been determined that bits per pixel is insuffucient to
> > > > enumerate all the needed fbconfigs. Here are the possible fgconfigs
> > > > from the OpenGL headers:
> > > >
> > > > total bits
> > > > 8     GL_R3_G3_B2
> > > > 8     GL_RGBA2
> > > > 12   GL_RGB4
> > > > 15   GL_RGB5
> > > > 16   GL_R5_G6_B5
> > > > 16   GL_RGBA4
> > > > 16   GL_RGB5_A1
> > > > 24   GL_RGB8
> > > > 30   GL_RGB10
> > > > 32   GL_RGBA8
> > > > 32   GL_RGB10_A2
> > > > 36   GL_RGB12
> > > > 48   GL_RGB16
> > > > 48   GL_RGBA12
> > > > 48   GL_FLOAT_RGB16
> > > > 64   GL_RGBA16
> > > > 64   GL_FLOAT_RGBA16
> > > > 96   GL_FLOAT_RGB32
> > > > 128 GL_FLOAT_RGBA32
> > > >
> > > > We need to be able to set any of these through the fbdev interface. We
> > > > also need to allow for possible future expansion.
> > >
> > > To set for example, RGBA16, set {transp|green|red|blue}.len to 16, the
> > > offsets to 0, 16, 32, 48, and bits_per_pixel to 64.  Then let the driver
> > > sort it out.  I don't know what we can do about the FLOAT formats...
> > >
> > > >
> > > > Ideas on how to adjust the fbdev interface?
> > >
> > > Well, no need to adjust the interface.  But it is limited though to
> > > 16 bits per channel.  Redefining them to 32 will break a lot of apps.
> 
> It's only the colormap entries that are limited to 16 bits per color component,
> right? The color components in pixel values can be much larger (up to 2^31 bits
> :-).
> 
> > My current idea is to get rid of the bit_per_pixel attribute and
> > replace it with config. Config would take strings like 8,8,8 or
> > 5,5,5,1 or 32.,32.,32.
> 
> That's not acceptable. How do you differentiate between RGB888 (without alpha)
> using 24 or 32 bits per pixel?

Isn't that the driver's problem? You can't differentiate using OpenGL.
This does imply that I need a read only bits_per_pixel to allow apps
to caculate the stride.

> Or more general, what with hardware that has unused bits in its pixel values,
> e.g. hardware that has 8 bits per pixel but uses only 1 bit per byte in
> monochrome mode and 4 bits in 16-color mode?
> 
> > > > What is the effect of alpha bits on the scanout buffer, do they do anything?
> > >
> > > I think if there is another layer such as an overlay, the alpha bits can
> > > control the transparency between the framebuffer and the overlay. If only
> > > the framebuffer is active,  I don't believe it has any effects.
> 
> It has on e.g. Set Top Box hardware.
> 
> Gr{oetje,eeting}s,
> 
>                                                 Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                                             -- Linus Torvalds
> 
> 
> -------------------------------------------------------
> 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
> _______________________________________________
> Linux-fbdev-devel mailing list
> Linux-fbdev-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
> 


-- 
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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: fixing fbdev for various framebuffer configs
  2005-07-29 12:13       ` Jon Smirl
@ 2005-07-29 12:17         ` Geert Uytterhoeven
  0 siblings, 0 replies; 11+ messages in thread
From: Geert Uytterhoeven @ 2005-07-29 12:17 UTC (permalink / raw)
  To: Linux Frame Buffer Device Development; +Cc: Antonino A. Daplas, James Simmons

On Fri, 29 Jul 2005, Jon Smirl wrote:
> On 7/29/05, Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> > On Fri, 29 Jul 2005, Jon Smirl wrote:
> > > On 7/29/05, Antonino A. Daplas <adaplas@gmail.com> wrote:
> > > > Jon Smirl wrote:
> > > > > It has been determined that bits per pixel is insuffucient to
> > > > > enumerate all the needed fbconfigs. Here are the possible fgconfigs
> > > > > from the OpenGL headers:
> > > > >
> > > > > total bits
> > > > > 8     GL_R3_G3_B2
> > > > > 8     GL_RGBA2
> > > > > 12   GL_RGB4
> > > > > 15   GL_RGB5
> > > > > 16   GL_R5_G6_B5
> > > > > 16   GL_RGBA4
> > > > > 16   GL_RGB5_A1
> > > > > 24   GL_RGB8
> > > > > 30   GL_RGB10
> > > > > 32   GL_RGBA8
> > > > > 32   GL_RGB10_A2
> > > > > 36   GL_RGB12
> > > > > 48   GL_RGB16
> > > > > 48   GL_RGBA12
> > > > > 48   GL_FLOAT_RGB16
> > > > > 64   GL_RGBA16
> > > > > 64   GL_FLOAT_RGBA16
> > > > > 96   GL_FLOAT_RGB32
> > > > > 128 GL_FLOAT_RGBA32
> > > > >
> > > > > We need to be able to set any of these through the fbdev interface. We
> > > > > also need to allow for possible future expansion.
> > > >
> > > > To set for example, RGBA16, set {transp|green|red|blue}.len to 16, the
> > > > offsets to 0, 16, 32, 48, and bits_per_pixel to 64.  Then let the driver
> > > > sort it out.  I don't know what we can do about the FLOAT formats...
> > > >
> > > > >
> > > > > Ideas on how to adjust the fbdev interface?
> > > >
> > > > Well, no need to adjust the interface.  But it is limited though to
> > > > 16 bits per channel.  Redefining them to 32 will break a lot of apps.
> > 
> > It's only the colormap entries that are limited to 16 bits per color component,
> > right? The color components in pixel values can be much larger (up to 2^31 bits
> > :-).
> > 
> > > My current idea is to get rid of the bit_per_pixel attribute and
> > > replace it with config. Config would take strings like 8,8,8 or
> > > 5,5,5,1 or 32.,32.,32.
> > 
> > That's not acceptable. How do you differentiate between RGB888 (without alpha)
> > using 24 or 32 bits per pixel?
> 
> Isn't that the driver's problem? You can't differentiate using OpenGL.
> This does imply that I need a read only bits_per_pixel to allow apps
> to caculate the stride.

You can use fb_fix_screeninfo.line_length (if non-zero) for that.

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds


-------------------------------------------------------
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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: fixing fbdev for various framebuffer configs
  2005-07-29 11:30   ` Jon Smirl
@ 2005-07-29 12:25     ` Geert Uytterhoeven
  0 siblings, 0 replies; 11+ messages in thread
From: Geert Uytterhoeven @ 2005-07-29 12:25 UTC (permalink / raw)
  To: Jon Smirl; +Cc: fbdev, Antonino A. Daplas, James Simmons

On Fri, 29 Jul 2005, Jon Smirl wrote:
> On 7/29/05, Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> > On Fri, 29 Jul 2005, Jon Smirl wrote:
> > > It has been determined that bits per pixel is insuffucient to
> > > enumerate all the needed fbconfigs. Here are the possible fgconfigs
> > > from the OpenGL headers:
> > >
> > > total bits
> > > 8     GL_R3_G3_B2
> > > 8     GL_RGBA2
> > > 12   GL_RGB4
> > > 15   GL_RGB5
> > > 16   GL_R5_G6_B5
> > > 16   GL_RGBA4
> > > 16   GL_RGB5_A1
> > > 24   GL_RGB8
> > > 30   GL_RGB10
> > > 32   GL_RGBA8
> > > 32   GL_RGB10_A2
> > > 36   GL_RGB12
> > > 48   GL_RGB16
> > > 48   GL_RGBA12
> > > 64   GL_RGBA16
> > 
> > All above (and many more) can be handled fine, cfr.
> > fb_var_screeninfo.{red,green,blue,transp}.
> > 
> > > 48   GL_FLOAT_RGB16
> > > 64   GL_FLOAT_RGBA16
> > > 96   GL_FLOAT_RGB32
> > > 128 GL_FLOAT_RGBA32
> > >
> > > We need to be able to set any of these through the fbdev interface. We
> > > also need to allow for possible future expansion.
> > >
> > > Ideas on how to adjust the fbdev interface?
> > 
> > Floating point pixel values could be handled by a new nonstd flag:
> 
> Why non-standard? All of the current higher end ATI/Nvidia cards support it.

It's non-standard in the sense that it's not an integer value.

I don't see a better place to advertise this. Anyone with a better idea?

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds


-------------------------------------------------------
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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: fixing fbdev for various framebuffer configs
  2005-07-29 12:01     ` Geert Uytterhoeven
  2005-07-29 12:13       ` Jon Smirl
@ 2005-07-29 13:32       ` Antonino A. Daplas
  2005-07-29 13:39         ` Jon Smirl
  1 sibling, 1 reply; 11+ messages in thread
From: Antonino A. Daplas @ 2005-07-29 13:32 UTC (permalink / raw)
  To: linux-fbdev-devel; +Cc: Jon Smirl, Antonino A. Daplas, James Simmons

Geert Uytterhoeven wrote:
> On Fri, 29 Jul 2005, Jon Smirl wrote:
>> On 7/29/05, Antonino A. Daplas <adaplas@gmail.com> wrote:
>>> Jon Smirl wrote:
>>>> It has been determined that bits per pixel is insuffucient to
>>>> enumerate all the needed fbconfigs. Here are the possible fgconfigs
>>>> from the OpenGL headers:
>>>>
>>>> total bits
>>>> 8     GL_R3_G3_B2
>>>> 8     GL_RGBA2
>>>> 12   GL_RGB4
>>>> 15   GL_RGB5
>>>> 16   GL_R5_G6_B5
>>>> 16   GL_RGBA4
>>>> 16   GL_RGB5_A1
>>>> 24   GL_RGB8
>>>> 30   GL_RGB10
>>>> 32   GL_RGBA8
>>>> 32   GL_RGB10_A2
>>>> 36   GL_RGB12
>>>> 48   GL_RGB16
>>>> 48   GL_RGBA12
>>>> 48   GL_FLOAT_RGB16
>>>> 64   GL_RGBA16
>>>> 64   GL_FLOAT_RGBA16
>>>> 96   GL_FLOAT_RGB32
>>>> 128 GL_FLOAT_RGBA32
>>>>
>>>> We need to be able to set any of these through the fbdev interface. We
>>>> also need to allow for possible future expansion.
>>> To set for example, RGBA16, set {transp|green|red|blue}.len to 16, the
>>> offsets to 0, 16, 32, 48, and bits_per_pixel to 64.  Then let the driver
>>> sort it out.  I don't know what we can do about the FLOAT formats...
>>>
>>>> Ideas on how to adjust the fbdev interface?
>>> Well, no need to adjust the interface.  But it is limited though to
>>> 16 bits per channel.  Redefining them to 32 will break a lot of apps.
> 
> It's only the colormap entries that are limited to 16 bits per color component,
> right? The color components in pixel values can be much larger (up to 2^31 bits
> :-).

Yes, but struct fb_cmap has entries of u16 and this is used by struct
fb_var_screeninfo and by the cmap functions. fb_setcolreg is also passed
with u16 values.  ioctls affected will be FBIO{GET|PUT}_VSCREENINFO ,
FBIO{GET|PUT}CMAP, all used in userspace.

> 
>> My current idea is to get rid of the bit_per_pixel attribute and
>> replace it with config. Config would take strings like 8,8,8 or
>> 5,5,5,1 or 32.,32.,32.
> 
> That's not acceptable. How do you differentiate between RGB888 (without alpha)
> using 24 or 32 bits per pixel?
> 
> Or more general, what with hardware that has unused bits in its pixel values,
> e.g. hardware that has 8 bits per pixel but uses only 1 bit per byte in
> monochrome mode and 4 bits in 16-color mode?

Agree,

Tony


-------------------------------------------------------
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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: fixing fbdev for various framebuffer configs
  2005-07-29 13:32       ` Antonino A. Daplas
@ 2005-07-29 13:39         ` Jon Smirl
  0 siblings, 0 replies; 11+ messages in thread
From: Jon Smirl @ 2005-07-29 13:39 UTC (permalink / raw)
  To: Antonino A. Daplas; +Cc: linux-fbdev-devel, Antonino A. Daplas, James Simmons

On 7/29/05, Antonino A. Daplas <adaplas@gmail.com> wrote:
> Geert Uytterhoeven wrote:
> > On Fri, 29 Jul 2005, Jon Smirl wrote:
> >> On 7/29/05, Antonino A. Daplas <adaplas@gmail.com> wrote:
> >>> Jon Smirl wrote:
> >>>> It has been determined that bits per pixel is insuffucient to
> >>>> enumerate all the needed fbconfigs. Here are the possible fgconfigs
> >>>> from the OpenGL headers:
> >>>>
> >>>> total bits
> >>>> 8     GL_R3_G3_B2
> >>>> 8     GL_RGBA2
> >>>> 12   GL_RGB4
> >>>> 15   GL_RGB5
> >>>> 16   GL_R5_G6_B5
> >>>> 16   GL_RGBA4
> >>>> 16   GL_RGB5_A1
> >>>> 24   GL_RGB8
> >>>> 30   GL_RGB10
> >>>> 32   GL_RGBA8
> >>>> 32   GL_RGB10_A2
> >>>> 36   GL_RGB12
> >>>> 48   GL_RGB16
> >>>> 48   GL_RGBA12
> >>>> 48   GL_FLOAT_RGB16
> >>>> 64   GL_RGBA16
> >>>> 64   GL_FLOAT_RGBA16
> >>>> 96   GL_FLOAT_RGB32
> >>>> 128 GL_FLOAT_RGBA32
> >>>>
> >>>> We need to be able to set any of these through the fbdev interface. We
> >>>> also need to allow for possible future expansion.
> >>> To set for example, RGBA16, set {transp|green|red|blue}.len to 16, the
> >>> offsets to 0, 16, 32, 48, and bits_per_pixel to 64.  Then let the driver
> >>> sort it out.  I don't know what we can do about the FLOAT formats...
> >>>
> >>>> Ideas on how to adjust the fbdev interface?
> >>> Well, no need to adjust the interface.  But it is limited though to
> >>> 16 bits per channel.  Redefining them to 32 will break a lot of apps.
> >
> > It's only the colormap entries that are limited to 16 bits per color component,
> > right? The color components in pixel values can be much larger (up to 2^31 bits
> > :-).
> 
> Yes, but struct fb_cmap has entries of u16 and this is used by struct
> fb_var_screeninfo and by the cmap functions. fb_setcolreg is also passed
> with u16 values.  ioctls affected will be FBIO{GET|PUT}_VSCREENINFO ,
> FBIO{GET|PUT}CMAP, all used in userspace.

I was going to leave the IOCTL interface alone and only adjust the
internal data structures.  The IOCTL data would convert to the new
internal buffers inside of fbdev. The more advanced fbconfigs would
only be accessible from the sysfs interface.

No one is going to build 32bit cmaps anytime soon, you need gigabytes
of memory to do it. I think we are fine right now with 16b cmap
entries.

> >> My current idea is to get rid of the bit_per_pixel attribute and
> >> replace it with config. Config would take strings like 8,8,8 or
> >> 5,5,5,1 or 32.,32.,32.
> >
> > That's not acceptable. How do you differentiate between RGB888 (without alpha)
> > using 24 or 32 bits per pixel?
> >
> > Or more general, what with hardware that has unused bits in its pixel values,
> > e.g. hardware that has 8 bits per pixel but uses only 1 bit per byte in
> > monochrome mode and 4 bits in 16-color mode?
> 
> Agree,
> 
> Tony
> 


-- 
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

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2005-07-29 13:39 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-07-29 10:53 fixing fbdev for various framebuffer configs Jon Smirl
2005-07-29 11:21 ` Geert Uytterhoeven
2005-07-29 11:30   ` Jon Smirl
2005-07-29 12:25     ` Geert Uytterhoeven
2005-07-29 11:44 ` Antonino A. Daplas
2005-07-29 11:52   ` Jon Smirl
2005-07-29 12:01     ` Geert Uytterhoeven
2005-07-29 12:13       ` Jon Smirl
2005-07-29 12:17         ` Geert Uytterhoeven
2005-07-29 13:32       ` Antonino A. Daplas
2005-07-29 13:39         ` Jon Smirl

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).