[Mesa-dev] [PATCH] glx: block attempt to swapbuffer on pixmap. (v2)

Dave Airlie airlied at gmail.com
Mon Dec 19 01:40:26 PST 2011


On Wed, Dec 7, 2011 at 6:32 PM, Eric Anholt <eric at anholt.net> wrote:
> On Wed,  7 Dec 2011 10:24:09 +0000, Dave Airlie <airlied at gmail.com> wrote:
>> From: Dave Airlie <airlied at redhat.com>
>>
>> This keeps track of the creation process and stores a drawable type,
>> it then blocks DRI2 from getting called if the drawable is a pixmap.
>>
>> v2: check if we have a GLX drawable, which means we aren't a pbuffer,
>> avoid doing flush at all since its meant to be a no-op.
>
> I still think this is the wrong way to go.  As ajax pointed out, there's
> all sorts of races available from trying to guess client-side, and
> there's no way anybody's relying on the current ("print an error message
> in the xorg log") behavior of the DRI2 protocol for single-buffered, so
> we might as well resolve that DRI2 protocol should do what we want for
> GLX.

I've been thinking about the races, and I'm not sure they really
apply, like we would have all those races now with the current code,

Look at the patch, when the glx_drawable struct is created we record
the type of the pixmap, we then call GetGLXDrawable, which looks the
XID up in the hash,
so if the XID has been reused or raced, then we would have to expect
the hash to be incorrect, or else avoid using it in a lot of other
places.

Dave.


More information about the mesa-dev mailing list