diff --git a/common/GNUmakefile b/common/GNUmakefile index db7193a0..924333e0 100644 --- a/common/GNUmakefile +++ b/common/GNUmakefile @@ -55,7 +55,9 @@ override CPPFLAGS_FOR_TARGET := \ -MMD \ -MP -$(call MKESCAPE,$(BUILDDIR))/./flanterm/backends/fb.o: override CPPFLAGS_FOR_TARGET += -DFLANTERM_FB_DISABLE_BUMP_ALLOC +$(call MKESCAPE,$(BUILDDIR))/./flanterm/backends/fb.o: override CPPFLAGS_FOR_TARGET += \ + -DFLANTERM_FB_DISABLE_BUMP_ALLOC \ + -DFLANTERM_FB_SUPPORT_BPP ifeq ($(TARGET),bios) override CFLAGS_FOR_TARGET += \ diff --git a/common/lib/gterm.c b/common/lib/gterm.c index b8b0be66..efd5367d 100644 --- a/common/lib/gterm.c +++ b/common/lib/gterm.c @@ -10,6 +10,7 @@ #include #include #include +#define FLANTERM_FB_SUPPORT_BPP #include #include @@ -673,13 +674,8 @@ no_load_font:; for (size_t i = 0; i < fbs_count; i++) { struct fb_info *fb = &fbs[i]; - // Ensure this is xRGB8888, we only support that for the menu - if (fb->red_mask_size != 8 - || fb->red_mask_shift != 16 - || fb->green_mask_size != 8 - || fb->green_mask_shift != 8 - || fb->blue_mask_size != 8 - || fb->blue_mask_shift != 0) { + // Ensure that this framebuffer uses 32-bits per pixel. + if (fb->framebuffer_bpp != 32) { continue; } @@ -714,6 +710,9 @@ no_load_font:; pmm_free, (void *)(uintptr_t)fb->framebuffer_addr, fb->framebuffer_width, fb->framebuffer_height, fb->framebuffer_pitch, + fb->red_mask_size, fb->red_mask_shift, + fb->green_mask_size, fb->green_mask_shift, + fb->blue_mask_size, fb->blue_mask_shift, bg_canvas, ansi_colours, ansi_bright_colours, &default_bg, &default_fg, diff --git a/test/GNUmakefile b/test/GNUmakefile index 7d405797..788b5b78 100644 --- a/test/GNUmakefile +++ b/test/GNUmakefile @@ -6,7 +6,7 @@ export OBJCOPY_FOR_TARGET export READELF_FOR_TARGET override CC := $(CC_FOR_TARGET) -CFLAGS = -O2 -g -Wall -Wextra +CFLAGS = -O2 -g -Wall -Wextra -DFLANTERM_FB_SUPPORT_BPP LDFLAGS = override LD := $(LD_FOR_TARGET) override QEMU := qemu-system-x86_64 diff --git a/test/limine.c b/test/limine.c index bf59148a..7728cb18 100644 --- a/test/limine.c +++ b/test/limine.c @@ -245,7 +245,13 @@ static void limine_main(void) { fb->address, fb->width, fb->height, - fb->pitch + fb->pitch, + fb->red_mask_size, + fb->red_mask_shift, + fb->green_mask_size, + fb->green_mask_shift, + fb->blue_mask_size, + fb->blue_mask_shift ); uint64_t kernel_slide = (uint64_t)kernel_start - 0xffffffff80000000;