[PATCH 0/7] EGL_MESA_configless_context

Neil Roberts neil at linux.intel.com
Fri Mar 7 10:05:43 PST 2014

Here is a series of patches to add an extension which makes it
possible to create an EGL context without specifying a config. A
context created in this way can be bound with any surface using the
same EGLDisplay rather than being restricted to those using the same
config. The main use case is that it would then be possible for a
Wayland compositor to drive two displays which may have different
bit-depths without having to wastefully create two contexts.

Mesa seems to mostly cope with this already so the patches are mostly
just to add the extension and remove the restriction.

There is also a patch for Piglit to try and test the extension. I
tried running the branch though the 'all tests' test suite and apart
from this new test now passing there was only one difference which is
that the GLX_OML_sync_control/swapbuffersmsc-divisor-zero test failed.
However if I run piglit-run.py again and set a regexp so it only runs
that one test then it passes so I'm wondering if it might just be an
intermittent failure.

The main thorny issue with the extension is how to handle the initial
value of glDrawBuffer when a configless context is used. If a config
is used then we can just say the default is GL_BACK if the config is
double-buffered and GL_FRONT otherwise. I have taken the approach that
this decision is made the first time the context is bound rather than
when it is first created. There should be no way to query the value of
glDrawBuffer until the context is first bound so it shouldn't cause
any harm that Mesa changes the value at that point. I think this is
worth doing for the convenience to the application which would
otherwise have to remember to explicitly set it to GL_BACK in the
common case that double-buffering is used.

I've also included a couple of patches to take advantage of the
extension in Weston.

- Neil

More information about the wayland-devel mailing list