nine7nine / wine-nspa Goto Github PK
View Code? Open in Web Editor NEWWine-NSPA: Proaudio & RT focused builds of Wine(-TKG)... WARNING: Forced Pushes && Resets..
Wine-NSPA: Proaudio & RT focused builds of Wine(-TKG)... WARNING: Forced Pushes && Resets..
I managed to compile 8x,
but it fails to launch currently:
export WINEDLLOVERRIDES="mscoree,mshtml="
export WINEDLLOVERRIDES=winemenubuilder.exe=d
export WINEFSYNC=1
WINEPREFIX=/home/mero/wine-base winecfg
wine: created the configuration directory '/home/hero/wine-base'
fsync: up and running.
Fatal glibc error: allocatestack.c:333 (allocate_stack): assertion failed: size != 0
^CTerminated
and with 7x, a patch is sadly not merging:
-> Applying josh-flat-theme.patch
-> ## Applying hotfix for plain-wine: Return_nt_filename_and_resolve_DOS_drive_path.mypatch
-> ## Applying hotfix for plain-wine: ef6e33f.mypatch
-> ## Applying hotfix for plain-wine: 0001-proton-bcrypt_rdr2_fixes4.mypatch
==> ERROR: Patch application has failed. The error was logged to /home/hero/Wine-NSPA2/Wine-NSPA/Wine-NSPA/wine-nspa-7x-git/prepare.log for your convenience.
-> Removed BIG_UGLY_FROGMINER - Ribbit
-> Removed Proton-tkg token - Valve Ribbit
-> exit cleanup done
this is with linux-nspa kernel running, but no optimization otherwise done to the os - running in virtualbox
This is all manageable to fix and sort out, and the vast majority is somewhat trivial to fix -- However, it is time-consuming.
Given the scope ~ I'm going to hold off for now
Given the above, it is time to start thinking about rebasing and reworking all of my patchwork for a Wine-8.0-NSPA release... all of my own patches should be relatively easy to rebase AND I should be able to drop a ton of patches that have been merged already...
Anyway, this is the roadmap / end of year stuff.
Wine-8.x is junk.
Not suitable for my use case of proaudio, in general. why?
I am going to continue to rebase and periodically test, but atm, upstream Wine is just awful for performance. Definitely not suitable to be using for my own use-case (ie: using Ableton Live, or even NI Komplete 13 on it's own)... it's sad that after 15 years I can't seem to use my software on the latest / a modern version of wine...
For now, I'm using Windows... When i'm not as busy with work: I'm going to go back and do a clean rebase / build of Wine-NSPA-7.5, basically from scratch to clean out some cruft and re-organize patchwork. (solely for use with Yabridge and/or Element)
The future of using Wine doesn't look bright though - I've waited months for Wine-8.x to deliver and it's still utter crap, all around. (if you actually care about getting relatively decent performance, anyway).
LibRTPI - Library for implementing Mutex PI Support in RT applications.
https://github.com/gratian/librtpi
I've been implementing PI support in Wine-NSPA using the above Library. Pretty much all mutex / condvar conversions are complete. It is working well on my machine...
This support will require using an RT kernel && building the 64bit and 32bit/lib32 versions of this library... Therefore I am likely to make it optional / disabled by default. For now, it's completely disabled, and I don't even give an option to build it, or add the needed patch into my userpatches.
but this will change, once I've tested it more.
0000-ntdll-Store_fsync_APC_futex_in_the_thread_data_directly.myrevert
0000-wineserver-Draft-to-implement-priority-levels-throug.myrevert
Note: First revert is for fsync, so i can hook the threads correctly. Second revert is removing the wine-rt patch from staging ~ which i integrate into my patch set, but have rewritten parts of.
This will make it easier to not only rebase on Wine.80 (when the time comes), but also for my current efforts to rewrite my RT implementation to not use sched_setscheduler(), and simply use pthread functions, instead. Along with adding/refactoring the CFS/nice support, and so on.
https://github.com/ValveSoftware/wine
Given that much of the patchwork that I use loosely depends on some of Valve's patchwork, it's not time to actually look at rebasing Wine-NSPA on Wine-devel / Wine-Proton 8.x
So i will rebase to latest Wine-TKG and merge any needed/wanted changes from Proton-8.0 branch.
https://github.com/openglfreak/wine-tkg-userpatches
all of my core patchwork has already been rebased on Wine-8.0, so mostly trivial changes will be required. However, there are a number of patches that i want to pick up (out of tree), so that's going to be a bit more work...
This is partially complete, as of commit: 1614c65
The above commits replaces the sched_setscheduler() code with pthread functions, it also extends wineserver to support scheduling policy changes at runtime, and finally implement support for adjusting nice values (I'm sitting on code to adjust it at runtime).
the above will also require performance analysis within Wine. it would be interesting to see if this could help improve performance and/or reduce overhead, depending on how it's implemented.
NOTES:
By switching everything over to pthread-based RT support; it opens up a lot of opportunity in fine-tuning thread behaviour within Wineserver, Ntdll and user/application threads.
Likewise, as Linux-NSPA supports latency.nice I can fine-tune non-RT and RT thread latency tuning alike.
the hope is that I can do the same with ionice, cgroups, etc too => My manual scripts cover most of this now - and it makes a big difference, especially with things like Ableton Live 11. It's the difference between issues with xruns or almost zero xruns.
Hello!
Been using Wine-NSPA for quite a while, but as of now on EndeavourOS (arch-based distro) it fails to run with following error:
Fatal glibc error: allocatestack.c:333 (allocate_stack): assertion failed: size != 0
Recompiling didn't help. Would appreciate any advice and thank you for your work!
In playing around with Live 11 with Wine-NSPA-7.5, I've been able to identify some issues (and fixed some).
That covers the basics and beyond. Ableton Live 11 is actually usable now.
What does "usable" mean?
TODOs:
Live 11's two main threads use an excessive amount of CPU. As it turns out, Ableton Live has a configuration file that can be modified and has a number of hidden settings. ref: https://github.com/ibekso/medium/blob/main/article_ressources/options_txt/lists/options_available_live_11.txt ... One stuck out to me as being a possible cause of the high CPU usage, so I did some more digging, we have a option relating to APCs;
DontCombineAPCs
Line to add to Options.txt file: -DontCombineAPCs
Deactivates the APC combination mode: won't align and sync the session rings of multiple APCs
so they can be moved independently.
ref: https://help.ableton.com/hc/en-us/articles/6003224107292-Options-txt-file
Turning on this option eliminates one of the high CPU threads (that causes 30-40% CPU usage on all CPUs). ~ That said, I have observed higher CPU usage one a given specific thread (at a time), but all of the rest consume much less CPU. Overall CPU usage on idle is waaaay down...!! This should improve performance, while being far more energy efficient.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.