From beae3a9d219dac1e4e3da9c357b25d06370388f3 Mon Sep 17 00:00:00 2001 From: Yong He Date: Fri, 19 Apr 2024 21:02:32 -0700 Subject: Add metal downstream compiler + metallib target. (#3990) * Add metal downstream compiler + metallib target. * Add more comments. * Add missing override. --- source/slang/slang.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'source/slang/slang.cpp') 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; -- cgit v1.2.3