4 ms·
> And going back to some client rendering enabling features like anti-aliasing. The xrender extension already supports server side drawing, anti-aliasing, tran
by sprash 5y ago
> And going back to some client rendering enabling features like anti-aliasing.
The xrender extension already supports server side drawing, anti-aliasing, transparency, gradients and so on. If you use for example Cairo with the xrender backend almost everything except the tessellation of splines will be rendered server side and has a rather efficient wire protocol which will be better than even RDP.
- md8z 5y agoThe problem with XRender (and Cairo) is that it is still inherently an old-school immediate mode API. It's never going to be as performant as a fully parallelized GPU implementation.
- sprash 5y agoAll XRender operations are already GPU accelerated via Glamor. The spline tesselation step of drawing is notoriously hard to do on GPUs. Hence the separation at that point was actually a smart choice.
- md8z 5y agoThe GPU acceleration in Glamor doesn't really help, the issue here is that everything still needs to be serialized by the X protocol, rather than being drawn in parallel as they would on a GPU. Edit: There has been some progress on GPU tessellation of splines, here is the most recent I can think of that was discussed here: https://news.ycombinator.com/item?id=23512897 https://news.ycombinator.com/item?id=23512897
- sprash 5y ago> The GPU acceleration in Glamor doesn't really help According to benchmarks at the time 700-800% speedup. > everything still needs to be serialized by the X protocol Drawing in general needs to be serialized. As soon as the object tree gets too big parallelized rendering on GPU will be slower because of the huge amount of branches. The link you posted solves this problem somewhat but introduces a huge amount of complexity to the renderer (also the benchmarks are done on Windows which obviously has no xrender backend). Xrender on the other hand is a simple standardized solution that works today.
- md8z 5y ago7-8x speedup is not really that much when parallelized GPU algorithms can usually get 100x speedup or more. I would suggest to look at benchmarks compared to GPU based solutions such as piet-gpu, or even a parallelized 2d renderer like Blend2D, and see how that compares. IIRC the way you really want to do it is to build up the entire frame as a command buffer as you would in Vulkan and then submit that. The recent developments here are actually because advancements showing that drawing didn't need to be serialized. The whole point of a GPU is to avoid that. I really don't know what to tell you, this is a complex problem, it's not solvable with simple solutions. The practice of the X server implementing the simplest possible solution has only really resulted in the complexity being moved into other projects, hence the existence of Wayland...
- aidenn0 5y agoAs soon as I get linux GPU drivers that don't crash randomly, I'll consider the need for a parallelized GPU implementation to be important.