summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_rd/shader_rd.cpp
diff options
context:
space:
mode:
authorClay John <claynjohn@gmail.com>2024-08-20 21:21:32 -0700
committerGitHub <noreply@github.com>2024-08-20 21:21:32 -0700
commit62de80d6138c09cb2c4c66d0b963820f95ad1f21 (patch)
treef1710c694c12f9360e853111a1ca396f285844bb /servers/rendering/renderer_rd/shader_rd.cpp
parent826de7976a6add282c7b14d4be2a7e6d775821d8 (diff)
parent2d0165574de6ac21aa2730215dcab60e4ce88d08 (diff)
downloadredot-engine-62de80d6138c09cb2c4c66d0b963820f95ad1f21.tar.gz
Merge pull request #88199 from stuartcarnie/metal-rdd
Add Metal support for macOS (arm64) and iOS
Diffstat (limited to 'servers/rendering/renderer_rd/shader_rd.cpp')
-rw-r--r--servers/rendering/renderer_rd/shader_rd.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/servers/rendering/renderer_rd/shader_rd.cpp b/servers/rendering/renderer_rd/shader_rd.cpp
index 1c1b8366e5..e6a745d3b4 100644
--- a/servers/rendering/renderer_rd/shader_rd.cpp
+++ b/servers/rendering/renderer_rd/shader_rd.cpp
@@ -191,9 +191,14 @@ void ShaderRD::_build_variant_code(StringBuilder &builder, uint32_t p_variant, c
for (const KeyValue<StringName, CharString> &E : p_version->code_sections) {
builder.append(String("#define ") + String(E.key) + "_CODE_USED\n");
}
-#if defined(MACOS_ENABLED) || defined(IOS_ENABLED)
- builder.append("#define MOLTENVK_USED\n");
+#if (defined(MACOS_ENABLED) || defined(IOS_ENABLED))
+ if (RD::get_singleton()->get_device_capabilities().device_family == RDD::DEVICE_VULKAN) {
+ builder.append("#define MOLTENVK_USED\n");
+ }
+ // Image atomics are supported on Metal 3.1 but no support in MoltenVK or SPIRV-Cross yet.
+ builder.append("#define NO_IMAGE_ATOMICS\n");
#endif
+
builder.append(String("#define RENDER_DRIVER_") + OS::get_singleton()->get_current_rendering_driver_name().to_upper() + "\n");
} break;
case StageTemplate::Chunk::TYPE_MATERIAL_UNIFORMS: {