-
Notifications
You must be signed in to change notification settings - Fork 19
Open
Labels
bugSomething isn't workingSomething isn't working
Description
The commit 980bd4c supports Linux framebuffer backend, but the behavior is weird on my machine.
Typical laptop with an intel processor.
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 39 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Vendor ID: GenuineIntel
Model name: 12th Gen Intel(R) Core(TM) i3-1215U
The root case is that some hardware require a cache synchronization when using the framebuffer.
Problem:
- Mismatch width and height and 3 windows are drawn(in the screenshot).
- Some updates (use
twin_screen_damage
to mark the field to be updated) are not apply immediately on computer screen.
One possible fix is in a1091150/mado@fbe9e00, the code is copied from FOSDEM 2020 - Back to the Linux Framebuffer! and sync_cache.c
After the below commit, another problem appeared is that the whole screen is not rendered when startup. To fix this, simply use twin_screen_damage
to mark the whole scrreen to be damaged, shown in the following code(a1091150/mado@977463a).
static bool twin_fbdev_work(void *closure)
{
twin_screen_t *screen = SCREEN(closure);
static bool run_once = true;
if (run_once) {
run_once = false;
twin_screen_damage(screen, 0, 0, screen->width, screen->height);
}
if (twin_screen_damaged(screen))
twin_screen_update(screen);
//...
}
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working