|
@@ -2031,40 +2031,13 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
|
|
Logger::set_flush_stdout_on_print(GLOBAL_GET("application/run/flush_stdout_on_print"));
|
|
|
|
|
|
{
|
|
|
- String driver_hints = "";
|
|
|
- String driver_hints_with_d3d12 = "";
|
|
|
- String driver_hints_with_metal = "";
|
|
|
-
|
|
|
- {
|
|
|
- Vector<String> driver_hints_arr;
|
|
|
-#ifdef VULKAN_ENABLED
|
|
|
- driver_hints_arr.push_back("vulkan");
|
|
|
-#endif
|
|
|
- driver_hints = String(",").join(driver_hints_arr);
|
|
|
-
|
|
|
-#ifdef D3D12_ENABLED
|
|
|
- driver_hints_arr.push_back("d3d12");
|
|
|
-#endif
|
|
|
- driver_hints_with_d3d12 = String(",").join(driver_hints_arr);
|
|
|
-
|
|
|
-#ifdef METAL_ENABLED
|
|
|
- // Make metal the preferred and default driver.
|
|
|
- driver_hints_arr.insert(0, "metal");
|
|
|
-#endif
|
|
|
- driver_hints_with_metal = String(",").join(driver_hints_arr);
|
|
|
- }
|
|
|
-
|
|
|
- String default_driver = driver_hints.get_slice(",", 0);
|
|
|
- String default_driver_with_d3d12 = driver_hints_with_d3d12.get_slice(",", 0);
|
|
|
- String default_driver_with_metal = driver_hints_with_metal.get_slice(",", 0);
|
|
|
-
|
|
|
// For now everything defaults to vulkan when available. This can change in future updates.
|
|
|
- GLOBAL_DEF_RST_NOVAL("rendering/rendering_device/driver", default_driver);
|
|
|
- GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.windows", PROPERTY_HINT_ENUM, driver_hints_with_d3d12), default_driver_with_d3d12);
|
|
|
- GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.linuxbsd", PROPERTY_HINT_ENUM, driver_hints), default_driver);
|
|
|
- GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.android", PROPERTY_HINT_ENUM, driver_hints), default_driver);
|
|
|
- GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.ios", PROPERTY_HINT_ENUM, driver_hints_with_metal), default_driver_with_metal);
|
|
|
- GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.macos", PROPERTY_HINT_ENUM, driver_hints_with_metal), default_driver_with_metal);
|
|
|
+ GLOBAL_DEF_RST("rendering/rendering_device/driver", "auto");
|
|
|
+ GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.windows", PROPERTY_HINT_ENUM, "auto,vulkan,d3d12"), "auto");
|
|
|
+ GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.linuxbsd", PROPERTY_HINT_ENUM, "auto,vulkan"), "auto");
|
|
|
+ GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.android", PROPERTY_HINT_ENUM, "auto,vulkan"), "auto");
|
|
|
+ GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.ios", PROPERTY_HINT_ENUM, "auto,metal,vulkan"), "auto");
|
|
|
+ GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/rendering_device/driver.macos", PROPERTY_HINT_ENUM, "auto,metal,vulkan"), "auto");
|
|
|
|
|
|
GLOBAL_DEF_RST("rendering/rendering_device/fallback_to_vulkan", true);
|
|
|
GLOBAL_DEF_RST("rendering/rendering_device/fallback_to_d3d12", true);
|
|
@@ -2072,24 +2045,13 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
|
|
}
|
|
|
|
|
|
{
|
|
|
- String driver_hints = "";
|
|
|
- String driver_hints_angle = "";
|
|
|
- String driver_hints_egl = "";
|
|
|
-#ifdef GLES3_ENABLED
|
|
|
- driver_hints = "opengl3";
|
|
|
- driver_hints_angle = "opengl3,opengl3_angle"; // macOS, Windows.
|
|
|
- driver_hints_egl = "opengl3,opengl3_es"; // Linux.
|
|
|
-#endif
|
|
|
-
|
|
|
- String default_driver = driver_hints.get_slice(",", 0);
|
|
|
-
|
|
|
- GLOBAL_DEF_RST_NOVAL("rendering/gl_compatibility/driver", default_driver);
|
|
|
- GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.windows", PROPERTY_HINT_ENUM, driver_hints_angle), default_driver);
|
|
|
- GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.linuxbsd", PROPERTY_HINT_ENUM, driver_hints_egl), default_driver);
|
|
|
- GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.web", PROPERTY_HINT_ENUM, driver_hints), default_driver);
|
|
|
- GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.android", PROPERTY_HINT_ENUM, driver_hints), default_driver);
|
|
|
- GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.ios", PROPERTY_HINT_ENUM, driver_hints), default_driver);
|
|
|
- GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.macos", PROPERTY_HINT_ENUM, driver_hints_angle), default_driver);
|
|
|
+ GLOBAL_DEF_RST("rendering/gl_compatibility/driver", "auto");
|
|
|
+ GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.windows", PROPERTY_HINT_ENUM, "auto,opengl3,opengl3_angle"), "auto");
|
|
|
+ GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.linuxbsd", PROPERTY_HINT_ENUM, "auto,opengl3,opengl3_es"), "auto");
|
|
|
+ GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.web", PROPERTY_HINT_ENUM, "auto,opengl3"), "auto");
|
|
|
+ GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.android", PROPERTY_HINT_ENUM, "auto,opengl3"), "auto");
|
|
|
+ GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.ios", PROPERTY_HINT_ENUM, "auto,opengl3"), "auto");
|
|
|
+ GLOBAL_DEF_RST(PropertyInfo(Variant::STRING, "rendering/gl_compatibility/driver.macos", PROPERTY_HINT_ENUM, "auto,opengl3,opengl3_angle"), "auto");
|
|
|
|
|
|
GLOBAL_DEF_RST("rendering/gl_compatibility/nvidia_disable_threaded_optimization", true);
|
|
|
GLOBAL_DEF_RST("rendering/gl_compatibility/fallback_to_angle", true);
|
|
@@ -2423,6 +2385,30 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
|
|
// always convert to lower case for consistency in the code
|
|
|
rendering_driver = rendering_driver.to_lower();
|
|
|
|
|
|
+ if (rendering_method == "gl_compatibility") {
|
|
|
+#ifdef GLES3_ENABLED
|
|
|
+ if (rendering_driver == "auto") {
|
|
|
+ rendering_driver = "opengl3";
|
|
|
+ }
|
|
|
+#endif
|
|
|
+ } else {
|
|
|
+#ifdef METAL_ENABLED
|
|
|
+ if (rendering_driver == "auto") {
|
|
|
+ rendering_driver = "metal";
|
|
|
+ }
|
|
|
+#endif
|
|
|
+#ifdef VULKAN_ENABLED
|
|
|
+ if (rendering_driver == "auto") {
|
|
|
+ rendering_driver = "vulkan";
|
|
|
+ }
|
|
|
+#endif
|
|
|
+#ifdef D3D12_ENABLED
|
|
|
+ if (rendering_driver == "auto") {
|
|
|
+ rendering_driver = "d3d12";
|
|
|
+ }
|
|
|
+#endif
|
|
|
+ }
|
|
|
+
|
|
|
OS::get_singleton()->set_current_rendering_driver_name(rendering_driver);
|
|
|
OS::get_singleton()->set_current_rendering_method(rendering_method);
|
|
|
|