From 3d62c026f6b585f9467c7d7c550e5afa9ea3f587 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pa=CC=84vels=20Nadtoc=CC=8Cajevs?= <7645683+bruvzg@users.noreply.github.com> Date: Thu, 12 Mar 2026 15:01:37 +0200 Subject: [PATCH] [macOS] Force ANGLE (GL over Metal) when running in VM. --- platform/macos/display_server_macos.mm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/platform/macos/display_server_macos.mm b/platform/macos/display_server_macos.mm index 134e006f694..e99b7004fab 100644 --- a/platform/macos/display_server_macos.mm +++ b/platform/macos/display_server_macos.mm @@ -3785,11 +3785,19 @@ DisplayServerMacOS::DisplayServerMacOS(const String &p_rendering_driver, Display #endif #if defined(GLES3_ENABLED) + if (rendering_driver == "opengl3" && OS::get_singleton()->get_processor_name().contains("Virtual")) { + WARN_PRINT("Virtual Machine detected, switching to ANGLE."); + rendering_driver = "opengl3_angle"; + } if (rendering_driver == "opengl3_angle") { gl_manager_angle = memnew(GLManagerANGLE_MacOS); if (gl_manager_angle->initialize() != OK || gl_manager_angle->open_display(nullptr) != OK) { memdelete(gl_manager_angle); gl_manager_angle = nullptr; + if (OS::get_singleton()->get_processor_name().contains("Virtual")) { + r_error = ERR_UNAVAILABLE; + ERR_FAIL_MSG("Could not initialize ANGLE OpenGL."); + } bool fallback = GLOBAL_GET("rendering/gl_compatibility/fallback_to_native"); if (fallback) { #ifdef EGL_STATIC