You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-08 12:40:44 +00:00
Android: Fix export and runtime logic to check if using Vulkan
Also fix iOS export logic that would force a min target of iOS 14.0 (for Metal) even when targeting the Compatibility renderer. Co-authored-by: Pāvels Nadtočajevs <7645683+bruvzg@users.noreply.github.com>
This commit is contained in:
committed by
Rémi Verschelde
parent
b77423370a
commit
28d1dccf63
@@ -856,9 +856,9 @@ bool EditorExportPlatformAndroid::_has_manage_external_storage_permission(const
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool EditorExportPlatformAndroid::_uses_vulkan() {
|
bool EditorExportPlatformAndroid::_uses_vulkan() {
|
||||||
String current_renderer = GLOBAL_GET("rendering/renderer/rendering_method.mobile");
|
String rendering_method = 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";
|
String rendering_driver = GLOBAL_GET("rendering/rendering_device/driver.android");
|
||||||
return uses_vulkan;
|
return (rendering_method == "forward_plus" || rendering_method == "mobile") && rendering_driver == "vulkan";
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditorExportPlatformAndroid::_notification(int p_what) {
|
void EditorExportPlatformAndroid::_notification(int p_what) {
|
||||||
|
|||||||
@@ -825,10 +825,11 @@ class Godot(private val context: Context) {
|
|||||||
* Returns true if `Vulkan` is used for rendering.
|
* Returns true if `Vulkan` is used for rendering.
|
||||||
*/
|
*/
|
||||||
private fun usesVulkan(): Boolean {
|
private fun usesVulkan(): Boolean {
|
||||||
var rendererSource = "ProjectSettings"
|
val rendererInfo = GodotLib.getRendererInfo()
|
||||||
var renderer = GodotLib.getGlobal("rendering/renderer/rendering_method")
|
|
||||||
var renderingDeviceSource = "ProjectSettings"
|
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()
|
val cmdline = getCommandLine()
|
||||||
var index = cmdline.indexOf("--rendering-method")
|
var index = cmdline.indexOf("--rendering-method")
|
||||||
if (index > -1 && cmdline.size > index + 1) {
|
if (index > -1 && cmdline.size > index + 1) {
|
||||||
|
|||||||
@@ -189,6 +189,15 @@ public class GodotLib {
|
|||||||
*/
|
*/
|
||||||
public static native String getGlobal(String p_key);
|
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.
|
* Used to access Godot's editor settings.
|
||||||
* @param settingKey Setting key
|
* @param settingKey Setting key
|
||||||
|
|||||||
@@ -474,6 +474,17 @@ JNIEXPORT jstring JNICALL Java_org_godotengine_godot_GodotLib_getGlobal(JNIEnv *
|
|||||||
return env->NewStringUTF(setting_value.utf8().get_data());
|
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) {
|
JNIEXPORT jstring JNICALL Java_org_godotengine_godot_GodotLib_getEditorSetting(JNIEnv *env, jclass clazz, jstring p_setting_key) {
|
||||||
String editor_setting_value = "";
|
String editor_setting_value = "";
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
|
|||||||
@@ -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_focusin(JNIEnv *env, jclass clazz);
|
||||||
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_focusout(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 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 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 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);
|
JNIEXPORT jobject JNICALL Java_org_godotengine_godot_GodotLib_getEditorProjectMetadata(JNIEnv *env, jclass clazz, jstring p_section, jstring p_key, jobject p_default_value);
|
||||||
|
|||||||
@@ -2540,7 +2540,9 @@ bool EditorExportPlatformIOS::has_valid_export_configuration(const Ref<EditorExp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GLOBAL_GET("rendering/rendering_device/driver.ios") == "metal") {
|
String rendering_method = GLOBAL_GET("rendering/renderer/rendering_method.mobile");
|
||||||
|
String rendering_driver = GLOBAL_GET("rendering/rendering_device/driver.ios");
|
||||||
|
if ((rendering_method == "forward_plus" || rendering_method == "mobile") && rendering_driver == "metal") {
|
||||||
float version = p_preset->get("application/min_ios_version").operator String().to_float();
|
float version = p_preset->get("application/min_ios_version").operator String().to_float();
|
||||||
if (version < 14.0) {
|
if (version < 14.0) {
|
||||||
err += TTR("Metal renderer require iOS 14+.") + "\n";
|
err += TTR("Metal renderer require iOS 14+.") + "\n";
|
||||||
|
|||||||
Reference in New Issue
Block a user