#uefi #embedded-graphics #graphics #no-std

no-std uefi-graphics2

适用于UEFI环境的嵌入式图形显示驱动程序

12个不稳定版本 (3个重大更改)

新功能 0.4.2 2024年8月21日
0.4.1 2024年8月21日
0.3.1 2024年8月3日
0.3.0 2024年7月24日
0.1.0 2024年4月16日

嵌入式开发类别中排名497

Download history 303/week @ 2024-05-02 295/week @ 2024-06-27 182/week @ 2024-07-04 72/week @ 2024-07-18 122/week @ 2024-07-25 122/week @ 2024-08-01 5/week @ 2024-08-08

每月下载量321

Apache-2.0

12KB
132

Uefi-graphics2

Crates.io Version Crates.io Total Downloads Crates.io License

一个针对UEFI环境的嵌入式图形显示驱动程序,基于embedded-graphics crate。

支持

  • 双缓冲
  • 显示调整大小
  • 使用embedded-graphics crate的丰富绘图/渲染库

为什么有另外两个crate用于这项工作?

uefi-graphicsuefi-graphics-driver 是两个提供类似功能的crate,遗憾的是,两者似乎都缺乏功能或未维护。

示例

以下是一个简单的示例,使用版本 0.30.0uefi crate。

#![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
}

更多示例可以在示例目录 uefi-graphics2/examples 中找到。

贡献和更新

如果任何依赖项过时、出现错误或请求新功能,请通知我并创建一个问题。

欢迎贡献,随时创建pull request。

如果您喜欢这个项目,别忘了在github上给它一个star!

依赖项

~6MB
~97K SLoC