1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-05 12:10:55 +00:00

Merge pull request #102341 from SheepYhangCN/rendering-driver-fallback-moltenvk

Implement Fallback to Vulkan for MoltenVK
This commit is contained in:
Thaddeus Crews
2025-02-10 12:21:33 -06:00
2 changed files with 10 additions and 2 deletions

View File

@@ -2982,8 +2982,8 @@
[b]Note:[/b] This setting is implemented only on Windows, Android, macOS, iOS, and Linux/X11. [b]Note:[/b] This setting is implemented only on Windows, Android, macOS, iOS, and Linux/X11.
</member> </member>
<member name="rendering/rendering_device/fallback_to_vulkan" type="bool" setter="" getter="" default="true"> <member name="rendering/rendering_device/fallback_to_vulkan" type="bool" setter="" getter="" default="true">
If [code]true[/code], the forward renderer will fall back to Vulkan if Direct3D 12 is not supported. 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. [b]Note:[/b] This setting is implemented only on Windows and macOS.
</member> </member>
<member name="rendering/rendering_device/pipeline_cache/enable" type="bool" setter="" getter="" default="true"> <member name="rendering/rendering_device/pipeline_cache/enable" type="bool" setter="" getter="" default="true">
Enable the pipeline cache that is saved to disk if the graphics API supports it. Enable the pipeline cache that is saved to disk if the graphics API supports it.

View File

@@ -3785,6 +3785,14 @@ DisplayServerMacOS::DisplayServerMacOS(const String &p_rendering_driver, WindowM
#if defined(RD_ENABLED) #if defined(RD_ENABLED)
#if defined(VULKAN_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") { if (rendering_driver == "vulkan") {
rendering_context = memnew(RenderingContextDriverVulkanMacOS); rendering_context = memnew(RenderingContextDriverVulkanMacOS);
} }