Prospect adding DVC, ... features to nvidia-settings

Hi,

the feature that nvidia-settings still lacks is any kind of per process profile settings outside the scope of _GL** envvars. If I understand the current code in nvidia-settings package correctly, it merely stores profiles/rules in json config inside the $HOME and it’s up to libGL (or perhaps Xorg module) to parse&apply them on load.

I have a little daemon thingy (pretty similar to nvidia-settings/samples/nv-control-dvc.c that I found about after I wrote it) that:

  • Reads json config
  • Pools X via xlib for processes that match the config
  • Toggles DVC if the game is fullscreened on nvidia enabled dpy
  • I don’t like my solution via daemon very much and since I’m looking out for a summer break OSS pet project to work on I would like to make this happen, preferably in such a way that it might be eventually included into nvidia-driver / nvidia-settings packages in future so that community can use these features.

    My current plan of attack thus is:

  • Write xorg module that parses+applies profiles/rules as described in manual.
  • modify nvidia-settings GUI to handle these options in "user friendly" way.
  • I haven’t modified nvidia-settings code as of yet to give it option for something other than boolean (integer value would be start, but I would preferably put in some more user friendly controls in AppProfileConfig/ctkapcprofilemodel.c ).

    Before I begin any real work on any of these, I’d like to know whether you nvidia folks would be inclined to review/potentially include any such changes into driver/nvidia-settings packages (under GPL, assuming that they would be technically-sound).

    I would love to hear some feedback or to hear that you perhaps have some ticket on internal bugzilla and such functionality is planned (albeit I do believe that windows folks had to use “vibrancegui” thingy to basically get the same functionality that my small CLI daemon does at the moment).

    PS: Sorry for language, english is not my first language + I decided to code the daemon thingy in the evening which turned into all nighter.
    PPS: I think that DVC is what most people would appreciate the most, but other controllable features would be nice as well (such as enabling max performace state, on demand overclock on “Coolbits” enabled setup etc.