• Hi Guest!

    We are extremely excited to announce the release of our first Beta1.1 and the first release of our Public AddonKit!
    To participate in the Beta, a subscription to the Entertainer or Creator Tier is required. For access to the Public AddonKit you must be a Creator tier member. Once subscribed, download instructions can be found here.

    Click here for information and guides regarding the VaM2 beta. Join our Discord server for more announcements and community discussion about VaM2.
  • Hi Guest!

    VaM2 Resource Categories have now been added to the Hub! For information on posting VaM2 resources and details about VaM2 related changes to our Community Forums, please see our official announcement here.

VaM 1.x The VAM on Linux thread

Threads regarding the original VaM 1.x

atani

Invaluable member
Wiki Contributor
Featured Contributor
Joined
Jan 15, 2021
Messages
3,542
Solutions
109
Reactions
3,251
This thread is an effort to collate existing threads on the topic and to expand with experiences about running VAM on linux.

Does VAM work on linux?
Yes!



To dual boot or not to dual boot?
While you can run VAM in linux, dual booting with Windows can give you more options than going solo with linux.
Some reasons:

  • Windows may give higher performance and options not available or not easily set up in linux
  • A need for Windows-only* applications like Virtual Desktop, etc
  • Other reasons
* probably no such thing as Windows-only but may be difficult to make it work in linux with similar performance/options

Dual booting is probably the most flexible option for most people. If you want to dual boot and run VAM on both the OS's, keep VAM on a NTFS partition to be available to both Windows and your linux distro.
 
Last edited:
Existing threads on the topic (may be more):


Guides:

 
Last edited:
Are you using VAM on linux?
Share a brief description of your experience and setup:
  • Distro used and how long using VAM with it
  • GPU brand + driver type
  • Execution: Steam, Lutris, Proton, Wine, etc
Share also your results, experience, and anything else worth mentioning.
 
Last edited:
  • Arch - started today
  • NVIDIA - nvidia-open (official open source)
  • Steam & Lutris - GE-proton
Works great so far and decent performance. Too early for me to compare with running on Windows.
Having it running on Arch was mostly following the wiki for the needed drivers and Vulkan, "gaming" page, installing Steam and/or Lutris, winetricks, and not much else of note.

I'm dual booting with Windows with VAM being on a NTFS drive. The intention for Windows is to only use for playing in VR with VAM and others, or running specific games. VAM on linux will be for making content and using desktop mode, which is most of my VAM time anyway.
 
Last edited:
I really hope more people try Linux! Mint is perfect for beginners and it's free.
The basic steps to make VAM run are:
Install Linux Distro + GPU drivers if needed (Mint has a Driver Manager for that, no need for cryptic terminal) + Steam + Proton.
Add VAM as custom game to Steam and enable Proton compatibility for it. That's it.
  • 5-6 month
  • Distro: Linux Mint 22.2 Cinnamon + Window 11 dual boot
  • GPU: RTX5060Ti 16 GB, 580.95 open kernel driver (currently latest in driver manager)
  • Execution: Steam + Proton or GE Proton

Experience:
The previous VAM-folder can just be reused as it is. I just copied it to a EXT4-linux formatted drive. Not sure that is actually needed.
Performance is better on Linux for me. It's not a night and day difference, but noticeable.

I'm running a configuration where Vsync to my 4K 60 Hz display is disabled and my framerate is capped to 60 Hz via a mangoHud configuration.
(MangoHud is a performance HUD similar to the one from MSI Afterburner.)
That gave me the smoothest frametimes - a perfect flat line with every frame 16.66 milliseconds.
https://discord.com/channels/363274293112602636/1380856122721701961/1381582247412629555
Overall I'd recommend to avoid Vsync specifically in VAM. Usually I like to keep it on, because I do not like tearing, but I have observed weird 30 to 60 framerate ping pong under certain conditions.
However with the manual 60 Hz software framerate limit it seems to be mostly in sync with the monitor. There is tearing, but barely visible.
Note I'm a desktop mode only user. Not sure about VR headset / hardware stuff.

In Steam I have added VAM two times with different Launch Options.

