I am running an Embedded Wizard application on an STM32MP1 platform with OpenGL ES 2.0 and DRM. The application initializes fine, but when I enable EW_PERFORM_FULLSCREEN_UPDATE = 1
, the performance drops significantly, making the UI very slow.
I also noticed the following warning during startup:
root@stm32mp1:/# ./EmbeddedWizard-Linux-OpenGL-DRM
Using drm device node '/dev/dri/card0'!
Display interface 'DSI_0' detected.
Available output modes:
720 x 1280 @ 50Hz (pixel clock: 54000kHz) (preferred mode)
Preferred display mode requested
Selected display mode: 720x1280@50Hz (pixel clock: 54000kHz)
WARNING: egl swap behaviour - buffer preservation not supported (egl error: 0x3009)
Use macro EW_PERFORM_FULLSCREEN_UPDATE = 1
Initialize Display... [OK]
Initialize Touch Driver... [OK]
Initialize Memory Manager... [OK]
Initialize Graphics Engine... [OK]
Initialize Invocation Queue... [OK]
Thread Started: Invalid argument
Create Embedded Wizard Root Object... [OK]
Create Embedded Wizard Viewport... [OK]
Starting Embedded Wizard main loop - press <p> to shutdown application...
---------------------------------------------
Embedded Wizard System Info
---------------------------------------------
Target system STM32MP1 (OpenGL ES 2.0/EGL/DRM)
Color format RGBA8888
Build Environment version V13.03.00.00
Runtime Environment (RTE) version V13.03
Graphics Engine (GFX) version V13.03
MemoryPool address 0x001A47B0
MemoryPool size 33554432 bytes
Display interface DSI
Display size 720 x 1280
Viewport size 720 x 1228
Viewport rotation 270
EwScreenSize 1024 x 600
Graphics accelerator OpenGL ES 2.0
Warp function support enabled
Vector graphics support enabled
Gradients support enabled
Blur support enabled
Mask support enabled
Tint support enabled
Bidirectional text support enabled
Compression support enabled
Index8 bitmap resource support enabled
RGB565 bitmap resource support enabled
Native bitmap resource support enabled
Max surface cache size 8388608 bytes
Glyph cache size 512 x 512
Max issue tasks 512
Operating system Embedded Linux
Toolchain GCC
C-Compiler version 13.3.0
Build date and time Mar 17 2025, 12:02:50
---------------------------------------------
Shutting down Application... [OK]
Deinitialize Invocation Queue... [OK]
Deinitialize Graphics Engine... [OK]
Deinitialize Touch Driver... [OK]
Deinitialize Display Driver... [OK]
I have tried adding multiple graphical packages into my build layers, but the issue persists.
Here are my questions:
- Why does enabling
EW_PERFORM_FULLSCREEN_UPDATE
slow down my application? - How can I improve the rendering performance while keeping smooth updates?
- Is there a way to enable buffer preservation (
EGL_BUFFER_PRESERVED
) on STM32MP1? - Would reducing the display resolution or modifying EGL configurations help?
Any insights or suggestions on optimizing performance would be greatly appreciated!