Genio 510-EVK: Unable to mirror DSI (1200x1920) and HDMI-A-1 outputs in Weston

Hi,

I am working with the Genio 510-EVK (MT8370) running a Yocto-built image (Kernel 6.6.37). I am trying to mirror/clone the display content between the primary DSI panel and the HDMI output, but the system consistently defaults to an Extended Display layout.

Hardware Setup:

  • Primary Output (DSI-1): 1200x1920 (Portrait) - Connector ID 32, CRTC 47.

  • Secondary Output (HDMI-A-1): Various modes supported (800x480, 1024x768, 1920x1080) - Connector ID 34, CRTC 56.

Issue: Even when configuring weston.ini with pos=0,0 for both outputs or using the same-as directive, Weston initializes them as extended screens.

Attempted Troubleshooting:

  1. Weston Configuration: Set both outputs to pos=0,0 and used renderer=gl. Weston appears to ignore the overlapping coordinates and shifts the HDMI to x=1200.

  2. Modetest Testing: Tried forcing both connectors to a single CRTC using: modetest -M mediatek -s 32,34@47:1024x768 This returns: failed to create dumb buffer: Invalid argument.

  3. Environment Variables: Attempted WESTON_DRM_MIRROR_OUTPUTS=1 and WESTON_ALLOW_CLONE=1, but the behavior remains “Extended.”

Questions:

  1. Does the MediaTek DRM driver for Genio 510 support hardware cloning/mirroring when the DSI and HDMI have different native resolutions and timings?

  2. Is there a specific Device Tree (DTS) modification required to allow these two encoders to share a single CRTC or a common clock source?

  3. Are there any specific MediaTek-proprietary Weston plugins or environment flags required to force a software-scaled mirror from the DSI buffer to the HDMI output?

Hi @chetan_g

Weston mirroring appears to be supported starting from version 14.0. However, the G510 Scarthgap release uses version 13.0.1, so mirroring has not been verified on G510.

Genio 510 EVK – Weston 14.0.2 mirror-of Crash

Hi @tommyyl.chen,

I have tried upgrading the existing Weston 13 to Weston 14.0.2 on the Genio 510 EVK.

After upgrading, I attempted to enable output mirroring using the new mirror-of option introduced in Weston 14. However, I am facing issues when enabling mirroring between DSI-1 and HDMI-A-1.

Below are the details, configuration, and logs for reference. Kindly help clarify whether this is expected behavior on Genio 510 or if any additional configuration is required.

1. Platform Information

Board: Genio 510 EVK
Kernel:

6.6.92-mtk+g94c370539990-gdd502f1ef1bc

Weston Version:

weston 14.0.2

Weston is started via systemd using:

/usr/bin/weston --modules=systemd-notify.so

Backend: DRM (default auto-detected during system boot)


2. Display Configuration

  • DSI-1: 1200x1920 (portrait)

  • HDMI-A-1: 1280x720 or 1920x1080 (landscape)

Extended mode works correctly when no mirroring is configured.


3. weston.ini Used

Full /etc/xdg/weston/weston.ini:

cat /etc/xdg/weston/weston.ini 
# configuration file for Weston

[core]
idle-time=0
#modules=xwayland.so,cms-colord.so
#shell=desktop-shell.so
#gbm-format=xrgb2101010
require-input=false

#[shell]
#background-image=/usr/share/backgrounds/gnome/Aqua.jpg
#background-color=0xff002244
#background-type=tile
#clock-format=minutes
#panel-color=0x90ff0000
#locking=true
#animation=zoom
#startup-animation=fade
#binding-modifier=ctrl
#num-workspaces=6
#cursor-theme=whiteglass
#cursor-size=24

#lockscreen-icon=/usr/share/icons/gnome/256x256/actions/lock.png
#lockscreen=/usr/share/backgrounds/gnome/Garden.jpg
#homescreen=/usr/share/backgrounds/gnome/Blinds.jpg
#animation=fade

#[launcher]
#icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
#path=/usr/bin/gnome-terminal

#[launcher]
#icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
#path=/usr/bin/weston-terminal

#[launcher]
#icon=/usr/share/icons/hicolor/24x24/apps/google-chrome.png
#path=/usr/bin/google-chrome

#[launcher]
#icon=/usr/share/icons/gnome/24x24/apps/arts.png
#path=/build/weston-0lEgCh/weston-1.11.0/weston-flower

#[input-method]
#path=/usr/libexec/weston-keyboard

#[output]
#name=LVDS1
#mode=1680x1050
#transform=90
#icc_profile=/usr/share/color/icc/colord/Bluish.icc

#[output]
#name=VGA1
#mode=173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
#transform=flipped

#[output]
#name=X1
#mode=1024x768
#transform=flipped-90

#[libinput]
#enable_tap=true

[output]
name=DSI-1
mode=1200x1920

[output]
name=HDMI-A-1
mirror-of=DSI-1

#[touchpad]
#constant_accel_factor = 50
#min_accel_factor = 0.16
#max_accel_factor = 1.0

[screen-share]
command=/usr/bin/weston --backend=rdp-backend.so --debug --shell=fullscreen-shell.so --no-clients-resize

#[xwayland]
#path=/usr/bin/Xwayland


No other modifications were made.


4.Reproduction Steps

  1. Add:

    mirror-of=DSI-1
    
    

    under HDMI output section.

  2. Restart Weston:

    systemctl restart weston
    
    

5. Observed Behaviour

Weston crashes immediately with a segmentation fault.


6. systemctl status Output

