[Mesa-dev] [PATCH] new EGL internal SyncSurface hook
Tapani Pälli
tapani.palli at intel.com
Mon Dec 19 12:36:41 UTC 2016
Hi;
I've been investigating dEQP EGL bugs. Following test seems to fail now
and then and only on X11 when using DRI2:
dEQP-EGL.functional.resize.surface_size.grow
This patch is RFC for a 'SyncSurface' API that will query surface
geometry (xcb_get_geometry) before returning current stored values in
'_eglQuerySurface'. Without this we might have wrong values in place,
I believe this is related to following comments in the source code ..
--- 8< ---
src/mesa/drivers/dri/i965/brw_context.c:
/* GLX uses DRI2 invalidate events to handle window resizing.
* Unfortunately, EGL does not - libEGL is written in XCB (not Xlib),
* which doesn't provide a mechanism for snooping the event queues.
*
* So EGL still relies on viewport hacks to handle window resizing.
* This should go away with DRI3000.
*/
src/egl/drivers/dri2/platform_x11.c:
/* Since we aren't watching for the server's invalidate events like we're
* supposed to (due to XCB providing no mechanism for filtering the events
* the way xlib does), and SwapBuffers is a common cause of invalidate
* events, just shove one down to the driver, even though we haven't told
* the driver that we're the kind of loader that provides reliable
* invalidate events. This causes the driver to request buffers again at
* its next draw, so that we get the correct buffers if a pageflip
* happened. The driver should still be using the viewport hack to catch
* window resizes.
*/
--- 8< ---
This patch together with a dEQP change I've attached to bug #98327 makes
this test pass consistently for me on 2 machines, one is running Fedora
with DRI3 and another one Ubuntu with DRI2.
Is this OK approach? Should the name be something else like
SyncSurfaceGeometry or GetSurfaceGeometry?
Any comments appreciated;
Tapani Pälli (1):
egl: syncronize surface information with driver RFC
src/egl/drivers/dri2/egl_dri2.c | 12 ++++++++++++
src/egl/drivers/dri2/egl_dri2.h | 2 ++
src/egl/drivers/dri2/platform_x11.c | 31 +++++++++++++++++++++++++++++++
src/egl/main/eglapi.h | 2 ++
src/egl/main/eglfallbacks.c | 1 +
src/egl/main/eglsurface.c | 3 +++
6 files changed, 51 insertions(+)
--
2.9.3
More information about the mesa-dev
mailing list