From 1dc32b8bf8dd14e607d306c160b1bedf46067910 Mon Sep 17 00:00:00 2001 From: Jay Kwak <82421531+jkwak-work@users.noreply.github.com> Date: Fri, 11 Jul 2025 13:47:33 -0700 Subject: Add DebugGlobalVariable instructions to SPIR-V output (#7686) * Add DebugGlobalVariable instructions to SPIR-V output Implements generation of DebugGlobalVariable instructions for global variables like Texture2D and SamplerState in SPIR-V debug information output. Adds debug type support for texture and sampler types using DebugTypeComposite. * Handle two more types for DebugGlobalVariable kIROp_RaytracingAccelerationStructureType and kIROp_SamplerComparisonStateType had to be handled in `emitDebugTypeImpl()` * Fix format * Refactor debug type emission to reduce duplication Use IRSamplerStateTypeBase type check and fallback pattern instead of separate cases for each opcode type. * Fix compiler warning * Simplify `emitDebugTypeImpl()` more --- tests/spirv/debug-local-variable-scope.slang | 21 --------------------- tests/spirv/debug-variable-scope.slang | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+), 21 deletions(-) delete mode 100644 tests/spirv/debug-local-variable-scope.slang create mode 100644 tests/spirv/debug-variable-scope.slang (limited to 'tests/spirv') diff --git a/tests/spirv/debug-local-variable-scope.slang b/tests/spirv/debug-local-variable-scope.slang deleted file mode 100644 index 22f6aef2e..000000000 --- a/tests/spirv/debug-local-variable-scope.slang +++ /dev/null @@ -1,21 +0,0 @@ -//TEST:SIMPLE(filecheck=CHECK):-target spirv -entry main -stage fragment -g2 -emit-spirv-directly - -Texture2D testTex : register(t0); -SamplerState testSampler : register(s0); - -struct PSIn -{ - float4 pos : SV_Position; -}; - -float4 main(PSIn input) : SV_TARGET -{ - uint4 testPos = input.pos; - float bias = -1.0; - float2 tc = testPos.xy / 32.0; - float4 colVal = testTex.SampleBias(testSampler, tc, bias); - return float4(colVal.xyz, 1.0); -} - -// CHECK: %[[FUNC_ID:[0-9]+]] = OpExtInst %void {{.*}} DebugFunction %{{[0-9]+}} -// CHECK: DebugLocalVariable %{{[0-9]+}} %{{[0-9]+}} %{{[0-9]+}} %{{.*}} %{{.*}} %[[FUNC_ID]] diff --git a/tests/spirv/debug-variable-scope.slang b/tests/spirv/debug-variable-scope.slang new file mode 100644 index 000000000..946c1a08b --- /dev/null +++ b/tests/spirv/debug-variable-scope.slang @@ -0,0 +1,23 @@ +//TEST:SIMPLE(filecheck=CHECK):-target spirv-asm -entry main -stage fragment -g2 -emit-spirv-directly + +Texture2D testTex : register(t0); +SamplerState testSampler : register(s0); + +struct PSIn +{ + float4 pos : SV_Position; +}; + +float4 main(PSIn input) : SV_TARGET +{ + uint4 testPos = input.pos; + float bias = -1.0; + float2 tc = testPos.xy / 32.0; + float4 colVal = testTex.SampleBias(testSampler, tc, bias); + return float4(colVal.xyz, 1.0); +} + +// CHECK: %[[COMPILATION_UNIT_ID:[0-9]+]] = OpExtInst %void {{.*}} DebugCompilationUnit +// CHECK: %[[FUNC_ID:[0-9]+]] = OpExtInst %void {{.*}} DebugFunction %{{[0-9]+}} +// CHECK: DebugLocalVariable %{{[0-9]+}} %{{[0-9]+}} %{{[0-9]+}} %{{.*}} %{{.*}} %[[FUNC_ID]] +// CHECK: DebugGlobalVariable %{{[0-9]+}} %{{[0-9]+}} %{{[0-9]+}} %{{.*}} %{{.*}} %[[COMPILATION_UNIT_ID]] -- cgit v1.2.3