[Mesa-dev] [RFC 0/1] Port dri2GetBuffersWithFormat/dri2GetBuffers to XCB

Gregory Hainaut gregory.hainaut at gmail.com
Wed Apr 26 10:06:41 UTC 2017


On 4/26/17, Michel Dänzer <michel at daenzer.net> wrote:
> On 26/04/17 05:07 PM, Gregory Hainaut wrote:
>> Following the discussion in "[PATCH v4 0/3] asynchronous pbo transfer with
>> glthread"
>>
>> It will help apps that are ported to XCB.
>
> How so?

I didn't test it (yet). But I think it is safe to call XCB from
various threads. However if one thread use XLIB, you're screwed (to
access the same display).

>
>> But Xlib (without XInitThread) apps will still crash when glthread is
>> enabled on DRI2.
>
> Do the crashes provide information about where glthread is still calling
> libX11 APIs?
I far from an expert so maybe I misunderstand some stuffs. So, as far
as I understand XLIB and XCB are mixed together. They likely share the
same queues.

Let's say you have an app that does Xlib operations on display (for
example XGetGeometry). As XInitThread wasn't called, you're in YOLO
mode.

glthread (gallium->DRI2) will do operation (GetBuffer) on the same
display through an XCB connection but it is still the same display.
XCB might lock it properly but Xlib call is lock-free.

What happen in my case is that XCB reply was corrupted (count was huge
which lead to memory bad access). My guess was that Xlib calls from
app were the culprit. I will test my XCB version of my app + this
patch. Hopefully, it would be crash free.

>> I only tested the patch on Nouveau
>>
>> There are 3 remaining possibilities
>> * Won't fix. DRI3/XCB is the future
>> * Enable thread safe Xlib by default (which would make sense in multicore
>> CPU era)
>> * Track gl call that will use X11 API to force a sync
>
> Until either of the latter two happens, glthread should only be enabled
> with DRI3.
On one hand, I don't like crash neither but in other hand, it would be
nice to keep glthread for application that call XInitThread properly.
At least, glthread isn't enabled by default.

>
> --
> Earthling Michel Dänzer               |               http://www.amd.com
> Libre software enthusiast             |             Mesa and X developer
>


More information about the mesa-dev mailing list