summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-02-10 23:05:35 -0800
committerGitHub <noreply@github.com>2024-02-10 23:05:35 -0800
commit03cddba97e821c013023d51fb7d3d61a130a2a9f (patch)
tree152c159d81dff9471fd726013179c9780e2cd341
parent20ab16178e45d07b4dc0104a7a98865d18440b62 (diff)
Fix spirv legalization of nested ararys. (#3567)
* Fix spirv legalization of nested ararys. * Fix test.
-rw-r--r--source/slang/slang-ir-spirv-legalize.cpp3
-rw-r--r--tests/spirv/array-of-array.slang12
2 files changed, 13 insertions, 2 deletions
diff --git a/source/slang/slang-ir-spirv-legalize.cpp b/source/slang/slang-ir-spirv-legalize.cpp
index 474ebc71c..62829f553 100644
--- a/source/slang/slang-ir-spirv-legalize.cpp
+++ b/source/slang/slang-ir-spirv-legalize.cpp
@@ -258,8 +258,7 @@ struct SPIRVLegalizationContext : public SourceEmitterBase
}
for (auto i : instsToRemove)
- if (!i->hasUses())
- i->removeAndDeallocate();
+ i->removeAndDeallocate();
}
// Returns true if the given type that should be decorated as in `UniformConstant` address space.
diff --git a/tests/spirv/array-of-array.slang b/tests/spirv/array-of-array.slang
new file mode 100644
index 000000000..de1f70e7f
--- /dev/null
+++ b/tests/spirv/array-of-array.slang
@@ -0,0 +1,12 @@
+//TEST:SIMPLE(filecheck=CHECK):-target spirv -entry main -stage compute -emit-spirv-directly -skip-spirv-validation
+
+Texture2D texArray[3][4][5];
+RWStructuredBuffer<float4> outputBuffer;
+
+// CHECK: OpEntryPoint
+
+[shader("compute")]
+void main(uint3 tid : SV_DispatchThreadID)
+{
+ outputBuffer[0] = texArray[tid.x][tid.y][tid.z].Load(int3(1,2,3));
+}