run in 1080p to 4K upscale: (was used to run VAM on slow GTX 1070 8 GB in 4K)
gamescope -w 1920 -h 1080 -W 3840 -H 2160 -F fsr --fsr-sharpness 0 -f -- env MANGOHUD=1 MANGOHUD_CONFIGFILE="/mnt/v/VaM_Gold/MangoHud.conf" %command%

run in 4K native:
MANGOHUD=1 MANGOHUD_CONFIGFILE="/mnt/v/VaM_Gold/MangoHud.conf" %command%

In last 6 month I only started Windows 11 once to give remote support for family relatives, which I actually could have done via Linux too. I just wrongly assumed the remote-software was for Windows only.
Personally I'm done with Windows and I will remove Windows 11 from my drives in the future.
Other games I enjoy on Linux: Core Keeper (has Linux version), Palworld (Proton), Factorio (Proton)

The OS-switch for me is not an option, it is required!
I was about to write a long in depth rant here about Microsofts Windows 11 ... I'll spare you all.
It's simply the worst OS in history and a foreshadowing of a more and more dystopian future from "big-tech"-companies.

Dual boot recommendation:
Set a simple UEFI / BIOS password to prevent overly aggressive Firmware- / Windows-Updates to mess up or reset settings.
Well known Notebook manufacturers like Lenovo, HP, etc. are for whatever reason able to publish updates via Microsoft for the Firmware/BIOS/UEFI that can reset or modify BIOS settings.
If unlucky this can mess up dual boot setups (especially risky with drive encryptions).

Minor Linux+VAM issue:
All post-processing plugins (specifically the LUT-part) cause a graphical glitch that renders colors wrong.
Probably driver- or old Unity-Engine-bug. Fortunately this can be toggled in the plugins.

First launch Pitfall:
Be patient on the first launch in Steam after you have set up everything. Proton silently downloads additional requirements automatically in the background.
 
Thanks for writing all that, Sally, they are very useful tips and show that the whole process of using VAM on linux is much simpler and performant than expected.

Do you use VR with VAM?

I am keeping Windows to play VAM in VR with Virtual Desktop and Heresphere for videos. I could probably spend some time investigating using those in linux with similar performance/options, or using alternatives like Wyvrn/ALVR, but for now using Windows for only those uses is for me quite acceptable.
For that reason I have my VAM in a NTFS drive for Windows to use, no issues so far.
There's also some AI tools that I ocasionally use and as my GPU only has 8 GB VRAM I need to use Windows for a memory fallback option in RAM to avoid crashes, so also stuck for that purpose. An acceptable compromise I guess.
 
@Sally Whitemane
I'm having some issues with PNG, well, a few of them only.
This error shows up;

Code:
!> Error during texture load: System.ArgumentException: A null reference or invalid value was found [GDI+ status: InvalidParameter]
  at System.Drawing.GDIPlus.CheckStatus (Status status) [0x00000] in <filename unknown>:0
  at System.Drawing.Image.InitFromStream (System.IO.Stream stream) [0x00000] in <filename unknown>:0
  at System.Drawing.Bitmap..ctor (System.IO.Stream stream, Boolean useIcm) [0x00000] in <filename unknown>:0
  at System.Drawing.Bitmap..ctor (System.IO.Stream stream) [0x00000] in <filename unknown>:0
  at (wrapper remoting-invoke-with-check) System.Drawing.Bitmap:.ctor (System.IO.Stream)
  at ImageLoaderThreaded+QueuedImage.ProcessFromStream (System.IO.Stream st) [0x00000] in <filename unknown>:0
  at ImageLoaderThreaded+QueuedImage.Process () [0x00000] in <filename unknown>:0
