summaryrefslogtreecommitdiffstats
path: root/source
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 /source
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>
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-ir-spirv-legalize.cpp4
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: