neutrinolabs / xrdp

xrdp: an open source RDP server
http://www.xrdp.org/
Apache License 2.0
5.59k stars 1.73k forks source link

xorgxrdp DRI on RPI3 with vc4 works. On RPI4 with v3d OpenGL graphics are corrupt #1503

Open fransking opened 4 years ago

fransking commented 4 years ago

Hi,

After reading #1029 I built a docker image to run headless RDP on a Raspberry PI, compiling XRPD and XORGXRDP from source. Everything is working as expected on the Pi 3 once I do a horrendous hack and sudo chmod 777 /dev/dri/* on the docker host.

Pi3 - glxgears screenshot Pi3 - xorgxrdp log Pi3 - glxinfo output

On the PI4 however although DRI seems to working the graphic output of any opengl app is corrupted.

Pi4 - glxgears screenshot Pi4 - xorgxrdp log Pi4 - glxinfo output

however when launching X within the container and connecting using VNC:

su - dosbox startx & x11vnc

the graphics are not corrupt on the PI4

Pi4 - xorgxrdp log Pi4 - glxinfo output

Has anyone experienced the same? Is the v3d driver supported?

Thanks,

Frans

fransking commented 4 years ago

I got rid of the corruption while still having GPU acceleration by replacing this line in xrdpdev.c

if (glamor_init(pScreen, GLAMOR_USE_EGL_SCREEN | GLAMOR_NO_DRI3))

with

if (glamor_init(pScreen, GLAMOR_USE_EGL_SCREEN))

jsorg71 commented 4 years ago

Fascinating, I didn't think of this use case. I've only tested on x86 architectures. One trick I do to make sure you are in a glamor session is look at the output of xvinfo. As for removing GLAMOR_NO_DRI3, that is just so we can init DRI3 later. We of course need DRI3. I'll have to see what's going on here. Can you share an sd image? I have a RPi3 but not RPi4.

jsorg71 commented 4 years ago

I also noticed in the logs this

[ 12721.123] (EE) glamor0: GL error: GL_INVALID_OPERATION in glGetUniformLocation(program not linked)

This needs to be fixed. The shaders in rdpEGL.c need to be modified so they compile.

fransking commented 4 years ago

Can you share an sd image? I have a RPi3 but not RPi4.

If you can install docker on the Pi3 this script should give a perfectly re-producable (but working as it does on the Pi3) container

https://github.com/fransking/docker-dosbox/blob/master/Dockerfile

eduarddejong commented 2 weeks ago

This issue also happens on Raspberry Pi 5, using Raspberry Pi OS version Bookworm 12 (Debian). See https://forums.raspberrypi.com/viewtopic.php?t=323471&start=25. ~/..xorgxrdp.10.log shows me the same error with glamor0.

The only solution to get graphics working in things like webbrowsers when using Xrdp is to basically to disable hardware acceleration so that the really slow llvmpipe software rendering is used (which I just check with glxgears -info). I am not really expert with OpenGL though.

And I also tested with the newer Xrdp version from the backports (sudo apt install -t stable-backports xrdp), but that doesn't change anything to the problem either.