!> Error during texture load: System.ArgumentException: A null reference or invalid value was found [GDI+ status: InvalidParameter]
  at System.Drawing.GDIPlus.CheckStatus (Status status) [0x00000] in <filename unknown>:0
  at System.Drawing.Image.InitFromStream (System.IO.Stream stream) [0x00000] in <filename unknown>:0
  at System.Drawing.Bitmap..ctor (System.IO.Stream stream, Boolean useIcm) [0x00000] in <filename unknown>:0
  at System.Drawing.Bitmap..ctor (System.IO.Stream stream) [0x00000] in <filename unknown>:0
  at (wrapper remoting-invoke-with-check) System.Drawing.Bitmap:.ctor (System.IO.Stream)
  at ImageLoaderThreaded+QueuedImage.ProcessFromStream (System.IO.Stream st) [0x00000] in <filename unknown>:0
  at ImageLoaderThreaded+QueuedImage.Process () [0x00000] in <filename unknown>:0

Do you have any idea what this means and if it could be resolved in some way?
 
The errors shows a callstack of all function where a parameter is already invalid / 0, but it's unclear why.
Can only guess:
  • Proton compatibility layer is not really being 100% compatible with Windows GDI functions and that's why is fails with some of the System.Drawing function calls.
    I think the ImageLoaderThreaded... code part was either Unity of VAM code. Try this: sudo apt-get install libgdiplus ... or switch to another Proton version.
  • exotic characters or encoding in filepath or filename (which may have worked on the creators machine because of another language / locale being installed)
  • actual bad PNG file, a long time ago I had rare problems with PNG's saved by GIMP. The only solution was to use another image editor, re-save them, clear VAM cache.
If it happens on during a specific scene load maybe you can find out which the exact PNGs causing this by creating a temporary scene with some content removed ... to narrow down the "bad" source.
Does the same VAM install and same scene show no error on Windows?
 
Last edited:
This came up from an appearance preset I had before starting to use VAM on linux, and this error only came up when on linux, so safe to consider it didn't on Windows.
I didn't have libgdiplus installed, maybe it won't happen anymore now that it was.
I'll keep you posted on what happens, thanks for the tips.
 
I was able to reproduce a similar error.
Also triggered by System.Drawing.GDIPlus.CheckStatus, with the files in this VAR:
https://hub.virtamate.com/resources/pattern-textures.32186/

The "bad" PNGs:
Code:
pattern_melons_colored.png
pattern_ice_colored.png
pattern_pineapples_colored.png
pattern_eggs_colored.png
pattern_hearts_colored.png
pattern_fruits_colored.png
pattern_flowers_colored.png

It's very noticable in VAM's file browser. These do not show a preview image. Instead it's all white.
These files all have something in common:
a 4 bit color palette to optimize the filesize
In that case re-saving the PNGs with a higher colordepth will work.
Installing libgdiplus had no effect.

Used this tool to find out. All "bad" files had a 4-bit palette.:
Code:
pngcheck -cvt pattern_melons_colored.png

File: pattern_melons_colored.png (17294 bytes)
  chunk IHDR at offset 0x0000c, length 13
    512 x 512 image, 4-bit palette, non-interlaced
  chunk gAMA at offset 0x00025, length 4: 0.45455
  chunk sRGB at offset 0x00035, length 1
    rendering intent = perceptual
  chunk PLTE at offset 0x00042, length 48: 16 palette entries
  chunk IDAT at offset 0x0007e, length 17148
    zlib: deflated, 32K window, maximum compression
  chunk IEND at offset 0x04386, length 0
No errors detected in pattern_melons_colored.png (6 chunks, 86.8% compression).

It's not really the root problem. Technically these PNG files are correct.
Some code in the chain of functions that is called to load them as texture does not fully support reading that specific PNG encoding ... and if this works on Windows it only leaves Proton as root cause I guess.
This rare error does not really bother me, but if it would, I'd try to use Proton GE first (Glorious Eggroll) ... and if it's broken there too ... reach out to the Proton GE dev. But I have doubts this will get fixed. Everybody seems busy chasing the latest FSR upscaling and AI shenanigans. It would probably be easer to ask AI to write a tool that iterates over all VAR archives, checks the PNGs and re-saves "bad" ones. Ugh *ugly*
 
Last edited:
Interesting. It's quite low impact to me, but knowing why it happens enables options to fix it or attempt workarounds, or the very least not be surprised about the sudden log error.
Thank you for looking into this in a lot more detail than I could.
 
Back
Top Bottom