[Mesa-dev] [PATCH v3 6/9] gallium/auxiliary: add dump functions for bind and transfer flags

Jose Fonseca jfonseca at vmware.com
Wed Nov 12 08:35:32 PST 2014


David,

__declspec(thread) on DLLs is not supported on XP.  This must not go in or Mesa DLL's won't load correctly on XP.

This is why there is no abstraction for compiler TLS. It's not very portable yet.  So I rather we didn't use a at all.


TLS is not enough to make this code safe neither.  The caller could do

  printf("%s %s\n", util_dump_transfer_flags(foo), util_dump_transfer_flags(boo));

which would print wrong results.


Please just have the callers pass in a buffer as parameter.


Jose



________________________________________
From: mesa-dev <mesa-dev-bounces at lists.freedesktop.org> on behalf of Brian Paul <brianp at vmware.com>
Sent: 12 November 2014 16:09
To: kusmabite at gmail.com; David Heidelberg
Cc: mesa-dev at lists.freedesktop.org
Subject: Re: [Mesa-dev] [PATCH v3 6/9] gallium/auxiliary: add dump functions for bind and transfer flags

On 11/12/2014 05:48 AM, Erik Faye-Lund wrote:
> On Sun, Nov 2, 2014 at 7:32 PM, David Heidelberg <david at ixit.cz> wrote:
>> v2: rename and extend support with code for C11 and MSVC (thanks to Brian)
>>
>> Signed-off-by: David Heidelberg <david at ixit.cz>
>> ---
>>   src/gallium/auxiliary/util/u_dump.h         |  6 ++
>>   src/gallium/auxiliary/util/u_dump_defines.c | 86
>> +++++++++++++++++++++++++++++
>>   2 files changed, 92 insertions(+)
>>
>> diff --git a/src/gallium/auxiliary/util/u_dump.h
>> b/src/gallium/auxiliary/util/u_dump.h
>> index 58e7dfd..84ba1ed 100644
>> --- a/src/gallium/auxiliary/util/u_dump.h
>> +++ b/src/gallium/auxiliary/util/u_dump.h
>> @@ -88,6 +88,12 @@ util_dump_tex_filter(unsigned value, boolean shortened);
>>   const char *
>>   util_dump_query_type(unsigned value, boolean shortened);
>>   +const char *
>> +util_dump_bind_flags(unsigned flags);
>> +
>> +const char *
>> +util_dump_transfer_flags(unsigned flags);
>> +
>>    /*
>>    * p_state.h, through a FILE
>> diff --git a/src/gallium/auxiliary/util/u_dump_defines.c
>> b/src/gallium/auxiliary/util/u_dump_defines.c
>> index 03fd15d..20ae6c0 100644
>> --- a/src/gallium/auxiliary/util/u_dump_defines.c
>> +++ b/src/gallium/auxiliary/util/u_dump_defines.c
>> @@ -61,6 +61,36 @@ util_dump_enum_continuous(unsigned value,
>>      return names[value];
>>   }
>>   +static const char *
>> +util_dump_flags(unsigned flags, const char *prefix,
>> +                unsigned num_names,
>> +                const char **names)
>> +{
>> +#if __STDC_VERSION__ >= 201112 && !defined __STDC_NO_THREADS__
>> +   static _Thread_local char str[256];
>> +#elif defined(PIPE_CC_GCC)
>> +   static __thread char str[256];
>> +#elif defined(PIPE_CC_MSVC)
>> +   static __declspec(thread) char str[256];
>> +#else
>> +#error "Unsupported compiler: please find how to implement thread local
>> storage on it"
>> +#endif
>
> Isn't failing compilation a bit aggressive? Can't we just lose the
> functionality instead?

Maybe there should be a macro in p_compiler.h which defines the
thread-specific storage qualifier so we don't need all the #ifdef stuff
in the util code.

-Brian


_______________________________________________
mesa-dev mailing list
mesa-dev at lists.freedesktop.org
https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Ddev&d=AAIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=zfmBZnnVGHeYde45pMKNnVyzeaZbdIqVLprmZCM2zzE&m=Ng6XeIFU6f0YuWJvZ81AjIa3CO1R3sGWh4-djyNlzQo&s=_TKab-WfP0G1mGPZlWKGh-wL0miqELhP4M-3srNmffg&e=


More information about the mesa-dev mailing list