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 /source | |
| 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>
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/slang-ir-spirv-legalize.cpp | 4 |
1 files changed, 3 insertions, 1 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: |
