summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/spirv/debug-compilation-unit-main-file.slang37
-rw-r--r--tests/spirv/shader-utils.slang18
2 files changed, 55 insertions, 0 deletions
diff --git a/tests/spirv/debug-compilation-unit-main-file.slang b/tests/spirv/debug-compilation-unit-main-file.slang
new file mode 100644
index 000000000..c8e89ae93
--- /dev/null
+++ b/tests/spirv/debug-compilation-unit-main-file.slang
@@ -0,0 +1,37 @@
+//TEST:SIMPLE(filecheck=CHECK):-target spirv -entry main -stage fragment -g2 -emit-spirv-directly
+
+#include "shader-utils.slang"
+
+struct VertexOutput
+{
+ float4 position : SV_Position;
+ float2 texCoord : TEXCOORD0;
+}
+
+[shader("fragment")]
+float4 main(VertexOutput input) : SV_Target
+{
+ // Create a simple gradient pattern based on texture coordinates
+ float2 uv = input.texCoord;
+
+ // Call function from the included header file
+ float distanceFromCenter = calculateDistanceFromCenter(uv);
+
+ // Use another function from the header for a radial fade effect
+ float radialFade = createRadialFade(uv, 0.7);
+
+ // Create color pattern with both distance effects
+ float4 color = float4(
+ uv.x * (1.0 - distanceFromCenter * 0.5), // Red with subtle distance fade
+ uv.y * radialFade, // Green with smooth radial fade
+ uv.x * uv.y, // Blue as product of coordinates
+ 1.0 // Full opacity
+ );
+
+ return color;
+}
+
+// Verify that DebugCompilationUnit references this main shader file
+// CHECK: [[MAIN_FILE:%[0-9]+]] = OpString "{{.*}}debug-compilation-unit-main-file.slang"
+// CHECK: [[SOURCE_ID:%[0-9]+]] = OpExtInst %void %{{[0-9]+}} DebugSource [[MAIN_FILE]] %{{[0-9]+}}
+// CHECK: OpExtInst %void %{{[0-9]+}} DebugCompilationUnit %uint_{{[0-9]+}} %uint_{{[0-9]+}} [[SOURCE_ID]] %uint_{{[0-9]+}}
diff --git a/tests/spirv/shader-utils.slang b/tests/spirv/shader-utils.slang
new file mode 100644
index 000000000..967991ad3
--- /dev/null
+++ b/tests/spirv/shader-utils.slang
@@ -0,0 +1,18 @@
+#ifndef SHADER_UTILS_SLANG
+#define SHADER_UTILS_SLANG
+
+// Helper function to calculate distance from center
+float calculateDistanceFromCenter(float2 uv)
+{
+ float2 center = float2(0.5, 0.5);
+ return length(uv - center);
+}
+
+// Additional utility function - simple smoothstep fade
+float createRadialFade(float2 uv, float radius)
+{
+ float dist = calculateDistanceFromCenter(uv);
+ return smoothstep(radius, 0.0, dist);
+}
+
+#endif // SHADER_UTILS_SLANG \ No newline at end of file