Changelog - binarycounter/Westonpack GitHub Wiki

Changelog

Westonpack 0.2.6.1

TrimUI, oh TrimUI.... full of surprises

  • Fixed SDL2 failing to link against libEGL properly, caused by it not being linked against GLESv2.
  • Fixed Crusty not recognising calls from within the EGL library to other EGL functions as coming from within the backend
  • Fixed circular linking issue with SDL2 calling one of my fake functions, which called the same SDL2 function, causing a stack overflow
  • FPS counter caused a segmentation fault because the timer resolution was unreliable. Thank you @bmdhacks for the fix!

Added a symbolic link to libcrusty.so from libCRU.so.1 and libCRU.so

  • These are just random filenames specifically chosen to be the same length as libEGL.so, libGLX.so and similar.
  • Some engines, especially those with a builtin GLAD EGL loader will refuse to runtime link against crusty and instead open the system library.
  • This is caused by a bug in the dynamic linker cache ignoring LD_LIBRARY_PATH.
  • You can use these symbolic links to replace mentions of "libEGL.so" in an executable with "libCRU.so" via binary hacking
  • This forces executable to link against crusty as it's not available anywhere but LD_LIBRARY_PATH
  • Only rarely needed, but useful to have in the tool set. I used this for Open Hexagon

Westonpack 0.2.6

Rocknix (Mali) is now fully supported

  • libwayland-egl is now no longer in LD_LIBRARY_PATH on Rocknix systems, allowing SDL2 to initialize correctly
  • New environment variable CRUSTY_WLMODE is used by werstonwrap to force crusty's SDL2 into wayland mode without affecting other SDL2 apps
  • Crusty in Wayland mode will now unset WAYLAND_DISPLAY for the wrapped app to stop it from trying to use Wayland to initialize.
  • Wayland display events are now properly handled in crusty
  • Added libseat builtin server mode to enable input without clashing with existing seatd server

Rocknix (Panfrost) is now bypassed (and therefore compatible)

  • westonwrap automatically detects Rocknix in Panfrost mode and bypasses the entire stack to run the app directly.
  • This behavior can be overwritten by setting the environment variable NO_PANFROST_BYPASS=1

TrimUI devices (a133p) on Knulli are now supported

  • Crusty no longer uses its own wrapped implementation of eglGetProcAddress to obtain GL pointers
  • Crusty will now probe different ways of obtaining GL pointers (EGL, SDL, dlsym) to support PowerVR drivers (which do not expose GLES functions over EGL when in an SDL2 context)

Old ArkOS devices (e.g. OGA) are now supported

  • findlib will now redirect stdout to /dev/null while loading libraries to prevent them from printing stuff to the console
  • westonwrap will only use the very last line of findlib's output, and verify that it's a valid file path.

Improved GLX compatibility

  • hacked version of libX11 will now always claim direct GLX support (even with gl4es or crusty_glx). This fixes some apps with GLFW
  • CrustyGLX will also now expose the GLX extension to the app when you query the Xserver for it
  • westonwrap will now add XDG_SESSION_TYPE=x11 envvar. This fixes some LWJGL3 apps
  • GL4ES has been rebuilt with -O3 optimizations and a static link to crusty. This improves performance by ~5%.
  • Added some more X11 libraries, most notably libXdamage.

Improved backend compatibility

  • Crusty will now by default not use signal handlers, SDL_NO_SIGNAL_HANDLERS=1 is no longer required. This affects Java and Mono ports.
  • You can now control the GLES version crusty uses with CRUSTY_GLES. Default is 32 for GLES 3.2. CRUSTY_GLES=11 will allow some SFML apps to run natively.
  • Crusty's software cursor now supports viewport sizes bigger than the screen size. This affects Godot 4 games.

