NGnius / PowerTools

Moved to
https://git.ngni.us/NG-SD-Plugins/PowerTools
GNU General Public License v3.0
413 stars 29 forks source link

Incorporate or Synchronise with Steam's "Performance" in QAM #88

Open syberphunk opened 1 year ago

syberphunk commented 1 year ago

Please confirm

Describe what you'd like to be able to do

PowerTools semi-duplicates the options that's in the 'Performance' section.

I'd love to have all options in one place rather than having to go to two different sections.

I'm also concerned that opening or going to Steam's default 'Performance' I may accidentally reset or set the options that I'm tinkering with in PowerTools, eg. TDP.

The 'Performance' settings are in:

/home/deck/.local/share/Steam/config

It looks like:

"InstallConfigStore" { "Software" { "Valve" { "Steam" { "Perf" { "GameProfiles" {

So you can find 'Global', and 'App'. Then it's separated by AppID.

Each AppID has the settings in the Performance menu stored as a hex value. For example:

"1174180" { "0" { "0" "08b009102818002000280f300138dc0b400448005000580060006828700178018001058801900190019001980101" } }

And this can be manipulated manually. You can re-check this file after changing a setting, and determine which hex value it's adding to the string.

For example you can change the TDP value manually in hex, and extend it beyond 15, though it then sets both fast/slow to the same value if you monitor /sys/class/hwmon/hwmon4/power1_cap / /sys/class/hwmon/hwmon4/power2_cap

Describe alternatives you've considered

At the very least, check the config.vdf and clear out any settings relating or that cross over with those set in PowerTools so that the two don't have an option to conflict. Having one 'master' place where they're set and set reliably at least reduces user confusion - and you can check if the settings in config.vdf would conflict or are set outside of the 'per game profiles' set in PowerTools.

Basically put, this allows for some validation in settings and reducing any conflict to know what should be happening.

Anything else?

Sometimes a game or application can cause for a 'temporary' file to be created. config.vdf.somethingsomething and it may store the values elsewhere, but ultimately changing the contents of config.vdf is always seen as the 'master'.

NGnius commented 1 year ago

There's a front-end JS API exposed in SteamClient.System.Perf that also has similar functionality. The most notable difference I've seen is that it's encoded in base64, though I haven't bothered to convert it into anything else to see what exactly is encoded there. I'm not sure how settings are applied, but a call from the frontend may be the best way to get it to actually apply settings.

I'm very hesitant about messing with Steam settings, or accepting a PR that would do that.

You've raised some good advantages too, but I'm not sure they fix the problem any better than a bit of common sense and maybe a mention in the FAQ.

NGnius commented 1 year ago

Someone else (Uknys on Discord) who was working on reverse engineering the hex data for configs found the exact format of it: https://github.com/SteamDatabase/Protobufs/blob/85eddaab4f93e33b9e178f702aa844fbdc2d32c2/steam/steammessages_client_objects.proto#L297 (A Steam client protobuf)

Just throwing this here to keep everything in one spot