From f77a34fa17d64fad80f423aa8a86e781a7441b9e Mon Sep 17 00:00:00 2001 From: Jesse Hall Date: Thu, 4 Feb 2016 18:41:33 -0800 Subject: [PATCH] PackageManager: add Vulkan system features FEATURE_VULKAN_HARDWARE_FEATURES describes the feature set supported by the device hardware and driver. FEATURE_VULKAN_HARDWARE_VERSION describes the Vulkan API version supported by the driver, which may be lower than the API version supported by a particular Android release. Bug: 26583896 Change-Id: Ia3e6be496abf631cb677eb838d632d3c7b4dd24b --- api/current.txt | 2 + api/system-current.txt | 2 + api/test-current.txt | 2 + .../android/content/pm/PackageManager.java | 44 ++++++++++++++++++- 4 files changed, 49 insertions(+), 1 deletion(-) diff --git a/api/current.txt b/api/current.txt index a17f68f942959..042997683d6ed 100644 --- a/api/current.txt +++ b/api/current.txt @@ -9785,6 +9785,8 @@ package android.content.pm { field public static final java.lang.String FEATURE_VERIFIED_BOOT = "android.software.verified_boot"; field public static final java.lang.String FEATURE_VR_MODE = "android.software.vr.mode"; field public static final java.lang.String FEATURE_VR_MODE_HIGH_PERFORMANCE = "android.hardware.vr.high_performance"; + field public static final java.lang.String FEATURE_VULKAN_HARDWARE_LEVEL = "android.hardware.vulkan.level"; + field public static final java.lang.String FEATURE_VULKAN_HARDWARE_VERSION = "android.hardware.vulkan.version"; field public static final java.lang.String FEATURE_WATCH = "android.hardware.type.watch"; field public static final java.lang.String FEATURE_WEBVIEW = "android.software.webview"; field public static final java.lang.String FEATURE_WIFI = "android.hardware.wifi"; diff --git a/api/system-current.txt b/api/system-current.txt index d5c50fbb5adc0..90636324034a9 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -10143,6 +10143,8 @@ package android.content.pm { field public static final java.lang.String FEATURE_VERIFIED_BOOT = "android.software.verified_boot"; field public static final java.lang.String FEATURE_VR_MODE = "android.software.vr.mode"; field public static final java.lang.String FEATURE_VR_MODE_HIGH_PERFORMANCE = "android.hardware.vr.high_performance"; + field public static final java.lang.String FEATURE_VULKAN_HARDWARE_LEVEL = "android.hardware.vulkan.level"; + field public static final java.lang.String FEATURE_VULKAN_HARDWARE_VERSION = "android.hardware.vulkan.version"; field public static final java.lang.String FEATURE_WATCH = "android.hardware.type.watch"; field public static final java.lang.String FEATURE_WEBVIEW = "android.software.webview"; field public static final java.lang.String FEATURE_WIFI = "android.hardware.wifi"; diff --git a/api/test-current.txt b/api/test-current.txt index f466b8fc1ac53..d43c248b715db 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -9793,6 +9793,8 @@ package android.content.pm { field public static final java.lang.String FEATURE_VERIFIED_BOOT = "android.software.verified_boot"; field public static final java.lang.String FEATURE_VR_MODE = "android.software.vr.mode"; field public static final java.lang.String FEATURE_VR_MODE_HIGH_PERFORMANCE = "android.hardware.vr.high_performance"; + field public static final java.lang.String FEATURE_VULKAN_HARDWARE_LEVEL = "android.hardware.vulkan.level"; + field public static final java.lang.String FEATURE_VULKAN_HARDWARE_VERSION = "android.hardware.vulkan.version"; field public static final java.lang.String FEATURE_WATCH = "android.hardware.type.watch"; field public static final java.lang.String FEATURE_WEBVIEW = "android.software.webview"; field public static final java.lang.String FEATURE_WIFI = "android.hardware.wifi"; diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 188e1d7d92b0d..b7f968c47079e 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -1571,6 +1571,48 @@ public abstract class PackageManager { @SdkConstant(SdkConstantType.FEATURE) public static final String FEATURE_OPENGLES_EXTENSION_PACK = "android.hardware.opengles.aep"; + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: If this feature is supported, the Vulkan native API will enumerate + * at least one {@code VkPhysicalDevice}, and the feature version will indicate what + * level of optional hardware features limits it supports. + *

+ * Level 0 includes the base Vulkan requirements as well as: + *

+ *

+ * Level 1 additionally includes: + *

+ */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_VULKAN_HARDWARE_LEVEL = "android.hardware.vulkan.level"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The version of this feature indicates the highest + * {@code VkPhysicalDeviceProperties::apiVersion} supported by the physical devices that support + * the hardware level indicated by {@link #FEATURE_VULKAN_HARDWARE_LEVEL}. The feature version + * uses the same encoding as Vulkan version numbers: + * + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_VULKAN_HARDWARE_VERSION = "android.hardware.vulkan.version"; + /** * Feature for {@link #getSystemAvailableFeatures} and * {@link #hasSystemFeature}: The device includes an accelerometer. @@ -4059,7 +4101,7 @@ public abstract class PackageManager { * * @return A list of {@link InstrumentationInfo} objects containing one * entry for each matching instrumentation. If there are no - * instrumentation available, returns and empty list. + * instrumentation available, returns an empty list. * * @see #GET_META_DATA */