[Mesa-dev] [PATCH] dri: don't load .drirc from $HOME
Kai Wasserbäch
kai at dev.carbon-project.org
Sat Jan 7 17:05:21 UTC 2017
Hey Marek,
thanks for the changes to the documentation!
You can have my
Reviewed-by: Kai Wasserbäch <kai at dev.carbon-project.org>
Cheers,
Kai
Marek Olšák wrote on 07.01.2017 15:46:
> 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.
>
> v2: update comments and docs
> ---
> docs/application-issues.html | 3 +-
> docs/postprocess.html | 3 +-
> include/GL/internal/dri_interface.h | 2 +-
> src/mesa/drivers/dri/common/xmlconfig.c | 51 ++++++++++-----------------------
> 4 files changed, 18 insertions(+), 41 deletions(-)
>
> diff --git a/docs/application-issues.html b/docs/application-issues.html
> index 6db0865..5605f33 100644
> --- a/docs/application-issues.html
> +++ b/docs/application-issues.html
> @@ -26,22 +26,21 @@ This page documents known issues with some OpenGL applications.
> <p>
> <a href="http://www.topogun.com/">Topogun</a> for Linux (version 2, at least)
> creates a GLX visual without requesting a depth buffer.
> This causes bad rendering if the OpenGL driver happens to choose a visual
> without a depth buffer.
> </p>
>
> <p>
> Mesa 9.1.2 and later (will) support a DRI configuration option to work around
> this issue.
> -Using the <a href="http://dri.freedesktop.org/wiki/DriConf">driconf</a> tool,
> -set the "Create all visuals with a depth buffer" option before running Topogun.
> +Set the "always_have_depth_buffer" environment variable before running Topogun.
> Then, all GLX visuals will be created with a depth buffer.
> </p>
>
>
> <h2>Old OpenGL games</h2>
>
> <p>
> Some old OpenGL games (approx. ten years or older) may crash during
> start-up because of an extension string buffer-overflow problem.
> </p>
> diff --git a/docs/postprocess.html b/docs/postprocess.html
> index db4abec..8108179 100644
> --- a/docs/postprocess.html
> +++ b/docs/postprocess.html
> @@ -17,22 +17,21 @@
> <h1>Gallium Post-processing</h1>
>
> <p>
> The Gallium drivers support user-defined image post-processing.
> At the end of drawing a frame a post-processing filter can be applied to
> the rendered image.
> Example filters include morphological antialiasing and cell shading.
> </p>
>
> <p>
> -The filters can be toggled per-app via driconf, or per-session via the
> -corresponding environment variables.
> +The filters can be via the corresponding environment variables.
> </p>
>
> <p>
> Multiple filters can be used together.
> </p>
>
>
> <h2>PP environment variables</h2>
>
> <ul>
> diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h
> index 8922356..7468cab 100644
> --- a/include/GL/internal/dri_interface.h
> +++ b/include/GL/internal/dri_interface.h
> @@ -1515,21 +1515,21 @@ struct __DRI2configQueryExtensionRec {
>
> typedef struct __DRIrobustnessExtensionRec __DRIrobustnessExtension;
> struct __DRIrobustnessExtensionRec {
> __DRIextension base;
> };
>
> /**
> * DRI config options extension.
> *
> * This extension provides the XML string containing driver options for use by
> - * the loader in supporting the driconf application.
> + * the loader.
> */
> #define __DRI_CONFIG_OPTIONS "DRI_ConfigOptions"
> #define __DRI_CONFIG_OPTIONS_VERSION 1
>
> typedef struct __DRIconfigOptionsExtensionRec {
> __DRIextension base;
> const char *xml;
> } __DRIconfigOptionsExtension;
>
> /**
> 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);
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170107/09e838ba/attachment.sig>
More information about the mesa-dev
mailing list