Hi,
On 31.03.2022 15:25, AreYouLoco? via SeaBIOS wrote:
Hi,
I am trying to make SeaBIOS on Thinkpad T420 running coreboot display bootsplash but I am failing to prepare the file.
I tried to export file using GIMP and this info: https://puri.sm/wp-content/uploads/2017/02/coreboot-splash-gimp-export-optio...
Relevant part of the coreboot log is: 1508[INFO ] Setting up bootsplash in 1366x768@32 1509[INFO ] CBFS: Found 'bootsplash.jpg' @0x46480 size 0x48e5 in mcache @0x7ffdd1c8 1510[DEBUG] Bootsplash image resolution: 1366x768 1511[ERROR] Bootsplash could not be decoded. jpeg_decode returned 4.
I also tried to add bootsplash.bmp but then it says it didnt found bootsplash.jpg.
Any hints?
This is actually a little bit tricky. JPEG decoder in SeaBIOS and coreboot allows only images which size granularity is 16 bytes. Sooo: 768 pixels / 16 = 48 OK. But 1366 pixels / 16 = 85.375 NOT OK.
You are basically hitting ERR_WIDTH_MISMATCH: https://github.com/coreboot/coreboot/blob/master/src/lib/jpeg.c#L292
If you have a nice BMP file, it doesn't have the width/height granularity constraints unlike JPEG. coreboot will not decode bootsplash.bmp, but SeaBIOS gladly consumes BMP files. Additionally I recommend compressing it with LZMA (BMPs are heavy). So on your coreboot image I would execute:
cbfstool coreboot.rom add -f path/to/bootsplash.bmp -t raw -n bootsplash.bmp.lzma -c lzma -r COREBOOT
The command will add the path/to/bootsplash.bmp file to CBFS under the name bootsplash.bmp.lzma with LZMA compression enabled. SeaBIOS is able to detect .lzma extension in CBFS files and automatically decompresses the files if needed.
Additionally compile SeaBIOS with some debug level, SeaBIOS should be able to put it into cbmem console: https://github.com/coreboot/seabios/blob/master/src/output.c#L46 in case you would need to inspect further issues (BMP may have problem with incorrect bpp format - bits per pixel, you need to set a correct one in GIMP: https://github.com/coreboot/seabios/blob/master/src/bootsplash.c#L178).
Good luck.