metal/vulkan: fix uniform numbers and vectors in arrays of structs.

This commit is contained in:
Sasha Szpakowski
2024-06-15 14:46:27 -03:00
parent d13a7f7620
commit 2eb8198dba
2 changed files with 4 additions and 2 deletions
+2 -1
View File
@@ -290,10 +290,11 @@ void Shader::buildLocalUniforms(const spirv_cross::CompilerMSL &msl, const spirv
case SPIRType::Struct:
if (membertype.op == spv::OpTypeArray)
{
size_t arraystride = comp.type_struct_member_array_stride(type, uindex);
for (uint32 i = 0; i < membertype.array[0]; i++)
{
std::string structname = name + "[" + std::to_string(i) + "].";
buildLocalUniforms(msl, membertype, offset, structname);
buildLocalUniforms(msl, membertype, offset + i * arraystride, structname);
}
}
else
+2 -1
View File
@@ -447,10 +447,11 @@ void Shader::buildLocalUniforms(spirv_cross::Compiler &comp, const spirv_cross::
case SPIRType::Struct:
if (memberType.op == spv::OpTypeArray)
{
size_t arraystride = comp.type_struct_member_array_stride(type, uindex);
for (uint32 i = 0; i < memberType.array[0]; i++)
{
std::string structname = name + "[" + std::to_string(i) + "].";
buildLocalUniforms(comp, memberType, offset, structname);
buildLocalUniforms(comp, memberType, offset + i * arraystride, structname);
}
}
else