Crates.io | uefi-graphics2 |
lib.rs | uefi-graphics2 |
version | 0.4.4 |
source | src |
created_at | 2024-04-16 16:56:24.900094 |
updated_at | 2024-10-24 19:43:05.277588 |
description | An embedded-graphics display driver for UEFI environments |
homepage | |
repository | https://github.com/theaddonn/uefi-graphics2 |
max_upload_size | |
id | 1210446 |
size | 36,512 |
A fast embedded-graphics display driver for UEFI environments,
using the embedded-graphics
crate
as its base.
Supports:
embedded-graphics
crateuefi-graphics
and
uefi-graphics-driver
are 2 crates providing similar purpose,
sadly both seem to either lack functionality or are unmaintained
Here is a simple example with using the uefi
crate on version 0.30.0
:
#![no_main]
#![no_std]
extern crate alloc;
use uefi::prelude::*;
use uefi::proto::console::gop::GraphicsOutput;
use uefi_graphics2::embedded_graphics::pixelcolor::{Rgb888, RgbColor};
use uefi_graphics2::UefiDisplay;
#[entry]
fn main(_image_handle: Handle, mut boot_system_table: SystemTable<Boot>) -> Status {
uefi::helpers::init(&mut boot_system_table).unwrap();
// Disable the watchdog timer
boot_system_table
.boot_services()
.set_watchdog_timer(0, 0x10000, None)
.unwrap();
let boot_services = boot_system_table.boot_services();
// Get gop
let gop_handle = boot_services.get_handle_for_protocol::<GraphicsOutput>().unwrap();
let mut gop = boot_services.open_protocol_exclusive::<GraphicsOutput>(gop_handle).unwrap();
// Create UefiDisplay
let mode = gop.current_mode_info();
let mut display = UefiDisplay::new(gop.frame_buffer(), mode);
// Tint the entire screen cyan
display.fill_entire(Rgb888::CYAN).unwrap();
// Draw everything
display.flush();
// wait 10000000 microseconds (10 seconds)
boot_services.stall(10_000_000);
Status::SUCCESS
}
More example can be found in the example
directory uefi-graphics2/examples
.
If any dependencies are outdated, bugs occur or features are requested, please notify me and create an issue.
Contributing is appreciated as well, feel free to create a pull request.
If you like this project dont forget to leave a star on github!