[Mesa-dev] [PATCH v3 0/4] Disable glthread if libX11 isn't thread-safe

Emil Velikov emil.l.velikov at gmail.com
Fri May 5 17:17:22 UTC 2017


On 5 May 2017 at 17:58, gregory hainaut <gregory.hainaut at gmail.com> wrote:
> On Fri, 5 May 2017 17:45:01 +0200
> Axel Davy <axel.davy at normalesup.org> wrote:
>
>> Hi,
>>
>> There should be very few X11 calls while rendering (basically only at
>> the beginning or end of a frame).
>>
>> Why not just always run these calls in the main thread (and wait for
>> glthread work to finish) ?
>>
>> That's basically what we do for gallium nine.
>>
>> Yours,
>>
>> Axel
>
> Hello Axel,
>
> Yes it is another possibility. It would requires to track gl calls that end up in X11.
> I'm not sure if there is an easy way to list all those gl functions. There are at least the
> draw calls and maybe the clear operations. Besides I'm afraid that we will need to handle
> various corner cases of the OpenGL API. It is doable but likely more complicated.
>
> There is also the Nvidia way, i.e. forces the driver to XInitThreads X11. I think it
> can be implemented with the help of constructor attribute.
>
Did you trace the above behaviour? What would happen in the following scenario:
 - There is no link against libGL/libEGL
 - User gets the dpy primitive w/o calling XInitThreads
 - Then user dlopens libGL/libEGL, which in itself calls XInitThreads
At that point it's a bit too late isn't it?

-Emil


More information about the mesa-dev mailing list