#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; }