summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/common/dri_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/drivers/dri/common/dri_util.c')
-rw-r--r--src/mesa/drivers/dri/common/dri_util.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c
index a6545084e31..79cb0506dd8 100644
--- a/src/mesa/drivers/dri/common/dri_util.c
+++ b/src/mesa/drivers/dri/common/dri_util.c
@@ -376,11 +376,32 @@ driCreateContextAttribs(__DRIscreen *screen, int api,
* EGL_CONTEXT_FLAGS_KHR, then a <debug context> will be created.
* [...] This bit is supported for OpenGL and OpenGL ES contexts.
*
- * None of the other flags have any meaning in an ES context, so this seems safe.
+ * No other EGL_CONTEXT_OPENGL_*_BIT is legal for an ES context.
+ *
+ * However, Mesa's EGL layer translates the context attribute
+ * EGL_CONTEXT_OPENGL_ROBUST_ACCESS into the context flag
+ * __DRI_CTX_FLAG_ROBUST_BUFFER_ACCESS. That attribute is legal for ES
+ * (with EGL 1.5 or EGL_EXT_create_context_robustness) and GL (only with
+ * EGL 1.5).
+ *
+ * From the EGL_EXT_create_context_robustness spec:
+ *
+ * This extension is written against the OpenGL ES 2.0 Specification
+ * but can apply to OpenGL ES 1.1 and up.
+ *
+ * From the EGL 1.5 (2014.08.27) spec, p55:
+ *
+ * If the EGL_CONTEXT_OPENGL_ROBUST_ACCESS attribute is set to
+ * EGL_TRUE, a context supporting robust buffer access will be created.
+ * OpenGL contexts must support the GL_ARB_robustness extension, or
+ * equivalent core API functional- ity. OpenGL ES contexts must support
+ * the GL_EXT_robustness extension, or equivalent core API
+ * functionality.
*/
if (mesa_api != API_OPENGL_COMPAT
&& mesa_api != API_OPENGL_CORE
- && (flags & ~__DRI_CTX_FLAG_DEBUG)) {
+ && (flags & ~(__DRI_CTX_FLAG_DEBUG |
+ __DRI_CTX_FLAG_ROBUST_BUFFER_ACCESS))) {
*error = __DRI_CTX_ERROR_BAD_FLAG;
return NULL;
}