Change robust resource init into a context creation attribute.
Enabled support on OpenGL even through the extension is not fully
implemented so that testing with Chromium/Passthrough commmand decoder
is still possible.
BUG=angleproject:1635
Change-Id: Ia417b1779aace1eae19514325701a79cd33f4ef3
Reviewed-on: https://chromium-review.googlesource.com/678479
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 1b3c687..168d8a0 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -210,6 +210,11 @@
return (attribs.get(EGL_CONTEXT_CLIENT_ARRAYS_ENABLED_ANGLE, EGL_TRUE) == EGL_TRUE);
}
+bool GetRobustResourceInit(const egl::AttributeMap &attribs)
+{
+ return (attribs.get(EGL_ROBUST_RESOURCE_INITIALIZATION_ANGLE, EGL_FALSE) == EGL_TRUE);
+}
+
std::string GetObjectLabelFromPointer(GLsizei length, const GLchar *label)
{
std::string labelName;
@@ -257,8 +262,7 @@
TextureManager *shareTextures,
MemoryProgramCache *memoryProgramCache,
const egl::AttributeMap &attribs,
- const egl::DisplayExtensions &displayExtensions,
- bool robustResourceInit)
+ const egl::DisplayExtensions &displayExtensions)
: ValidationContext(shareContext,
shareTextures,
@@ -289,7 +293,8 @@
{
mImplementation->setMemoryProgramCache(memoryProgramCache);
- initCaps(displayExtensions);
+ bool robustResourceInit = GetRobustResourceInit(attribs);
+ initCaps(displayExtensions, robustResourceInit);
initWorkarounds();
mGLState.initialize(this, GetDebug(attribs), GetBindGeneratesResource(attribs),
@@ -2618,7 +2623,7 @@
return false;
}
-void Context::initCaps(const egl::DisplayExtensions &displayExtensions)
+void Context::initCaps(const egl::DisplayExtensions &displayExtensions, bool robustResourceInit)
{
mCaps = mImplementation->getNativeCaps();
@@ -2666,8 +2671,7 @@
mExtensions.robustClientMemory = true;
// Determine robust resource init availability from EGL.
- mExtensions.robustResourceInitialization =
- egl::Display::GetClientExtensions().displayRobustResourceInitialization;
+ mExtensions.robustResourceInitialization = robustResourceInit;
// mExtensions.robustBufferAccessBehavior is true only if robust access is true and the backend
// supports it.