systemctl status weston.service
x weston.service - Weston, a Wayland compositor, as a system service
     Loaded: loaded (/usr/lib/systemd/system/weston.service; enabled; preset: enabled)
     Active: failed (Result: core-dump) since Thu 2025-05-29 19:28:26 UTC; 7min ago
   Duration: 12.488s
TriggeredBy: * weston.socket
       Docs: man:weston(1)
             man:weston.ini(5)
             http://wayland.freedesktop.org/
    Process: 1425 ExecStart=/usr/bin/weston --modules=systemd-notify.so (code=dumped, signal=SEGV)
   Main PID: 1425 (code=dumped, signal=SEGV)
        CPU: 23ms

May 29 19:28:26 genio-520-evk systemd[1]: Starting Weston, a Wayland compositor, as a system service...
May 29 19:28:26 genio-520-evk (weston)[1425]: pam_unix(weston-autologin:session): session opened for user weston(uid=1000) by weston(uid=0)
May 29 19:28:26 genio-520-evk systemd[1]: weston.service: Main process exited, code=dumped, status=11/SEGV
May 29 19:28:26 genio-520-evk systemd[1]: weston.service: Failed with result 'core-dump'.
May 29 19:28:26 genio-520-evk systemd[1]: Failed to start Weston, a Wayland compositor, as a system service.



7. journalctl -xeu weston.service Output

journalctl -xeu weston.service
-- 
-- The job identifier is 2270 and the job result is done.
May 29 19:28:26 genio-520-evk systemd[1]: Starting Weston, a Wayland compositor, as a system service...
-- Subject: A start job for unit weston.service has begun execution
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- A start job for unit weston.service has begun execution.
-- 
-- The job identifier is 2270.
May 29 19:28:26 genio-520-evk (weston)[1425]: pam_unix(weston-autologin:session): session opened for user weston(uid=1000) by weston(uid=0)
May 29 19:28:26 genio-520-evk systemd[1]: weston.service: Main process exited, code=dumped, status=11/SEGV
-- Subject: Unit process exited
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- An ExecStart= process belonging to unit weston.service has exited.
-- 
-- The process' exit code is 'dumped' and its exit status is 11.
May 29 19:28:26 genio-520-evk systemd[1]: weston.service: Failed with result 'core-dump'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- The unit weston.service has entered the 'failed' state with result 'core-dump'.
May 29 19:28:26 genio-520-evk systemd[1]: Failed to start Weston, a Wayland compositor, as a system service.
-- Subject: A start job for unit weston.service has failed
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- A start job for unit weston.service has finished with a failure.
-- 
-- The job identifier is 2270 and the job result is failed.



8. Additional Observations

  • Removing mirror-of allows Weston to start normally.

  • Both displays function correctly in extended mode.

  • The crash only occurs when mirror-of=DSI-1 is enabled.


9. Summary

On Genio 510 EVK with Weston 14.0.2:

  • Extended dual display works.

  • Enabling mirror-of between DSI and HDMI causes Weston to crash (SIGSEGV).

Question:

Is DRM-level output mirroring (mirror-of) between DSI-1 (1200x1920 portrait) and HDMI-A-1 (1280x720 landscape) expected to be supported on Genio 510 with the current mtk_drm driver? If not, what is the recommended approach to achieve display mirroring or content duplication across both outputs?


Additional Queries:

Hi, @Murali_M_G

We haven’t verified Weston mirror mode, so we currently can’t guarantee if it works.

On the other hand, could you share the logs showing where the segmentation fault comes from?
Maybe we could get some hints from them.

Hi @Murali_M_G ,

since there is a crash in Weston 14, I would suggest to take a look at the stack backtrace of the Weston 14 crash dump. It should point you to the problem.

Also, according to the Weston man page

mirror-of=ouput_name

...
The output mirroring the DRM native one, will inherit the same video modeline as the DRM native one, including the refresh rate and scale of the native output. 

...
Mirroring a DRM native output to another DRM native output is yet not supported, being intended only for remote outputs.

So,

  1. According to man page, mirror-of is not applicable to mirror HDM I to DSI DRM devices, because both are DRM native output.
  2. In your configuration the DSI panel does not support the HDMI modelines (resolutions). So this could be one of the cuases of the Weston crash.

Hope this helps :slight_smile:


Hi @tommyyl.chen and @pablo.sun

Thank you for your clarification regarding mirror-of. As suggested, we focused only on clone-of since both DSI-1 and HDMI-A-1 are DRM native outputs.

Below are the complete technical details of our investigation on Genio 510 EVK with Weston 14.0.2.


1. Current Weston Configuration

Full /etc/xdg/weston/weston.ini:

# configuration file for Weston

[core]
idle-time=0
#modules=xwayland.so,cms-colord.so
#shell=desktop-shell.so
#gbm-format=xrgb2101010
require-input=false
shell=kiosk-shell.so

#[shell]
#background-image=/usr/share/backgrounds/gnome/Aqua.jpg
#background-color=0xff002244
#background-type=tile
#clock-format=minutes
#panel-color=0x90ff0000
#locking=true
#animation=zoom
#startup-animation=fade
#binding-modifier=ctrl
#num-workspaces=6
#cursor-theme=whiteglass
#cursor-size=24

#lockscreen-icon=/usr/share/icons/gnome/256x256/actions/lock.png
#lockscreen=/usr/share/backgrounds/gnome/Garden.jpg
#homescreen=/usr/share/backgrounds/gnome/Blinds.jpg
#animation=fade

#[launcher]
#icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
#path=/usr/bin/gnome-terminal

#[launcher]
#icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
#path=/usr/bin/weston-terminal

#[launcher]
#icon=/usr/share/icons/hicolor/24x24/apps/google-chrome.png
#path=/usr/bin/google-chrome

