diff options
| author | Ellie Hermaszewska <ellieh@nvidia.com> | 2023-09-22 00:45:53 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-21 09:45:53 -0700 |
| commit | 85d40ed62f5ef6d38a0f898b7bd452cca0f65a5b (patch) | |
| tree | 3a3c3957e24286b639e564c9f062459a95bc8f8e | |
| parent | 335ca787ef73d9e21876d75f9b0d1798834e7ce8 (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.cpp | 4 | ||||
| -rw-r--r-- | tests/expected-failure.txt | 1 |
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) |
