From 079cd940e727c1705e9f1b30706b9531d5aedda6 Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Sat, 24 May 2025 17:04:18 -0700 Subject: Framebuffer WIP --- src/framebuffer.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/framebuffer.c (limited to 'src/framebuffer.c') diff --git a/src/framebuffer.c b/src/framebuffer.c new file mode 100644 index 0000000..a90bcaa --- /dev/null +++ b/src/framebuffer.c @@ -0,0 +1,30 @@ +#include + +#include + +#include + +#define WIDTH 640 +#define HEIGHT 480 +#define DEPTH 32 + +bool framebuffer_init(uint32_t* error) { + volatile const Mail* mail; + + volatile __attribute__((aligned(MAIL_ALIGN))) uint32_t InitFramebuffer[] = { + 80, // Size in bytes aligned to MAIL_ALIGN(16). + MAILBOX_REQUEST, + TAG_FRAMEBUFFER_SET_PHYSICAL_SCREEN_SIZE, 8, MAILBOX_REQUEST, WIDTH, HEIGHT, + TAG_FRAMEBUFFER_SET_VIRTUAL_SCREEN_SIZE, 8, MAILBOX_REQUEST, WIDTH, HEIGHT, + TAG_FRAMEBUFFER_SET_DEPTH, 4, MAILBOX_REQUEST, DEPTH, + TAG_END, + 0, 0, 0 // Pad. + }; + + mbox_write(PROPERTY_CHANNEL, InitFramebuffer); + while ((mail = mbox_read(PROPERTY_CHANNEL)) != (volatile Mail*)(InitFramebuffer)); + + *error = mail->code; + return mail->code == MAILBOX_SUCCESS; +} + -- cgit v1.2.3