Here are screenshots of how far I got with that driconf replacement

https://drive.google.com/open?id=0B5-qhFoZtgKPZmR2LVg0X3pOZnM

It was more than two years ago, hadn't had time to work on it since.

Screenshot 1, 2 and 3:
There is a list of apps with settings in system drirc or user drirc.
Options set are shown. There is a help, reset and delete button for each setting.
Other known options are proposed.
At the bottom of the list (not shown in the screenshots) you can add manually a new option not proposed. For known options, depending on the value type you are shown a checkbox, an enum option or a string.

Screenshot 4:
I hoped one day to show a lot of useful infos here about the cards of the system (all cards available are detected)

Screenshot 5 and 6:
For dual-gpu systems, that menu allowed to detect all running apps on a given card (or detect only apps started after clicking on "Detect Future Running Apps" and before clicking again on "Stop"), and change device_id to affect on which card to run in the future.

On 07/01/2017 14:01, Axel Davy wrote:
I find ~/.drirc useful.

You can add hacks missing in system drirc, or use device_id to set the card to use for the given game for dual gpu systems. Nine also has some drirc settings that are not hacks, but user options.

I think it's driconf that should be fixed. It shouldn't copy the system drirc, and instead just create minimal drirc with the settings the user has set. I had worked long ago on a driconf replacement, and I think it was doing that right. The interface was in QML (using Qt), and mainly what was missing in the project was more advanced interface (doing a complete interface with QML is not that easy to get right for a beginner). The tool also worked multi-gpu and could detect on which card running apps were running, and enabled to switch the card for next run.

Perhaps some company funding Mesa developpement could hire some intern to write a driconf replacement ?

Axel

On 07/01/2017 13:45, Marek Olšák wrote:
From: Marek Olšák <marek.ol...@amd.com>

~/.drirc is created by the driconf tool (GPL license) and it overrides
system drirc settings and can't be changed by Mesa updates.
This drops support for the tool. It has been a source of major pain
for us and it continues to cause problems.

If people wanna keep this and enjoy the pain, I will make a v2 that
applies it to radeon drivers only.
---
src/mesa/drivers/dri/common/xmlconfig.c | 51 ++++++++++-----------------------
  1 file changed, 15 insertions(+), 36 deletions(-)

diff --git a/src/mesa/drivers/dri/common/xmlconfig.c b/src/mesa/drivers/dri/common/xmlconfig.c
index a8f7c9b..3d6cb67 100644
--- a/src/mesa/drivers/dri/common/xmlconfig.c
+++ b/src/mesa/drivers/dri/common/xmlconfig.c
@@ -937,65 +937,44 @@ static void parseOneConfigFile (XML_Parser p) {
      close (fd);
  #undef BUF_SIZE
  }
    #ifndef SYSCONFDIR
  #define SYSCONFDIR "/etc"
  #endif
void driParseConfigFiles (driOptionCache *cache, const driOptionCache *info,
                int screenNum, const char *driverName) {
-    char *filenames[2] = { SYSCONFDIR "/drirc", NULL};
-    char *home;
-    uint32_t i;
      struct OptConfData userData;
+    XML_Parser p;
        initOptionCache (cache, info);
        userData.cache = cache;
      userData.screenNum = screenNum;
      userData.driverName = driverName;
      userData.execName = GET_PROGRAM_NAME();
  -    if ((home = getenv ("HOME"))) {
-    uint32_t len = strlen (home);
-    filenames[1] = malloc(len + 7+1);
-    if (filenames[1] == NULL)
- __driUtilMessage ("Can't allocate memory for %s/.drirc.", home);
-    else {
-        memcpy (filenames[1], home, len);
-        memcpy (filenames[1] + len, "/.drirc", 7+1);
-    }
-    }
-
-    for (i = 0; i < 2; ++i) {
-    XML_Parser p;
-    if (filenames[i] == NULL)
-        continue;
-
-    p = XML_ParserCreate (NULL); /* use encoding specified by file */
-    XML_SetElementHandler (p, optConfStartElem, optConfEndElem);
-    XML_SetUserData (p, &userData);
-    userData.parser = p;
-    userData.name = filenames[i];
-    userData.ignoringDevice = 0;
-    userData.ignoringApp = 0;
-    userData.inDriConf = 0;
-    userData.inDevice = 0;
-    userData.inApp = 0;
-    userData.inOption = 0;
-
-    parseOneConfigFile (p);
-    XML_ParserFree (p);
-    }
-
-    free(filenames[1]);
+    p = XML_ParserCreate (NULL); /* use encoding specified by file */
+    XML_SetElementHandler (p, optConfStartElem, optConfEndElem);
+    XML_SetUserData (p, &userData);
+    userData.parser = p;
+    userData.name = SYSCONFDIR "/drirc";
+    userData.ignoringDevice = 0;
+    userData.ignoringApp = 0;
+    userData.inDriConf = 0;
+    userData.inDevice = 0;
+    userData.inApp = 0;
+    userData.inOption = 0;
+
+    parseOneConfigFile (p);
+    XML_ParserFree (p);
  }
    void driDestroyOptionInfo (driOptionCache *info) {
      driDestroyOptionCache (info);
      if (info->info) {
      uint32_t i, size = 1 << info->tableSize;
      for (i = 0; i < size; ++i) {
          if (info->info[i].name) {
          free(info->info[i].name);
          free(info->info[i].ranges);


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to