6 ms·
I (and most of my colleagues) stopped using vcxsrv at my workplace since we moved from Qt4 to Qt5. At some point in between, Qt stopped supporting native X11 pa
by syockit 6y ago
I (and most of my colleagues) stopped using vcxsrv at my workplace since we moved from Qt4 to Qt5. At some point in between, Qt stopped supporting native X11 painting[1] which means all of the graphics are now drawn as bitmap at server side and sent in whole to the client. That easily hoses up our network. The problem is more exarcebated now that Japan has declared state of emergency and everyone is urged to work from home. We now resort to using VNC solutions. (I wish we had developed a curses client along with the GUI for times like this)
[1] https://bugreports.qt.io/browse/QTBUG-50338 https://bugreports.qt.io/browse/QTBUG-50338
- raverbashing 6y agoX over anything but a local network (and even then) is hard to make it work right. VNC and similar systems have the right idea about remote desktop access.
- stragies 6y agoW.r.t to working principle/protocol, VNC is to X11 what MOSH is to SSH-Terminal, with RDP taking the best of both worlds. The RDP-server, and -client implementations are mature on all common platforms, with a well-supported common minimum protocol version support. For anything but localhost I try to use RDP.
- jamesfmilne 6y agoX also doesn't really work if you UI is implemented with OpenGL or similar. I've been using NoMachine and it works very well. Others I know are using Teradici, or HP Remote Graphics.
- datenwolf 6y ago> X also doesn't really work if you UI is implemented with OpenGL or similar. Depends on how you use the OpenGL API. OpenGL display lists, once compiled, are extremly light on the connection. However they're also deprecreated and no longer supported in (forward compatible) OpenGL-3.3 core. But then again there's no 3.3 GLX specification.
- jamesfmilne 6y agoFor the stuff I'm doing (image processing), indirect GL is not an option.
- exikyut 6y agoWhat about VirtualGL? https://www.virtualgl.org/ https://www.virtualgl.org/ As I understand it, when you open an OpenGL application inside Xvnc (et al) on :1, a shim is LD_PRELOADed that quietly redirects the OpenGL initialization calls so they create an offscreen buffer associated with Xorg at :0 (which is presumably sitting on a 3D-capable GPU). Said Xorg can be displaying a black screen (or be being used for arbitrary purposes); no windows are ever displayed on it. Theoretically, avoiding compositing WMs may aid performance.
- notyourday 6y agoI am using it with qemu to allow Linux guests to use hosts's gpu to do 3d acceleration. It works fairly well except that it seems there is a memory leak in the path somewhere because over time qemu VMs with it enabled grow over the memory allocated to them.
- exikyut 6y agoWait, how does that... ohh, you're forwarding GLX. Ha, that's awesome, I am definitely borrowing that idea :) The graphics contexts should be well-contained on the host though. That the guest is leaking memory is kind of interesting.
- notyourday 6y agoThis is qemu 4.2.0 configure command line that built what i needed to support this ( Debain 10's qemu did not have virgl support ). Spice did not work me, SDL did. PKG_CONFIG_PATH=/opt/virgl-0.8.1/lib/pkgconfig/ ./configure --prefix=/opt/qemu-4.2.0 --enable-spice --enable-kvm --enable-linux-aio --target-list=x86_64-softmmu --enable-sdl --enable-gtk --enable-opengl --enable-virglrenderer --extra-ldflags=-L/opt/libepoxy-1.5.4/lib/ And this is the command line to launch a guest: export QEMU_PA_LATENCY_OUT=20 export QEMU_PA_SAMPLES=44100 ${QEMU_BIN} -name "${NAME}" -m size=${RAM_SIZE} -machine accel=kvm -drive format=raw,aio=native,cache=none,if=virtio,file=${VMDIR}/${VM} -netdev tap,id=mynet0,ifname=${VMTAP},script=no,downscript=no -device e1000,netdev=mynet0,mac=${VMMAC} -vga virtio -display sdl,gl=on -soundhw hda -audiodev pa,id=pa1 Oh and when I say it is working "fairly well" I mean the a guest with a single vCPU runs a spinning cube with no sweat, not to mention glxgears etc. Just for a test I have done 4 guests ( one per physical core ) doing gears and spinning cube each in addition to the host itself doing spinning cube with no issue. If only I could figure out how to fix this memory leak.
- JeremyNT 6y agoI've used xpra in situations where x forwarding is not performant enough. It's got some rough edges but it works very well over low bandwidth connections.
- selfishgene 6y agoDoes Xpra support VSOCK connection between host and guest (which avoids latency of network stack) with WSL like X410?
- AshamedCaptain 6y agoSame problem. There is now however the "QT_XCB_NATIVE_PAINTING" environment variable which I suggest you try.
- aruggirello 6y agoInteresting! Would this help with abysmal performance of ssh -X too over the LAN?
- AshamedCaptain 6y agoIt can help with bandwidth usage, but not latency.
- michaelcampbell 6y ago> We now resort to using VNC solutions. Isn's this just ... > graphics are now drawn as bitmap at server side and sent in whole to the client. ?
- syockit 6y agoYes, but with multiple compression technology available. I use RealVNC where there is only one knob for controlling image quality, but in TightVNC for example there's a choice of using zlib, RRE, hextile and its very own Tight encoding[1]. The problem with Qt over X is that it tries to send every frame on every redraw event. With VNC this is automatically limited by the frame rate. [1] https://www.tightvnc.com/vncviewer.1.php https://www.tightvnc.com/vncviewer.1.php
- notyourday 6y agoIf you are to run a spinning cube test you will see that VNC cannot handle motion graphics well.