Merge "Merge "CP: Add EGL extensions to graphics device info" into nougat-cts-dev am: 0f9f0a94ad" into nougat-mr1-cts-dev
diff --git a/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/GlesStubActivity.java b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/GlesStubActivity.java
index 9e0d3c5..5edf531 100644
--- a/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/GlesStubActivity.java
+++ b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/GlesStubActivity.java
@@ -24,6 +24,8 @@
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
+import android.opengl.EGL14;
+import android.opengl.EGLDisplay;
import android.opengl.GLES20;
import android.opengl.GLES30;
import android.opengl.GLSurfaceView;
@@ -32,6 +34,7 @@
import java.lang.reflect.Field;
import java.nio.FloatBuffer;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.HashSet;
@@ -50,10 +53,11 @@
private int mVersion = -1;
private GraphicsDeviceInfo mGraphicsDeviceInfo;
private CountDownLatch mDone = new CountDownLatch(1);
- private HashSet<String> mOpenGlExtensions = new HashSet<String>();
- private HashSet<String> mFormats = new HashSet<String>();
- private HashMap<String, Object> mImplVariables = new HashMap<String, Object>();
- private HashSet<String> mDynamicArrayVariables = new HashSet<String>();
+ private HashSet<String> mOpenGlExtensions = new HashSet<>();
+ private HashSet<String> mEglExtensions = new HashSet<>();
+ private HashSet<String> mFormats = new HashSet<>();
+ private HashMap<String, Object> mImplVariables = new HashMap<>();
+ private HashSet<String> mDynamicArrayVariables = new HashSet<>();
private String mGraphicsVendor;
private String mGraphicsRenderer;
@@ -126,6 +130,15 @@
mOpenGlExtensions.add(openGlExtension);
}
+ List<String> getEglExtensions() {
+ return new ArrayList<>(mEglExtensions);
+ }
+
+ void addEglExtensions(String[] eglExtensions) {
+ // NOTE: We may end up here multiple times, using set to avoid dupes.
+ mEglExtensions.addAll(Arrays.asList(eglExtensions));
+ }
+
List<String> getCompressedTextureFormats() {
return new ArrayList<>(mFormats);
}
@@ -429,6 +442,8 @@
}
scanner.close();
+ collectEglExtensions(mParent);
+
mDone.countDown();
}
@@ -446,5 +461,22 @@
mParent.addImplementationVariable(name, value, dynamicArray);
}
}
+
+ private static void collectEglExtensions(GlesStubActivity collector) {
+ EGLDisplay display = EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY);
+ if (display == EGL14.EGL_NO_DISPLAY) {
+ Log.e(LOG_TAG, "Failed to init EGL default display: 0x" +
+ Integer.toHexString(EGL14.eglGetError()));
+ return;
+ }
+ String extensions = EGL14.eglQueryString(display, EGL14.EGL_EXTENSIONS);
+ int error = EGL14.eglGetError();
+ if (error != EGL14.EGL_SUCCESS) {
+ Log.e(LOG_TAG, "Failed to query extension string: 0x" + Integer.toHexString(error));
+ return;
+ }
+ // Fingers crossed for no extra white space in the extension string.
+ collector.addEglExtensions(extensions.split(" "));
+ }
}
}
diff --git a/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/GraphicsDeviceInfo.java b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/GraphicsDeviceInfo.java
index f1832b3..e1d0cef 100644
--- a/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/GraphicsDeviceInfo.java
+++ b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/GraphicsDeviceInfo.java
@@ -95,5 +95,7 @@
}
}
}
+
+ store.addListResult("egl_extension", stubActivity.getEglExtensions());
}
}