Weston kiosk shell drops to 30 FPS on one display, desktop shell runs at 60 FPS

Hi,

I have two identical displays under a single DRM device:

  • HDMI-A-2 (native HDMI)

  • HDMI-A-1 (MIPI‑DSI → HDMI bridge)

When I run weston-simple-egl -f in desktop shell, both display outputs give ~60 FPS.
In kiosk shell, the same app on HDMI-A-1 drops to ~30 FPS, while HDMI-A-2 stays at 60 FPS.
EGL extensions are reported in both cases. Also, DDR bandwidth spikes when FPS drops.

Why does kiosk mode behave differently for HDMI-A-1? Is there a setting or limitation that causes EGL acceleration or to change for secondary outputs in kiosk shell? Even if I connect only HDMI-A-1 (no second display), kiosk shell still runs at 30 FPS.

Kiosk shell (HDMI-A-1):

root@verdin-imx8mp-15404184:/home/torizon/samarth# weston-simple-egl -f
has EGL_EXT_buffer_age and EGL_EXT_swap_buffers_with_damage
152 frames in 5 seconds: 30.400000 fps
152 frames in 5 seconds: 30.400000 fps
152 frames in 5 seconds: 30.400000 fps
152 frames in 5 seconds: 30.400000 fps
^Csimple-egl exiting

Desktop shell (same display):

root@verdin-imx8mp-15404184:/home/torizon/samarth# weston-simple-egl -f
has EGL_EXT_buffer_age and EGL_EXT_swap_buffers_with_damage
295 frames in 5 seconds: 59.000000 fps
294 frames in 5 seconds: 58.799999 fps
294 frames in 5 seconds: 58.799999 fps
294 frames in 5 seconds: 58.799999 fps
^Csimple-egl exiting

Best regards,
Samarth

tdx-info.txt (1.1 KB)

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


I’d be glad to help troubleshoot this performance difference between desktop shell and kiosk shell! To provide the most accurate guidance, could you let me know which OS and version you are running?

You can use the tdx-info command to get detailed information about your setup. For more details about this command, please see: Getting Device Information with Tdx-Info | Toradex Developer Center

This information will help me understand your specific configuration and provide targeted assistance for the kiosk shell performance issue you’re experiencing with HDMI-A-1.

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

Hi @jeremias.tx
Hope you are doing well.

Can you please look into this issue.

Kiosk Shell vs Desktop Shell Performance Differences

Based on your description of the performance difference between desktop shell and kiosk shell on your Verdin iMX8M Plus, this appears to be related to how kiosk-shell handles multi-display configurations differently than desktop-shell.

Kiosk Shell Configuration

The kiosk-shell was introduced in Weston 9.0 and has different behavior compared to desktop-shell(1). To enable kiosk-shell, you would add this to your weston.ini file(1):

[core]
shell=kiosk-shell.so

(1)

Key Differences in Kiosk Shell

One important limitation noted in the documentation is that kiosk-shell doesn’t support the background-image field of the [shell] section in weston.ini(1). This suggests kiosk-shell has different rendering optimizations that may affect performance characteristics.

Multi-Display Considerations

Since you have two displays on the same DRM interface (both HDMI-A-1 and HDMI-A-2), Weston extends its surface to all displays connected to the same DRM interface(1). The performance difference you’re seeing between the native HDMI (HDMI-A-2) and the DSI-to-HDMI bridge (HDMI-A-1) in kiosk mode could be related to how kiosk-shell handles rendering across different output types.

Potential Solutions

For multi-display setups with different performance characteristics, you might consider using app-ids to control which applications appear on which outputs(1). You can redirect output using kiosk-shell and app-ids by finding your application’s ID and configuring it in weston.ini(1):

[output]
name=HDMI-A-1
app-ids=my-app-name

[output]
name=HDMI-A-2
app-ids=my-app-name-2

(1)

To find your application’s app ID, you can use(1):

WAYLAND_DEBUG=1 <MY_APP_NAME> 2>&1 | grep app

(1)

This would help isolate whether the performance issue is related to how kiosk-shell manages rendering across multiple outputs or specific to the DSI-to-HDMI bridge path.

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.