summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-compiler.cpp
diff options
context:
space:
mode:
authorAnders Leino <aleino@nvidia.com>2024-10-07 20:16:19 +0300
committerGitHub <noreply@github.com>2024-10-07 10:16:19 -0700
commit509409ef11e3b1abd1d7e1bfb540bc172aa1a817 (patch)
treea72725310c63b5224e76a79a4cb9b8ab9984cbc5 /source/slang/slang-compiler.cpp
parentff51c21ba217fe18bf22fec7bf822cde779b265d (diff)
Add WGSL support for slang-test (#5174)
* Use the assembly description as target when disassembling I believe this is a bugfix. It seems to have worked before because up until the WGSL case, the disassembler has been the same executable as the one producing the binary to be disassembled. * Add Tint as a downstream compiler This closes issue #5104. * Add downstream compiler for Tint. * Tint is wrapped in a shared library, 'slang-tint' available from [1]. * The header file for slang-tint.dll is added in external/slang-tint-headers. * Add some boilerplate for WGSL targets. * Add an entry point test for WGSL. [1] https://github.com/shader-slang/dawn/releases/tag/slang-tint-0 * Add WGSL_SPIRV as supported target for Glslang * Add WebGPU support to slang-test This helps to address issue #5051. * Disable lots of crashing compute tests for 'wgpu' This closes issue #5051. --------- Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'source/slang/slang-compiler.cpp')
-rw-r--r--source/slang/slang-compiler.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/source/slang/slang-compiler.cpp b/source/slang/slang-compiler.cpp
index 1f962d625..5bbc92e97 100644
--- a/source/slang/slang-compiler.cpp
+++ b/source/slang/slang-compiler.cpp
@@ -520,6 +520,10 @@ namespace Slang
{
return SourceLanguage::CUDA;
}
+ case PassThroughMode::Tint:
+ {
+ return SourceLanguage::WGSL;
+ }
case PassThroughMode::SpirvDis:
{
return SourceLanguage::SPIRV;
@@ -555,6 +559,7 @@ namespace Slang
{
return PassThroughMode::None;
}
+ case CodeGenTarget::WGSLSPIRVAssembly:
case CodeGenTarget::SPIRVAssembly:
case CodeGenTarget::SPIRV:
{
@@ -588,7 +593,10 @@ namespace Slang
{
return PassThroughMode::NVRTC;
}
-
+ case CodeGenTarget::WGSLSPIRV:
+ {
+ return PassThroughMode::Tint;
+ }
default: break;
}
@@ -1010,6 +1018,7 @@ namespace Slang
case CodeGenTarget::DXIL: return CodeGenTarget::HLSL;
case CodeGenTarget::SPIRV: return CodeGenTarget::GLSL;
case CodeGenTarget::MetalLib: return CodeGenTarget::Metal;
+ case CodeGenTarget::WGSLSPIRV: return CodeGenTarget::WGSL;
default: break;
}
return CodeGenTarget::Unknown;
@@ -1621,6 +1630,7 @@ namespace Slang
case CodeGenTarget::DXBytecodeAssembly: return CodeGenTarget::DXBytecode;
case CodeGenTarget::DXILAssembly: return CodeGenTarget::DXIL;
case CodeGenTarget::SPIRVAssembly: return CodeGenTarget::SPIRV;
+ case CodeGenTarget::WGSLSPIRVAssembly: return CodeGenTarget::WGSLSPIRV;
default: return CodeGenTarget::None;
}
}
@@ -1635,6 +1645,7 @@ namespace Slang
case CodeGenTarget::DXBytecodeAssembly:
case CodeGenTarget::DXILAssembly:
case CodeGenTarget::MetalLibAssembly:
+ case CodeGenTarget::WGSLSPIRVAssembly:
{
// First compile to an intermediate target for the corresponding binary format.
const CodeGenTarget intermediateTarget = _getIntermediateTarget(target);
@@ -1669,6 +1680,7 @@ namespace Slang
case CodeGenTarget::HostExecutable:
case CodeGenTarget::HostHostCallable:
case CodeGenTarget::HostSharedLibrary:
+ case CodeGenTarget::WGSLSPIRV:
SLANG_RETURN_ON_FAIL(emitWithDownstreamForEntryPoints(outArtifact));
return SLANG_OK;
@@ -1701,6 +1713,7 @@ namespace Slang
case CodeGenTarget::ShaderSharedLibrary:
case CodeGenTarget::HostExecutable:
case CodeGenTarget::HostSharedLibrary:
+ case CodeGenTarget::WGSLSPIRVAssembly:
{
SLANG_RETURN_ON_FAIL(_emitEntryPoints(outArtifact));