diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-10-31 20:14:42 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-10-31 20:14:42 +0100 |
commit | 799d30c306ddad475b8c6cb65625fe3bae47d91c (patch) | |
tree | 98bf7225ed009b9c4ce360f7d42883c4106dc2b7 /platform | |
parent | 2bc35308fc796bdf18e8eb6b823dfbf2125db826 (diff) | |
parent | 590c353707ddc4179520dcd67ba014e7c3211759 (diff) | |
download | redot-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.mm | 25 |
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") { |