[SeaBIOS] Bootsplash / Patch for 32bpp BMP support
Kevin O'Connor
kevin at koconnor.net
Sat Mar 25 01:26:45 CET 2017
On Wed, Mar 15, 2017 at 11:23:05PM +0100, Gert Menke wrote:
> Hi again,
>
> okay, it seems I don't have any 24bpp vesa modes, only 32bpp. But SeaBIOS
> assumes that BMPs are 24bpp only.
> This patch makes SeaBIOS support 32bpp BMPs.
Thanks.
FYI, patches for seabios should be sent via 'git send-email' or 'git
format-patch' and they should contain a signed-off-by line in the
description. Also, tabs should be avoided (in favor of spaces). See:
https://www.seabios.org/Contributing
> diff --git a/src/bmp.c b/src/bmp.c
> index 96a2b3f..e9bc6a3 100644
> --- a/src/bmp.c
> +++ b/src/bmp.c
> @@ -56,10 +56,9 @@ typedef struct tagRGBQUAD {
> * arrange horizontal pixel data, add extra space in the dest buffer
> * for every line
> */
> -static void raw_data_format_adjust_24bpp(u8 *src, u8 *dest, int width,
> - int height, int bytes_per_line_dest)
> +static void raw_data_format_adjust(u8 *src, u8 *dest, int width,
> + int height, int bytes_per_line_src, int bytes_per_line_dest)
> {
> - int bytes_per_line_src = 3 * width;
> int i;
> for (i = 0 ; i < height ; i++) {
> memcpy(dest + i * bytes_per_line_dest,
> @@ -95,10 +94,11 @@ int bmp_decode(struct bmp_decdata *bmp, unsigned char *data, int data_size)
> }
>
> /* get bmp properties */
> -void bmp_get_size(struct bmp_decdata *bmp, int *width, int *height)
> +void bmp_get_info(struct bmp_decdata *bmp, int *width, int *height, int *bpp)
> {
> *width = bmp->width;
> *height = bmp->height;
> + *bpp = bmp->bpp;
> }
Wouldn't it be better to adjust raw_data_format_adjust() to convert
from 24bpp bmps to 32bit mode automatically? Seems annoying to have
to store a 32bit bmp in flash. Doing so would also simplify
enable_bootsplash() and find_videomode() too.
-Kevin
More information about the SeaBIOS
mailing list