diff --git a/platform/android/export/export_plugin.cpp b/platform/android/export/export_plugin.cpp index 0f50f725258c..13d721da5db7 100644 --- a/platform/android/export/export_plugin.cpp +++ b/platform/android/export/export_plugin.cpp @@ -856,9 +856,9 @@ bool EditorExportPlatformAndroid::_has_manage_external_storage_permission(const } bool EditorExportPlatformAndroid::_uses_vulkan() { - String current_renderer = GLOBAL_GET("rendering/renderer/rendering_method.mobile"); - bool uses_vulkan = (current_renderer == "forward_plus" || current_renderer == "mobile") && GLOBAL_GET("rendering/rendering_device/driver.android") == "vulkan"; - return uses_vulkan; + String rendering_method = GLOBAL_GET("rendering/renderer/rendering_method.mobile"); + String rendering_driver = GLOBAL_GET("rendering/rendering_device/driver.android"); + return (rendering_method == "forward_plus" || rendering_method == "mobile") && rendering_driver == "vulkan"; } void EditorExportPlatformAndroid::_notification(int p_what) { diff --git a/platform/android/java/lib/src/org/godotengine/godot/Godot.kt b/platform/android/java/lib/src/org/godotengine/godot/Godot.kt index 2e043745c433..550fbe94de71 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/Godot.kt +++ b/platform/android/java/lib/src/org/godotengine/godot/Godot.kt @@ -825,10 +825,11 @@ class Godot(private val context: Context) { * Returns true if `Vulkan` is used for rendering. */ private fun usesVulkan(): Boolean { - var rendererSource = "ProjectSettings" - var renderer = GodotLib.getGlobal("rendering/renderer/rendering_method") + val rendererInfo = GodotLib.getRendererInfo() var renderingDeviceSource = "ProjectSettings" - var renderingDevice = GodotLib.getGlobal("rendering/rendering_device/driver") + var renderingDevice = rendererInfo[0] + var rendererSource = "ProjectSettings" + var renderer = rendererInfo[1] val cmdline = getCommandLine() var index = cmdline.indexOf("--rendering-method") if (index > -1 && cmdline.size > index + 1) { diff --git a/platform/android/java/lib/src/org/godotengine/godot/GodotLib.java b/platform/android/java/lib/src/org/godotengine/godot/GodotLib.java index 9bccf76241b9..d70915a9b37e 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/GodotLib.java +++ b/platform/android/java/lib/src/org/godotengine/godot/GodotLib.java @@ -189,6 +189,15 @@ public static native boolean initialize(Activity activity, */ public static native String getGlobal(String p_key); + /** + * Used to get info about the current rendering system. + * + * @return A String array with two elements: + * [0] Rendering driver name. + * [1] Rendering method. + */ + public static native String[] getRendererInfo(); + /** * Used to access Godot's editor settings. * @param settingKey Setting key diff --git a/platform/android/java_godot_lib_jni.cpp b/platform/android/java_godot_lib_jni.cpp index b56a9dbd2a3c..054c809c6e3f 100644 --- a/platform/android/java_godot_lib_jni.cpp +++ b/platform/android/java_godot_lib_jni.cpp @@ -474,6 +474,17 @@ JNIEXPORT jstring JNICALL Java_org_godotengine_godot_GodotLib_getGlobal(JNIEnv * return env->NewStringUTF(setting_value.utf8().get_data()); } +JNIEXPORT jobjectArray JNICALL Java_org_godotengine_godot_GodotLib_getRendererInfo(JNIEnv *env, jclass clazz) { + String rendering_driver = RenderingServer::get_singleton()->get_current_rendering_driver_name(); + String rendering_method = RenderingServer::get_singleton()->get_current_rendering_method(); + + jobjectArray result = env->NewObjectArray(2, env->FindClass("java/lang/String"), nullptr); + env->SetObjectArrayElement(result, 0, env->NewStringUTF(rendering_driver.utf8().get_data())); + env->SetObjectArrayElement(result, 1, env->NewStringUTF(rendering_method.utf8().get_data())); + + return result; +} + JNIEXPORT jstring JNICALL Java_org_godotengine_godot_GodotLib_getEditorSetting(JNIEnv *env, jclass clazz, jstring p_setting_key) { String editor_setting_value = ""; #ifdef TOOLS_ENABLED diff --git a/platform/android/java_godot_lib_jni.h b/platform/android/java_godot_lib_jni.h index c5d68b1ac201..22fd9ae560f5 100644 --- a/platform/android/java_godot_lib_jni.h +++ b/platform/android/java_godot_lib_jni.h @@ -61,6 +61,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_gyroscope(JNIEnv *env JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_focusin(JNIEnv *env, jclass clazz); JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_focusout(JNIEnv *env, jclass clazz); JNIEXPORT jstring JNICALL Java_org_godotengine_godot_GodotLib_getGlobal(JNIEnv *env, jclass clazz, jstring path); +JNIEXPORT jobjectArray JNICALL Java_org_godotengine_godot_GodotLib_getRendererInfo(JNIEnv *env, jclass clazz); JNIEXPORT jstring JNICALL Java_org_godotengine_godot_GodotLib_getEditorSetting(JNIEnv *env, jclass clazz, jstring p_setting_key); JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_setEditorSetting(JNIEnv *env, jclass clazz, jstring p_key, jobject p_data); JNIEXPORT jobject JNICALL Java_org_godotengine_godot_GodotLib_getEditorProjectMetadata(JNIEnv *env, jclass clazz, jstring p_section, jstring p_key, jobject p_default_value); diff --git a/platform/ios/export/export_plugin.cpp b/platform/ios/export/export_plugin.cpp index f253e11ec548..84bf722d14f4 100644 --- a/platform/ios/export/export_plugin.cpp +++ b/platform/ios/export/export_plugin.cpp @@ -2540,7 +2540,9 @@ bool EditorExportPlatformIOS::has_valid_export_configuration(const Refget("application/min_ios_version").operator String().to_float(); if (version < 14.0) { err += TTR("Metal renderer require iOS 14+.") + "\n";