metal: fix shader:send with fields in an array-of-structs.

This commit is contained in:
Sasha Szpakowski
2024-03-30 12:03:20 -03:00
parent 4948e52013
commit b5b6d07108
+13 -2
View File
@@ -288,8 +288,19 @@ void Shader::buildLocalUniforms(const spirv_cross::CompilerMSL &msl, const spirv
switch (membertype.basetype)
{
case SPIRType::Struct:
name += ".";
buildLocalUniforms(msl, membertype, offset, name);
if (membertype.op == spv::OpTypeArray)
{
for (uint32 i = 0; i < membertype.array[0]; i++)
{
std::string structname = name + "[" + std::to_string(i) + "].";
buildLocalUniforms(msl, membertype, offset, structname);
}
}
else
{
std::string structname = name = ".";
buildLocalUniforms(msl, membertype, offset, structname);
}
continue;
case SPIRType::Int:
case SPIRType::UInt: