[Mesa-dev] [PATCH 7.11] gallium/dri: Handle xserver that doesn't send needless DRI2 invalidate events
Dave Airlie
airlied at gmail.com
Fri Jan 13 01:10:15 PST 2012
On Sun, Dec 18, 2011 at 4:22 PM, Ville Syrjälä <syrjala at sci.fi> wrote:
> Ever since xserver commit 531869448d07e00ae241120b59f3aaaa5709d59c,
> the server no longer sends invalidate events to clients, unless they
> have performed a GetBuffers request since the drawable was last
> invalidated.
>
> If the drawable gets invalidated immediately after the GetBuffers
> request was processed by the X server, it's possible that Xlib
> will process the invalidate event while waiting for the GetBuffers
> reply. So the server, thinking the client knows that the buffers
> are invalid, is waiting for another GetBuffers request before
> sending any more invalidate events. The client, on the other hand,
> believes the buffers to be valid, and thus is expecting to receive
> another invalidate event before it has to send another GetBuffers
> request. The end result is that the client never again sends
> a GetBuffers request.
>
> To avoid this problem, take a snapshot of lastStamp before
> doing GetBuffers, and retry if the snapshot and the current
> lastStamp no longer match after the GetBuffers reply has been
> processed.
>
> Signed-off-by: Ville Syrjälä <syrjala at sci.fi>
> ---
> It looks like master should already handle this, as there's a
> retry loop inside st_framebuffer_validate(). I didn't test that
> in practice though.
I'd really like to know if master can handle it before pulling a patch
that isn't in master into 7.11.
Dave.
More information about the mesa-dev
mailing list