diff options
| author | Yong He <yonghe@outlook.com> | 2024-04-19 21:02:32 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-19 21:02:32 -0700 |
| commit | beae3a9d219dac1e4e3da9c357b25d06370388f3 (patch) | |
| tree | ca4eb2a8e9ca67a130e3894c517114709576af75 /source/slang/slang.cpp | |
| parent | f9bcad35562c1f08638e6d3eb397d370d7d2f8f8 (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.cpp | 14 |
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; |
