Use a single mutex and move the library to a separate directory

Newer versions of Android dropped egl.conf, so we can't use it to
specify which library to load. We handle this by moving SwiftShader to a
different directory and leaving the locking wrappers in /vendor/lib/egl

BUG: 77218110
Change-Id: I3713e448cb5b6fb109c4537814cbe87cda0f728b
Test: Boots, can unlock
diff --git a/guest/libs/eglwrapper/Android.mk b/guest/libs/eglwrapper/Android.mk
index 09dd112..00fa5da 100644
--- a/guest/libs/eglwrapper/Android.mk
+++ b/guest/libs/eglwrapper/Android.mk
@@ -20,7 +20,7 @@
 
 include $(CLEAR_VARS)
 
-LOCAL_MODULE := libEGL_a_wrapper
+LOCAL_MODULE := libEGL_locking_wrapper
 LOCAL_MODULE_TAGS := optional
 LOCAL_SRC_FILES := \
     egl.cpp \
@@ -33,9 +33,9 @@
 LOCAL_VENDOR_MODULE := true
 
 ifeq (0, $(shell test $(PLATFORM_SDK_VERSION) -ge 21; echo $$?))
-LOCAL_MODULE_RELATIVE_PATH := egl
+LOCAL_MODULE_RELATIVE_PATH := gl_impl/locking_wrapper
 else
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/egl
+LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/gl_impl/locking_wrapper
 endif
 
 # See b/67109557
@@ -47,7 +47,7 @@
 
 include $(CLEAR_VARS)
 
-LOCAL_MODULE := libGLESv1_CM_a_wrapper
+LOCAL_MODULE := libGLESv1_CM_locking_wrapper
 LOCAL_MODULE_TAGS := optional
 LOCAL_SRC_FILES := \
     gles1.cpp \
@@ -55,14 +55,14 @@
     gles1_wrapper_entry.cpp
 LOCAL_CFLAGS := -Wall -Werror
 LOCAL_C_INCLUDES := frameworks/native/opengl/include
-LOCAL_SHARED_LIBRARIES := libdl
+LOCAL_SHARED_LIBRARIES := libEGL_locking_wrapper libdl
 
 LOCAL_VENDOR_MODULE := true
 
 ifeq (0, $(shell test $(PLATFORM_SDK_VERSION) -ge 21; echo $$?))
-LOCAL_MODULE_RELATIVE_PATH := egl
+LOCAL_MODULE_RELATIVE_PATH := gl_impl/locking_wrapper
 else
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/egl
+LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/gl_impl/locking_wrapper
 endif
 
 # See b/67109557
@@ -74,7 +74,7 @@
 
 include $(CLEAR_VARS)
 
-LOCAL_MODULE := libGLESv2_a_wrapper
+LOCAL_MODULE := libGLESv2_locking_wrapper
 LOCAL_MODULE_TAGS := optional
 LOCAL_SRC_FILES := \
     gles3.cpp \
@@ -82,14 +82,14 @@
     gles3_wrapper_entry.cpp
 LOCAL_CFLAGS := -Wall -Werror
 LOCAL_C_INCLUDES := frameworks/native/opengl/include
-LOCAL_SHARED_LIBRARIES := libdl
+LOCAL_SHARED_LIBRARIES := libEGL_locking_wrapper libdl
 
 LOCAL_VENDOR_MODULE := true
 
 ifeq (0, $(shell test $(PLATFORM_SDK_VERSION) -ge 21; echo $$?))
-LOCAL_MODULE_RELATIVE_PATH := egl
+LOCAL_MODULE_RELATIVE_PATH := gl_impl/locking_wrapper
 else
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/egl
+LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/gl_impl/locking_wrapper
 endif
 
 # See b/67109557
diff --git a/guest/libs/eglwrapper/egl.cpp b/guest/libs/eglwrapper/egl.cpp
index efc1e17..f8ae96e 100644
--- a/guest/libs/eglwrapper/egl.cpp
+++ b/guest/libs/eglwrapper/egl.cpp
@@ -38,7 +38,7 @@
 }
 
 __attribute__((constructor)) void setup() {
-	void *egl_handle = dlopen("/system/vendor/lib/egl/libEGL_swiftshader.so", RTLD_NOW);
+	void *egl_handle = dlopen("/vendor/lib/gl_impl/swiftshader/libEGL_swiftshader.so", RTLD_NOW);
 	g_egl_wrapper_context.initDispatchByName(getProc, egl_handle);
 	g_egl_wrapper_context.setContextAccessor(egl);
 }
diff --git a/guest/libs/eglwrapper/gles1.cpp b/guest/libs/eglwrapper/gles1.cpp
index ca9df13..eb956b2 100644
--- a/guest/libs/eglwrapper/gles1.cpp
+++ b/guest/libs/eglwrapper/gles1.cpp
@@ -31,14 +31,12 @@
 	getGLES1Context = f;
 }
 
-std::mutex g_context_mutex;
-
 static void *getProc(const char *name, void *userData) {
 	return dlsym(userData, name);
 }
 
 __attribute__((constructor)) void setup() {
-	void *gles1_handle = dlopen("/system/vendor/lib/egl/libGLESv1_CM_swiftshader.so", RTLD_NOW);
+	void *gles1_handle = dlopen("/vendor/lib/gl_impl/swiftshader/libGLESv1_CM_swiftshader.so", RTLD_NOW);
 	g_gles1_wrapper_context.initDispatchByName(getProc, gles1_handle);
 	g_gles1_wrapper_context.setContextAccessor(gles1);
 }
diff --git a/guest/libs/eglwrapper/gles3.cpp b/guest/libs/eglwrapper/gles3.cpp
index 7a9690a..2f1a6b7 100644
--- a/guest/libs/eglwrapper/gles3.cpp
+++ b/guest/libs/eglwrapper/gles3.cpp
@@ -31,14 +31,12 @@
 	getGLES3Context = f;
 }
 
-std::mutex g_context_mutex;
-
 static void *getProc(const char *name, void *userData) {
 	return dlsym(userData, name);
 }
 
 __attribute__((constructor)) void setup() {
-	void *gles3_handle = dlopen("/system/vendor/lib/egl/libGLESv2_swiftshader.so", RTLD_NOW);
+	void *gles3_handle = dlopen("/vendor/lib/gl_impl/swiftshader/libGLESv2_swiftshader.so", RTLD_NOW);
 	g_gles3_wrapper_context.initDispatchByName(getProc, gles3_handle);
 	g_gles3_wrapper_context.setContextAccessor(gles3);
 }