[Mesa-dev] [PATCH] dri: don't load .drirc from $HOME
Axel Davy
axel.davy at ens.fr
Sat Jan 7 13:01:10 UTC 2017
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.olsak at 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);
More information about the mesa-dev
mailing list