<div dir="ltr"><div><br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Borrowing the idea from Daniel Stone from whom I heard it first, the<br>
only other option is to reimplement libwayland *including* its C ABI in<br>
Rust. You need to completely throw away the C implementation of<br>
libwayland and replace that with your own libwayland-*.so built with<br>
Rust. Then you will get libEGL calling into your implementation and it<br>
will be the sole implementation, which should let things work.</blockquote><div><br></div><div>This is some solution but it's huge workaround. I would rather use bindings. <br></div><div><br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">If you want an EGL driver to<br>
talk to Wayland, you need the driver and the server to share a C<br>
implementation of the protocol library.<span class="gmail-m_3153649998338937846gmail-im"><br></span></blockquote><div><br></div><div>With this approach there either<br>- has to be the one and only implementation or<br></div><div>- every implementation provides its own stuff to mesa or<br></div><div>- (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.<br></div><div><br></div><div>But...<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-m_3153649998338937846gmail-im">
</span>Yes, you don't need to use the EGL extension. You can implement wl_drm<br>
or the dma-buf extension directly in your rust based compositor.</blockquote><div><br></div><div>... if so, then I'm more than good with that. I will see what I can do.<br><br></div><div>Thanks!<br></div><div> </div><div><br> </div></div>