LVGL render and display flush on different threads

Is there a common practice for how to split the processing of LVGL rendering + pushing pixels to the display on different threads? (i.e. render thread and flush thread)

It seems like LVGL won’t push the next frame until lv_display_flush_ready is called, which can’t be safely invoked in a separate thread

I saw lv_mutex_* but wouldn’t this cause a deadlock if I called that in the flush thread? Or will lv_timer_*handler no-wait and immediately return when flush is pending to avoid that deadlock?