Commit d229ea6a by Corentin Wallez

Write the single/double buffer investigation results

BUG=angleproject:892 Change-Id: I163e3b674cdb5357cfaf31305f4776dc4c895af1 Reviewed-on: https://chromium-review.googlesource.com/272228Reviewed-by: 's avatarKenneth Russell <kbr@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Tested-by: 's avatarCorentin Wallez <cwallez@chromium.org>
parent bb714f72
...@@ -114,6 +114,9 @@ egl::Error DisplayGLX::initialize(egl::Display *display) ...@@ -114,6 +114,9 @@ egl::Error DisplayGLX::initialize(egl::Display *display)
GLX_STENCIL_SIZE, 8, GLX_STENCIL_SIZE, 8,
// We want RGBA rendering (vs COLOR_INDEX) and doublebuffer // We want RGBA rendering (vs COLOR_INDEX) and doublebuffer
GLX_RENDER_TYPE, GLX_RGBA_BIT, GLX_RENDER_TYPE, GLX_RGBA_BIT,
// Double buffer is not strictly required as a non-doublebuffer
// context can work with a doublebuffered surface, but it still
// flickers and all applications want doublebuffer anyway.
GLX_DOUBLEBUFFER, True, GLX_DOUBLEBUFFER, True,
// All of these must be supported for full EGL support // All of these must be supported for full EGL support
GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT | GLX_PBUFFER_BIT | GLX_PIXMAP_BIT, GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT | GLX_PBUFFER_BIT | GLX_PIXMAP_BIT,
......
...@@ -110,12 +110,18 @@ buffered like 0x024 which is our GLX context config. The compatible configs are ...@@ -110,12 +110,18 @@ buffered like 0x024 which is our GLX context config. The compatible configs are
We can see two dimensions, with our without a depth-stencil buffer and with TrueColor We can see two dimensions, with our without a depth-stencil buffer and with TrueColor
or DirectColor. The depth-stencil will be useful to expose to application. or DirectColor. The depth-stencil will be useful to expose to application.
More on double buffering
------------------------
The tests above show that double-buffered contexts are not compatible with single-
buffered surfaces; however other tests show that single-buffered contexts are
compatible with both single and double-buffered surfaces. The problem is that in
that case, we can see some flickering even with double-buffered surfaces. If we
can find a trick to avoid that flicker, then we would be able to expose single
and double-buffered surfaces at the EGL level. Not exposing them isn't too much
of a problem though as the vast majority of application want double-buffering.
Future investigation Future investigation
-------------------- --------------------
At that point we don't know if there is a special trick that could allow us to use
the non-doublebuffered configs but it would be nice to be able to use them so that
we can expose the non-double buffered ones in an extension.
All the non-conformant configs have a multisampled buffer, so it could be interesting All the non-conformant configs have a multisampled buffer, so it could be interesting
to see if we can use them to expose another EGL extension. to see if we can use them to expose another EGL extension.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment