hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/boot/framebuffer.zig
blob: e5414583b10974e4bf69550355fbf2c8c8ae4b46 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// linear framebuffer type shi you feel me?
// see: https://wiki.osdev.org/Limine_Bare_Bones

const limine = @import("limine.zig");

pub const Framebuffer = limine.Framebuffer;

// the request placed in .limine_requests so the loader finds and fills it
// idk why this sounds vaguely erotic, like yeah fill me harder lol
export var request: limine.FramebufferRequest linksection(".limine_requests") = .{};

// the response pointer is written by limine before we run, so read it through a
// volatile pointer or the optimizer assumes its still null
pub fn get() ?*Framebuffer {
    const req: *volatile limine.FramebufferRequest = &request;
    const resp = req.response orelse return null;
    if (resp.framebuffer_count == 0) return null;
    return resp.framebuffers.?[0];
}