#[launcher]
#icon=/usr/share/icons/gnome/24x24/apps/arts.png
#path=/build/weston-0lEgCh/weston-1.11.0/weston-flower

#[input-method]
#path=/usr/libexec/weston-keyboard

#[output]
#name=LVDS1
#mode=1680x1050
#transform=90
#icc_profile=/usr/share/color/icc/colord/Bluish.icc

#[output]
#name=VGA1
#mode=173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
#transform=flipped

#[output]
#name=X1
#mode=1024x768
#transform=flipped-90

#[libinput]
#enable_tap=true

[output]
name=DSI-1
mode=1200x1920

[output]
name=HDMI-A-1
#mode=1920x1080
clone-of=DSI-1

#[touchpad]
#constant_accel_factor = 50
#min_accel_factor = 0.16
#max_accel_factor = 1.0

[screen-share]
command=/usr/bin/weston --backend=rdp-backend.so --debug --shell=fullscreen-shell.so --no-clients-resize

#[xwayland]
#path=/usr/bin/Xwayland


2. DRM Backend Confirmation

From /tmp/weston.log:

cat /tmp/weston.log                                              
Date: 2025-05-29 UTC
[20:13:40.785] weston 14.0.2
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: 14.0.2
[20:13:40.785] Command line: /usr/bin/weston --modules=systemd-notify.so --log=/tmp/weston.log
[20:13:40.785] OS: Linux, 6.6.92-mtk+g94c370539990-gdd502f1ef1bc, #1 SMP PREEMPT Fri Dec 26 07:06:40 UTC 2025, aarch64
[20:13:40.785] Flight recorder: enabled
[20:13:40.785] Using config file '/etc/xdg/weston/weston.ini'
[20:13:40.785] Output repaint window is 7 ms maximum.
[20:13:40.785] Loading module '/usr/lib/libweston-14/drm-backend.so'
[20:13:40.801] initializing drm backend
[20:13:40.801] Trying libseat launcher...
[20:13:40.802] [c/debug/seatd/0.8.0/libseat/backend/seatd.c:64] Could not connect to socket /run/seatd.sock: No such file or directory
[20:13:40.802] [c/debug/seatd/0.8.0/libseat/libseat.c:76] Backend 'seatd' failed to open seat, skipping
[20:13:40.807] [c/debug/seatd/0.8.0/libseat/libseat.c:73] Seat opened with backend 'logind'
[20:13:40.807] libseat: session control granted
[20:13:40.813] using /dev/dri/card0
[20:13:40.813] DRM: supports atomic modesetting
[20:13:40.813] DRM: supports GBM modifiers
[20:13:40.813] DRM: does not support Atomic async page flip
[20:13:40.813] DRM: supports picture aspect ratio
[20:13:40.813] Loading module '/usr/lib/libweston-14/gl-renderer.so'
[20:13:40.821] EGL version: 1.5 Valhall-"r48p0-01eac0"
[20:13:40.821] EGL vendor: ARM
[20:13:40.821] EGL client APIs: OpenGL_ES
[20:13:40.821] EGL features:
               EGL Wayland extension: yes
               context priority: yes
               buffer age: yes
               partial update: yes
               swap buffers with damage: no
               configless context: yes
               surfaceless context: yes
               dmabuf support: modifiers
[20:13:40.830] GL version: OpenGL ES 3.2 v1.r48p0-01eac0.5c3e37fb665b07e7bfc591f5c3483fb7
[20:13:40.830] GLSL version: OpenGL ES GLSL ES 3.20
[20:13:40.830] GL vendor: ARM
[20:13:40.830] GL renderer: Mali-G57
[20:13:40.871] GL ES 3.2 - renderer features:
               read-back format: ARGB8888
               glReadPixels supports y-flip: no
               glReadPixels supports PBO: yes
               wl_shm 10 bpc formats: yes
               wl_shm 16 bpc formats: no
               wl_shm half-float formats: yes
               internal R and RG formats: yes
               OES_EGL_image_external: yes
[20:13:40.871] Using GL renderer
[20:13:40.880] event1  - mtk-pmic-keys: is tagged by udev as: Keyboard
[20:13:40.880] event1  - mtk-pmic-keys: device is a keyboard
[20:13:40.883] event0  - Goodix Capacitive TouchScreen: is tagged by udev as: Keyboard Touchscreen
[20:13:40.883] event0  - Goodix Capacitive TouchScreen: device is a keyboard
[20:13:40.883] event0  - Goodix Capacitive TouchScreen: device is a touch device
[20:13:40.887] event2  - mt8370-evk Headset Jack: is tagged by udev as: Keyboard Switch
[20:13:40.887] event2  - mt8370-evk Headset Jack: device is a keyboard
[20:13:40.889] event3  - mt8370-evk HDMI Jack: is tagged by udev as: Switch
[20:13:40.890] event3  - not using input device '/dev/input/event3'
[20:13:40.896] libinput: configuring device "mtk-pmic-keys".
[20:13:40.896] Touchscreen - Goodix Capacitive TouchScreen - /sys/devices/platform/soc/11280000.i2c/i2c-0/0-005d/input/input0/event0
[20:13:40.896] libinput: configuring device "Goodix Capacitive TouchScreen".
[20:13:40.896] input device event0 has no enabled output associated (none named), skipping calibration for now.
[20:13:40.896] libinput: configuring device "mt8370-evk Headset Jack".
[20:13:40.897] DRM: head 'DSI-1' found, connector 32 is connected, EDID make 'unknown', model 'unknown', serial ''
               Supported EOTF modes: SDR
               Supported colorimetry modes: default
