Fallback to OpenGL 3 if Vulkan isn't available on Wayland

This commit is contained in:
Joaquim Monteiro 2024-09-21 06:35:35 +01:00
parent 621cadcf65
commit c4e4810e93
No known key found for this signature in database
GPG Key ID: D22C1EE6990BF1B3
1 changed files with 20 additions and 12 deletions

View File

@ -1344,20 +1344,28 @@ DisplayServerWayland::DisplayServerWayland(const String &p_rendering_driver, Win
if (rendering_context->initialize() != OK) { if (rendering_context->initialize() != OK) {
memdelete(rendering_context); memdelete(rendering_context);
rendering_context = nullptr; rendering_context = nullptr;
r_error = ERR_CANT_CREATE; bool fallback_to_opengl3 = GLOBAL_GET("rendering/rendering_device/fallback_to_opengl3");
if (fallback_to_opengl3 && rendering_driver != "opengl3") {
WARN_PRINT("Your video card drivers seem not to support the required Vulkan version, switching to OpenGL 3.");
rendering_driver = "opengl3";
OS::get_singleton()->set_current_rendering_method("gl_compatibility");
OS::get_singleton()->set_current_rendering_driver_name(rendering_driver);
} else {
r_error = ERR_CANT_CREATE;
if (p_rendering_driver == "vulkan") { if (p_rendering_driver == "vulkan") {
OS::get_singleton()->alert( OS::get_singleton()->alert(
vformat("Your video card drivers seem not to support the required Vulkan version.\n\n" vformat("Your video card drivers seem not to support the required Vulkan version.\n\n"
"If possible, consider updating your video card drivers or using the OpenGL 3 driver.\n\n" "If possible, consider updating your video card drivers or using the OpenGL 3 driver.\n\n"
"You can enable the OpenGL 3 driver by starting the engine from the\n" "You can enable the OpenGL 3 driver by starting the engine from the\n"
"command line with the command:\n\n \"%s\" --rendering-driver opengl3\n\n" "command line with the command:\n\n \"%s\" --rendering-driver opengl3\n\n"
"If you recently updated your video card drivers, try rebooting.", "If you recently updated your video card drivers, try rebooting.",
executable_name), executable_name),
"Unable to initialize Vulkan video driver"); "Unable to initialize Vulkan video driver");
}
ERR_FAIL_MSG(vformat("Could not initialize %s", rendering_driver));
} }
ERR_FAIL_MSG(vformat("Could not initialize %s", rendering_driver));
} }
driver_found = true; driver_found = true;