diff --git a/libs/graphicsenv/GraphicsEnv.cpp b/libs/graphicsenv/GraphicsEnv.cpp
index 282b468..2a7d76e 100644
--- a/libs/graphicsenv/GraphicsEnv.cpp
+++ b/libs/graphicsenv/GraphicsEnv.cpp
@@ -57,7 +57,7 @@
 }
 
 void GraphicsEnv::setAngleInfo(const std::string path, const std::string appName,
-                               bool developerOptIn) {
+                               const std::string appPref, bool developerOptIn) {
     if (!mAnglePath.empty()) {
         ALOGV("ignoring attempt to change ANGLE path from '%s' to '%s'", mAnglePath.c_str(),
               path.c_str());
@@ -74,6 +74,14 @@
         mAngleAppName = appName;
     }
 
+    if (!mAngleAppPref.empty()) {
+        ALOGV("ignoring attempt to change ANGLE application opt-in from '%s' to '%s'",
+              mAngleAppPref.c_str(), appPref.c_str());
+    } else {
+        ALOGV("setting ANGLE application opt-in to '%s'", appPref.c_str());
+        mAngleAppPref = appPref;
+    }
+
     mAngleDeveloperOptIn = developerOptIn;
 }
 
@@ -100,6 +108,11 @@
     return mAngleDeveloperOptIn;
 }
 
+const char* GraphicsEnv::getAngleAppPref() {
+    if (mAngleAppPref.empty()) return nullptr;
+    return mAngleAppPref.c_str();
+}
+
 const std::string GraphicsEnv::getLayerPaths(){
     return mLayerPaths;
 }
@@ -165,4 +178,7 @@
 bool android_getAngleDeveloperOptIn() {
     return android::GraphicsEnv::getInstance().getAngleDeveloperOptIn();
 }
+const char* android_getAngleAppPref() {
+    return android::GraphicsEnv::getInstance().getAngleAppPref();
+}
 }
diff --git a/libs/graphicsenv/include/graphicsenv/GraphicsEnv.h b/libs/graphicsenv/include/graphicsenv/GraphicsEnv.h
index 58d4582..00e8fc0 100644
--- a/libs/graphicsenv/include/graphicsenv/GraphicsEnv.h
+++ b/libs/graphicsenv/include/graphicsenv/GraphicsEnv.h
@@ -42,9 +42,11 @@
     // (libraries must be stored uncompressed and page aligned); such elements
     // in the search path must have a '!' after the zip filename, e.g.
     //     /system/app/ANGLEPrebuilt/ANGLEPrebuilt.apk!/lib/arm64-v8a
-    void setAngleInfo(const std::string path, const std::string appName, const bool optIn);
+    void setAngleInfo(const std::string path, const std::string appName, const std::string appPref,
+                      bool devOptIn);
     android_namespace_t* getAngleNamespace();
     const char* getAngleAppName();
+    const char* getAngleAppPref();
     bool getAngleDeveloperOptIn();
 
     void setLayerPaths(NativeLoaderNamespace* appNamespace, const std::string layerPaths);
@@ -60,6 +62,7 @@
     std::string mDriverPath;
     std::string mAnglePath;
     std::string mAngleAppName;
+    std::string mAngleAppPref;
     bool mAngleDeveloperOptIn;
     std::string mDebugLayers;
     std::string mLayerPaths;
@@ -85,6 +88,7 @@
 android_namespace_t* android_getDriverNamespace();
 android_namespace_t* android_getAngleNamespace();
 const char* android_getAngleAppName();
+const char* android_getAngleAppPref();
 bool android_getAngleDeveloperOptIn();
 }
 
diff --git a/opengl/libs/EGL/Loader.cpp b/opengl/libs/EGL/Loader.cpp
index f5e0ad9..90721b8 100644
--- a/opengl/libs/EGL/Loader.cpp
+++ b/opengl/libs/EGL/Loader.cpp
@@ -486,12 +486,15 @@
 
     android_namespace_t* ns = android_getAngleNamespace();
     const char* app_name = android_getAngleAppName();
+    const char* app_pref = android_getAngleAppPref();
     bool developer_opt_in = android_getAngleDeveloperOptIn();
 
     if (ns) {
         // If we got a namespce for ANGLE, check any other conditions
         // before loading from it.
-        if (developer_opt_in) {
+        // TODO: Call opt-in logic rather than use pref directly
+        //       app_pref will be "angle", "native", or "dontcare"
+        if ((developer_opt_in || !strcmp(app_pref, "angle"))) {
             so = load_angle_from_namespace(kind, ns);
         }
     }
