summaryrefslogtreecommitdiffstats
path: root/source/slang/slang.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-04-19 21:02:32 -0700
committerGitHub <noreply@github.com>2024-04-19 21:02:32 -0700
commitbeae3a9d219dac1e4e3da9c357b25d06370388f3 (patch)
treeca4eb2a8e9ca67a130e3894c517114709576af75 /source/slang/slang.cpp
parentf9bcad35562c1f08638e6d3eb397d370d7d2f8f8 (diff)
Add metal downstream compiler + metallib target. (#3990)
* Add metal downstream compiler + metallib target. * Add more comments. * Add missing override.
Diffstat (limited to 'source/slang/slang.cpp')
-rw-r--r--source/slang/slang.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp
index 437f0cd63..971d6056f 100644
--- a/source/slang/slang.cpp
+++ b/source/slang/slang.cpp
@@ -257,11 +257,13 @@ void Session::_initCodeGenTransitionMap()
map.addTransition(CodeGenTarget::HLSL, CodeGenTarget::DXBytecode, PassThroughMode::Fxc);
map.addTransition(CodeGenTarget::HLSL, CodeGenTarget::DXIL, PassThroughMode::Dxc);
map.addTransition(CodeGenTarget::GLSL, CodeGenTarget::SPIRV, PassThroughMode::Glslang);
-
+ map.addTransition(CodeGenTarget::Metal, CodeGenTarget::MetalLib, PassThroughMode::MetalC);
// To assembly
map.addTransition(CodeGenTarget::SPIRV, CodeGenTarget::SPIRVAssembly, PassThroughMode::Glslang);
map.addTransition(CodeGenTarget::DXIL, CodeGenTarget::DXILAssembly, PassThroughMode::Dxc);
map.addTransition(CodeGenTarget::DXBytecode, CodeGenTarget::DXBytecodeAssembly, PassThroughMode::Fxc);
+ map.addTransition(CodeGenTarget::MetalLib, CodeGenTarget::MetalLibAssembly, PassThroughMode::MetalC);
+
}
void Session::addBuiltins(
@@ -930,6 +932,14 @@ Profile getEffectiveProfile(EntryPoint* entryPoint, TargetRequest* target)
targetProfile.setVersion(ProfileVersion::DX_5_1);
}
break;
+ case CodeGenTarget::Metal:
+ case CodeGenTarget::MetalLib:
+ case CodeGenTarget::MetalLibAssembly:
+ if (targetProfile.getFamily() != ProfileFamily::METAL)
+ {
+ targetProfile.setVersion(ProfileVersion::METAL_2_3);
+ }
+ break;
}
auto entryPointProfileVersion = entryPointProfile.getVersion();
@@ -1710,6 +1720,8 @@ CapabilitySet TargetRequest::getTargetCaps()
break;
case CodeGenTarget::Metal:
+ case CodeGenTarget::MetalLib:
+ case CodeGenTarget::MetalLibAssembly:
atoms.add(CapabilityName::metal);
break;