Re: splash(4) support in vt

From: Ed Maste <emaste_at_freebsd.org>
Date: Wed, 15 Mar 2023 19:56:44 UTC
On Wed, 15 Mar 2023 at 12:59, Gleb Popov <arrowd@freebsd.org> wrote:
>
> Hello hackers!
>
> I found an old post [1] regarding splash(4) support for vt. The
> company I'm working for wants to invest some time into making the
> FreeBSD boot process as shiny as possible. Can someone knowledgeable
> on the topic give us some insight on where to start?
>
> Our ultimate task is being able to render a GIF logo right from the
> boot splash screen and until X session kicks in.

That's great, I'd very much like to see this supported. HelloSystem
has the same desire, you can see the issue at
https://github.com/helloSystem/ISO/issues/226.

There are many individual tasks to be taken on; we need at least to
get the image displayed earlier in the boot process, support more than
just a 2-colour image, and support a user-provided (rather than
compiled-in) image. We probably also need some animation support (e.g.
a spinner). These tasks are all related but are mostly independent, so
could be taken on in any order. What is your priority on these?

The Wiki page linked from the mailing list posting is
https://wiki.freebsd.org/MateuszPiotrowski/ImproveVtSplashScreenSupport,
and it has a basic introduction. Looking at the source, the current
logo is stored in sys/dev/vt/logo/logo_freebsd.c as a C array holding
a 257x219 bitmap. If you look at vt_fb_bitblt_bitmap (and similar
functions in other drivers) you can see that it loops over each pixel
where the image will be drawn, and sets it to either the foreground or
background color. The compiled in logo is passed to the specific
driver's vd_bitblt_bmp function in vtterm_splash().