diff --git a/opengl/libs/EGL/Loader.cpp b/opengl/libs/EGL/Loader.cpp
index 2e01965..531bb20 100644
--- a/opengl/libs/EGL/Loader.cpp
+++ b/opengl/libs/EGL/Loader.cpp
@@ -475,7 +475,7 @@
     return nullptr;
 }
 
-static void* load_angle(const char* kind, android_namespace_t* ns, egl_connection_t* cnx) {
+static void* load_angle(const char* kind, egl_connection_t* cnx) {
     // Only attempt to load ANGLE libs
     if (strcmp(kind, "EGL") != 0 && strcmp(kind, "GLESv2") != 0 && strcmp(kind, "GLESv1_CM") != 0)
         return nullptr;
@@ -483,11 +483,20 @@
     void* so = nullptr;
     std::string name;
 
+    android_namespace_t* ns = android_getAngleNamespace();
+    const char* app_name = android_getAngleAppName();
+    bool developer_opt_in = android_getAngleDeveloperOptIn();
+
     if (ns) {
-        so = load_angle_from_namespace(kind, ns);
+        // If we got a namespce for ANGLE, check any other conditions
+        // before loading from it.
+        if (developer_opt_in) {
+            so = load_angle_from_namespace(kind, ns);
+        }
     }
 
     if (so) {
+        ALOGD("Loaded ANGLE libraries for %s", app_name ? app_name : "nullptr");
         cnx->useAngle = true;
         // Find and load vendor libEGL for ANGLE
         if (!cnx->vendorEGL) {
@@ -530,11 +539,10 @@
     ATRACE_CALL();
 
     void* dso = nullptr;
-    android_namespace_t* ns = android_getAngleNamespace();
-    dso = load_angle(kind, ns, cnx);
+    dso = load_angle(kind, cnx);
 #ifndef __ANDROID_VNDK__
     if (!dso) {
-        ns = android_getDriverNamespace();
+        android_namespace_t* ns = android_getDriverNamespace();
         if (ns) {
             dso = load_updated_driver(kind, ns);
         }
