MCPcopy Create free account
hub / github.com/defold/defold / CalculateStd140MemberSize

Function CalculateStd140MemberSize

engine/graphics/src/graphics.cpp:1586–1611  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1584 }
1585
1586 static uint32_t CalculateStd140MemberSize(const ShaderResourceTypeInfo* type_infos, const ShaderResourceMember& member, bool update_offsets)
1587 {
1588 uint32_t element_size = 0;
1589
1590 if (member.m_Type.m_UseTypeIndex)
1591 {
1592 // Nested struct
1593 uint32_t struct_size = CalculateStd140StructSize(type_infos, member.m_Type.m_TypeIndex, update_offsets);
1594
1595 // Structs are always rounded up to 16 in std140
1596 element_size = DM_ALIGN(struct_size, 16);
1597 }
1598 else
1599 {
1600 element_size = GetShaderTypeSize(member.m_Type.m_ShaderType);
1601 }
1602
1603 // Arrays: stride rounded up to 16
1604 if (member.m_ElementCount > 1)
1605 {
1606 uint32_t stride = DM_ALIGN(element_size, 16);
1607 return stride * member.m_ElementCount;
1608 }
1609
1610 return element_size;
1611 }
1612
1613 static uint32_t CalculateStd140StructSize(const ShaderResourceTypeInfo* type_infos, uint32_t type_index, bool update_offsets)
1614 {

Callers 1

Calls 2

GetShaderTypeSizeFunction · 0.85

Tested by

no test coverage detected