summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2023-09-22 00:45:53 +0800
committerGitHub <noreply@github.com>2023-09-21 09:45:53 -0700
commit85d40ed62f5ef6d38a0f898b7bd452cca0f65a5b (patch)
tree3a3c3957e24286b639e564c9f062459a95bc8f8e
parent335ca787ef73d9e21876d75f9b0d1798834e7ce8 (diff)
Emit loads for array resources correctly (#3214)
* Emit loads for array resources correctly * Put arrays of UniformConstant resources in UniformConstant * less expected failure * This code was actually used --------- Co-authored-by: Yong He <yonghe@outlook.com>
-rw-r--r--source/slang/slang-ir-spirv-legalize.cpp4
-rw-r--r--tests/expected-failure.txt1
2 files changed, 3 insertions, 2 deletions
diff --git a/source/slang/slang-ir-spirv-legalize.cpp b/source/slang/slang-ir-spirv-legalize.cpp
index 393b907f7..1590f94c8 100644
--- a/source/slang/slang-ir-spirv-legalize.cpp
+++ b/source/slang/slang-ir-spirv-legalize.cpp
@@ -184,7 +184,7 @@ struct SPIRVLegalizationContext : public SourceEmitterBase
// just prior to the block.
const auto asmBlock = spirvAsmOperand->getAsmBlock();
builder.setInsertBefore(asmBlock);
- auto loadedValue = builder.emitLoad(addrInst);
+ auto loadedValue = builder.emitLoad(addr);
builder.setInsertBefore(spirvAsmOperand);
auto loadedValueOperand = builder.emitSPIRVAsmOperandInst(loadedValue);
spirvAsmOperand->replaceUsesWith(loadedValueOperand);
@@ -210,6 +210,8 @@ struct SPIRVLegalizationContext : public SourceEmitterBase
return true;
if (as<IRSamplerStateTypeBase>(type))
return true;
+ if (const auto arr = as<IRArrayTypeBase>(type))
+ return isSpirvUniformConstantType(arr->getElementType());
switch (type->getOp())
{
case kIROp_RaytracingAccelerationStructureType:
diff --git a/tests/expected-failure.txt b/tests/expected-failure.txt
index e9c855640..a8865dc18 100644
--- a/tests/expected-failure.txt
+++ b/tests/expected-failure.txt
@@ -1,4 +1,3 @@
-tests/optimization/func-resource-result/func-resource-result-complex.slang.1 (vk)
tests/pipeline/rasterization/mesh/task-groupshared.slang.1 (vk)
tests/pipeline/rasterization/mesh/task-simple.slang.1 (vk)
tests/pipeline/rasterization/mesh/simple.slang.1 (vk)