From bae87afb20f95f9f27c64c4955bbc4464c576509 Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 6 Feb 2025 22:02:43 -0800 Subject: Support stage_switch. (#6311) * Support stage_switch. * Update proposal status. * Fix gl_InstanceID. * Fix. --- tests/language-feature/stage-switch.slang | 38 +++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 tests/language-feature/stage-switch.slang (limited to 'tests/language-feature') diff --git a/tests/language-feature/stage-switch.slang b/tests/language-feature/stage-switch.slang new file mode 100644 index 000000000..1bdd1f85a --- /dev/null +++ b/tests/language-feature/stage-switch.slang @@ -0,0 +1,38 @@ + +//TEST:SIMPLE(filecheck=CHECK):-target spirv + +float ddx_or(float val, float defaultVal) +{ + __stage_switch + { + case fragment: + return ddx(val); + default: + return defaultVal; + } +} + +float intermediate(float val) +{ + return ddx_or(val, 1.0); +} + +RWStructuredBuffer output; + +[numthreads(1,1,1)] +void computeMain() +{ + // CHECK-LABEL: %computeMain = OpFunction + // CHECK: OpStore %{{.*}} %float_1 + // CHECK: OpFunctionEnd + output[0] = intermediate(2.0); +} + +[shader("fragment")] +float4 fragmentMain(float vin) : SV_Target +{ + // CHECK-LABEL: %fragmentMain = OpFunction + // CHECK: OpDPdx + // CHECK: OpFunctionEnd + return intermediate(vin); +} \ No newline at end of file -- cgit v1.2.3