Fix struct declaration order when multiple structs use a common struct

This commit is contained in:
baldurk
2022-05-20 13:37:26 +01:00
parent 97a3943cdd
commit d2bbf76479
+9 -7
View File
@@ -1925,6 +1925,8 @@ QString BufferFormatter::DeclareStruct(Packing::Rules pack, QList<QString> &decl
const QString &name, const rdcarray<ShaderConstant> &members,
uint32_t requiredByteStride, QString innerSkippedPrefixString)
{
QString declarations;
QString ret;
ret = lit("struct %1\n{\n").arg(name);
@@ -2015,9 +2017,9 @@ QString BufferFormatter::DeclareStruct(Packing::Rules pack, QList<QString> &decl
if(!declaredStructs.contains(varTypeName))
{
declaredStructs.push_back(varTypeName);
ret = DeclareStruct(pack, declaredStructs, varTypeName, pointeeType.members,
pointeeType.descriptor.arrayByteStride, QString()) +
lit("\n") + ret;
declarations += DeclareStruct(pack, declaredStructs, varTypeName, pointeeType.members,
pointeeType.descriptor.arrayByteStride, QString()) +
lit("\n");
}
varTypeName += lit("*");
@@ -2036,9 +2038,9 @@ QString BufferFormatter::DeclareStruct(Packing::Rules pack, QList<QString> &decl
if(!declaredStructs.contains(varTypeName))
{
declaredStructs.push_back(varTypeName);
ret = DeclareStruct(pack, declaredStructs, varTypeName, members[i].type.members,
members[i].type.descriptor.arrayByteStride, QString()) +
lit("\n") + ret;
declarations += DeclareStruct(pack, declaredStructs, varTypeName, members[i].type.members,
members[i].type.descriptor.arrayByteStride, QString()) +
lit("\n");
}
}
@@ -2094,7 +2096,7 @@ QString BufferFormatter::DeclareStruct(Packing::Rules pack, QList<QString> &decl
ret += lit("}\n");
return ret;
return declarations + ret;
}
QString BufferFormatter::DeclareStruct(Packing::Rules pack, const QString &name,