summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid A Roberts <d@vidr.cc>2025-02-11 10:39:03 +1000
committerGitHub <noreply@github.com>2025-02-10 16:39:03 -0800
commit94c458243cf95567ec8f152d07a8754dcbfa9c93 (patch)
tree7e25643cc4cbb9f5a7b3ad6edefc364791afb340
parent67dfc9b3e62d859f62d2aa5c600fea7e8d6ae240 (diff)
Add WGSL to list of formats supporting multiple entry points (#6324)
* Add WGSL to list of formats supporting multiple entry points * Add a test for generating multiple WGSL entrypoints
-rw-r--r--source/slang/slang-options.cpp1
-rw-r--r--tests/wgsl/multiple-entrypoints.slang28
2 files changed, 29 insertions, 0 deletions
diff --git a/source/slang/slang-options.cpp b/source/slang/slang-options.cpp
index 87c62f7ee..ed7e79aa3 100644
--- a/source/slang/slang-options.cpp
+++ b/source/slang/slang-options.cpp
@@ -3509,6 +3509,7 @@ SlangResult OptionsParser::_parse(int argc, char const* const* argv)
case CodeGenTarget::MetalLib:
case CodeGenTarget::MetalLibAssembly:
case CodeGenTarget::Metal:
+ case CodeGenTarget::WGSL:
rawOutput.isWholeProgram = true;
break;
case CodeGenTarget::SPIRV:
diff --git a/tests/wgsl/multiple-entrypoints.slang b/tests/wgsl/multiple-entrypoints.slang
new file mode 100644
index 000000000..5e10f21d6
--- /dev/null
+++ b/tests/wgsl/multiple-entrypoints.slang
@@ -0,0 +1,28 @@
+//TEST:SIMPLE(filecheck=WGSL): -target wgsl
+
+//WGSL-DAG: @builtin(global_invocation_id)
+//WGSL-DAG: @compute
+
+[shader("compute")]
+void main_compute(uint3 dtid : SV_DispatchThreadID)
+{
+ // Empty compute shader
+}
+
+//WGSL-DAG: @builtin(front_facing)
+//WGSL-DAG: @fragment
+
+[shader("fragment")]
+float4 main_fragment(bool isFront : SV_IsFrontFace) : SV_Target
+{
+ return float4(1,1,1,1);
+}
+
+//WGSL-DAG: @builtin(vertex_index)
+//WGSL-DAG: @vertex
+
+[shader("vertex")]
+float4 main_vertex(uint vertexID : SV_VertexID) : SV_Position
+{
+ return float4(1,1,1,1);
+}