glxSwapBuffers has no effect
Submitted by Julien Isorce
Assigned to mes..@..op.org
Initially looking at the gstreamer bug https://bugzilla.gnome.org/show_bug.cgi?id=774809 it seems it could be a pb in mesa:
In src/glx/dri2_glx.c::dri2SwapBuffers psc->f->invalidate is not called when using dri2 on an up to date Ubuntu 16.04. Because the call to dri2InvalidateBuffers is guarded by "if (!pdp->invalidateAvailable)"
But with dri2 and egl the '->invalidate' is always called, see dri3_swap_buffers/loader_dri3_swap_buffers_msc and egl/dri2_x11_swap_buffers_msc
X server is version 1.18.4 and xorg-video-intel is 2:2.99.917
So it looks like xserver/hw/xfree86/dri2/dri2ext.c::DRI2InvalidateBuffersEvent is not called and the comment "/* Old servers don't send invalidate events */" src/glx/dri2_glx.c make sense.
1: Why this difference between dri2 and dri3/egl ? I would have expect the otherway, always called on dri2 and not on dri3.
2: Is "pdp->invalidateAvailable = (pdp->driMinor >= 3);" not accurate ? Should it check for the exact xserver version which contains the fix ?
Thx in advance for any feedback.