Both patches do what they advertise and seem to work, so they are Reviewed-by: Iago Toral Quiroga <ito...@igalia.com>
That said, I imagine that probably you want to get at least a few ACKs from other devs, like Illia did, to make sure that your changes have enough support. Iago On Wed, 2015-09-02 at 02:26 +0200, Marek Olšák wrote: > From: Marek Olšák <marek.ol...@amd.com> > > People are having issues with apps because drirc wasn't installed > into /etc. I've lost patience. > --- > src/mesa/drivers/dri/common/Makefile.am | 4 +- > src/mesa/drivers/dri/common/Makefile.sources | 3 +- > src/mesa/drivers/dri/common/drirc | 84 -------------------- > src/mesa/drivers/dri/common/drirc_built_in.h | 111 > +++++++++++++++++++++++++++ > src/mesa/drivers/dri/common/xmlconfig.c | 30 +++++++- > 5 files changed, 140 insertions(+), 92 deletions(-) > delete mode 100644 src/mesa/drivers/dri/common/drirc > create mode 100644 src/mesa/drivers/dri/common/drirc_built_in.h > > diff --git a/src/mesa/drivers/dri/common/Makefile.am > b/src/mesa/drivers/dri/common/Makefile.am > index b307f10..7106abe 100644 > --- a/src/mesa/drivers/dri/common/Makefile.am > +++ b/src/mesa/drivers/dri/common/Makefile.am > @@ -23,7 +23,7 @@ SUBDIRS = xmlpool > > include Makefile.sources > > -EXTRA_DIST = drirc xmlpool.h SConscript > +EXTRA_DIST = xmlpool.h SConscript > > AM_CFLAGS = \ > -I$(top_srcdir)/include \ > @@ -52,5 +52,3 @@ libdri_test_stubs_la_SOURCES = $(test_stubs_FILES) > libdri_test_stubs_la_CFLAGS = $(AM_CFLAGS) -DNO_MAIN > > libmegadriver_stub_la_SOURCES = $(megadriver_stub_FILES) > - > -sysconf_DATA = drirc > diff --git a/src/mesa/drivers/dri/common/Makefile.sources > b/src/mesa/drivers/dri/common/Makefile.sources > index d5d8da8..71ba01d 100644 > --- a/src/mesa/drivers/dri/common/Makefile.sources > +++ b/src/mesa/drivers/dri/common/Makefile.sources > @@ -6,7 +6,8 @@ DRI_COMMON_FILES := \ > > XMLCONFIG_FILES := \ > xmlconfig.c \ > - xmlconfig.h > + xmlconfig.h \ > + drirc_built_in.h > > # Paths are relative to MESA_TOP. > mesa_dri_common_INCLUDES := \ > diff --git a/src/mesa/drivers/dri/common/drirc > b/src/mesa/drivers/dri/common/drirc > deleted file mode 100644 > index bb840ea..0000000 > --- a/src/mesa/drivers/dri/common/drirc > +++ /dev/null > @@ -1,84 +0,0 @@ > -<!-- > - > -============================================ > -Application bugs worked around in this file: > -============================================ > - > -* Unigine Heaven 3.0 and older contain too many bugs and can't be supported > - by drivers that want to be compliant. > - > -* Various Unigine products don't use the #version and #extension GLSL > - directives, meaning they only get GLSL 1.10 and no extensions for their > - shaders. > - Enabling all extensions for Unigine fixes most issues, but the GLSL version > - is still 1.10. > - > -* If ARB_sample_shading is supported, Unigine Heaven 4.0 and Valley 1.0 uses > - an #extension directive in the middle of its shaders, which is illegal > - in GLSL. > - > -TODO: document the other workarounds. > - > ---> > - > -<driconf> > - <!-- Please always enable app-specific workarounds for all drivers and > - screens. --> > - <device> > - <application name="Unigine Sanctuary" executable="Sanctuary"> > - <option name="force_glsl_extensions_warn" value="true" /> > - <option name="disable_blend_func_extended" value="true" /> > - </application> > - > - <application name="Unigine Tropics" executable="Tropics"> > - <option name="force_glsl_extensions_warn" value="true" /> > - <option name="disable_blend_func_extended" value="true" /> > - </application> > - > - <application name="Unigine Heaven (32-bit)" executable="heaven_x86"> > - <option name="allow_glsl_extension_directive_midshader" > value="true" /> > - </application> > - > - <application name="Unigine Heaven (64-bit)" executable="heaven_x64"> > - <option name="allow_glsl_extension_directive_midshader" > value="true" /> > - </application> > - > - <application name="Unigine Valley (32-bit)" executable="valley_x86"> > - <option name="allow_glsl_extension_directive_midshader" > value="true" /> > - </application> > - > - <application name="Unigine Valley (64-bit)" executable="valley_x64"> > - <option name="allow_glsl_extension_directive_midshader" > value="true" /> > - </application> > - > - <application name="Unigine OilRush (32-bit)" > executable="OilRush_x86"> > - <option name="disable_blend_func_extended" value="true" /> > - <option name="allow_glsl_extension_directive_midshader" > value="true" /> > - </application> > - > - <application name="Unigine OilRush (64-bit)" > executable="OilRush_x64"> > - <option name="disable_blend_func_extended" value="true" /> > - <option name="allow_glsl_extension_directive_midshader" > value="true" /> > - </application> > - > - <application name="Savage 2" executable="savage2.bin"> > - <option name="disable_glsl_line_continuations" value="true" /> > - </application> > - > - <application name="Topogun (32-bit)" executable="topogun32"> > - <option name="always_have_depth_buffer" value="true" /> > - </application> > - > - <application name="Topogun (64-bit)" executable="topogun64"> > - <option name="always_have_depth_buffer" value="true" /> > - </application> > - > - <application name="Dead Island" executable="DeadIslandGame"> > - <option name="allow_glsl_extension_directive_midshader" > value="true" /> > - </application> > - > - <application name="Second Life" > executable="do-not-directly-run-secondlife-bin"> > - <option name="allow_glsl_extension_directive_midshader" > value="true" /> > - </application> > - </device> > -</driconf> > diff --git a/src/mesa/drivers/dri/common/drirc_built_in.h > b/src/mesa/drivers/dri/common/drirc_built_in.h > new file mode 100644 > index 0000000..592b1d1 > --- /dev/null > +++ b/src/mesa/drivers/dri/common/drirc_built_in.h > @@ -0,0 +1,111 @@ > +/* > + * Copyright 2015 Advanced Micro Devices, Inc. > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the "Software"), > + * to deal in the Software without restriction, including without limitation > + * on the rights to use, copy, modify, merge, publish, distribute, sub > + * license, and/or sell copies of the Software, and to permit persons to whom > + * the Software is furnished to do so, subject to the following conditions: > + * > + * The above copyright notice and this permission notice (including the next > + * paragraph) shall be included in all copies or substantial portions of the > + * Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL > + * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, > + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR > + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE > + * USE OR OTHER DEALINGS IN THE SOFTWARE. > + * > + */ > + > +#ifndef DRIRC_BUILT_IN_H > +#define DRIRC_BUILT_IN_H > + > +/* > +============================================ > +Application bugs worked around here: > +============================================ > + > +* Unigine Heaven 3.0 and older contain too many bugs and can't be supported > + by drivers that want to be compliant. > + > +* Various Unigine products don't use the #version and #extension GLSL > + directives, meaning they only get GLSL 1.10 and no extensions for their > + shaders. > + Enabling all extensions for Unigine fixes most issues, but the GLSL version > + is still 1.10. > + > +* If ARB_sample_shading is supported, Unigine Heaven 4.0 and Valley 1.0 uses > + an #extension directive in the middle of its shaders, which is illegal > + in GLSL. > + > +TODO: document the other workarounds. > + > +*/ > + > +static const char *drirc_built_in = > +"<driconf>" > +" <device>" > +" <application name='Unigine Sanctuary' executable='Sanctuary'>" > +" <option name='force_glsl_extensions_warn' value='true' />" > +" <option name='disable_blend_func_extended' value='true' />" > +" </application>" > + > +" <application name='Unigine Tropics' executable='Tropics'>" > +" <option name='force_glsl_extensions_warn' value='true' />" > +" <option name='disable_blend_func_extended' value='true' />" > +" </application>" > + > +" <application name='Unigine Heaven (32-bit)' > executable='heaven_x86'>" > +" <option name='allow_glsl_extension_directive_midshader' > value='true' />" > +" </application>" > + > +" <application name='Unigine Heaven (64-bit)' > executable='heaven_x64'>" > +" <option name='allow_glsl_extension_directive_midshader' > value='true' />" > +" </application>" > + > +" <application name='Unigine Valley (32-bit)' > executable='valley_x86'>" > +" <option name='allow_glsl_extension_directive_midshader' > value='true' />" > +" </application>" > + > +" <application name='Unigine Valley (64-bit)' > executable='valley_x64'>" > +" <option name='allow_glsl_extension_directive_midshader' > value='true' />" > +" </application>" > + > +" <application name='Unigine OilRush (32-bit)' > executable='OilRush_x86'>" > +" <option name='disable_blend_func_extended' value='true' />" > +" <option name='allow_glsl_extension_directive_midshader' > value='true' />" > +" </application>" > + > +" <application name='Unigine OilRush (64-bit)' > executable='OilRush_x64'>" > +" <option name='disable_blend_func_extended' value='true' />" > +" <option name='allow_glsl_extension_directive_midshader' > value='true' />" > +" </application>" > + > +" <application name='Savage 2' executable='savage2.bin'>" > +" <option name='disable_glsl_line_continuations' value='true' />" > +" </application>" > + > +" <application name='Topogun (32-bit)' executable='topogun32'>" > +" <option name='always_have_depth_buffer' value='true' />" > +" </application>" > + > +" <application name='Topogun (64-bit)' executable='topogun64'>" > +" <option name='always_have_depth_buffer' value='true' />" > +" </application>" > + > +" <application name='Dead Island' executable='DeadIslandGame'>" > +" <option name='allow_glsl_extension_directive_midshader' > value='true' />" > +" </application>" > + > +" <application name='Second Life' > executable='do-not-directly-run-secondlife-bin'>" > +" <option name='allow_glsl_extension_directive_midshader' > value='true' />" > +" </application>" > +" </device>" > +"</driconf>"; > + > +#endif > diff --git a/src/mesa/drivers/dri/common/xmlconfig.c > b/src/mesa/drivers/dri/common/xmlconfig.c > index f17693e..47a9aef 100644 > --- a/src/mesa/drivers/dri/common/xmlconfig.c > +++ b/src/mesa/drivers/dri/common/xmlconfig.c > @@ -39,6 +39,7 @@ > #include "main/imports.h" > #include "utils.h" > #include "xmlconfig.h" > +#include "drirc_built_in.h" > > #undef GET_PROGRAM_NAME > > @@ -896,6 +897,23 @@ static void initOptionCache (driOptionCache *cache, > const driOptionCache *info) > } > } > > +static void parseConfigFromString(XML_Parser p, const char *string) > +{ > + struct OptConfData *data = (struct OptConfData *)XML_GetUserData (p); > + int size = strlen(string); > + > + void *buffer = XML_GetBuffer(p, size); > + if (!buffer) { > + __driUtilMessage("Can't allocate parser buffer."); > + return; > + } > + > + memcpy(buffer, string, size); > + > + if (!XML_ParseBuffer(p, size, true)) > + XML_ERROR("%s.", XML_ErrorString(XML_GetErrorCode(p))); > +} > + > /** \brief Parse the named configuration file */ > static void parseOneConfigFile (XML_Parser p) { > #define BUF_SIZE 0x1000 > @@ -960,16 +978,16 @@ void driParseConfigFiles (driOptionCache *cache, const > driOptionCache *info, > } > } > > - for (i = 0; i < 2; ++i) { > + for (i = 0; i < 3; ++i) { > XML_Parser p; > - if (filenames[i] == NULL) > + if (i && filenames[i-1] == 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.name = i ? filenames[i-1] : NULL; > userData.ignoringDevice = 0; > userData.ignoringApp = 0; > userData.inDriConf = 0; > @@ -977,7 +995,11 @@ void driParseConfigFiles (driOptionCache *cache, const > driOptionCache *info, > userData.inApp = 0; > userData.inOption = 0; > > - parseOneConfigFile (p); > + if (i == 0) > + parseConfigFromString(p, drirc_built_in); > + else > + parseOneConfigFile(p); > + > XML_ParserFree (p); > } > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev