1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-05 12:10:55 +00:00

Improve logic to detect whether vulkan is used for rendering

This commit is contained in:
Fredia Huya-Kouadio
2023-02-06 10:09:25 -08:00
parent 034fd15b8a
commit 21e18c1c41
5 changed files with 27 additions and 15 deletions

View File

@@ -275,16 +275,16 @@ public class Godot extends Fragment implements SensorEventListener, IDownloaderC
return false;
}
final String renderer = GodotLib.getGlobal("rendering/renderer/rendering_method");
if (renderer.equals("gl_compatibility")) {
mRenderView = new GodotGLRenderView(activity, this, xrMode, use_debug_opengl);
} else {
if (usesVulkan()) {
if (!meetsVulkanRequirements(activity.getPackageManager())) {
Log.e(TAG, "Missing requirements for vulkan support! Aborting...");
alert(R.string.error_missing_vulkan_requirements_message, R.string.text_error_title, this::forceQuit);
return false;
}
mRenderView = new GodotVulkanRenderView(activity, this);
} else {
// Fallback to openGl
mRenderView = new GodotGLRenderView(activity, this, xrMode, use_debug_opengl);
}
View view = mRenderView.getView();
@@ -322,6 +322,15 @@ public class Godot extends Fragment implements SensorEventListener, IDownloaderC
return true;
}
/**
* Returns true if `Vulkan` is used for rendering.
*/
private boolean usesVulkan() {
final String renderer = GodotLib.getGlobal("rendering/renderer/rendering_method");
final String renderingDevice = GodotLib.getGlobal("rendering/rendering_device/driver");
return ("forward_plus".equals(renderer) || "mobile".equals(renderer)) && "vulkan".equals(renderingDevice);
}
/**
* Returns true if the device meets the base requirements for Vulkan support, false otherwise.
*/