19 lines
1.0 KiB
Markdown
19 lines
1.0 KiB
Markdown
# EFI framebuffer
|
|
|
|
## Introduction
|
|
|
|
This subsystem aims to provide a simple way to indicate the boot process state using a progress bar displayed on the EFI GOP framebuffer. For the moment, only framebuffers using 32 bits pixel format are supported. It's defined in `shelter/lib/include/kernel/efifb.h` and implemented in `shelter/lib/src/kernel/efifb.c`.
|
|
|
|
## Overview
|
|
|
|
To avoid any complex colors encoding, pixel values for the colors white and gray must be provided through the framebuffer configuration.
|
|
|
|
The framebuffer parameters are loaded using the `sh_efifb_init_fb(sh_conf_FB_CONFIG *fb_conf,sh_page_PAGE_TABLE_POOL *ptp)` function. This function will:
|
|
1) Load framebuffers dimensions
|
|
2) Identity map the whole framebuffers
|
|
3) Erase the previous texts on the framebuffer, based on the information provided in the framebuffer configuration
|
|
|
|
The progress bar is initialized using `sh_efifb_init_bar()`. It will draw an empty progress bar.
|
|
|
|
Finally, to update the progress bar, the `sh_efifb_set_bar(sh_uint8 percent)` function is used.
|