Better experience

  • tools/xtrace is now included to allow you to trace X11 traffic, allowing you to debug GLX and Xlib errors
  • lib_aarch64/graphics/sdl_cursor/ provides a standalone version of crusty's software cursor, usable in any SDL2 app.
  • source $weston_dir/version.txt now exposes wp_version=260 wp_support25=true wp_support26=true so your port script can check whether the westonpack installed on the users system can support the features they need
  • Log will now make it very obvious where the output of your app begins and ends with horizontal lines
  • You can now specify library paths and preload that are only used for Panfrost or Mali systems with WRAPPED_LIBRARY_PATH_MALI, WRAPPED_LIBRARY_PATH_PANFROST, WRAPPED_PRELOAD_MALI, WRAPPED_PRELOAD_PANFROST. This ensures that you don't use libraries that are incompatible with one or the other. This is for example useful when using the "double SDL" trick that I've used for Super Hexagon and Hammerwatch.

Westonpack 0.2.5.1

  • Fixed Rocknix detection, thanks @Cebion
  • Changed weston binary name to "wp_weston"
  • Fixed some symlink issues with crusty
  • Updated crusty to newest dev version, there are some slight performance gains for rocknix in there.

Westonpack 0.2.5

  • Maaaassive update to CrustyGLX. Is now capable of loading many GL2.1 games, including Hammerwatch, Super Hexagon, libGDX games like Pixel Dungeon, Retro City Rampage and more, through GL4ES.
  • gptokeyb now needs to point at the actual game executable rather than "weston". This has the advantage that the script can now periodically check if the user has exited early, prevents a deadlock.
  • cleanup function. Please run "westonwrap.sh cleanup" at the end of your port script after running the game.
  • Knulli libEGL link fix (maybe?)
  • WIP Rocknix compatibility: DRM mode works. Xlib games are supported, aswell as llvmpipe and virgl. Headless mode is somewhat supported. Headless games with SDL will work (possible input issues), CrustyGLX and CrustyGBM do not.

Westonpack 0.2.3

Once again please redownload all packages as well as the tests. Everything has changed

Fixed libtinfo.so GLIBC 2.33 dependency, should now work on more ArkOS devices Added additional DRM backend handling, might fix some TrimUI Brick issues Added (very slow) tracelog version of crusty for debugging purposes

Fixed oversight in kmscube causing test 8 to close after one frame Added debug script that uses the tracelog version of crusty. if your device doesn't work as expected (either 8/8 or 6/8) please run the debug version and submit "log_debug.txt" too.

Westonpack 0.2.2

  • Mesa now correctly finds dri driver folder (only applicable on GBM systems)
  • Added correct libtinfo.so library to mesa folder for AmberElec
  • XWayland now correctly finds dri driver folder (only applicable on GBM systems)
  • Westonwrap can now correctly detect different SDL2 path names (some systems use libSDL2.so, some use libSDL2-2.0.so, some use libSDL2-2.0.so.0)
  • Performance boost on GBM devices due to more direct rendering path being taken (+10 fps in Unity test)

Westonpack 0.2.1

  • ditched the DRM stub driver, now relying on LD_PRELOAD hooking in crusty_gbm as well as mkfifo and mknod.
  • VirGL now supports both gbm and surfaceless backends.
  • westonwrap.sh now requires running it as $ESUDO
  • westonwrap now waits for Xserver socket to become available before launching your app
  • updated gl4es

Westonpack 0.2.0

  • X11 and Wayland support on GBM and fbdev devices
  • OpenGL support while rendering into an X11 session, or headless into something else (e.g. crusty or SDL2)
  • Should work on mali and panfrost devices
  • comes with "crusty_gbm" and "crusty_glx", wrappers to enable GBM or GLX based apps to run on any device that supports SDL2, optionally with gl4es
  • comes with gl4es with GLX and EGL support, rendering into fbdev, GBM or pbuffer (slow).
  • Tons of common X11 support libraries
  • currently mostly for aarch64 apps, armhf support coming shortly

Mesapack 0.1.1

  • Provides additional ways to display graphics while using westonpack.
  • LLVMPipe: Software renderered GL4.5
  • VirGL: Virtualized OpenGL 2.1 (not software rendered)
  • Zink: GL4.5 over Vulkan (if device has at least vulkan 1.1)
  • Usable in DRM mode, VirGL usable in headless mode soon (with huge performance gains)