summaryrefslogtreecommitdiffstats
path: root/platform/android
diff options
context:
space:
mode:
authorYuri Sizov <11782833+YuriSizov@users.noreply.github.com>2023-03-16 13:08:09 +0100
committerGitHub <noreply@github.com>2023-03-16 13:08:09 +0100
commit2dc16f3c5889aa8e1bb12bf215d38aed82b3a733 (patch)
tree022cca8d27a25a245b5818a793cc5905319d58e0 /platform/android
parent98d95f3a0ee74aef3d48449051f314606c3c1015 (diff)
parent306a2ad3865198335974c319f27baa5c4f443186 (diff)
downloadredot-engine-2dc16f3c5889aa8e1bb12bf215d38aed82b3a733.tar.gz
Merge pull request #74066 from m4gr3d/add_vulkan_version_filter_main
Add feature check to require min Vulkan api version 1.0 on Android
Diffstat (limited to 'platform/android')
-rw-r--r--platform/android/export/export_plugin.cpp5
-rw-r--r--platform/android/export/gradle_export_util.cpp1
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/Godot.java15
3 files changed, 19 insertions, 2 deletions
diff --git a/platform/android/export/export_plugin.cpp b/platform/android/export/export_plugin.cpp
index 641258a26c..3153b9ee24 100644
--- a/platform/android/export/export_plugin.cpp
+++ b/platform/android/export/export_plugin.cpp
@@ -1068,6 +1068,11 @@ void EditorExportPlatformAndroid::_fix_manifest(const Ref<EditorExportPreset> &p
feature_names.push_back("android.hardware.vulkan.level");
feature_required_list.push_back(true);
feature_versions.push_back(1);
+
+ // Require vulkan version 1.0
+ feature_names.push_back("android.hardware.vulkan.version");
+ feature_required_list.push_back(true);
+ feature_versions.push_back(0x400003); // Encoded value for api version 1.0
}
if (feature_names.size() > 0) {
diff --git a/platform/android/export/gradle_export_util.cpp b/platform/android/export/gradle_export_util.cpp
index 61f8c5574b..23ace18f4f 100644
--- a/platform/android/export/gradle_export_util.cpp
+++ b/platform/android/export/gradle_export_util.cpp
@@ -276,6 +276,7 @@ String _get_xr_features_tag(const Ref<EditorExportPreset> &p_preset, bool p_uses
if (p_uses_vulkan) {
manifest_xr_features += " <uses-feature tools:node=\"replace\" android:name=\"android.hardware.vulkan.level\" android:required=\"true\" android:version=\"1\" />\n";
+ manifest_xr_features += " <uses-feature tools:node=\"replace\" android:name=\"android.hardware.vulkan.version\" android:required=\"true\" android:version=\"0x400003\" />\n";
}
return manifest_xr_features;
}
diff --git a/platform/android/java/lib/src/org/godotengine/godot/Godot.java b/platform/android/java/lib/src/org/godotengine/godot/Godot.java
index 9b65a52b70..e111bd18ca 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/Godot.java
+++ b/platform/android/java/lib/src/org/godotengine/godot/Godot.java
@@ -282,7 +282,8 @@ public class Godot extends Fragment implements SensorEventListener, IDownloaderC
if (usesVulkan()) {
if (!meetsVulkanRequirements(activity.getPackageManager())) {
- Log.w(TAG, "Missing requirements for vulkan support!");
+ alert(R.string.error_missing_vulkan_requirements_message, R.string.text_error_title, this::forceQuit);
+ return false;
}
mRenderView = new GodotVulkanRenderView(activity, this);
} else {
@@ -392,7 +393,17 @@ public class Godot extends Fragment implements SensorEventListener, IDownloaderC
return false;
}
- return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && packageManager.hasSystemFeature(PackageManager.FEATURE_VULKAN_HARDWARE_LEVEL, 1);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ if (!packageManager.hasSystemFeature(PackageManager.FEATURE_VULKAN_HARDWARE_LEVEL, 1)) {
+ // Optional requirements.. log as warning if missing
+ Log.w(TAG, "The vulkan hardware level does not meet the minimum requirement: 1");
+ }
+
+ // Check for api version 1.0
+ return packageManager.hasSystemFeature(PackageManager.FEATURE_VULKAN_HARDWARE_VERSION, 0x400003);
+ }
+
+ return false;
}
public void setKeepScreenOn(final boolean p_enabled) {