Performance on RT1170



Hi all, I’ve been using NXP RT1170-EVK with LVGL 8.3.2 (the latest version release with SDK SDK_2_13_0_MIMXRT1170-EVK, - 8.3.2_rev1 - Integrate LVGL 8.3.2 to SDK.) and I’m trying to compare the following benchmark with others UI libraries. The benchmark I’m using is a simple vertical scroll list with 300 items in which in every item there are an icon and a text.
I’m getting and evaluating the system performance using Segger SystemView using marker SEGGER_SYSVIEW_MarkStart/Stop and SEGGER_SYSVIEW_RecordEnterISR();/ExitISR().

LVGL library is configured in fullrefresh mode and PXP is ENABLED.
These are the results I got during scrolling:

  1. Using refresh timer with #define LV_DISP_DEF_REFR_PERIOD 20, I got 20-21fps

  2. Same as 1, but I developed a new flushcb where I used PXP as, let me say, a DMA in order to copy buffers to DC without CPU blocking. Performance is slightly better…I also increased LV_GPU_NXP_PXP_BLIT_SIZE_LIMIT, LV_GPU_NXP_PXP_* …in order to use PXP more…
    I got 25-27 fps.

  3. Finally I tried to decoupling refresh timer as described here:
    Display interface — LVGL documentation
    and the first attempt I did, was calling _lv_disp_refr_timer(NULL); in the main task loop:
    const TickType_t xDelay = 5 / portTICK_PERIOD_MS;
    for (;:wink:
    /Call this anywhere you want to refresh the dirty areas/
    vTaskDelay(xDelay); //5ms
    but I thought to achived a better performance, main loop runs every 5ms, but I realized that functions like refr_invalid_areas(void) (called by _lv_disp_refr_timer) took a lot of ms…more o less 30-32ms (got with SystemView markers)

I think, correct me if I’m wrong, these performance are caused doing many rendering operations using CPU, I mean by software, instead of doing using hardware acceleration…Is that right?
I mean, for example, draw_rect is done by CPU because VGLITE is disable in draw_nxp_bg…

Is there a way to speed up this porting? Do you think I should enable both PXP and VGLITE ?

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


What do you want to achieve?

basically increase performance, let me say till or similar to the Display controller timing. Es. for DC which run every 20ms (50HZ) I would like to have almost 50 fps…not 25fps as I got.

What have you tried so far?

Code to reproduce

Screenshot and/or video

Many thanks!

Hi @tzan

I assume you are using default compiler optimizations, right? Please try to enable -O2 or -O3.

You will se big improvement.