On Fri, Jan 25, 2019 at 06:19:11PM -0000, Joseph Pacheco-Corwin wrote: > Specifically added support for 16 and 32bpp files, in addition to 24bpp. > The function bmp_show() in bmp.c has had the hardcoded check for 24bpp > replaced with a general > bpp check that uses a % to check for remainder, and returns 1 if the > remainder is >0. > The previous method for adjusting the BMP data (raw_data_format_adjust_24bpp) > relied > on a preset 3*bytes_per_line_src, this has been changed and the > multiplication is now performed > in the function's arguments. This change still allows someone else to reuse > the same function for > 1/2/4bpp support if necessary. The file util.h has been modified to reflect > this decision. > > The changes to raw_data_format_adjust() is based on an > abandoned patch by Gert Menke (submitted March 14, 2017), > credit to them for that change and the addition of *bpp to bmp_get_info(). > > Any feedback? I would appreciate it.
Thanks. In general it looks fine, but I do have one minor comment below. [...] > --- a/src/bootsplash.c > +++ b/src/bootsplash.c > @@ -172,10 +172,13 @@ enable_bootsplash(void) > dprintf(1, "bmp_decode failed with return code %d...\n", ret); > goto done; > } > - bmp_get_size(bmp, &width, &height); > - bpp_require = 24; > + bmp_get_info(bmp, &width, &height, &bpp_require); > } > - /* jpeg would use 16 or 24 bpp video mode, BMP use 24bpp mode only */ > + > + /* jpeg would use 16 or 24 bpp video mode, BMP uses 8/16/24/32 bpp mode. > + * 8bpp for BMP has corrupted colors, and lower than 8bpp fails to > display > + * or results in a loop. > + */ > > // Try to find a graphics mode with the corresponding dimensions. > int videomode = find_videomode(vesa_info, mode_info, width, height, > @@ -192,7 +195,13 @@ enable_bootsplash(void) > dprintf(3, "bytes per scanline: %d\n", mode_info->bytes_per_scanline); > dprintf(3, "bits per pixel: %d\n", depth); > > - // Allocate space for image and decompress it. > + // Allocate space for image and decompress it. > + /* > + * Has a weird issue with low bpp image files, imagesize is not > + * consistent. Example: 8bpp images are correct, being essentially > + * multiplied/divided by 1, but if you use 4bpp images, width is divided > by > + * 8, when it should be divided by 2. > + */ I would ask that we avoid changing the comments to document what the code does not do. As I find comments discussing what is not implemented to be confusing. Cheers, -Kevin _______________________________________________ SeaBIOS mailing list -- seabios@seabios.org To unsubscribe send an email to seabios-le...@seabios.org