About benchmark

I porting this GUI to UEFI and successfully.I run benchmark demo on the PC, but the result were the same in different PC.Anywhere I need to change?

Either bare-metal EFI drawing is extremely efficient (I’ve never benchmarked on anything besides SDL), or lv_tick_inc isn’t being called at the right rate for the calculation to be done properly. 33,386 FPS sounds really, really high.

How are you calling lv_tick_inc?

Hi,

while (1) {

    lv_tick_inc(5);

    lv_task_handler();

    gBS->Stall(1000 * 5);

}

Is it right?

Some machine run the bentchmark demo are very slow but the result still 33386

Hi,

while (1) {

    lv_tick_inc(5);

    lv_task_handler();

    gBS->Stall(1000 * 5);

}

Is it right?

The EFI Methods Stall and GetTime are not very accurate. I gave up using these methods for lvgl, because i couldn’t get the library to run at a usable speed. I am now using the time values from the HPET.

Try calling lv_tick_inc in a separate thread/tick interrupt, or, better yet, use the LV_TICK_CUSTOM feature with some EFI API that returns the current time in milliseconds.

MiSimon’s comment suggests that your delay function is not delaying for the right amount of time, which would help explain the incorrect frame rates.