summaryrefslogtreecommitdiff
path: root/source/slang/slang-type-layout.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-type-layout.cpp')
-rw-r--r--source/slang/slang-type-layout.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/source/slang/slang-type-layout.cpp b/source/slang/slang-type-layout.cpp
index a015bfd78..f21722bd7 100644
--- a/source/slang/slang-type-layout.cpp
+++ b/source/slang/slang-type-layout.cpp
@@ -4013,6 +4013,12 @@ static TypeLayoutResult _createTypeLayout(
typeLayout->type = type;
typeLayout->rules = rules;
+ for( auto resInfo : baseTypeLayoutResult.layout->resourceInfos )
+ {
+ if(resInfo.kind != LayoutResourceKind::Uniform)
+ typeLayout->addResourceUsage(resInfo);
+ }
+
RefPtr<VarLayout> pendingDataVarLayout = new VarLayout();
if(auto pendingDataTypeLayout = baseTypeLayoutResult.layout->pendingDataTypeLayout)
{
@@ -4033,6 +4039,7 @@ static TypeLayoutResult _createTypeLayout(
{
if(auto primaryResInfo = baseTypeLayoutResult.layout->FindResourceInfo(kind))
index = primaryResInfo->count.getFiniteValue();
+ typeLayout->addResourceUsage(pendingResInfo);
}
pendingDataVarLayout->AddResourceInfo(kind)->index = index;
}
@@ -4041,6 +4048,12 @@ static TypeLayoutResult _createTypeLayout(
typeLayout->baseTypeLayout = baseTypeLayoutResult.layout;
typeLayout->pendingDataVarLayout = pendingDataVarLayout;
+ typeLayout->uniformAlignment = info.alignment;
+ if( info.size != 0 )
+ {
+ typeLayout->addResourceUsage(LayoutResourceKind::Uniform, info.size);
+ }
+
return makeTypeLayoutResult(typeLayout);
}