coldfix / steam-acolyte

Lightweight Steam Account Switcher
The Unlicense
53 stars 4 forks source link

Vulkan Render info #28

Closed serossi closed 1 year ago

serossi commented 1 year ago

Steam now prerender Vuilk Shader caches.

Unfortunatly information about them they are not stored within the actual shaders but in each users config file. This has the result that you have to rerender on every account manually

The Entire Section Shader cache Manager in config.vdf is nessesary to be shared. for each proton there is a shader cache and infor about size etc...

so to avoid to rerender at every account switch i need to manually overwrite this section on every file. maybe doing that with acolyte would be a nice feature

serossi commented 1 year ago

i made a quick sed which does this but inclusion into acolyte would be great

` sed -n '/ShaderCacheManager/,/CMWebSocket/{/CMWebSocket/Q;p}' ~/.steam/debian-installation/acolyte/sourceuser/config.vdf > ~/.steam/debian-installation/acolyte/current_section

sed -i -e '/"ShaderCacheManager"/r ~/.steam/debian-installation/acolyte/current_section' -e '/"ShaderCacheManager"/,/"CMWebSocket"/{/"CMWebSocket"/!d;}' ~/.steam/debian-installation/acolyte/user1/config.vdf sed -i -e '/"ShaderCacheManager"/r ~/.steam/debian-installation/acolyte/current_section' -e '/"ShaderCacheManager"/,/"CMWebSocket"/{/"CMWebSocket"/!d;}' ~/.steam/debian-installation/acolyte/user2/config.vdf sed -i -e '/"ShaderCacheManager"/r ~/.steam/debian-installation/acolyte/current_section' -e '/"ShaderCacheManager"/,/"CMWebSocket"/{/"CMWebSocket"/!d;}' ~/.steam/debian-installation/acolyte/user3/config.vdf sed -i -e '/"ShaderCacheManager"/r ~/.steam/debian-installation/acolyte/current_section' -e '/"ShaderCacheManager"/,/"CMWebSocket"/{/"CMWebSocket"/!d;}' ~/.steam/debian-installation/acolyte/user4/config.vdf sed -i -e '/"ShaderCacheManager"/r ~/.steam/debian-installation/acolyte/current_section' -e '/"ShaderCacheManager"/,/"CMWebSocket"/{/"CMWebSocket"/!d;}' ~/.steam/debian-installation/acolyte/user5/config.vdf

`

i didnt bother for now todo anything fancy like going trough all directorys or something, i just amde a quick fix for the current mess. just treat it as an example

coldfix commented 1 year ago

Hi, thanks for the info! Didn't know about that, but this will be very helpful. I'll look into it, but can't make any time promises. I have been thinking about changing acolyte to only replace the user-login related settings in config.vdf for unrelated reasons anyway. So this will be an additional reason to go finally go through with it.

serossi commented 1 year ago

here i wrote a real script now. what iam doing now is i take the shadercache config section of the current config files and loop trough all saved acolyte configs and update them. after some testing i have seen that the config file in config/config.vdf is updated imidiatly after shader caches are generated. so i simply execute the script in the steam command after gamestart like

%command% ; myscript

this will execute the script automatic the moment the game is closed. this ensures that shadercache gen is really done

and here is the script `

#!/bin/bash

acolytedir="$HOME/.steam/debian-installation/acolyte"
steamconfigdir="$HOME/.steam/debian-installation/config"

sed -n '/ShaderCacheManager/,/CMWebSocket/{/CMWebSocket/Q;p}' $steamconfigdir/config.vdf > $acolytedir/shadercache_config_section

for dir in "$acolytedir"/*/; do
  echo "$dir"
  sed -i -e '/"ShaderCacheManager"/r '$acolytedir'/shadercache_config_section' -e '/"ShaderCacheManager"/,/"CMWebSocket"/{/"CMWebSocket"/!d;}' $dir/config.vdf
done

`

serossi commented 1 year ago

let me add, there 3 ways to battle this problem.

1 steam would structure this config files properly and wont let us have this issue - wont happen

2 instead of copy the entire file identify user specific lines and save only then in your acolyte directory. replace them on user change. this would be the cleanest method but also most work for you. may require more frequent updates if steam adds something.

3 my dirty solution

and youre right, #2 would be ideal. for now we have a quick fix, it was unplayable for me redownlaoding shaders everytime i switch accounts with 40 min compiling time

edit: oh yea steam saves a couple other "common" data in that file. lets forget about stupid server list and last ping (why is this in the config, some steamdev must be drunk) but there some authentication / multi account data and trusted computer stuff in there. what i found can happen is after running steam on linux i need to reauth on windows on some of them. i think its related to these entrys but iam not gonna test this hypothesis.

jsut lets say i really think, just replacing user sepcific entrys will be the way to go long term.

coldfix commented 1 year ago

Good news! It seems that steam no longer (?!) stores user-specific login information within config.vdf - so acolyte will not have to replace this file any longer. The next version of acolyte will not touch the file, making your workaround unnecessary.

serossi commented 1 year ago

can confirm this solves this issue but also another not reported issue

when using different plattforms, like windows and linux, using acolyte under linux always caused the other plattform to request relogin/reauthentication

these are all solved now

we just need a traymenue back under gnome xDDD,