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

Reply via email to