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