Incorporate or Synchronise with Steam's "Performance" in QAM #88
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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'.
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.
Someone else (Uknys on Discord) who was working on reverse engineering the hex data for configs found the exact format of it:
85eddaab4f/steam/steammessages_client_objects.proto (L297)
(A Steam client protobuf)
Just throwing this here to keep everything in one spot