diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index f10d5de9396..80acb2e5d41 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -2982,8 +2982,8 @@ [b]Note:[/b] This setting is implemented only on Windows, Android, macOS, iOS, and Linux/X11. - If [code]true[/code], the forward renderer will fall back to Vulkan if Direct3D 12 is not supported. - [b]Note:[/b] This setting is implemented only on Windows. + If [code]true[/code], the forward renderer will fall back to Vulkan if Direct3D 12 (on Windows) or Metal (on macOS x86_64) are not supported. + [b]Note:[/b] This setting is implemented only on Windows and macOS. Enable the pipeline cache that is saved to disk if the graphics API supports it. diff --git a/platform/macos/display_server_macos.mm b/platform/macos/display_server_macos.mm index dd351bcad79..bd6d435f83d 100644 --- a/platform/macos/display_server_macos.mm +++ b/platform/macos/display_server_macos.mm @@ -3785,6 +3785,14 @@ DisplayServerMacOS::DisplayServerMacOS(const String &p_rendering_driver, WindowM #if defined(RD_ENABLED) #if defined(VULKAN_ENABLED) +#if defined(__x86_64__) + bool fallback_to_vulkan = GLOBAL_GET("rendering/rendering_device/fallback_to_vulkan"); + // Metal rendering driver not available on Intel. + if (fallback_to_vulkan && rendering_driver == "metal") { + rendering_driver = "vulkan"; + OS::get_singleton()->set_current_rendering_driver_name(rendering_driver); + } +#endif if (rendering_driver == "vulkan") { rendering_context = memnew(RenderingContextDriverVulkanMacOS); }