Don't create degenerate access chain to load global variable

* This seems like it's legal, but let's not do it anyway just in case.
This commit is contained in:
baldurk
2020-04-30 18:12:34 +01:00
parent 811d6323b0
commit 408cb10053
+9 -2
View File
@@ -3009,8 +3009,15 @@ static void CreatePSInputFetcher(rdcarray<uint32_t> &fragspv, uint32_t &structSt
rdcspv::Id ptrType =
editor.DeclareType(rdcspv::Pointer(values[i].valueType, rdcspv::StorageClass::Input));
rdcspv::Id ptr =
ops.add(rdcspv::OpAccessChain(ptrType, editor.MakeId(), access.ID, accessIndices));
// if we have no access chain it's a global pointer of the type we want, so just load
// straight out of it
rdcspv::Id ptr;
if(accessIndices.empty())
ptr = access.ID;
else
ptr = ops.add(rdcspv::OpAccessChain(ptrType, editor.MakeId(), access.ID, accessIndices));
rdcspv::Id base = ops.add(rdcspv::OpLoad(values[i].valueType, editor.MakeId(), ptr));
values[i].data[Variant_Base] = base;