DisplayLink / evdi

Extensible Virtual Display Interface
MIT License
702 stars 184 forks source link

Screen doesn't update when rotated/reflected #343

Open ApeironTsuka opened 2 years ago

ApeironTsuka commented 2 years ago

When any sort of transform is applied (rotated, reflected, etc), the screen's buffer is no longer updated/refreshed live except when the cursor is moved on the connected display. This can be easily demonstrated by running glxgears on the DisplayLink display, but it isn't limited to OpenGL-based applications.

On 1.9.1, this meant that rotating the screen to the right would cause the screen to "freeze" and only redraw the screen when the cursor was moved. On 1.10.0, the screen only redraws the rectangle of the cursor itself when moved and nothing else.

On both versions, the screen updates fine with no transforms applied.

I unfortunately don't know enough about how the rendering/drawing pipeline works to dig into this myself, and don't really know where to start for learning about it.

displaylink-emajewsk commented 2 years ago

Hi, sorry for the wait. Would you mind trying the newest driver and seeing what effect it has on the issue?

Also, if possible, I'd like to know more about your setup (mostly the docking station) and whether changing between x11 and wayland affects the issue.

EDIT: Ah, xfce has no Wayland support

ApeironTsuka commented 2 years ago

Sorry about that. Meant to do this earlier but it's been a long week.

Tested driver 5.5 from the site as well as using a fresh pull of this repo.

DisplayLink screen set to be right-of main panel. Upon applying a transform, the screen turns black and redraws the full screen only when the cursor is moved while on the DisplayLink screen. Same test as above, using glxgears as a simple redrawing window.

kevinpthorne commented 2 years ago

Currently experiencing the same issues, rendering the monitor completely useless when in a non-landscape mode

evdi version: 1.10.1-2 - built from source displaylink version: 5.5-1


Linux kernel: 5.15.41-1-MANJARO Xorg version: 1.21.1.3 Desktop env: gdm 42 (Gnome) Nvidia driver version (proprietary): 510.73.05

Edit: I said I build the displaylink package from source lol oops.


Update: After reviewing the code in this repo, this doesn't seem to be an issue with evdi but rather the displaylink package. I will reach out to that community

kb-elmo commented 2 years ago

I'm having the same issue unfortunately.

evdi version: 1.10.1-2 - installed from the latest evdi-git AUR package displaylink version: 5.6-1 - latest version from the AUR


Linux kernel: 5.18.10-arch1-1 Xorg version: 21.1.4-13 Desktop: i3-gaps / lightdm Nvidia driver version (proprietary): 515.57-4 (GPU: Nvidia GeForce RTX 2060 Mobile)

--

currently my xorg evdi config looks like this

Section "OutputClass"
    Identifier "DisplayLink"
    MatchDriver "evdi"
    Driver "modesetting"
    Option "AccelMethod" "none"
EndSection

Landscape monitors are working perfectly fine with no screen-tearing or lags. But any monitor set to vertical rotation is not updating unless there is something on the desktop that is constantly moving or updating. This unfortunately makes vertical monitors basically useless.

Is there any info on how this can be fixed?

microhobby commented 2 years ago

Same behavior here 😥

microhobby commented 1 year ago

@displaylink-emajewsk could you check with the support team please? I'm almost sure that there is no workaround (or use it in the landscape only mode). Whenever I have to use Linux, I have to change my entire setup to accommodate the third screen in landscape. I'm considering looking for another USB video card vendor.

b1g7r33 commented 1 year ago

So I found a bit of a workaround by accident in Xubuntu 22.04. TL:DR below.

I have the same setup as OP.

Background: I have and Ultrawide (3440x1440) and two 1080p monitors. The 1080p monitors are rotated in portrait, left and right of the Ultrawide. The respective 'top' of each monitor faces out from the center (not sure if it matters, not redoing cable management to find out). The two 1080p monitors are fed from a Displaylink dock. When I put any application on the 1080p monitors the application would only refresh when I was moving my mouse. Sound would play but the application view stays in a frozen state until I move my mouse. Almost like the window is off of the edge of the display not on a screen (this matters later).

FIX: I halfway fixed this through the 'Settings' application going through Window Manager Tweaks->Compositor tab->unchecking 'Enable display compositing'. No restart or Logout, it worked live. This fixes the rotation bug UNLESS the window is hanging off of the outer edge of the display space.

EXAMPLE: So on the right monitor; if the application is hanging off of the right edge (the monitor's respective 'top' in my case) the application still doesn't draw video but audio plays. If it was hanging off of the left edge (lapping over onto the Ultrawide in the center) the application performs normally.

TL;DR Turn off display compositing in settings as a TEMPORARY WORKAROUND until Displaylink fixes this in a decade.

sprietNathanael commented 4 months ago

I'm having the same issue :

Linux kernel: 6.8.0-31-generic Xorg version: 2:21.1.12-1ubuntu1 Linux distribution: Kubuntu 24.04 Desktop: plasmashell 5.27.11 Nvidia driver version (proprietary): 535.171.04 GPU: Nvidia GeForce GTX 1650

When I sitch the nvidia PRIME profile to "on demand", everything works fine. But when I switch it to "performance mode", my rotated screen does not refresh unless the cursor moves.