From 4927eb53968c637651459e29c198d6d194f14952 Mon Sep 17 00:00:00 2001 From: Timon Kruiper Date: Tue, 11 Apr 2023 19:57:20 +0200 Subject: [PATCH] Kernel/aarch64: Change RPi::Framebuffer::PixelOrder to BGR This is what the WindowServer expects. Confusingly the pixel format for MULTIBOOT_FRAMEBUFFER_TYPE_RGB is actually BGRx8888. --- Kernel/Arch/aarch64/RPi/Framebuffer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Kernel/Arch/aarch64/RPi/Framebuffer.cpp b/Kernel/Arch/aarch64/RPi/Framebuffer.cpp index f38586e316..1c7bfc7626 100644 --- a/Kernel/Arch/aarch64/RPi/Framebuffer.cpp +++ b/Kernel/Arch/aarch64/RPi/Framebuffer.cpp @@ -48,7 +48,7 @@ Framebuffer::Framebuffer() // message_queue.set_virtual_offset.y = 0; message_queue.set_depth.depth_bits = 32; - message_queue.set_pixel_order.pixel_order = FramebufferSetPixelOrderMboxMessage::PixelOrder::RGB; + message_queue.set_pixel_order.pixel_order = FramebufferSetPixelOrderMboxMessage::PixelOrder::BGR; message_queue.allocate_buffer.alignment = 4096; if (!Mailbox::the().send_queue(&message_queue, sizeof(message_queue))) { @@ -127,7 +127,8 @@ void Framebuffer::initialize() multiboot_framebuffer_height = framebuffer.height(); multiboot_framebuffer_pitch = framebuffer.pitch(); - VERIFY(framebuffer.pixel_order() == PixelOrder::RGB); + // NOTE: The required pixel format for MULTIBOOT_FRAMEBUFFER_TYPE_RGB is actually BGRx8888. + VERIFY(framebuffer.pixel_order() == PixelOrder::BGR); multiboot_framebuffer_type = MULTIBOOT_FRAMEBUFFER_TYPE_RGB; } }