Hi folks,
I've been working, for the last couple of days, on a port of
OpenCPN to native Wayland
(i.e. not using an emulation layer like XWayland).
There were 2 main blockers for this :
-
OpenCPN massively uses legacy OpenGL, whereas Wayland only supports OpenGL ES ;
-
OpenCPN uses the wxGLCanvas wxWidget to render its
navigation map, which itself uses GLX, whereas Wayland requires EGL.
So I wrote a little wrapper named
EGLX which basically redirects X11/GLX calls to Wayland/EGL ones.
Then I
patched wxWidgets to integrate the wrapper. And then I
patched OpenCPN itself, to use GTK+3, integrate the wrapper, the
jwzGLES one, and to disable some unsupported GL calls (mostly GLU and tessellation).
The result is very exciting :
(click
here for a larger version)
This doesn't
work perfectly yet : right-click on the map freezes it, some commands make the program crash, the toolbars look like independant windows...
Unfortunately, I have to pause this
work for the moment, as I got other priorities. But if noone objects, I will list caveats, bugs and "todos" in a following post, so anyone interested can take up with the
project.