linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: fb_imageblit semantic
@ 2003-03-17 12:25 Petr Vandrovec
  2003-03-17 12:40 ` Geert Uytterhoeven
  2003-03-17 13:02 ` Antonino Daplas
  0 siblings, 2 replies; 8+ messages in thread
From: Petr Vandrovec @ 2003-03-17 12:25 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: James Simmons, Linux Frame Buffer Device Development, adaplas

On 17 Mar 03 at 13:18, Geert Uytterhoeven wrote:
> 
> That depends... How do we draw the monochrome penguin? Using image->depth is 1
> or 8? The latter (current method) is slower, since we need to expand the
> monochrome logo to 8-bit first, and (usually) compress it to 1-bit in the fbdev
> driver afterwards.

As far as I can see, it gets monochromatic logo and converts it to
8bpp format ;-) (fb_set_logo, needs_logo = 1 or ~1) And then imageblit
converts it back to 1bpp.
 
> And perhaps we may want to draw 32-bit ARGB images later?
> 
> So I see the following possible valid values for image->depth:
>   - 8 (logo with up to 256 colors and LUT)
>   - optional 1 (monochrome logo, if we don't want to expand?)
>   - optional 32 (ARGB image, dithering left to the driver?)

I still do not understand 'if we don't want to expand'. This forces too
much knowledge on upper layer, as far as I can tell.
                                                    Petr Vandrovec
                                                    



-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open! 
Get cracking and register here for some mind boggling fun and 
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en

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

* Re: fb_imageblit semantic
  2003-03-17 12:25 fb_imageblit semantic Petr Vandrovec
@ 2003-03-17 12:40 ` Geert Uytterhoeven
  2003-03-17 13:02 ` Antonino Daplas
  1 sibling, 0 replies; 8+ messages in thread
From: Geert Uytterhoeven @ 2003-03-17 12:40 UTC (permalink / raw)
  To: Petr Vandrovec
  Cc: James Simmons, Linux Frame Buffer Device Development,
	Antonino Daplas

On Mon, 17 Mar 2003, Petr Vandrovec wrote:
> On 17 Mar 03 at 13:18, Geert Uytterhoeven wrote:
> > That depends... How do we draw the monochrome penguin? Using image->depth is 1
> > or 8? The latter (current method) is slower, since we need to expand the
> > monochrome logo to 8-bit first, and (usually) compress it to 1-bit in the fbdev
> > driver afterwards.
> 
> As far as I can see, it gets monochromatic logo and converts it to
> 8bpp format ;-) (fb_set_logo, needs_logo = 1 or ~1) And then imageblit
> converts it back to 1bpp.

Yes, that's what I wrote above (current method).

> > And perhaps we may want to draw 32-bit ARGB images later?
> > 
> > So I see the following possible valid values for image->depth:
> >   - 8 (logo with up to 256 colors and LUT)
> >   - optional 1 (monochrome logo, if we don't want to expand?)
> >   - optional 32 (ARGB image, dithering left to the driver?)
> 
> I still do not understand 'if we don't want to expand'. This forces too
> much knowledge on upper layer, as far as I can tell.

Color expansion => use fb_image.fg_color if bit == 1,
		   use fb_image.bg_color if bit == 0
No expansion => look up color in fb_image.cmap.

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



-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open! 
Get cracking and register here for some mind boggling fun and 
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en

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

* Re: fb_imageblit semantic
  2003-03-17 12:25 fb_imageblit semantic Petr Vandrovec
  2003-03-17 12:40 ` Geert Uytterhoeven
@ 2003-03-17 13:02 ` Antonino Daplas
  2003-03-17 13:47   ` Geert Uytterhoeven
  1 sibling, 1 reply; 8+ messages in thread
From: Antonino Daplas @ 2003-03-17 13:02 UTC (permalink / raw)
  To: Petr Vandrovec
  Cc: Geert Uytterhoeven, James Simmons,
	Linux Frame Buffer Device Development

On Mon, 2003-03-17 at 20:25, Petr Vandrovec wrote:
> On 17 Mar 03 at 13:18, Geert Uytterhoeven wrote:
> > 
> > That depends... How do we draw the monochrome penguin? Using image->depth is 1
> > or 8? The latter (current method) is slower, since we need to expand the
> > monochrome logo to 8-bit first, and (usually) compress it to 1-bit in the fbdev
> > driver afterwards.
> 
> As far as I can see, it gets monochromatic logo and converts it to
> 8bpp format ;-) (fb_set_logo, needs_logo = 1 or ~1) And then imageblit
> converts it back to 1bpp.
>  

Yes.  That's the sacrifice for simplicity and consistency, low color
depths sacrifice on speed, high color depth sacrifice on color range. 
The real beneficiary is 8-bit pseudo-pixel.

Of course, there's always a choice:

1.  allow support for non-monochrome expansion/reduction in
cfb_imageblit(), ie input data is 4bpp and framebuffer format is 16 bpp,
directcolor.

2.  prepare all logo so image->depth matches framebuffer depth.  This
will require  that fb_prepare_logo() has additional code to pack
image->data properly

3.  Just add conditionals like:

if depth == 1
	logo->data == logo_bw
else if depth == 4
	logo->data == logo_4
else if depth == 8
	logo->data == logo_8
else
	prepare_logo_to_match_fb_depth

For #2 and #3, what do we do when var->bits_per_pixel > 8?  Do we still
use image->depth=8? Do we still use the LUT?  

4.  Go back to the 2.4 way of drawing the logo, let the upper layer do
everything, and just directly memcopy the data to the framebuffer.

> > And perhaps we may want to draw 32-bit ARGB images later?
> > 
> > So I see the following possible valid values for image->depth:
> >   - 8 (logo with up to 256 colors and LUT)
> >   - optional 1 (monochrome logo, if we don't want to expand?)
> >   - optional 32 (ARGB image, dithering left to the driver?)
> 
> I still do not understand 'if we don't want to expand'. This forces too
> much knowledge on upper layer, as far as I can tell.

I agree.

Tony




-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open! 
Get cracking and register here for some mind boggling fun and 
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en

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

* Re: fb_imageblit semantic
  2003-03-17 13:02 ` Antonino Daplas
@ 2003-03-17 13:47   ` Geert Uytterhoeven
  2003-03-17 14:24     ` Antonino Daplas
  0 siblings, 1 reply; 8+ messages in thread
From: Geert Uytterhoeven @ 2003-03-17 13:47 UTC (permalink / raw)
  To: Antonino Daplas
  Cc: Petr Vandrovec, James Simmons,
	Linux Frame Buffer Device Development

On 17 Mar 2003, Antonino Daplas wrote:
> On Mon, 2003-03-17 at 20:25, Petr Vandrovec wrote:
> > On 17 Mar 03 at 13:18, Geert Uytterhoeven wrote:
> > > 
> > > That depends... How do we draw the monochrome penguin? Using image->depth is 1
> > > or 8? The latter (current method) is slower, since we need to expand the
> > > monochrome logo to 8-bit first, and (usually) compress it to 1-bit in the fbdev
> > > driver afterwards.
> > 
> > As far as I can see, it gets monochromatic logo and converts it to
> > 8bpp format ;-) (fb_set_logo, needs_logo = 1 or ~1) And then imageblit
> > converts it back to 1bpp.
> 
> Yes.  That's the sacrifice for simplicity and consistency, low color
> depths sacrifice on speed, high color depth sacrifice on color range. 
> The real beneficiary is 8-bit pseudo-pixel.

Indeed.

> Of course, there's always a choice:
> 
> 1.  allow support for non-monochrome expansion/reduction in
> cfb_imageblit(), ie input data is 4bpp and framebuffer format is 16 bpp,
> directcolor.
> 
> 2.  prepare all logo so image->depth matches framebuffer depth.  This
> will require  that fb_prepare_logo() has additional code to pack
> image->data properly

This moves code from the low-level driver to the high-level, and thus reduces
code duplication.

The disadvantage is that the conversion may be a waste of work, if the
resulting image data is not in the same format as the hardware uses (e.g. for
bitplanes).

> 3.  Just add conditionals like:
> 
> if depth == 1
> 	logo->data == logo_bw
> else if depth == 4
> 	logo->data == logo_4
> else if depth == 8
> 	logo->data == logo_8
> else
> 	prepare_logo_to_match_fb_depth

Don't forget about other depths. And the number of logo colors does not depend
on the color depth only, for visuals different from pseudocolor.

> For #2 and #3, what do we do when var->bits_per_pixel > 8?  Do we still
> use image->depth=8?

IMHO always using an image depth of 8 is fine. That's a nice trade off between
genericity and easy access of image data.

Except for monochrome, there I prefer a depth of 1, since doing 1->8 and 8->1
in a row is a bit too wasteful.

