Drawing directly to the display, ignoring or subeverting object model - possible?

I have a project that uses ESP32S3 with SPI AMOLED display.

The screen is going to contain a number of usual widgets, text and graphical indicators, for which I would like to use lvgl, for painless rendering of the text and for antialiasing. These elements are rarely updated, and rendering is allowed to be slow.

Another, big, section of the screen will display oscilloscope-type trace of a real-time signal. The target is to draw the next, approximately 1.5K pixels, strip 25 times per second.

For this “fast” display, I do not want any blending, object overlap detection, or canvas buffers. Full image will only exist in the display controller RAM, and not take MCU resources to maintain.

After reading documentation, it seems that the usual advice to use canvas does not fit my use case, and I could not find anything else suitable.

My question:

What could be a reasonable way to achieve this, without totally breaking off with lvgl and resorting to display driver primitives?

Draw callback functions look promising. Would I be able to define a custom draw event callback on an object covering the “fast display area” maybe? Are such callbacks allowed to use “display flash” callback? How to control when exactly will it run?

Or maybe some other options exist?

Thank you!

I ended up with the code that, in the main loop, first calls lv_task_handler(), and after that, the driver function that updates the area (the same function that is registered with lv_display_set_flush_cb()).

Ugly, but I could not come up with anything better.