Skip to main content

roxy_loader/
framebuffer.rs

1use anyhow::Result;
2use roxy_loader_api::framebuffer::Framebuffer;
3use uefi::proto::console::gop::GraphicsOutput;
4
5use crate::utils::get_and_open_protocol;
6
7pub fn new_framebuffer() -> Result<Framebuffer> {
8    let mut gop = get_and_open_protocol::<GraphicsOutput>()?;
9
10    let mode = gop.current_mode_info();
11    let mut fb = gop.frame_buffer();
12
13    Ok(Framebuffer::new(
14        fb.as_mut_ptr(),
15        fb.size(),
16        mode.stride(),
17        mode.pixel_format(),
18        mode.resolution(),
19    ))
20}