summaryrefslogtreecommitdiffstats
path: root/platform
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-10-31 20:14:42 +0100
committerRémi Verschelde <rverschelde@gmail.com>2023-10-31 20:14:42 +0100
commit799d30c306ddad475b8c6cb65625fe3bae47d91c (patch)
tree98bf7225ed009b9c4ce360f7d42883c4106dc2b7 /platform
parent2bc35308fc796bdf18e8eb6b823dfbf2125db826 (diff)
parent590c353707ddc4179520dcd67ba014e7c3211759 (diff)
downloadredot-engine-799d30c306ddad475b8c6cb65625fe3bae47d91c.tar.gz
Merge pull request #83753 from bruvzg/mac_angle_fb
[macOS] Fallback to native OpenGL renderer if ANGLE initialization failed.
Diffstat (limited to 'platform')
-rw-r--r--platform/macos/display_server_macos.mm25
1 files changed, 16 insertions, 9 deletions
diff --git a/platform/macos/display_server_macos.mm b/platform/macos/display_server_macos.mm
index 53db9a5abf..09df60bf06 100644
--- a/platform/macos/display_server_macos.mm
+++ b/platform/macos/display_server_macos.mm
@@ -4499,6 +4499,22 @@ DisplayServerMacOS::DisplayServerMacOS(const String &p_rendering_driver, WindowM
rendering_driver = p_rendering_driver;
#if defined(GLES3_ENABLED)
+ if (rendering_driver == "opengl3_angle") {
+ gl_manager_angle = memnew(GLManagerANGLE_MacOS);
+ if (gl_manager_angle->initialize() != OK) {
+ memdelete(gl_manager_angle);
+ gl_manager_angle = nullptr;
+ bool fallback = GLOBAL_GET("rendering/gl_compatibility/fallback_to_native");
+ if (fallback) {
+ WARN_PRINT("Your video card drivers seem not to support the required Metal version, switching to native OpenGL.");
+ rendering_driver = "opengl3";
+ } else {
+ ERR_FAIL_MSG("Could not initialize OpenGL.");
+ return;
+ }
+ }
+ }
+
if (rendering_driver == "opengl3") {
gl_manager_legacy = memnew(GLManagerLegacy_MacOS);
if (gl_manager_legacy->initialize() != OK) {
@@ -4509,15 +4525,6 @@ DisplayServerMacOS::DisplayServerMacOS(const String &p_rendering_driver, WindowM
return;
}
}
- if (rendering_driver == "opengl3_angle") {
- gl_manager_angle = memnew(GLManagerANGLE_MacOS);
- if (gl_manager_angle->initialize() != OK) {
- memdelete(gl_manager_angle);
- gl_manager_angle = nullptr;
- r_error = ERR_UNAVAILABLE;
- ERR_FAIL_MSG("Could not initialize OpenGL.");
- }
- }
#endif
#if defined(VULKAN_ENABLED)
if (rendering_driver == "vulkan") {