Skip to main content

LVGL Benchmark Guide for AXON/EDM/PICO-IMX91 and AXON/EDM/PICO-IMX93

Applicable Platforms

This guide applies to the following SOMs.

  • AXON-IMX91
  • AXON-IMX93
  • EDM-IMX91
  • EDM-IMX93

Introduction

This evaluation focuses on four NXP i.MX platform development boards—the AXON-IMX93 and EDM-IMX93, as well as the AXON-IMX91 and EDM-IMX91. Using LVGL’s built-in benchmark module, we will quantitatively compare their multi-object animation rendering, update rate (FPS) , CPU load and average time under identical display resolution and test conditions.

Part 1: Project setup

1.1 Set Up the Build Environment

  1. Refer to the Step-by-Step LVGL Development Guide for AXON/EDM-IMX91 and AXON/EDM-IMX93.

1.2 Run the project

  1. Clone the repository:
git clone --recurse-submodules https://github.com/lvgl/lv_port_nxp_imx93.git
cd lv_port_nxp_imx93
  1. default application from lv_port_linux runs the widget demo. To run the benchmark demo, modify lv_port_linux/main.c :
/*Create a Demo*/
// lv_demo_widgets();
// lv_demo_widgets_start_slideshow();
lv_demo_benchmark();
  1. Choose a Configuration:
cp lv_conf_example/lv_conf_fb_2_threads.h lv_port_linux/lv_conf.h
  1. build :
cd lv_port_linux
source /opt/fsl-imx-xwayland/6.6-scarthgap/environment-setup-armv8a-poky-linux
cmake -GNinja -B build
ninja -C build

Part2: Transfer the executable on the board

2.1 Prepare Target Board

  1. Ensure your target board is powered on and connected to your network
  2. Go to the root filesystem

2.2 Copy the LVGL Application

cp  /bin/lvglsim  /media/username/root/usr/bin/

Alternatively, if your board is accessible via SSH:

scp /bin/lvglsim  root@board-ip-address:/usr/bin/

Part3: Running the LVGL Benchmark Demo

1.Start the application

######################################
## WARNING: do not stop these services if using wayland demo
systemctl stop weston.socket
systemctl stop weston.service
######################################
/usr/bin/lvglsim

lvgl_benchmark.png

AXON-IMX93/EDM-IMX93 lvgl.png

AXON-IMX91/EDM-IMX91 lvgl(1).png

We are running glmark2-es2-wayland on the weston of these two platforms and comparing it with the i.MX8M Plus platform.

:::(Info) (NOTE) i.MX91 family lacks a dedicated GPU, i.MX93 family includes a hardware compositor but no 3D accelerator. :::

CategoryConfigurationaxon-imx91 FPSaxon-imx91 FrameTime (ms)axon-imx93 FPSaxon-imx93 FrameTime (ms)edm-g-imx8mp FPSedm-g-imx8mp FrameTime (ms)
builduse-vbo=false2674.31810103.17311470.872
builduse-vbo=true2690.16410103.29120910.478
texturetexture-filter=nearest2803.1256184.20119200.521
texturetexture-filter=linear2837.0535214.45218470.542
texturetexture-filter=mipmap11237.3842546.16717790.562
shadingshading=gouraud2810.1136197.32913510.741
shadingshading=blinn-phong-inf2997.8273342.96911930.838
shadingshading=phong11357.7902629.9697021.425
shadingshading=cel11511.8422764.8815731.748
bumpbump-render=high-poly11363.2532639.4416551.527
bumpbump-render=normals2884.3194251.70118400.544
bumpbump-render=height11018.1963350.5069681.034
effect2dkernel=0,1,0;1,-4,1;0,1,0;12644.10511675.4493822.619
effect2dkernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;16178.06114594.8441337.531
pulsarlight=false:quads=5:texture=false2776.0259115.37011550.866
desktopblur-radius=5:effect=blur:passes=1:separable=true:windows=415335.19014356.4131745.747
desktopeffect=shadow:windows=411655.7532962.3576041.656
buffercolumns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map11192.9492504.0131656.084
buffercolumns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata11193.0402500.0011646.103
buffercolumns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map11191.8333499.4832204.549
ideasspeed=duration2938.8435241.2143392.951
jellyfish<default>12258.22811468.8582523.971
terrain<default>143405.943134764.4092051.285
shadow<default>11170.1343476.9927471.340
refract<default>113565.137110761.5576116.404
conditionalsfragment-steps=0:vertex-steps=02800.3246183.04913860.722
conditionalsfragment-steps=5:vertex-steps=011382.8362643.1212264.432
conditionalsfragment-steps=0:vertex-steps=52823.4866191.28812520.799
functionfragment-complexity=low:fragment-steps=52982.6664325.2354902.042
functionfragment-complexity=medium:fragment-steps=511222.5522522.2102494.028
loopfragment-loop=false:fragment-steps=5:vertex-steps=511001.6923335.4084782.096
loopfragment-steps=5:fragment-uniform=false:vertex-steps=511003.0653335.7744762.103
loopfragment-steps=5:fragment-uniform=true:vertex-steps=511448.5052704.6372623.829

Conclusion

The i.MX91 family lacks a dedicated GPU and is primarily optimized for 2D graphics and basic rendering tasks, making it challenging to display complex dynamic graphics (e.g., Wayland weston, QT applications, Ubuntu Gnome) or 3D graphics. The i.MX93 family, in contrast, includes a hardware compositor (e.g., for 2D overlays and basic GPU acceleration) but does not feature a 3D graphics accelerator, limiting its ability to handle advanced 3D rendering.

While the i.MX93 can support simple GUI operations (e.g., static or low-complexity interfaces), the i.MX91 is even more constrained. For the i.MX91 series, the data from the previous table suggests that LVGL (a lightweight 2D graphics framework) is the most practical choice for fixed-display applications, as it aligns with the chip's limited rendering capabilities. For applications requiring a basic operating system interface (e.g., desktop environments, shadow effects) with low power consumption, the i.MX93 series is a viable option due to its hardware compositor.

However, for scenarios involving 3D graphics, complex 2D effects, or high-performance GUIs (e.g., [terrain], [effect2d], or [buffer] tests in the table), the edm-g-imx8mp (or similar i.MX8MP-based devices) is strongly recommended due to its significantly higher FPS and lower FrameTime in these workloads. This highlights the importance of matching hardware capabilities to application requirements when selecting a platform for embedded graphics development.

Reference