Hi, For the past week, I've been working on porting Dolphin (the gamecube emulator) to run as a wayland client. I am pleased to announce the code is now in a working state. There are a few issues but fairly minor, considering this is a threaded EGL/GLSL application that works as an X client or a Wayland client. The same binary can be run in X or Weston, selectable at runtime.
Since dolphin is a threaded application, timing is critical. I suspect this is related to the bug I ran into, outlined here https://bugs.freedesktop.org/show_bug.cgi?id=60942 For now, the wayland mainloop seems to be relatively stable using roundtrips and usleep. Hopefully I can track down what's going on there so it can dispatch as intended. This is quite possibly the first real world application to run as a threaded wayland-egl client. It is also possibly the first standalone client to support X and Wayland platforms simultaneously. Following is a summary of the current status of the Wayland client features: What works: Build time configuration switches for X and Wayland support Run time platform switch configurable with environment variable Core Functionality: Video output Audio output Keyboard input Joystick input UI Functionality: Toggle Fullscreen Pause/Resume Emulation Save/Load State Screenshot Esc to Exit What doesn't work: Mouse input Resizing the window More Information: Keys: Exit: Esc Toggle Fullscreen: 'f' or Alt+Enter Pause: 'p' Save State: Shift+F1-8 Load State: F1-8 Testing: 1) Dolphin has high system requirements for cpu and gpu. It is recommended to first install Dolphin from the official channels configured with wxWidgets frontend in X. This will let you get familiarized and see if it works at all with your system. 2) Grab the code from https://github.com/soreau/dolphin-emu wayland-egl branch and build it. prefix=$HOME/wayland export PKG_CONFIG_PATH=$prefix/lib/pkgconfig git checkout git://github.com/soreau/dolphin-emu.git -b wayland-egl cd dolphin-emu mkdir build cd build cmake .. \ -DCMAKE_INSTALL_PREFIX=$prefix \ -DCMAKE_PREFIX_PATH=$prefix \ -DUSE_EGL=1 -DDISABLE_WX=1 \ -DUSE_X11=1 -DUSE_WAYLAND=1 \ -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_VERBOSE_MAKEFILE=0 \ make make install 3) Run it: LD_LIBRARY_PATH=$prefix/lib $prefix/bin/dolphin-emu-nogui -e /path/to/gcm Notes: The platform may be selected by setting the environment variable DOLPHIN_EGL_PLATFORM to "x11" or "wayland". If this environment variable is not set, it will attempt to select an appropriate platform automatically. Gamepad devices with force feedback capabilities work when Dolphin is built against SDL2. Resizing shouldn't be too difficult to implement. This is a first attempt and WIP so the code isn't perfect and there may be some bugs. Issues: Dolphin seems to produce invalid image files for screenshots, though weston screenshooter works fine even when in fullscreen. The emulator segfaults on exit in wayland, after a hack to work around stalling on exit. There is a bug in mesa with GLSL using UBO's that affects Sandybridge. It causes relatively minor rendering artifacts and does not inhibit performance. Video Clip: http://www.youtube.com/watch?v=3ZdXu1VM_VQ&feature=youtu.be
_______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