BTW, I just realized there's no need to distinguish between monochrome copy and
monochrome-to-color expansion. The monochrome logo code just has to write the
correct values to fb_image.[fb]gcolor. I.e. all zeroes or all ones (number of
bits = var.bits_per_pixel, so it works for 8-bit monochrome, too).

> Do we still use the LUT?  

Yes. An alternative is to enlarge the pseudo palette to 256 entries (if there
are enough number of colors). But since imageblit is done for the logo only,
doing the transform from LUT index to pixel value in imageblit is OK, I think.

> 4.  Go back to the 2.4 way of drawing the logo, let the upper layer do
> everything, and just directly memcopy the data to the framebuffer.

Ugh... This is much worse, since the logo drawing code has to know about all
possible frame buffer formats. In the current scheme, this is nicely hidden in
imageblit.

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



-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open! 
Get cracking and register here for some mind boggling fun and 
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en

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

* Re: fb_imageblit semantic
  2003-03-17 13:47   ` Geert Uytterhoeven
@ 2003-03-17 14:24     ` Antonino Daplas
  2003-03-17 14:46       ` Geert Uytterhoeven
  2003-03-18 21:46       ` Detecting if the mode can be changed? Kendall Bennett
  0 siblings, 2 replies; 8+ messages in thread
From: Antonino Daplas @ 2003-03-17 14:24 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Petr Vandrovec, James Simmons,
	Linux Frame Buffer Device Development

On Mon, 2003-03-17 at 21:47, Geert Uytterhoeven wrote:
>
> IMHO always using an image depth of 8 is fine. That's a nice trade off between
> genericity and easy access of image data.
> 
> Except for monochrome, there I prefer a depth of 1, since doing 1->8 and 8->1
> in a row is a bit too wasteful.
> 

An exception to the rule :-)  Well, I guess if it will significantly
benefit monochrome drivers...

> BTW, I just realized there's no need to distinguish between monochrome copy and
> monochrome-to-color expansion. The monochrome logo code just has to write the
> correct values to fb_image.[fb]gcolor. I.e. all zeroes or all ones (number of
> bits = var.bits_per_pixel, so it works for 8-bit monochrome, too).
> 

I remember mentioning this to you before, and you said that there might
be rare cases that fgcolor can be equal to bgcolor.  However, using -1
instead for bg_color/fg_color may work, at least for the current setup
and only for monochrome, (except perhaps 32-bit monochrome, if there is
such a thing)

I still prefer splitting fb_imageblit() into two though, and still keep
image->depth for logo drawing only, to allow for future expansion.
. 
> > Do we still use the LUT?  
> 
> Yes. An alternative is to enlarge the pseudo palette to 256 entries (if there

Yes.  Which also means logo drawing will also work for quirky drivers,
and the upper layer will be finally totally independent of the low level
drivers.

> are enough number of colors). But since imageblit is done for the logo only,
> doing the transform from LUT index to pixel value in imageblit is OK, I think.
> 

Yes, I also prefer referring to the LUT whatever the format even for
character drawing.  I don't expect any noticeable performance penalty
except for logo drawing.  The way it's currently done is because,
looking at all drivers, not one fills up the pseudo_palette when bpp <=
8.

Tony



-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open! 
Get cracking and register here for some mind boggling fun and 
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en

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

* Re: fb_imageblit semantic
  2003-03-17 14:24     ` Antonino Daplas
@ 2003-03-17 14:46       ` Geert Uytterhoeven
  2003-03-18 21:46       ` Detecting if the mode can be changed? Kendall Bennett
  1 sibling, 0 replies; 8+ messages in thread
From: Geert Uytterhoeven @ 2003-03-17 14:46 UTC (permalink / raw)
  To: Antonino Daplas
  Cc: Petr Vandrovec, James Simmons,
	Linux Frame Buffer Device Development

On 17 Mar 2003, Antonino Daplas wrote:
> On Mon, 2003-03-17 at 21:47, Geert Uytterhoeven wrote:
> > BTW, I just realized there's no need to distinguish between monochrome copy and
> > monochrome-to-color expansion. The monochrome logo code just has to write the
> > correct values to fb_image.[fb]gcolor. I.e. all zeroes or all ones (number of
> > bits = var.bits_per_pixel, so it works for 8-bit monochrome, too).
> > 
> 
> I remember mentioning this to you before, and you said that there might
> be rare cases that fgcolor can be equal to bgcolor.  However, using -1
> instead for bg_color/fg_color may work, at least for the current setup
> and only for monochrome, (except perhaps 32-bit monochrome, if there is
> such a thing)

No, you wanted to distinguish between monochrome expansion and color copy by
setting fb_image.[fb]gcolor to -1.

> I still prefer splitting fb_imageblit() into two though, and still keep
> image->depth for logo drawing only, to allow for future expansion.

OK.

> > > Do we still use the LUT?  
> > 
> > Yes. An alternative is to enlarge the pseudo palette to 256 entries (if there
> 
> Yes.  Which also means logo drawing will also work for quirky drivers,
> and the upper layer will be finally totally independent of the low level
> drivers.
> 
> > are enough number of colors). But since imageblit is done for the logo only,
> > doing the transform from LUT index to pixel value in imageblit is OK, I think.
> > 
> 
> Yes, I also prefer referring to the LUT whatever the format even for
> character drawing.  I don't expect any noticeable performance penalty
> except for logo drawing.  The way it's currently done is because,
> looking at all drivers, not one fills up the pseudo_palette when bpp <=
> 8.

There are some, that have RGB332 truecolor.

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



-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open! 
Get cracking and register here for some mind boggling fun and 
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en

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

* Detecting if the mode can be changed?
  2003-03-17 14:24     ` Antonino Daplas
  2003-03-17 14:46       ` Geert Uytterhoeven
@ 2003-03-18 21:46       ` Kendall Bennett
  2003-03-18 23:50         ` Enumerating available display modes? Kendall Bennett
  1 sibling, 1 reply; 8+ messages in thread
From: Kendall Bennett @ 2003-03-18 21:46 UTC (permalink / raw)
  To: linux-fbdev-devel

Hi Guys,

I am working on implementing code to use the framebuffer console, and I 
want to know in advance of calling FBIOPUT_VSCREENINFO if the screen 
resolution and color depth can actually be changed at runtime or not. If 
the VESA driver is running, this ioctl() displays an error message on the 
screen, and I want to avoid this error message by knowing in advance if 
the ioctl() will work or not.

Is there a flag or way to determine this?

Regards,

---
Kendall Bennett
Chief Executive Officer
SciTech Software, Inc.
Phone: (530) 894 8400
http://www.scitechsoft.com

~ SciTech SNAP - The future of device driver technology! ~



-------------------------------------------------------
This SF.net email is sponsored by: Does your code think in ink? 
You could win a Tablet PC. Get a free Tablet PC hat just for playing. 
What are you waiting for?
http://ads.sourceforge.net/cgi-bin/redirect.pl?micr5043en

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

* Enumerating available display modes?
  2003-03-18 21:46       ` Detecting if the mode can be changed? Kendall Bennett
@ 2003-03-18 23:50         ` Kendall Bennett
  0 siblings, 0 replies; 8+ messages in thread
From: Kendall Bennett @ 2003-03-18 23:50 UTC (permalink / raw)
  To: linux-fbdev-devel

Hi Again,

In working with the framebuffer console interface, it does not appear to 
support enumerating what display modes are available to be set via the 
/dev/fb interface. Am I right in thinking this, or am I missing something 
in the API? I am going to take a look at the source code, but some high 
level programming information would be well received at this end ;-)

Also I can't seem to find any code related to acceleration via /dev/fb. 
Is this not possible for user land apps to call the acceleration 
functions in /dev/fb? I guess I can check the XFree86 module to see how 
it does it....

Regards,

---
Kendall Bennett
Chief Executive Officer
SciTech Software, Inc.
Phone: (530) 894 8400
http://www.scitechsoft.com

~ SciTech SNAP - The future of device driver technology! ~



-------------------------------------------------------
This SF.net email is sponsored by: Does your code think in ink? 
You could win a Tablet PC. Get a free Tablet PC hat just for playing. 
What are you waiting for?
http://ads.sourceforge.net/cgi-bin/redirect.pl?micr5043en

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

end of thread, other threads:[~2003-03-18 23:50 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-03-17 12:25 fb_imageblit semantic Petr Vandrovec
2003-03-17 12:40 ` Geert Uytterhoeven
2003-03-17 13:02 ` Antonino Daplas
2003-03-17 13:47   ` Geert Uytterhoeven
2003-03-17 14:24     ` Antonino Daplas
2003-03-17 14:46       ` Geert Uytterhoeven
2003-03-18 21:46       ` Detecting if the mode can be changed? Kendall Bennett
2003-03-18 23:50         ` Enumerating available display modes? Kendall Bennett

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