Resolve T8733. This should provide a working version of mango vulkan overlay (A MSI Afterburner like) for solus users.
Details
- Reviewers
JoshStrobl - Group Reviewers
Triage Team - Maniphest Tasks
- T8733: MangoHud
- Commits
- R5038:93e2532b4701: Inclusion of MangoHud
Launch a game with steam proton (RE:2 remake here) to trigger DXVK and vulkan rendering. The game is launched with mangohud %command% in steam.
Launch another game Door Kickers action squad to trigger 32bits mangohud
Launch glxgears to test for opengl
The overlay works and shows gpu and cpu loads + FPS and frametime for the 3 tests. This is tested with amd mesa drivers, I can't test for Nvidia
Diff Detail
- Repository
- R5038 mangohud
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
@Girtablulu I see your comments and this will be corrected soon but I can't use the source tar here because the building process involve git submodule to fetch a specific git commit of imGui
Also it was mentioned here: https://dev.getsol.us/T8733 we could use some config-enable but I don't know how to handle this.
Fix things reported by coreteam. Also remove libglvnd as dependency after speaking with mango dev team as this is not useful
ah okay then it's fine but you still need to mention the task in your summary so it will be automatically closed when your patch gets accepted
| package.yml | ||
|---|---|---|
| 2 | Over saw this one, needs to be all small letters | |
Additional question, doesn't need the 32bit library a mangohud.json as well?
€: I looked at Ikeys comment in the Task and he asks for pattern the json file into a separate package and work with it over this, so it can be used for the 64bit and 32bit package
Some update on this:
I added a configuration file for mangohud in /usr/share. While this is totally not mandatory for manghud to work or configure (env vars are ok) I find it nice to have it somewhere.
Also the name is now lowercase
I started to check for mangohud32/64.json files and I have a package.yml version that does it. However, it relies on some bash posted below.
I believe this is far from what Ikey proposed with a different package for the json file. But I really have no clue how to handle this.
Side note, I use mangohud everyday with an incorrect json file and it works well. I wonder where it's used.
MANGOJSONDIR=$installdir/usr/share/vulkan/implicit_layer.d sed -i -e 's|libMangoHud.so|%libdir%/&|g' $MANGOJSONDIR/mangohud.json if [ $EMUL32BUILD ]; then mv $MANGOJSONDIR/mangohud.json $MANGOJSONDIR/mangohud32.json else mv $MANGOJSONDIR/mangohud.json $MANGOJSONDIR/mangohud64.json fi
I may be wrong but I believe the suffix convention for Vulkan ICDs is .i686 and .x86_64
Ok I checked icd.d related vulkan directory and you're correct for i686 and x86_64.
I 'll also checkout tomorrow if I can pack the i686 jsonfile with the 32 bit subpackage.
So um... mangohud.json is installed everytime ninja_install passes. I didn't find a way via package tools to force the file to be associated with the 32bits libs. :/
Integration with patterns ! And now it makes much more sense.
I didn't add a conf file for 32bit as there is no need of having one. Even for 64 bits. It's just here for people to have a template if the feel the need to use it. Ofc, I can modify this if you're not ok with this.
Update mangohud to 0.3.1. This include new feature notably shell scripts for 32 and 64 bits. I rename 32 bits binary to .i686 but not sure how this fit in the ecosystem
Many updates since first review. I've playing with mangohud package on my PC for some time now and tested it on many games. Still not convinced about the mangohud.i686 in /usr/bin
Please remove the empty abi_symbols* files. I still need clarification on whether or not the 32-bit executable is actually needed. Does this not just LD_PRELOAD the library? If it is needed, I'd like to see confirmed testing on a 32-bit executable. Thanks!
@DataDrake Can do. Let's just clarify some things before we start another revision.
The only diff between the 64 and 64 bit exec is this
< LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/lib32/mangohud"
---
> LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/lib64/mangohud"LD_PRELOAD is in another variable and the same between 64/32 bits. I tested some games with opengl and vulkan and long story short some of them (ex: door kickers action squad) require the 32bits version. I don't know why however because some other (ex Hellblade) work ok with only the 64 bits exec installed. The 2 games listed in example are launched with exactly the same command and use the same proton/dxvk version.
Second point, a few days ago a new version was released, it changes nothing about the exec part but add nvctrl as optional dependency. I'm not familiar with nvidia in solus but it looks like this will bring a lot of heavy dependencies just for old nvidia card support. I plan on disable it, if that's ok.
Please add a MAINTAINERS.md file listing yourself as maintainer.
Last fix. The rest looks good. Cheers!
Last update before release was supposed to be small it ended rather long.
- added maintainers file
- update to latest version, released 6 day ago
- remove /usr/bin/mangohud.i686 binary as it is not required anymore but still created after compile
| package.yml | ||
|---|---|---|
| 37 | Would it hurt to have it symlinked though in case something like lutris expects the .x86 binary to exist? | |
| pspec_x86_64.xml | ||
| 42 | Let's just pattern all of this into the main package. Kinda silly just to have the two so files in a dedicated package in this case. I imagine most installing mangohud would expect that it'd work for 32-bit applications / Steam anyways. Should be: patterns :
- /* | |
Now everything is one package. I used to rename mangohud.x86 to mangohud.i686 to match solus scheme, but in order to make sure there is a full 32 bits compatibily I let the actual naming. There is a hardcoded reference to mangohud.x86 in mangohud (x86_64) which doesn't change a thing when in 64 bits but will go bork if full 32 which is not possible anymore since everything is in 1 package.
?
Patch looks good to me. Just to confirm before landing, is this needing libglvnd-devel or does it need mesalib-devel? @DataDrake performed a mesalib upgrade (including all the stuff around libglvnd-devel) and the gl pkgconfig was moved out of mesalib. If it's mesalib specific headers then the gbm pkgconfig should be used.
I'll check that ASAP.
Anyway you can merge this into unstable and if effectively I need to remove libglvnd I'll make sure this happen when I'll update mangohud. It should happen soon enough.
I built using this package.yml and verified it works with Steam games, so this is ready to be accepted into the repos
| package.yml | ||
|---|---|---|
| 8 | I did notice that this is set to xorg.display. This should really just be set to system.utils because the xorg.display component is really only intended for what is needed to actually run xorg bits. | |
I'm going to be accepted and landing this, fixing the component after, just so vkbasalt and goverlay aren't blocked by it.