On Thu, May 4, 2017 at 8:59 AM, Wojciech Kluczka <[email protected]> wrote: > Hello, > > This was supposed to be only a short announcement of Skylane - > implementation of Wayland in Rust - but it was pointed to me that one can > not use hardware acceleration without original libwayland so I have to also > ask some questions. > > On client side there's not much to worry about (as far as I could see) but > server has to use mesa extension which adds global object to display, > relying on concrete implementation. > - I can guess but was the reason to make such dependence?
The idea is that the EGL driver, Mesa or any other driver, could implement the Wayland server side extension with whatever protocol necessary. Mesa uses wl_drm, but other drivers can use a different protocol or a shared-memory section or such. The EGL extension provides a high-enough level of abstraction that a wide range of drivers should be able to implement it. If you want an EGL driver to talk to Wayland, you need the driver and the server to share a C implementation of the protocol library. > - Would that be feasible to add another more generic extension providing > data needed to create wl_drm global by server instead of implicitly adding > it in mesa? Not sure what you have in mind here, but... > - I didn't look at details of implementation. Probably not, but would it be > feasible to provide wl_drm global without any extension, using only > available drm/gbm API? Yes, you don't need to use the EGL extension. You can implement wl_drm or the dma-buf extension directly in your rust based compositor. Then use https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import.txt https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt to import the dma buf fd as an EGLImage. Kristian > In many places Wayland (not only Weston) is referred as "reference > implementation" so I didn't really expect such obstacles. > > I guess questions like "why new implementation?" or "why not bindings?" will > appear, so here are some words in advance. There is one project aiming to > create Rust bindings, but at the time I started there was no support for > server side (I don't know how about now) and whole think was about adding > another complicated abstraction layer dumping straightforwardness (and > performance). On the other hand Rust provides great support for > multi-threading so it would be wasteful to impose on users how they create > wayland thread. Removing that what left is creating sockets, dispatching and > generating some marshaling code. Not much. And without using libwayland this > can be clean and slick. > > For interested ones, links to skylane and perceptia (window manager / > compositor in Rust using it): > https://github.com/perceptia/skylane > https://github.com/perceptia/perceptia > > Best regards, > Wojciech Kluczka > > > _______________________________________________ > wayland-devel mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/wayland-devel > _______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