[20:13:40.992] DRM: head 'HDMI-A-1' found, connector 34 is connected, EDID make 'PNP(XXX)', model '0x0000', serial ''
               Supported EOTF modes: SDR
               Supported colorimetry modes: default
[20:13:40.993] Registered plugin API 'weston_drm_output_api_v1' of size 40
[20:13:40.993] Color manager: no-op
                 protocol support: no
[20:13:40.993] Output 'DSI-1' attempts EOTF mode SDR and colorimetry mode default.
[20:13:40.993] Output 'DSI-1' using color profile: stock sRGB color profile
[20:13:40.993] Chosen EGL config details: id:   1 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 0-0 type: win|pbf|swap_preserved vis_id: XRGB8888 (0x34325258)
[20:13:40.994] Output DSI-1 (crtc 47) video modes:
               1200x1920@60.0, preferred, current, 157.1 MHz
               1920x1080@60.0, preferred, 148.5 MHz
               1920x1080@60.0 16:9, 148.5 MHz
               1920x1080@59.9 16:9, 148.4 MHz
               1920x1080@50.0 16:9, 148.5 MHz
               1680x1050@59.9, 119.0 MHz
               1280x1024@60.0, 108.0 MHz
               1280x960@60.0, 108.0 MHz
               1360x768@60.0, 85.5 MHz
               1280x800@59.9, 71.0 MHz
               1280x720@60.0, 74.2 MHz
               1280x720@60.0 16:9, 74.2 MHz
               1280x720@59.9 16:9, 74.2 MHz
               1280x720@50.0, 74.2 MHz
               1280x720@50.0 16:9, 74.2 MHz
               1024x768@60.0, 65.0 MHz
               800x600@60.3, 40.0 MHz
               800x600@56.2, 36.0 MHz
               720x576@50.0, 27.0 MHz
               720x576@50.0 16:9, 27.0 MHz
               720x480@60.0 4:3, 27.0 MHz
               720x480@60.0 16:9, 27.0 MHz
               720x480@59.9, 27.0 MHz
               720x480@59.9 4:3, 27.0 MHz
               720x480@59.9 16:9, 27.0 MHz
               640x480@60.0 4:3, 25.2 MHz
               640x480@59.9, 25.2 MHz
               640x480@59.9 4:3, 25.2 MHz
               720x400@70.1, 28.3 MHz
[20:13:40.994] associating input device event1 with output DSI-1 (none by udev)
[20:13:40.994] associating input device event0 with output DSI-1 (none by udev)
[20:13:40.995] associating input device event2 with output DSI-1 (none by udev)
[20:13:40.995] Output 'DSI-1' enabled with head(s) DSI-1, HDMI-A-1
[20:13:40.995] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
               cursor planes: yes
               arbitrary resolutions: no
               view mask clipping: yes
               explicit sync: yes
               color operations: yes
               presentation clock: CLOCK_MONOTONIC, id 1
               presentation clock resolution: 0.000000001 s
[20:13:40.995] Loading module '/usr/lib/weston/kiosk-shell.so'
[20:13:40.996] Loading module '/usr/lib/weston/systemd-notify.so'
[20:13:40.996] info: add 1 socket(s) provided by systemd
[20:24:15.471] caught signal 15
[20:24:15.472] event1  - mtk-pmic-keys: device removed
[20:24:15.475] event0  - Goodix Capacitive TouchScreen: device removed
[20:24:15.476] event2  - mt8370-evk Headset Jack: device removed
Date: 2025-05-29 UTC
[20:24:16.316] weston 14.0.2
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: 14.0.2
[20:24:16.316] Command line: /usr/bin/weston --modules=systemd-notify.so --log=/tmp/weston.log
[20:24:16.316] OS: Linux, 6.6.92-mtk+g94c370539990-gdd502f1ef1bc, #1 SMP PREEMPT Fri Dec 26 07:06:40 UTC 2025, aarch64
[20:24:16.316] Flight recorder: enabled
[20:24:16.316] Using config file '/etc/xdg/weston/weston.ini'
[20:24:16.316] Output repaint window is 7 ms maximum.
[20:24:16.317] Loading module '/usr/lib/libweston-14/drm-backend.so'
[20:24:16.328] initializing drm backend
[20:24:16.329] Trying libseat launcher...
[20:24:16.329] [c/debug/seatd/0.8.0/libseat/backend/seatd.c:64] Could not connect to socket /run/seatd.sock: No such file or directory
[20:24:16.329] [c/debug/seatd/0.8.0/libseat/libseat.c:76] Backend 'seatd' failed to open seat, skipping
[20:24:16.336] [c/debug/seatd/0.8.0/libseat/libseat.c:73] Seat opened with backend 'logind'
[20:24:16.336] libseat: session control granted
[20:24:16.341] using /dev/dri/card0
[20:24:16.341] DRM: supports atomic modesetting
[20:24:16.341] DRM: supports GBM modifiers
[20:24:16.341] DRM: does not support Atomic async page flip
[20:24:16.342] DRM: supports picture aspect ratio
[20:24:16.342] Loading module '/usr/lib/libweston-14/gl-renderer.so'
[20:24:16.348] EGL version: 1.5 Valhall-"r48p0-01eac0"
[20:24:16.348] EGL vendor: ARM
[20:24:16.348] EGL client APIs: OpenGL_ES
[20:24:16.348] EGL features:
               EGL Wayland extension: yes
               context priority: yes
               buffer age: yes
               partial update: yes
               swap buffers with damage: no
               configless context: yes
               surfaceless context: yes
               dmabuf support: modifiers
