[Mesa-dev] [PATCH 1/2] st/mesa: Take local references for sync object fences

Nicolai Hähnle nhaehnle at gmail.com
Thu Oct 13 07:24:09 UTC 2016


On 13.10.2016 05:45, Michel Dänzer wrote:
> On 12/10/16 08:52 PM, Nicolai Hähnle wrote:
>> On 12.10.2016 11:31, Michel Dänzer wrote:
>>>
>>> diff --git a/src/mesa/state_tracker/st_cb_syncobj.c
>>> b/src/mesa/state_tracker/st_cb_syncobj.c
>>> index 123925a..de01880 100644
>>> --- a/src/mesa/state_tracker/st_cb_syncobj.c
>>> +++ b/src/mesa/state_tracker/st_cb_syncobj.c
>>> @@ -81,17 +81,22 @@ static void st_check_sync(struct gl_context *ctx,
>>> struct gl_sync_object *obj)
>>>     struct pipe_context *pipe = st_context(ctx)->pipe;
>>>     struct pipe_screen *screen = pipe->screen;
>>>     struct st_sync_object *so = (struct st_sync_object*)obj;
>>> +   struct pipe_fence_handle *fence = NULL;
>>> +
>>> +   screen->fence_reference(screen, &fence, so->fence);
>>
>> This should probably really use p_atomic_read (or some kind of READ_ONCE
>> macro if we had it) to make the intention clear, but I'm not sure
>> whether that would compile everywhere since so->fence is a pointer.
>>
>> In practice it doesn't matter, because the function call is a sufficient
>> barrier. So either way,
>>
>> Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
>
> Thanks, but unfortunately,
> https://bugs.freedesktop.org/show_bug.cgi?id=98172#c5 shows that this
> really isn't good enough yet. Back to the drawing board...

I expect that most of the gallium *_reference functions need a similar 
treatment in order to be able to do atomic reference changes.

Nicolai

>


More information about the mesa-dev mailing list