For some reason the original patches and Ilia's response never showed up in my inbox.
So... how does one have a Mesa driver that doesn't enable any work arounds? While this may work around the problem, it doesn't feel like the right solution. On 09/02/2015 06:55 AM, Iago Toral wrote: > 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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev