[Mesa-dev] [PATCH 4/9] prog; add weak _mesa_error_no_memory() symbol and add it to libglsl_util
Brian Paul
brianp at vmware.com
Wed Apr 15 12:38:39 PDT 2015
On 04/15/2015 11:56 AM, Emil Velikov wrote:
> On 15 April 2015 at 18:33, Matt Turner <mattst88 at gmail.com> wrote:
>> On Wed, Apr 15, 2015 at 7:08 AM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
>>> Rather than forcing everyone to provide their own definition of the symbol
>>> provide a common weak one, which anyone can override if needed.
>>>
>>> This resolved the build of the standalone pipe-drivers, as it provides a
>>> default symbol which was missing previously.
>>>
>>> Cc: Rob Clark <robclark at freedesktop.org>
>>> Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
>>> ---
>>> src/Makefile.am | 3 ++-
>>> src/glsl/SConscript | 2 ++
>>> src/mesa/Android.libmesa_glsl_utils.mk | 6 ++++--
>>> src/mesa/program/weak_errors.c | 30 ++++++++++++++++++++++++++++++
>>
>> Is program/ really the right place for this? (maybe main/ instead?)
> Hmm main/ might be better indeed. If there are any recommendations
> about the name I'll gladly take it :)
>
> Jose/Brian
>
> From a quick look I cannot find a suitable alternative for
> __attribute__((weak)) for MSVC. Would you know any of the top of your
> head or should I just wrap the attribute in ifndef _MSC_VER and leave
> the rest ? If I drop the weak_errors.c hunk from the SCons here, and
> replace tests/common.c with it things should just work.
I'd have to do some digging to answer the MSVC question.
I guess I'm not totally clear on the background of what's going on here,
but let me make a suggestion.
The comment in src/gallium/state_trackers/xa/xa_tracker.c says that it's
called by NIR, but I can't find any calls to _mesa_error_no_memory() in
src/glsl/nir/. I guess the actual calls are in the src/glsl/ code, right?
I ran into a similar thing in the glapi code where I wanted to call some
core Mesa function, but didn't want a dependency of that nature.
The solution was to use a callback function.
So, could we add a function to the glsl/nir code which registers an
out-of-memory callback function? The glsl/nir code could have a default
fprintf(stderr) fallback. But Mesa would register a callback that
actually calls _mesa_error() to record the error.
That seems cleaner than using a compiler/linker work-around.
-Brian
More information about the mesa-dev
mailing list