[Mesa-dev] [PATCH] mesa: avoid pthread_mutexes when adjusting object refcounts

Matt Turner mattst88 at gmail.com
Wed Oct 19 19:58:50 UTC 2016


On Wed, Oct 19, 2016 at 12:06 PM, Jan Ziak <0xe2.0x9a.0x9b at gmail.com> wrote:
> This patch removes locks around reference counts in favor of atomic inc/dec
> operations on the refcounts. This makes the refcount adjustments much faster.

I had the same idea last year and sent a patch series ([PATCH 00/13]
mesa: Locking improvements and optimizations [1]).

The part that corresponds to your patch are patches 5-9. 1-4, 10, and
11 were committed.

I'm having a difficult time remembering why I ultimately dropped the
series, but Ian's comment on 05/13 indicates that the locking is
broken for bufferobj.c, so it's not appropriate to use atomics there.
I remember that texture locking is totally broken, but I cannot
remember the details.

The other thing (in 12/13 [2]) is that vertex array objects,
framebuffer objects, and pipeline objects are "container objects" and
are not shared between contexts, so they require no locking. It would
be better to solve that and avoid locking/atomics all together. But
then FBOs (and renderbuffers?) from EXT_framebuffer_object and VAOs
from APPLE_vertex_array_object are actually shared between contexts,
so those are out as well.

That seems to leave sampler objects, shader objects, and program
objects. I suspect those are relatively small compared with textures
or buffers.

I'm not really sure what I'd suggest, to be honest. It seems like a
lot of aggravation for a minimal reward if done right.

[1] https://lists.freedesktop.org/archives/mesa-dev/2015-August/090972.html
[2] https://lists.freedesktop.org/archives/mesa-dev/2015-August/090984.html


More information about the mesa-dev mailing list