[20:24:16.354] GL version: OpenGL ES 3.2 v1.r48p0-01eac0.5c3e37fb665b07e7bfc591f5c3483fb7
[20:24:16.354] GLSL version: OpenGL ES GLSL ES 3.20
[20:24:16.354] GL vendor: ARM
[20:24:16.354] GL renderer: Mali-G57
[20:24:16.385] GL ES 3.2 - renderer features:
               read-back format: ARGB8888
               glReadPixels supports y-flip: no
               glReadPixels supports PBO: yes
               wl_shm 10 bpc formats: yes
               wl_shm 16 bpc formats: no
               wl_shm half-float formats: yes
               internal R and RG formats: yes
               OES_EGL_image_external: yes
[20:24:16.385] Using GL renderer
[20:24:16.395] event1  - mtk-pmic-keys: is tagged by udev as: Keyboard
[20:24:16.395] event1  - mtk-pmic-keys: device is a keyboard
[20:24:16.398] event0  - Goodix Capacitive TouchScreen: is tagged by udev as: Keyboard Touchscreen
[20:24:16.399] event0  - Goodix Capacitive TouchScreen: device is a keyboard
[20:24:16.399] event0  - Goodix Capacitive TouchScreen: device is a touch device
[20:24:16.402] event2  - mt8370-evk Headset Jack: is tagged by udev as: Keyboard Switch
[20:24:16.402] event2  - mt8370-evk Headset Jack: device is a keyboard
[20:24:16.405] event3  - mt8370-evk HDMI Jack: is tagged by udev as: Switch
[20:24:16.407] event3  - not using input device '/dev/input/event3'
[20:24:16.416] libinput: configuring device "mtk-pmic-keys".
[20:24:16.416] Touchscreen - Goodix Capacitive TouchScreen - /sys/devices/platform/soc/11280000.i2c/i2c-0/0-005d/input/input0/event0
[20:24:16.416] libinput: configuring device "Goodix Capacitive TouchScreen".
[20:24:16.416] input device event0 has no enabled output associated (none named), skipping calibration for now.
[20:24:16.416] libinput: configuring device "mt8370-evk Headset Jack".
[20:24:16.416] DRM: head 'DSI-1' found, connector 32 is connected, EDID make 'unknown', model 'unknown', serial ''
               Supported EOTF modes: SDR
               Supported colorimetry modes: default
[20:24:16.515] DRM: head 'HDMI-A-1' found, connector 34 is connected, EDID make 'PNP(XXX)', model '0x0000', serial ''
               Supported EOTF modes: SDR
               Supported colorimetry modes: default
[20:24:16.516] Registered plugin API 'weston_drm_output_api_v1' of size 40
[20:24:16.516] Color manager: no-op
                 protocol support: no
[20:24:16.516] Output 'DSI-1' attempts EOTF mode SDR and colorimetry mode default.
[20:24:16.516] Output 'DSI-1' using color profile: stock sRGB color profile
[20:24:16.516] Chosen EGL config details: id:   1 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 0-0 type: win|pbf|swap_preserved vis_id: XRGB8888 (0x34325258)
[20:24:16.517] Output DSI-1 (crtc 47) video modes:
               1200x1920@60.0, preferred, current, 157.1 MHz
               1920x1080@60.0, preferred, 148.5 MHz
               1920x1080@60.0 16:9, 148.5 MHz
               1920x1080@59.9 16:9, 148.4 MHz
               1920x1080@50.0 16:9, 148.5 MHz
               1680x1050@59.9, 119.0 MHz
               1280x1024@60.0, 108.0 MHz
               1280x960@60.0, 108.0 MHz
               1360x768@60.0, 85.5 MHz
               1280x800@59.9, 71.0 MHz
               1280x720@60.0, 74.2 MHz
               1280x720@60.0 16:9, 74.2 MHz
               1280x720@59.9 16:9, 74.2 MHz
               1280x720@50.0, 74.2 MHz
               1280x720@50.0 16:9, 74.2 MHz
               1024x768@60.0, 65.0 MHz
               800x600@60.3, 40.0 MHz
               800x600@56.2, 36.0 MHz
               720x576@50.0, 27.0 MHz
               720x576@50.0 16:9, 27.0 MHz
               720x480@60.0 4:3, 27.0 MHz
               720x480@60.0 16:9, 27.0 MHz
               720x480@59.9, 27.0 MHz
               720x480@59.9 4:3, 27.0 MHz
               720x480@59.9 16:9, 27.0 MHz
               640x480@60.0 4:3, 25.2 MHz
               640x480@59.9, 25.2 MHz
               640x480@59.9 4:3, 25.2 MHz
               720x400@70.1, 28.3 MHz
[20:24:16.517] associating input device event1 with output DSI-1 (none by udev)
[20:24:16.517] associating input device event0 with output DSI-1 (none by udev)
[20:24:16.518] associating input device event2 with output DSI-1 (none by udev)
[20:24:16.518] Output 'DSI-1' enabled with head(s) DSI-1, HDMI-A-1
[20:24:16.519] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
               cursor planes: yes
               arbitrary resolutions: no
               view mask clipping: yes
               explicit sync: yes
               color operations: yes
               presentation clock: CLOCK_MONOTONIC, id 1
               presentation clock resolution: 0.000000001 s
[20:24:16.519] Loading module '/usr/lib/weston/desktop-shell.so'
[20:24:16.520] Loading module '/usr/lib/weston/systemd-notify.so'
[20:24:16.521] info: add 1 socket(s) provided by systemd
[20:24:16.521] launching '/usr/libexec/weston-keyboard'
[20:24:16.525] launching '/usr/libexec/weston-desktop-shell'
[20:24:16.622] libwayland: error in client communication (pid 1678)
[20:24:16.622] Error: /usr/libexec/weston-desktop-shell apparently cannot run at all.
               Quitting...[20:24:16.623] event1  - mtk-pmic-keys: device removed
