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

Reply via email to