Re: Return values in Wayland XML specification

2017-05-14 Thread Wojciech Kluczka
In Wayland array can contain only integers.

See how listing of outputs is done. Server creates one global `wl_output`
per output, client binds to the global, server sends events with output
parameters (list of modes among them) and then event `done` to indicate it
stopped sending info about this output. You probably don't want one global
per window. I'd go with one global `window_manager` which sends events (one
per window) after bind and after creation of window (or on request,
depending on your needs).
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel


Re: Skylane - implementation of Wayland in Rust

2017-05-07 Thread Wojciech Kluczka
Hi,

Sorry about stupid noobish questions. Now I dived in a bit and know
eglCreateImageKHR is everything I need. After whole day I have
weston-simple-dmabuf-intel and EGL apps (weston-simple-egl, Qt) running on
`perceptia` using linux-dmabuf-unstable-v1 and wayland-drm (yes, I know
it's implementation detail, but that's the only way I can think of to make
EGL applications talk to me.)

Plan for client is to use offscreen GBM buffers + dmabuf protocol. After
today I'm optimistic about that.

Thank you for help!
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel


Re: Skylane - implementation of Wayland in Rust

2017-05-05 Thread Wojciech Kluczka
> Borrowing the idea from Daniel Stone from whom I heard it first, the
> only other option is to reimplement libwayland *including* its C ABI in
> Rust. You need to completely throw away the C implementation of
> libwayland and replace that with your own libwayland-*.so built with
> Rust. Then you will get libEGL calling into your implementation and it
> will be the sole implementation, which should let things work.


This is some solution but it's huge workaround. I would rather use
bindings.



> 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.
>

With this approach there either
- has to be the one and only implementation or
- every implementation provides its own stuff to mesa or
- (what I meant in second point in my first message) mesa is generic enough
to be used by any implementation. EGL_WL_bind_wayland_display takes
wl_display and fills wl_buffer_interface and wl_drm_interface with pointers
to functions taking wl_resource in arguments. I can imagine extension which
takes implementation-independent structure and fills it with
implementation-independent functions which can be used to construct (by
server) implementation-dependent wl_drm in Rust, Haskell, or whatever that
talks C ABI.

But...


> 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.


... if so, then I'm more than good with that. I will see what I can do.

Thanks!
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel


Skylane - implementation of Wayland in Rust

2017-05-04 Thread Wojciech Kluczka
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?
 - 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?
 - 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?

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
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel