AM62P: AM62P - Weston extended display issue

Part Number: AM62P


Hi,
I am using AM62P with two outputs enabled, Dual link OLDI & DSI. I use both outputs with same timing parameters and that are as per datasheet of panel and verified the same with modetest commands.

But while using weston with extended mode by the following command,

weston --backend=drm-backend.do --drm-device=card0 --additional-devices=card1 
glmark2-es2-wayland -s 2560x1024

I was able to see a screen tear exactly in the middle of two displays (particularly while the cube rotation in the glmark2-es2-wayland). One side of the display seems to update faster than the other side which causes a screen tear when there is movement from one display to the other. 

What causes this issue and how to proceed further?

Best Regards,

Harithan.

  • Hi Harithan,
    Can you please share a pic of what you are seeing?

    Also, just to verify your individual setup for OLDI and DSI (if feasible, can you share the part number of the panels as well), 
    can you try running the following and share if you are seeing a smooth display on both:

    kmstest --flip --device=/dev/dri/by-path/platform-30200000.dss-card
    kmstest --flip --device=/dev/dri/by-path/platform-30220000.dss-card


    What happens when you invert the order of the cards, as in:
    weston --backend=drm-backend.do --drm-device=card1 --additional-devices=card0


    Is the same same screen still slow to update, or does that change?

  • Hi Divyansh Mittal,

    I have verified the output of both OLDI and DSI connectors independently.

    In extended mode,


    weston --backend=drm-backend.so --drm-device=card0 --additional-devices=card2 & 

    glmarak2-es2-wayland -s 2560x1024

    It is found that the dss0 tends to make less interrupts than dss1, and it is visible as a screen tear while running as extended mode

    Initial
    -------
    cat /proc/interrupts | grep tidss
    436:        691          0          0          0     GICv3  62 Level     tidss
    437:        403          0          0          0     GICv3 116 Level     tidss

    After running and killing app
    --------------------------------------
    cat /proc/interrupts | grep tidss
    436:       3788          0          0          0     GICv3  62 Level     tidss
    437:       3491          0          0          0     GICv3 116 Level     tidss


    My questions,
    1. Is this an issue? Because the frame drop seems to be increasing with respect to time.

    2. Why this behaviour is occuring only in DSS0 (OLDI Connector)?

    3. How to proceed further?

    Best Regards,
    Harithan

  • Hi,
    Thanks for the observations.
    Let me try reproducing your issue at my end. Will respond by end of this week.

  • Hi Harithan

    I did the following:
    1. Edited: /usr/share/wayland-sessions/weston.desktop file to include the following in Exec:
        Exec=weston --drm-device=card0 --additional-devices=card1
    2. Reboot
    3. Run: WAYLAND_DISPLAY=wayland-1 QT_QPA_PLATFORM=wayland XDG_RUNTIME_DIR=/run/user/1000 glmark2-es2-wayland

    And I get the following:

  • Hi Divyansh Mittal,

    1. In your uploaded video, both outputs are of different resolutions and ultimately different timing parameters. As I told you, I am using same timing parameters for both DSS0 (Dual link OLDI) & DSS1 (DSI) with resolution of 1280x1024 each.

    2. My actual LCD panels does not have any standard bezel between each other, so it will be like a standard full screen hardware by default. But, in your setup there was bezels inbetween due to which you can't be able to see the screen tearing effect while running "glmark2-es2-wayland".

    My Observation:

    Forget about weston. To narrow down to the actual issue, I tried the following commands one by one for exacts 5 minutes (300 seconds),

    Initial

    --------

    root@am62pxx-evm:~# cat /proc/interrupts | grep tidss
    436:       1296          0          0          0     GICv3  62 Level     tidss
    437:       1027          0          0          0     GICv3 116 Level     tidss

    kmscube
    -------------

    kmscube --device=/dev/dri/card0 (For DSS0 with Dual link OLDI)


    5 mins (lvds)
    -------------
    root@am62pxx-evm:~# cat /proc/interrupts | grep tidss
    436:       1296          0          0          0     GICv3  62 Level     tidss
    437:      19522          0          0          0     GICv3 116 Level     tidss

    Difference : 18495

    kmscube --device=/dev/dri/card2 (For DSS1 with DSI)

    5 mins (dsi)
    ------------
    root@am62pxx-evm:~# cat /proc/interrupts | grep tidss
    436:      19874          0          0          0     GICv3  62 Level     tidss
    437:      19522          0          0          0     GICv3 116 Level     tidss

    Difference : 18578

    18578-18495 = 83 (DSI - Dual link OLDI)

    Although, I ran kmscube application for same duration on both DSS0 and DSS1, it is found that the number of interrupts seems to be less in DSS0. I am trying to say, because of this my actual usecase (weston in extended mode has tearing effects). Kindly let me know, once you go through this and what to be done to avoid this.

    Best Regards,

    Harithan

  • Hi Harithan, 
    Can you please share the logs output of kmstest? Are the refresh rates exactly the same?

  • My actual LCD panels does not have any standard bezel between each other, so it will be like a standard full screen hardware by default. But, in your setup there was bezels inbetween due to which you can't be able to see the screen tearing effect while running "glmark2-es2-wayland".

    Also, I don't understand why this should matter. I assume you are treating the whole panel as the active area, and not leaving out some portion in the center for bezels, so each videoport will fill in the screen fully and independently.

    Can you share the video as well of what you are seeing.

    I do not have the exact resolution DSI panel, so cannot actually compare this at my end.