|
@@ -3623,6 +3623,39 @@ DisplayServerMacOS::DisplayServerMacOS(const String &p_rendering_driver, WindowM
|
|
//TODO - do Vulkan and OpenGL support checks, driver selection and fallback
|
|
//TODO - do Vulkan and OpenGL support checks, driver selection and fallback
|
|
rendering_driver = p_rendering_driver;
|
|
rendering_driver = p_rendering_driver;
|
|
|
|
|
|
|
|
+#if defined(RD_ENABLED)
|
|
|
|
+#if defined(VULKAN_ENABLED)
|
|
|
|
+ if (rendering_driver == "vulkan") {
|
|
|
|
+ rendering_context = memnew(RenderingContextDriverVulkanMacOS);
|
|
|
|
+ }
|
|
|
|
+#endif
|
|
|
|
+#if defined(METAL_ENABLED)
|
|
|
|
+ if (rendering_driver == "metal") {
|
|
|
|
+ rendering_context = memnew(RenderingContextDriverMetal);
|
|
|
|
+ }
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+ if (rendering_context) {
|
|
|
|
+ if (rendering_context->initialize() != OK) {
|
|
|
|
+ memdelete(rendering_context);
|
|
|
|
+ rendering_context = nullptr;
|
|
|
|
+#if defined(GLES3_ENABLED)
|
|
|
|
+ bool fallback_to_opengl3 = GLOBAL_GET("rendering/rendering_device/fallback_to_opengl3");
|
|
|
|
+ if (fallback_to_opengl3 && rendering_driver != "opengl3") {
|
|
|
|
+ WARN_PRINT("Your device seem not to support MoltenVK or Metal, 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
|
|
|
|
+#endif
|
|
|
|
+ {
|
|
|
|
+ r_error = ERR_CANT_CREATE;
|
|
|
|
+ ERR_FAIL_MSG("Could not initialize " + rendering_driver);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+#endif
|
|
|
|
+
|
|
#if defined(GLES3_ENABLED)
|
|
#if defined(GLES3_ENABLED)
|
|
if (rendering_driver == "opengl3_angle") {
|
|
if (rendering_driver == "opengl3_angle") {
|
|
gl_manager_angle = memnew(GLManagerANGLE_MacOS);
|
|
gl_manager_angle = memnew(GLManagerANGLE_MacOS);
|
|
@@ -3655,35 +3688,6 @@ DisplayServerMacOS::DisplayServerMacOS(const String &p_rendering_driver, WindowM
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
-#if defined(RD_ENABLED)
|
|
|
|
-#if defined(VULKAN_ENABLED)
|
|
|
|
- if (rendering_driver == "vulkan") {
|
|
|
|
- rendering_context = memnew(RenderingContextDriverVulkanMacOS);
|
|
|
|
- }
|
|
|
|
-#endif
|
|
|
|
-#if defined(METAL_ENABLED)
|
|
|
|
- if (rendering_driver == "metal") {
|
|
|
|
- rendering_context = memnew(RenderingContextDriverMetal);
|
|
|
|
- }
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
- if (rendering_context) {
|
|
|
|
- if (rendering_context->initialize() != OK) {
|
|
|
|
- memdelete(rendering_context);
|
|
|
|
- rendering_context = nullptr;
|
|
|
|
- bool fallback_to_opengl3 = GLOBAL_GET("rendering/rendering_device/fallback_to_opengl3");
|
|
|
|
- if (fallback_to_opengl3 && rendering_driver != "opengl3") {
|
|
|
|
- WARN_PRINT("Your device seem not to support MoltenVK or Metal, 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;
|
|
|
|
- ERR_FAIL_MSG("Could not initialize " + rendering_driver);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-#endif
|
|
|
|
|
|
|
|
Point2i window_position;
|
|
Point2i window_position;
|
|
if (p_position != nullptr) {
|
|
if (p_position != nullptr) {
|