NVIDIA and TLS

Terry Lambert tlambert2 at mindspring.com
Mon Jun 16 22:28:14 PDT 2003


Gareth Hughes wrote:
> On Mon, 16 Jun 2003, Andy Ritger wrote:
> > So from an OpenGL point of view, here are several alternatives that
> > I see for atleast the near term:
> >
> >     - make NVIDIA's OpenGL implementation not thread-safe (just
> >       use global data rather that thread-local data)
> >
> >     - accept the performance hit of using pthread_getspecific()
> >       on FreeBSD.  From talking to other OpenGL engineers,
> >       conservative estimates of the performance impact on
> >       applications like viewperf range from 10% - 15%.  I'd like
> >       to quantify that, but certainly there will be a performance
> >       penalty.
> 
> And these are *very* conservative estimates -- you're essentially adding a
> function call into a path that is, on average, less than ten instructions
> per OpenGL API call, where the number of API calls per frame is upward of 3
> million (3 calls per vertex, over a million vertices for some Viewperf
> benchmarks).  The API was designed this way for a reason, and fast
> thread-local storage is a fundamental part of a high performance
> implementation.

What do you do on systems where you can't grab the %gs register
and use it for whatever you want, because it's in use for something
else?

The pthread_getspecific() could probably be made into an inline, at
the very least, and could potentially be made to lazy-bind %gs to
the evil use to which it's currently being put.

-- Terry


More information about the freebsd-threads mailing list