You are browsing as a guest. Sign up (or log in) to start making projects!

2h 7m 34s logged

Abandoning LVGL

After extensive testing aimed at achieving a smooth user experience, I unfortunately didn’t succeed.
I believe the main issue stems from the fact that LVGL relies on significant abstraction layers designed to simplify and optimize UI creation.


However, it isn’t optimized for a full-fledged graphical OS capable of handling video games.

So, I decided to change my approach.

WilUI

After much thought, I decided to create my own graphics library: WilUI (yes, I’m a megalomaniac 😂).


It uses double buffering in PSRAM (the ESP32’s external RAM, ranging from a few MBs to more, depending on the configuration).
It then renders the screen using one or two internal RAM buffers; each of these buffers holds 48 lines of the display.

Thanks to this, I managed to jump from under 10 fps to around 26 fps. I achieve this speed using full refreshes, so in theory, the actual performance should be smoother; I won’t be doing a full refresh every time, but rather partial refreshes on the areas that have changed.

The library isn’t really fully underway yet—I’ve mostly handled the framebuffer management so far, while the UI components and other features still need to be built… But I wanted to say I’d created a UI library anyway 😅

The new TODO list

  • dirty rects
  • basic UI components
  • text rendering
  • basic window manager (SOWM) -> desktops + status bar + simple windows

wilra0v, btw

0
37

Comments 0

No comments yet. Be the first!