Hello @EdwinHz, @WenbinYuan ,
I performed many tests with MIMXRT1166-EVK Board. I enabled only PXP, only VGLite, both of them and finally disable both of them and observed its outputs on LCD Display. When I do that, I am setting the parameter "disp_drv.full_refresh = 1" (LVGL draws the whole 720x1280 screen each time)
*** When I only " #define LV_USE_GPU_NXP_VG_LITE 1 " : for "speed" screen fps value are too low as 7-8FPS, for "record" screen fps value is 3-4FPS and CPU usage is nearly %70 for both for ScreenTransition Example in GUIGuider.
*** When I only " #define LV_USE_GPU_NXP_PXP 1 " : for "speed" screen fps value are too low as 3-4FPS, CPU usage %93; "record" screen fps value is 15FPS and CPU usage is nearly %55 for ScreenTransition Example in GUIGuider.
*** When I both " #define LV_USE_GPU_NXP_PXP 0 " and " #define LV_USE_GPU_NXP_VG_LITE 0 " : and set the parameter "disp_drv.full_refresh = 0" in lvgl_support.c file and finally replace the flush function in lvgl_support.c file in SDK with my below function. (LVGL draws only changing areas to LCD Display, not the whole 720x1280 buffer. )
static void DEMO_FlushDisplay(lv_disp_drv_t *disp_drv,
const lv_area_t *area,
lv_color_t *color_p)
{
int32_t x, y;
int32_t w = (area->x2 - area->x1 + 1);
int32_t h = (area->y2 - area->y1 + 1);
for (y = 0; y < h; y++)
{
memcpy(&s_frameBuffertemp[area->y1 + y][area->x1],
color_p + y * w,
w * sizeof(lv_color_t));
}
SCB_CleanInvalidateDCache_by_Addr((void *)&s_frameBuffertemp[area->y1][area->x1],
w * h * sizeof(lv_color_t));
g_dc.ops->setFrameBuffer(&g_dc, 0, (void *)s_frameBuffertemp);
lv_disp_flush_ready(disp_drv);
}
for "speed" screen fps value are too high nearly 23-25Fps, CPU usage %100; "record" screen fps value is 20FPS and CPU usage is nearly %68 for ScreenTransition Example in GUIGuider.
So, as a conclusion, NXP LVGL VGLite library is working very badly. NXP LVGL PXP works a little bit better. However CPU without using any GPU works the best. So, I previously would have suspected as LVGL was not working well. But from above results, LVGL works as expected very good but NXP hardware accelerator libraries are really working very bad. I applied all the directives in below SS, however the final situation is as I explained.

I really wonder why PXP or VGLite does not perform drawings only for changing areas in screen instead of drawing the whole screen. Is not there a possible way using any of one of GPUs instead of CPU?
By the way, I also performed this below test, too.
*** When I both " #define LV_USE_GPU_NXP_PXP 0 " and " #define LV_USE_GPU_NXP_VG_LITE 0 " : and set the parameter "disp_drv.full_refresh = 1" in lvgl_support.c file and used the original flush function in SDK , not used above my one because of setting "disp_drv.full_refresh = 1". (So, LVGL again draws the whole 720x1280 screen each time). I really surprised the results even though I have used no any GPU;
for "speed" screen fps value I got 7 FPS and CPU usage %100 , for "record" screen fps value is 13-14 FPS and CPU usage is nearly %78 for both for ScreenTransition Example in GUIGuider.
So even thoguh I use full frame buffer each time, CPU works very good compared to enabling to use VGLite or PXP. Using GPU made worse performance so much. It is very surprising!
You can try doing test on your board. Or I can share short videos for each setting during test
Waiting your comments.