|
@@ -6160,20 +6160,28 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode
|
|
|
if (rendering_context->initialize() != OK) {
|
|
|
memdelete(rendering_context);
|
|
|
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") {
|
|
|
+ OS::get_singleton()->alert(
|
|
|
+ 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"
|
|
|
+ "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"
|
|
|
+ "If you recently updated your video card drivers, try rebooting.",
|
|
|
+ executable_name),
|
|
|
+ "Unable to initialize Vulkan video driver");
|
|
|
+ }
|
|
|
|
|
|
- if (p_rendering_driver == "vulkan") {
|
|
|
- OS::get_singleton()->alert(
|
|
|
- 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"
|
|
|
- "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"
|
|
|
- "If you recently updated your video card drivers, try rebooting.",
|
|
|
- executable_name),
|
|
|
- "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;
|
|
|
}
|