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 <[email protected]>
~/.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
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev