Slow transitions between screens using PNG decoder


I’m reading images in PNG from SDcard, and my UI has a lot of images, so transitions between screens are very slow.

What MCU/Processor/Board and compiler are you using?

A custom board based on NXP IMXRT1170, with the example code evkmimxrt1170_lvgl_guider_bm_cm7 customized

What LVGL version are you using?

Tried to upgrade, but some problems with libraries compatibility

What do you want to achieve?

Pre-charging all the screens to switch between them without delays

What have you tried so far?

Showing screens with lv_scr_load(), but I don’t want them to show, only charge in external RAM.
Also tried to open only pictures, but not working properly.

Code to reproduce

Is there any option to charge the screens under the actual screen?

uint8_t draw_prev_over_act  :
    1;          /**< 1: Draw previous screen over active screen*/

This variable seems to be interesting, but I can’t see any option to modify it, only when using animated transitions between screens.

Any idea?

Maybe creating a custom function using this one:

void ui_load_scr_animation(lv_ui *ui, lv_obj_t ** new_scr, bool new_scr_del, bool * old_scr_del, ui_setup_scr_t setup_scr,
                           lv_scr_load_anim_t anim_type, uint32_t time, uint32_t delay, bool is_clean, bool auto_del)
	lv_obj_t * act_scr = lv_scr_act();
	lv_disp_t * d = lv_obj_get_disp(act_scr);
	if (d->prev_scr == NULL && (d->scr_to_load == NULL || d->scr_to_load == act_scr)) {
		if(auto_del) {
		if (auto_del && is_clean) {
		if (new_scr_del) {
		lv_scr_load_anim(*new_scr, anim_type, time, delay, auto_del);
		*old_scr_del = auto_del;