[Mesa-dev] [PATCHv2 04/13] glsl: protect anonymous struct id with a mutex

Kenneth Graunke kenneth at whitecape.org
Wed Aug 13 13:10:40 PDT 2014


On Wednesday, August 13, 2014 12:03:10 PM Ian Romanick wrote:
> On 07/09/2014 12:47 AM, Chia-I Wu wrote:
> > There may be two contexts compiling shaders at the same time, and we want the
> > anonymous struct id to be globally unique.
> > 
> > Signed-off-by: Chia-I Wu <olv at lunarg.com>
> > ---
> >  src/glsl/glsl_parser_extras.cpp | 10 ++++++++--
> >  1 file changed, 8 insertions(+), 2 deletions(-)
> > 
> > diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp
> > index b327c2b..ad31469 100644
> > --- a/src/glsl/glsl_parser_extras.cpp
> > +++ b/src/glsl/glsl_parser_extras.cpp
> > @@ -1347,9 +1347,15 @@ ast_struct_specifier::ast_struct_specifier(const char *identifier,
> >  					   ast_declarator_list *declarator_list)
> >  {
> >     if (identifier == NULL) {
> > +      static mtx_t mutex = _MTX_INITIALIZER_NP;
> >        static unsigned anon_count = 1;
> > -      identifier = ralloc_asprintf(this, "#anon_struct_%04x", anon_count);
> > -      anon_count++;
> > +      unsigned count;
> > +
> > +      mtx_lock(&mutex);
> > +      count = anon_count++;
> > +      mtx_unlock(&mutex);
> 
> My previous feedback on this was to try and use some sort of atomic
> counter when available.  I'm not excited about the performance hit of
> taking a lock here.  Although, this probably isn't hit too much.  After
> this lands, can you submit an enhancement bug for this issue?

Yeah, I don't think this is hit often at all...

--Ken
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20140813/9ef76742/attachment.sig>


More information about the mesa-dev mailing list