<div dir="ltr"><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Erik De Rijcke</b> <span dir="ltr"><<a href="mailto:derijcke.erik@gmail.com">derijcke.erik@gmail.com</a>></span><br>Date: 2017-02-24 8:46 GMT+01:00<br>Subject: Re: Remote display with 3D acceleration using Wayland/Weston<br>To: Christian Stroetmann <<a href="mailto:stroetmann@ontolab.com">stroetmann@ontolab.com</a>><br><br><br><div dir="ltr">I made a poc for a remote (gl) display some time ago for my own compositor, but instead of using rdp, I used html5 websocket & canvas.<div><br></div><div>On a 800x600 display I would get a steady 30fps. There were basically 2 performance challenges to be solved. The glreadpixels and the compression of raw pixels to a compressed image format (png in my case). In the end I had to resolve to multi threading to get acceptable performance. This was without other optimizations like only reading out damaged regions, or resorting to something more efficient than glreadpixels.</div><div><br></div><div>Nowadays I'm working on a html5 solution that is more (very) closely related to what waltham aims to be. That is where only the content of individual surfaces are send over rtp (openwebrtc in my case). While communication with the back-end happens over a wayland alike protocol [ <a href="https://github.com/udevbe/westfield" target="_blank">https://github.com/udevbe/<wbr>westfield</a> ]. Each client then basically runs it's own compositor.</div><div><br></div><div>One major issue that is still unresolved is to efficiently encode a gl texture to a video frame (vp8/9, h264) without leaving the gpu space early. Ideally the encoding to a video frame (or a png or jpeg) happens on the gpu so the amount of pixels to be read out is minimized.</div><div><br></div><div>What you should ask yourself is if you really want to send over the entire screen or just the individual surfaces. Using individual surfaces should give you less work to get some decent performance, another side effect is that moving a surface does not require re-sending the entire screen.</div><div></div></div>
</div><br></div>