diff options
| author | Anders Leino <aleino@nvidia.com> | 2024-10-07 20:16:19 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-07 10:16:19 -0700 |
| commit | 509409ef11e3b1abd1d7e1bfb540bc172aa1a817 (patch) | |
| tree | a72725310c63b5224e76a79a4cb9b8ab9984cbc5 /tools | |
| parent | ff51c21ba217fe18bf22fec7bf822cde779b265d (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 'tools')
| -rw-r--r-- | tools/render-test/options.cpp | 1 | ||||
| -rw-r--r-- | tools/render-test/render-test-main.cpp | 6 | ||||
| -rw-r--r-- | tools/slang-test/slang-test-main.cpp | 9 | ||||
| -rw-r--r-- | tools/slang-test/test-context.h | 2 |
4 files changed, 17 insertions, 1 deletions
diff --git a/tools/render-test/options.cpp b/tools/render-test/options.cpp index dc1850d37..07e8b0e2a 100644 --- a/tools/render-test/options.cpp +++ b/tools/render-test/options.cpp @@ -33,6 +33,7 @@ static rhi::DeviceType _toRenderType(Slang::RenderApiType apiType) case RenderApiType::Metal: return rhi::DeviceType::Metal; case RenderApiType::CPU: return rhi::DeviceType::CPU; case RenderApiType::CUDA: return rhi::DeviceType::CUDA; + case RenderApiType::WebGPU: return rhi::DeviceType::WGPU; default: return rhi::DeviceType::Default; } diff --git a/tools/render-test/render-test-main.cpp b/tools/render-test/render-test-main.cpp index 9e1d60155..31c24b028 100644 --- a/tools/render-test/render-test-main.cpp +++ b/tools/render-test/render-test-main.cpp @@ -1192,6 +1192,12 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi nativeLanguage = SLANG_SOURCE_LANGUAGE_CUDA; slangPassThrough = SLANG_PASS_THROUGH_NVRTC; break; + case DeviceType::WGPU: + input.target = SLANG_WGSL; + input.profile = ""; + nativeLanguage = SLANG_SOURCE_LANGUAGE_WGSL; + slangPassThrough = SLANG_PASS_THROUGH_NONE; + break; default: fprintf(stderr, "error: unexpected\n"); diff --git a/tools/slang-test/slang-test-main.cpp b/tools/slang-test/slang-test-main.cpp index a620a7120..d387c815a 100644 --- a/tools/slang-test/slang-test-main.cpp +++ b/tools/slang-test/slang-test-main.cpp @@ -972,6 +972,11 @@ static PassThroughFlags _getPassThroughFlagsForTarget(SlangCompileTarget target) { return 0; } + case SLANG_WGSL_SPIRV: + case SLANG_WGSL_SPIRV_ASM: + { + return PassThroughFlag::Tint; + } case SLANG_DXBC: case SLANG_DXBC_ASM: { @@ -1117,6 +1122,10 @@ static SlangResult _extractRenderTestRequirements(const CommandLine& cmdLine, Te nativeLanguage = SLANG_SOURCE_LANGUAGE_CUDA; passThru = SLANG_PASS_THROUGH_NVRTC; break; + case RenderApiType::WebGPU: + target = SLANG_WGSL; + SLANG_ASSERT(!usePassthru); + break; } SlangSourceLanguage sourceLanguage = nativeLanguage; diff --git a/tools/slang-test/test-context.h b/tools/slang-test/test-context.h index 314ec2803..c1bd82c8c 100644 --- a/tools/slang-test/test-context.h +++ b/tools/slang-test/test-context.h @@ -38,7 +38,7 @@ struct PassThroughFlag NVRTC = 1 << int(SLANG_PASS_THROUGH_NVRTC), LLVM = 1 << int(SLANG_PASS_THROUGH_LLVM), Metal = 1 << int(SLANG_PASS_THROUGH_METAL), - WGSL = 1 << int(SLANG_PASS_THROUGH_WGSL) + Tint = 1 << int(SLANG_PASS_THROUGH_TINT), }; }; |
