diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/spirv/debug-compilation-unit-main-file.slang | 37 | ||||
| -rw-r--r-- | tests/spirv/shader-utils.slang | 18 |
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 |
