Releases: whrvt/wine-osu-patches
wine-osu-spectator-10.0-rc4-5
Release info
- Rebase
- Add workaround for osu! floating point bug (finally)
- Shared memory optimizations
- Compilation fixes and improvements
- Faster memcpy/memmove/memset patches
- Prebuilt binary/generic release requires AVX now
- Update wrapper (
wine-osu(-wow64)
) to be usable with winetricks- e.g.
WINE=wine-osu winetricks -q deletemyhomefolder
- e.g.
- Random tree-wide fixes
- Make it go faster
For extra information, refer to my comment on the AUR package, and the previous releases' notes.
Installation
If installing from the attached releases, add my public key (should only be required once):
sudo pacman-key --keyserver keys.openpgp.org --recv-keys 0B47490955565BD2 && sudo pacman-key --lsign-key 0B47490955565BD2
before running the install command (can also use paru
or another AUR helper):
sudo pacman -U <url-from-below>.pkg.tar.xz
Otherwise, just run e.g. paru -S wine-osu-spectator-wow64
to build and install it from the AUR.
wine-osu-spectator-10.0-rc3-4
Release info
- Added ntsync7 (+esync/fsync), set
WINE_DISABLE_FAST_SYNC=1
to use esync/fsync instead- Ensure you have ntsync7 installed (e.g.
ntsync-dkms
AUR package, or build your kernel with it), or else only fsync/esync will work- Also make sure it's running, if it's a dkms module (
sudo modprobe ntsync
) wine: using fast synchronization.
will be printed on startup
- Also make sure it's running, if it's a dkms module (
- If you don't want any *sync:
WINEFSYNC=0
,WINEESYNC=0
, andWINE_DISABLE_FAST_SYNC=1
- Thank you @loathingKernel for doing the hard work of rebasing ntsync to Proton 9
- Ensure you have ntsync7 installed (e.g.
- Removed a few incompatible/hard to rebase patches (goodbye again threaded server)
- Add bonus WIP WoW64 mr/patch to fix some random 32-bit games
- etc...
For extra information, refer to my comment on the AUR package, and the previous releases' notes.
Installation
If installing from the attached releases, add my public key (should only be required once):
sudo pacman-key --keyserver keys.openpgp.org --recv-keys 0B47490955565BD2 && sudo pacman-key --lsign-key 0B47490955565BD2
before running the install command (can also use paru
or another AUR helper):
sudo pacman -U <url-from-below>.pkg.tar.xz
Otherwise, just run e.g. paru -S wine-osu-spectator-wow64
to build and install it from the AUR.
Merry Christmas :)
wine-osu-spectator-10.0-rc2-3
Release info
- Return openglfreak's threaded/shared memory server request patchset
- Fix logic error in semaphore path for fsync retry optimization (caused long freezes in osu! song select, probably other issues as well)
- Also don't retry with 0 timeout waits... obvious mistake in hindsight
- Fix screenshot folder not opening in osu! with WINE_BLOCK_GET_VERSION=1
For extra information, refer to my comment on the AUR package, and the previous releases' notes.
Installation
If installing from the attached releases, add my public key (should only be required once):
sudo pacman-key --keyserver keys.openpgp.org --recv-keys 0B47490955565BD2 && sudo pacman-key --lsign-key 0B47490955565BD2
before running the install command (can also use paru
or another AUR helper):
sudo pacman -U <url-from-below>.pkg.tar.xz
Otherwise, just run e.g. paru -S wine-osu-spectator-wow64
to build and install it from the AUR.
wine-osu-spectator-10.0-rc2-2
Release info
- Rebase
- Remove upstreamed patches
- Streamline lib32-ffmpeg build dependency with a stripped down package
- Lower initial dynamic spincount to 8 from 256 to let it settle to an optimal value quicker
- Random small changes
For extra information, refer to my comment on the AUR package, and the previous releases' notes.
Installation
If installing from the attached releases, add my public key (should only be required once):
sudo pacman-key --keyserver keys.openpgp.org --recv-keys 0B47490955565BD2 && sudo pacman-key --lsign-key 0B47490955565BD2
before running the install command (can also use paru
or another AUR helper):
sudo pacman -U <url-from-below>.pkg.tar.xz
Otherwise, just run e.g. paru -S wine-osu-spectator-wow64
to build and install it from the AUR.
wine-osu-spectator-10.0-rc1-1
Release info
- Compilation improvements
- Build with LLVM polly (analogous to GCC's "graphite" optimizations)
- Improve clang MSVC mode support in some header files, e.g.
YieldProcessor()
was previously a no-op instead of a proper CPU pause - Some other smaller changes to hopefully improve stability/correctness/performance
- Fixed some display registry issues by removing some old and unnecessary patches
- Added a keyboard input regression workaround (bug)
- Improve(?) the dynamic spinning patch
- Entirely skip
winebus.sys/winehid.sys/wineusb.sys/winebth.sys
service installation for new prefixes unless theWINE_INSTALL_ROOT_DEVICES
is in the environment (I really need to make a README for all of the various tunables/envvars in the patchset...) - Remove the rawinput subsystem patchset from before. I still believe it has potential to fix some problems, but it causes more trouble than it's worth in its current state unless you know all its quirks.
- Some miscellaneous tweaks as usual.
For extra information, refer to my comment on the AUR package, and the previous releases' notes.
Installation
If installing from the attached releases, add my public key (should only be required once):
sudo pacman-key --keyserver keys.openpgp.org --recv-keys 0B47490955565BD2 && sudo pacman-key --lsign-key 0B47490955565BD2
before running the install command (can also use paru
or another AUR helper):
sudo pacman -U <url-from-below>.pkg.tar.xz
Otherwise, just run e.g. paru -S wine-osu-spectator-wow64
to build and install it from the AUR.
wine-osu-spectator-9.22-1
General release info
- Rebase to latest wine/staging master
- Add support for linking with the
lld
linker's-flto=(full|thin)
optimization, and build with full LTO by default- This also means that the
bfd
linker is now optional, as lld itself for the ELF-side was entirely broken previously - Some other misc PKGBUILD touchups
- This also means that the
- Finish fsync futex-less acquisition retry optimizations
- Added semaphore retry and yet more refactoring
- Add extremely WIP raw input replacement subsystem (s/o to the friend who was ok with me putting out a blasphemous extension of his work)
- Will activate if you set
RAWMOUSE=/dev/input/event<#>
and have r/w perms on that path, or for example part of theinput
group with the permissions set properly - Won't work with (e.g.) SDL games currently due to unimplemented
GetQueueStatus
integration - Currently broken on WoW64. I missed that I broke it right before I went to push the release, but the patchset is opt-in anyways. I'd like to put out a release with a less broken implementation within the next week. I'll elaborate more on the motivation and functionality when it's more complete.
- Will activate if you set
- Some other patches added/removed/tweaked in an attempt to improve stability/smoothness
For extra information, refer to my comment on the AUR package, and the previous releases' notes.
Patches
Staging patches: all, minus eventfd-synchronization
(replaced with Proton's impl.)
Other patches: repo at this tag. As usual, a log of all patches is also installed to /opt/wine-osu-spectator(-wow64)/patchlog.txt
.
Installation
If installing from the attached releases, add my public key (should only be required once):
sudo pacman-key --keyserver keys.openpgp.org --recv-keys 0B47490955565BD2 && sudo pacman-key --lsign-key 0B47490955565BD2
before running the install command (example URL, can also use paru or another AUR helper instead of sudo pacman
):
sudo pacman -U https://github.com/whrvt/wine-osu-patches/releases/download/11-22-2024-51ccd95c-7ba8823e/wine-osu-spectator-wow64-9.22.w1.s7ba8823-1-x86_64.pkg.tar.xz
Otherwise, just run e.g. paru -S wine-osu-spectator-wow64
to build and install it from the AUR.
wine-osu-spectator-9.21-2
General release info
- Rebase to latest wine/staging master
- Includes the upstreamed "fshack"
- Further tweak the fsync optimizations a bit to reduce the chance of some possible memory ordering regression
- Sign prebuilt packages
- Misc changes
For extra information, refer to my comment on the AUR package, and the previous releases' notes.
Patches
Staging patches: all, minus eventfd-synchronization
(replaced with Proton's impl.)
Other patches: repo at this tag. As usual, a log of all patches is also installed to /opt/wine-osu-spectator(-wow64)/patchlog.txt
.
Installation
If installing from the attached releases, add my public key (should only be required once):
sudo pacman-key --keyserver keys.openpgp.org --recv-keys 0B47490955565BD2 && sudo pacman-key --lsign-key 0B47490955565BD2
before running the install command (example URL):
sudo pacman -U https://github.com/whrvt/wine-osu-patches/releases/download/11-22-2024-51ccd95c-7ba8823e/wine-osu-spectator-wow64-9.22.w1.s7ba8823-1-x86_64.pkg.tar.xz
Otherwise, just run e.g. paru -S wine-osu-spectator-wow64
to build and install it from the AUR.
wine-osu-spectator-9.21-1
General release info
- Rebase to latest wine/staging master
- Update generic builds from
-march=x86-64 -mtune=generic
to-march=nocona -mtune=core-avx2
, which is the same as what Proton is built with - Switch back to clang + llvm-mingw-msvcrt for compilation due to some annoying missing features with clang's MSVC mode, shouldn't affect runtime performance at all
- Clean up and refine the USD time thread patch to better match the behavior of Windows
- Rely on the fast USD time updates to remove an expensive syscall from every
__fsync_wait_objects
call
- Rely on the fast USD time updates to remove an expensive syscall from every
- Add a patch to use
MONITORX/MWAITX
if available and spin (if necessary) before falling back to a full futex wait to reduce contention/increase successful object acquires in fsync- These instructions are available on AMD processors since Bulldozer, but Intel processors should still see some benefit from the spinloop
- Remove AC: Odyssey-specific fsync hacks and other game-specific fsync hacks that were in Proton's fsync
- Add a dubious patch to use the
get_async_keyboard_state
instead of the non-async, thread-specific keyboard state to reduce blocking/overhead- Also try using AVX512 instructions to set the key up/key down state instead of a for loop if available (probably worthless, but it reduced cycle count/time by some non-zero amount)
- This might break some applications which needed the thread-specific non-async keyboard state, but I've yet to find an example of that
- Clean up a lot of environment-variable-dependent patches to be less messy and cache the results instead of calling
getenv
multiple times (likecursor-clip-hack.patch
and the osu! direct rendering/childwindow hacks) - Add a
WINE_DISABLE_RAWINPUT
env var (not active by default, obviously) if you want to completely disable rawinput events, to reduce overhead if you're not using rawinput at all
Curious if anyone using this package will run into regressions related to the fsync changes. I tried to test them extensively with a synthetic test suite, but I can't be sure that every game/app will have the same behavior. I'm hoping its an improvement for most cases, as my benchmark was showing.
For extra information, refer to my comment on the AUR package, and the previous releases' notes.
Patches
Staging patches: all, minus eventfd-synchronization
(replaced with Proton's impl.) and ntdll-HashLinks
(replaced with pending upstream)
Other patches: repo at this tag. As usual, a log of all patches is also installed to /opt/wine-osu-spectator(-wow64)/patchlog.txt
.
Release wine-osu-spectator-9.20-3
9.20-3 patchset rebase; add fix for osu breaking with WINE_BLOCK_GET_VERSION=1 (Perform-a-magic-trick-to-allow-osu-to-work-w.patch); add some fsync optimizations/build fixes for clang
Release wine-osu-spectator-9.20-2
General release info
- Rebase to latest wine/staging master
- Removed ntsync due to unpredictable system hangs/kernel panics, brought back Proton fsync/esync
- Other stuff I can't remember because I've been busy with other stuff...
For extra information, refer to my comment on the AUR package, and the previous releases' notes.
Patches
Staging patches: all, minus eventfd-synchronization
(replaced with Proton's impl.)
Other patches: repo at this tag. As usual, a log of all patches is also installed to /opt/wine-osu-spectator(-wow64)/patchlog.txt
.