[20:24:16.673] event0  - Goodix Capacitive TouchScreen: device removed
[20:24:16.676] event2  - mt8370-evk Headset Jack: device removed
[20:24:17.642] destroying output DSI-1 (id 0) with a pending flip, but as we are shutting down we can't wait to destroy it when the flip completes... destroying it now
Date: 2025-05-29 UTC
[20:25:10.593] weston 14.0.2
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: 14.0.2
[20:25:10.593] Command line: /usr/bin/weston --modules=systemd-notify.so --log=/tmp/weston.log
[20:25:10.593] OS: Linux, 6.6.92-mtk+g94c370539990-gdd502f1ef1bc, #1 SMP PREEMPT Fri Dec 26 07:06:40 UTC 2025, aarch64
[20:25:10.593] Flight recorder: enabled
[20:25:10.593] Using config file '/etc/xdg/weston/weston.ini'
[20:25:10.593] Output repaint window is 7 ms maximum.
[20:25:10.593] Loading module '/usr/lib/libweston-14/drm-backend.so'
[20:25:10.609] initializing drm backend
[20:25:10.609] Trying libseat launcher...
[20:25:10.610] [c/debug/seatd/0.8.0/libseat/backend/seatd.c:64] Could not connect to socket /run/seatd.sock: No such file or directory
[20:25:10.610] [c/debug/seatd/0.8.0/libseat/libseat.c:76] Backend 'seatd' failed to open seat, skipping
[20:25:10.620] [c/debug/seatd/0.8.0/libseat/libseat.c:73] Seat opened with backend 'logind'
[20:25:10.620] libseat: session control granted
[20:25:10.626] using /dev/dri/card0
[20:25:10.626] DRM: supports atomic modesetting
[20:25:10.626] DRM: supports GBM modifiers
[20:25:10.626] DRM: does not support Atomic async page flip
[20:25:10.626] DRM: supports picture aspect ratio
[20:25:10.626] Loading module '/usr/lib/libweston-14/gl-renderer.so'
[20:25:10.630] EGL version: 1.5 Valhall-"r48p0-01eac0"
[20:25:10.630] EGL vendor: ARM
[20:25:10.630] EGL client APIs: OpenGL_ES
[20:25:10.630] EGL features:
               EGL Wayland extension: yes
               context priority: yes
               buffer age: yes
               partial update: yes
               swap buffers with damage: no
               configless context: yes
               surfaceless context: yes
               dmabuf support: modifiers
[20:25:10.635] GL version: OpenGL ES 3.2 v1.r48p0-01eac0.5c3e37fb665b07e7bfc591f5c3483fb7
[20:25:10.635] GLSL version: OpenGL ES GLSL ES 3.20
[20:25:10.635] GL vendor: ARM
[20:25:10.635] GL renderer: Mali-G57
[20:25:10.669] GL ES 3.2 - renderer features:
               read-back format: ARGB8888
               glReadPixels supports y-flip: no
               glReadPixels supports PBO: yes
               wl_shm 10 bpc formats: yes
               wl_shm 16 bpc formats: no
               wl_shm half-float formats: yes
               internal R and RG formats: yes
               OES_EGL_image_external: yes
[20:25:10.669] Using GL renderer
[20:25:10.677] event1  - mtk-pmic-keys: is tagged by udev as: Keyboard
[20:25:10.677] event1  - mtk-pmic-keys: device is a keyboard
[20:25:10.681] event0  - Goodix Capacitive TouchScreen: is tagged by udev as: Keyboard Touchscreen
[20:25:10.682] event0  - Goodix Capacitive TouchScreen: device is a keyboard
[20:25:10.682] event0  - Goodix Capacitive TouchScreen: device is a touch device
[20:25:10.684] event2  - mt8370-evk Headset Jack: is tagged by udev as: Keyboard Switch
[20:25:10.684] event2  - mt8370-evk Headset Jack: device is a keyboard
[20:25:10.686] event3  - mt8370-evk HDMI Jack: is tagged by udev as: Switch
[20:25:10.687] event3  - not using input device '/dev/input/event3'
[20:25:10.693] libinput: configuring device "mtk-pmic-keys".
[20:25:10.693] Touchscreen - Goodix Capacitive TouchScreen - /sys/devices/platform/soc/11280000.i2c/i2c-0/0-005d/input/input0/event0
[20:25:10.693] libinput: configuring device "Goodix Capacitive TouchScreen".
[20:25:10.693] input device event0 has no enabled output associated (none named), skipping calibration for now.
[20:25:10.693] libinput: configuring device "mt8370-evk Headset Jack".
[20:25:10.693] DRM: head 'DSI-1' found, connector 32 is connected, EDID make 'unknown', model 'unknown', serial ''
               Supported EOTF modes: SDR
               Supported colorimetry modes: default
[20:25:10.789] DRM: head 'HDMI-A-1' found, connector 34 is connected, EDID make 'PNP(XXX)', model '0x0000', serial ''
               Supported EOTF modes: SDR
               Supported colorimetry modes: default
[20:25:10.790] Registered plugin API 'weston_drm_output_api_v1' of size 40
[20:25:10.790] Color manager: no-op
                 protocol support: no
