summaryrefslogtreecommitdiff
path: root/core/java/android/os/GraphicsEnvironment.java
diff options
context:
space:
mode:
authorYiwei Zhang <zzyiwei@google.com>2019-05-06 17:13:05 -0700
committerYiwei Zhang <zzyiwei@google.com>2019-05-06 17:51:00 -0700
commit27a2743685936cb67e29b587d1f50662c6b4aee6 (patch)
tree79cde5aca00e50e5fdb199956c787d2717ef64e2 /core/java/android/os/GraphicsEnvironment.java
parent9f514dbb27a6019183851d93fcf5df80c1d35fcc (diff)
GpuStats: Plumb Vulkan api version
This change plumbs the advertised Vulkan api version into GraphicsEnv. GLES api version and CPU Vulkan api version will be appended when statd pulls GpuStatsGlobalInfo from GpuStats to save app launch overhead. Bug: 131866357 Test: build, flash and boot Change-Id: I7faa924eccc81499cd4f1fd54803e3a62bd3153a
Diffstat (limited to 'core/java/android/os/GraphicsEnvironment.java')
-rw-r--r--core/java/android/os/GraphicsEnvironment.java23
1 files changed, 20 insertions, 3 deletions
diff --git a/core/java/android/os/GraphicsEnvironment.java b/core/java/android/os/GraphicsEnvironment.java
index 232869d7aefc..7dbc16a56a7b 100644
--- a/core/java/android/os/GraphicsEnvironment.java
+++ b/core/java/android/os/GraphicsEnvironment.java
@@ -71,6 +71,8 @@ public class GraphicsEnvironment {
"android.app.action.ANGLE_FOR_ANDROID_TOAST_MESSAGE";
private static final String INTENT_KEY_A4A_TOAST_MESSAGE = "A4A Toast Message";
private static final String GAME_DRIVER_WHITELIST_ALL = "*";
+ private static final int VULKAN_1_0 = 0x00400000;
+ private static final int VULKAN_1_1 = 0x00401000;
// GAME_DRIVER_ALL_APPS
// 0: Default (Invalid values fallback to default as well)
@@ -99,7 +101,8 @@ public class GraphicsEnvironment {
Trace.traceBegin(Trace.TRACE_TAG_GRAPHICS, "chooseDriver");
if (!chooseDriver(context, coreSettings, pm, packageName)) {
setGpuStats(SYSTEM_DRIVER_NAME, SYSTEM_DRIVER_VERSION_NAME, SYSTEM_DRIVER_VERSION_CODE,
- SystemProperties.getLong(PROPERTY_GFX_DRIVER_BUILD_TIME, 0), packageName);
+ SystemProperties.getLong(PROPERTY_GFX_DRIVER_BUILD_TIME, 0), packageName,
+ getVulkanVersion(pm));
}
Trace.traceEnd(Trace.TRACE_TAG_GRAPHICS);
}
@@ -200,6 +203,20 @@ public class GraphicsEnvironment {
return true;
}
+ private static int getVulkanVersion(PackageManager pm) {
+ // PackageManager doesn't have an API to retrieve the version of a specific feature, and we
+ // need to avoid retrieving all system features here and looping through them.
+ if (pm.hasSystemFeature(PackageManager.FEATURE_VULKAN_HARDWARE_VERSION, VULKAN_1_1)) {
+ return VULKAN_1_1;
+ }
+
+ if (pm.hasSystemFeature(PackageManager.FEATURE_VULKAN_HARDWARE_VERSION, VULKAN_1_0)) {
+ return VULKAN_1_0;
+ }
+
+ return 0;
+ }
+
/**
* Check whether application is debuggable
*/
@@ -791,7 +808,7 @@ public class GraphicsEnvironment {
// driver_build_time in the meta-data is in "L<Unix epoch timestamp>" format. e.g. L123456.
// Long.parseLong will throw if the meta-data "driver_build_time" is not set properly.
setGpuStats(driverPackageName, driverPackageInfo.versionName, driverAppInfo.longVersionCode,
- Long.parseLong(driverBuildTime.substring(1)), packageName);
+ Long.parseLong(driverBuildTime.substring(1)), packageName, 0);
return true;
}
@@ -815,7 +832,7 @@ public class GraphicsEnvironment {
private static native void setDebugLayersGLES(String layers);
private static native void setDriverPathAndSphalLibraries(String path, String sphalLibraries);
private static native void setGpuStats(String driverPackageName, String driverVersionName,
- long driverVersionCode, long driverBuildTime, String appPackageName);
+ long driverVersionCode, long driverBuildTime, String appPackageName, int vulkanVersion);
private static native void setAngleInfo(String path, String appPackage, String devOptIn,
FileDescriptor rulesFd, long rulesOffset, long rulesLength);
private static native boolean getShouldUseAngle(String packageName);