summaryrefslogtreecommitdiff
path: root/source/slang/slang-compiler.cpp
diff options
context:
space:
mode:
authorDarren Wihandi <65404740+fairywreath@users.noreply.github.com>2025-02-02 15:27:11 -0500
committerGitHub <noreply@github.com>2025-02-02 12:27:11 -0800
commit0a6828572aa4cc1f0f99993e77c321799eb88cca (patch)
treed18f1950074958ff3276e303425eed15067ea2bc /source/slang/slang-compiler.cpp
parent2949b786a7f04ad31c113b622039fb5b72bc8622 (diff)
Add support for WGSL subgroup operations (#6213)
* initial work * more work * more work on glsl intrinsics * add subgroup broadcast for glsl * wip add wgsl extension tracking * enable tests, enable extensions and added some todos * format and warning fixes * fix wgsl extension tracker --------- Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'source/slang/slang-compiler.cpp')
-rw-r--r--source/slang/slang-compiler.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/source/slang/slang-compiler.cpp b/source/slang/slang-compiler.cpp
index 448534ce8..04ebb753c 100644
--- a/source/slang/slang-compiler.cpp
+++ b/source/slang/slang-compiler.cpp
@@ -28,7 +28,7 @@
// Artifact output
#include "slang-artifact-output-util.h"
#include "slang-emit-cuda.h"
-#include "slang-glsl-extension-tracker.h"
+#include "slang-extension-tracker.h"
#include "slang-lower-to-ir.h"
#include "slang-mangle.h"
#include "slang-parameter-binding.h"
@@ -658,7 +658,7 @@ static void _appendCodeWithPath(
outCodeBuilder << fileContent << "\n";
}
-void trackGLSLTargetCaps(GLSLExtensionTracker* extensionTracker, CapabilitySet const& caps)
+void trackGLSLTargetCaps(ShaderExtensionTracker* extensionTracker, CapabilitySet const& caps)
{
for (auto& conjunctions : caps.getAtomSets())
{
@@ -1037,8 +1037,11 @@ static RefPtr<ExtensionTracker> _newExtensionTracker(CodeGenTarget target)
}
case CodeGenTarget::SPIRV:
case CodeGenTarget::GLSL:
+ case CodeGenTarget::WGSL:
+ case CodeGenTarget::WGSLSPIRV:
+ case CodeGenTarget::WGSLSPIRVAssembly:
{
- return new GLSLExtensionTracker;
+ return new ShaderExtensionTracker;
}
default:
return nullptr;
@@ -1261,7 +1264,7 @@ SlangResult CodeGenContext::emitWithDownstreamForEntryPoints(ComPtr<IArtifact>&
if (auto endToEndReq = isPassThroughEnabled())
{
// If we are pass through, we may need to set extension tracker state.
- if (GLSLExtensionTracker* glslTracker = as<GLSLExtensionTracker>(extensionTracker))
+ if (ShaderExtensionTracker* glslTracker = as<ShaderExtensionTracker>(extensionTracker))
{
trackGLSLTargetCaps(glslTracker, getTargetCaps());
}
@@ -1400,7 +1403,7 @@ SlangResult CodeGenContext::emitWithDownstreamForEntryPoints(ComPtr<IArtifact>&
options.flags |= CompileOptions::Flag::EnableFloat16;
}
}
- else if (GLSLExtensionTracker* glslTracker = as<GLSLExtensionTracker>(extensionTracker))
+ else if (ShaderExtensionTracker* glslTracker = as<ShaderExtensionTracker>(extensionTracker))
{
DownstreamCompileOptions::CapabilityVersion version;
version.kind = DownstreamCompileOptions::CapabilityVersion::Kind::SPIRV;