Properly check for debug and robust access context creation flags.

These flags can come from both attributes and bitfield flags.

Also move the robust access check to an UNIMPLEMENTED in Context, dEQP ES 3.1
tests attempt to use this flag and it's convenient to be able test by disabling
UNIMPLEMENTED assertions.

BUG=angleproject:1442

Change-Id: I1641fdb3afee308235351ebd60be680765b16b3b
Reviewed-on: https://chromium-review.googlesource.com/405774
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index 1ddf9e2..83cee97 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -172,12 +172,15 @@
 
 bool GetRobustAccess(const egl::AttributeMap &attribs)
 {
-    return (attribs.get(EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT, EGL_FALSE) == EGL_TRUE);
+    return (attribs.get(EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT, EGL_FALSE) == EGL_TRUE) ||
+           ((attribs.get(EGL_CONTEXT_FLAGS_KHR, 0) & EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR) !=
+            0);
 }
 
 bool GetDebug(const egl::AttributeMap &attribs)
 {
-    return (attribs.get(EGL_CONTEXT_OPENGL_DEBUG, EGL_FALSE) == EGL_TRUE);
+    return (attribs.get(EGL_CONTEXT_OPENGL_DEBUG, EGL_FALSE) == EGL_TRUE) ||
+           ((attribs.get(EGL_CONTEXT_FLAGS_KHR, 0) & EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR) != 0);
 }
 
 bool GetNoError(const egl::AttributeMap &attribs)
@@ -256,7 +259,10 @@
       mCurrentSurface(nullptr),
       mResourceManager(nullptr)
 {
-    ASSERT(!mRobustAccess);  // Unimplemented
+    if (mRobustAccess)
+    {
+        UNIMPLEMENTED();
+    }
 
     initCaps(GetWebGLContext(attribs));
     initWorkarounds();