[20:25:10.790] Output 'DSI-1' attempts EOTF mode SDR and colorimetry mode default.
[20:25:10.790] Output 'DSI-1' using color profile: stock sRGB color profile
[20:25:10.791] Chosen EGL config details: id:   1 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 0-0 type: win|pbf|swap_preserved vis_id: XRGB8888 (0x34325258)
[20:25:10.791] Output DSI-1 (crtc 47) video modes:
               1200x1920@60.0, preferred, current, 157.1 MHz
               1920x1080@60.0, preferred, 148.5 MHz
               1920x1080@60.0 16:9, 148.5 MHz
               1920x1080@59.9 16:9, 148.4 MHz
               1920x1080@50.0 16:9, 148.5 MHz
               1680x1050@59.9, 119.0 MHz
               1280x1024@60.0, 108.0 MHz
               1280x960@60.0, 108.0 MHz
               1360x768@60.0, 85.5 MHz
               1280x800@59.9, 71.0 MHz
               1280x720@60.0, 74.2 MHz
               1280x720@60.0 16:9, 74.2 MHz
               1280x720@59.9 16:9, 74.2 MHz
               1280x720@50.0, 74.2 MHz
               1280x720@50.0 16:9, 74.2 MHz
               1024x768@60.0, 65.0 MHz
               800x600@60.3, 40.0 MHz
               800x600@56.2, 36.0 MHz
               720x576@50.0, 27.0 MHz
               720x576@50.0 16:9, 27.0 MHz
               720x480@60.0 4:3, 27.0 MHz
               720x480@60.0 16:9, 27.0 MHz
               720x480@59.9, 27.0 MHz
               720x480@59.9 4:3, 27.0 MHz
               720x480@59.9 16:9, 27.0 MHz
               640x480@60.0 4:3, 25.2 MHz
               640x480@59.9, 25.2 MHz
               640x480@59.9 4:3, 25.2 MHz
               720x400@70.1, 28.3 MHz
[20:25:10.791] associating input device event1 with output DSI-1 (none by udev)
[20:25:10.792] associating input device event0 with output DSI-1 (none by udev)
[20:25:10.792] associating input device event2 with output DSI-1 (none by udev)
[20:25:10.793] Output 'DSI-1' enabled with head(s) DSI-1, HDMI-A-1
[20:25:10.793] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
               cursor planes: yes
               arbitrary resolutions: no
               view mask clipping: yes
               explicit sync: yes
               color operations: yes
               presentation clock: CLOCK_MONOTONIC, id 1
               presentation clock resolution: 0.000000001 s
[20:25:10.793] Loading module '/usr/lib/weston/kiosk-shell.so'
[20:25:10.794] Loading module '/usr/lib/weston/systemd-notify.so'
[20:25:10.794] info: add 1 socket(s) provided by systemd

This confirms Weston is using the DRM backend with atomic modesetting enabled.

Both connectors are detected:

DRM: head 'DSI-1' found, connector 32 is connected
DRM: head 'HDMI-A-1' found, connector 34 is connected

Weston then reports:

Output 'DSI-1' enabled with head(s) DSI-1, HDMI-A-1

This indicates Weston attempted to configure both heads under a single CRTC using clone-of.

No crash occurs.


3. Runtime Behaviour (Application-Level Test)

To validate runtime behaviour, we launched a test client:

su -s /bin/bash weston -c "WAYLAND_DISPLAY=wayland-1 XDG_RUNTIME_DIR=/run/user/1000 weston-flower"

Observed result:

  • weston-flower renders correctly on the DSI panel.

  • HDMI monitor shows No Signal.

  • No runtime errors are printed in Weston logs.

  • No atomic failure message appears in dmesg.

So Weston accepts the configuration, but HDMI never receives an active signal.


4. DRM Encoder Capability Analysis

To verify hardware clone capability, we ran:

modetest -M mediatek

Encoder table:

Encoders:
id    crtc  type   possible_crtcs   possible_clones
31    47    DSI    0x00000001       0x00000001
33    47    TMDS   0x00000003       0x00000002

Interpretation:

  • DSI encoder (id 31)
    possible_clones = 0x00000001
    → can only clone with itself

  • HDMI/TMDS encoder (id 33)
    possible_clones = 0x00000002
    → can only clone with itself

The possible_clones bitmasks do not overlap.

This means:

The mtk_drm driver does NOT support hardware-level cross-encoder cloning between DSI and HDMI.

Even though both encoders can attach to CRTC 47, they cannot share that CRTC simultaneously for clone mode.

This explains why:

  • Weston configures clone-of successfully.

  • DSI works.

  • HDMI remains without signal.

  • No explicit error is reported.

The limitation is at DRM encoder capability level.


5. Additional Observation – Modeline Mismatch

The DSI panel is configured to:

1200x1920@60 (portrait)


 modetest -c
trying to open device 'i915'...failed
trying to open device 'amdgpu'...failed
trying to open device 'radeon'...failed
trying to open device 'nouveau'...failed
trying to open device 'vmwgfx'...failed
trying to open device 'omapdrm'...failed
trying to open device 'exynos'...failed
trying to open device 'tilcdc'...failed
trying to open device 'msm'...failed
trying to open device 'sti'...failed
trying to open device 'tegra'...failed
trying to open device 'imx-drm'...failed
trying to open device 'rockchip'...failed
trying to open device 'atmel-hlcdc'...failed
trying to open device 'fsl-dcu-drm'...failed
trying to open device 'vc4'...failed
trying to open device 'virtio_gpu'...failed
trying to open device 'mediatek'...done
Connectors:
id	encoder	status		name		size (mm)	modes	encoders
32	31	connected	DSI-1          	95x151		1	31
  modes:
	index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot
  #0 1200x1920 60.00 1200 1250 1260 1330 1920 1945 1949 1969 157126 flags: ; type: preferred, driver
  props:
	1 EDID:
		flags: immutable blob
		blobs:

		value:
	2 DPMS:
		flags: enum
		enums: On=0 Standby=1 Suspend=2 Off=3
		value: 0
	5 link-status:
		flags: enum
		enums: Good=0 Bad=1
		value: 0
	6 non-desktop:
		flags: immutable range
		values: 0 1
		value: 0
	4 TILE:
		flags: immutable blob
		blobs:

		value:
34	33	connected	HDMI-A-1       	0x0		21	33
  modes:
	index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot
  #0 1920x1080 60.00 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: phsync, nvsync; type: preferred, driver
  #1 1920x1080 60.00 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver
  #2 1920x1080 59.94 1920 2008 2052 2200 1080 1084 1089 1125 148352 flags: phsync, pvsync; type: driver
  #3 1920x1080 50.00 1920 2448 2492 2640 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver
  #4 1680x1050 59.88 1680 1728 1760 1840 1050 1053 1059 1080 119000 flags: phsync, nvsync; type: driver
  #5 1280x1024 60.02 1280 1328 1440 1688 1024 1025 1028 1066 108000 flags: phsync, pvsync; type: driver
  #6 1280x960 60.00 1280 1376 1488 1800 960 961 964 1000 108000 flags: phsync, pvsync; type: driver
  #7 1360x768 60.02 1360 1424 1536 1792 768 771 777 795 85500 flags: phsync, pvsync; type: driver
  #8 1280x800 59.91 1280 1328 1360 1440 800 803 809 823 71000 flags: phsync, nvsync; type: driver
  #9 1280x720 60.00 1280 1390 1430 1650 720 725 730 750 74250 flags: phsync, pvsync; type: driver
  #10 1280x720 59.94 1280 1390 1430 1650 720 725 730 750 74176 flags: phsync, pvsync; type: driver
  #11 1280x720 50.00 1280 1720 1760 1980 720 725 730 750 74250 flags: phsync, pvsync; type: driver
  #12 1024x768 60.00 1024 1048 1184 1344 768 771 777 806 65000 flags: nhsync, nvsync; type: driver
  #13 800x600 60.32 800 840 968 1056 600 601 605 628 40000 flags: phsync, pvsync; type: driver
  #14 800x600 56.25 800 824 896 1024 600 601 603 625 36000 flags: phsync, pvsync; type: driver
  #15 720x576 50.00 720 732 796 864 576 581 586 625 27000 flags: nhsync, nvsync; type: driver
  #16 720x480 60.00 720 736 798 858 480 489 495 525 27027 flags: nhsync, nvsync; type: driver
  #17 720x480 59.94 720 736 798 858 480 489 495 525 27000 flags: nhsync, nvsync; type: driver
  #18 640x480 60.00 640 656 752 800 480 490 492 525 25200 flags: nhsync, nvsync; type: driver
  #19 640x480 59.94 640 656 752 800 480 490 492 525 25175 flags: nhsync, nvsync; type: driver
  #20 720x400 70.08 720 738 846 900 400 412 414 449 28320 flags: nhsync, pvsync; type: driver
  props:
	1 EDID:
		flags: immutable blob
		blobs:

		value:
			00ffffffffffff006318000000000000
			06160103800000000ad7a5a2594a9624
			145054a30800d1c0b300810081808140
			81c001010101023a801871382d40582c
			45003f432100001a662150b051001b30
			407036003f432100001e000000fd0032
			4c1e5010000a202020202020000000fc
			00000a202020202020202020202001d3
			020321f24c0102038405071012931416
			1f230917008301000067030c00200038
			298c0ad08a20e02d10103e9600c48e21
			0000188c0ad090204031200c405500c4
			8e21000018011d00bc52d01e20b82855
			40c48e2100001e011d80d0721c162010
			2c2580c48e2100009e8c0ad08a20e02d
			10103e9600138e21000018000000008c
	2 DPMS:
		flags: enum
		enums: On=0 Standby=1 Suspend=2 Off=3
		value: 0
	5 link-status:
		flags: enum
		enums: Good=0 Bad=1
		value: 0
	6 non-desktop:
		flags: immutable range
		values: 0 1
		value: 0
	4 TILE:
		flags: immutable blob
		blobs:

		value:

HDMI EDID advertises typical landscape modes (1920x1080, 1280x720, etc.).

Even if encoder cloning were allowed, the panel timings differ significantly in resolution and orientation, which would require:

  • Shared CRTC timing

  • Identical mode programming

  • Or hardware scaling support

None of these appear to be supported in the current driver.


6. Summary

Mode Result Technical Cause
clone-of HDMI no signal No cross-encoder clone support in mtk_drm
Extended mode Works Separate CRTCs operate independently
mirror-of Not applicable DRM native → DRM native unsupported

7. Clarification Requested

Based on the encoder possible_clones masks and runtime behaviour:

  1. Is cross-encoder clone between DSI and HDMI officially unsupported on Genio 510?

  2. Is this a hardware display pipeline limitation?

  3. Is there any recommended MediaTek approach to duplicate the same content across both outputs?

  4. Should this be handled purely at application/compositor level instead?

For example:

  • Rendering separately to both Wayland outputs

  • Implementing framebuffer duplication at compositor level

  • Or any MediaTek-specific display pipeline mechanism


Thank you for your support. We look forward to your guidance on the recommended approach for simultaneous display on both DSI and HDMI on Genio 510/520.


Hi @Murali_M_G,

Currently, cloning functionality is handled at the application or framework level. For example, G510 Android devices natively support display mirroring through the standard Android framework. There is no hardware-supported cloning available on MediaTek display pipelines.

Therefore, when customers require displaying different content on multiple screens under Android, we generally recommend developing dedicated APKs to design and manage the content layout. The application can then distribute different content to each display accordingly.

Please let us know if you need further technical details or assistance.