summaryrefslogtreecommitdiffstats
path: root/source/slang/type-layout.cpp
diff options
context:
space:
mode:
authorTim Foley <tfoley@nvidia.com>2017-07-07 08:16:09 -0700
committerTim Foley <tfoley@nvidia.com>2017-07-07 08:16:09 -0700
commit54519ed70fbe154e196d04a8b62f6ea6aeded52a (patch)
tree00c8e2aaf83735f86ce6bf71e6781ac579a55f64 /source/slang/type-layout.cpp
parentb6c299ee58e397898e09c9a4168627a26ed7b72f (diff)
Fix alignment computation for `std140` uniforms
Fixes #55 I was incorrectly computing alignment as `elementSize * elementAlignment`, rounded up to a power of two (which works out to be `elementSize` squared), when I should have been using `elementSize * elementCount`, rounded up to a power of two.
Diffstat (limited to 'source/slang/type-layout.cpp')
-rw-r--r--source/slang/type-layout.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/source/slang/type-layout.cpp b/source/slang/type-layout.cpp
index 2fcf64226..fbaec3736 100644
--- a/source/slang/type-layout.cpp
+++ b/source/slang/type-layout.cpp
@@ -163,10 +163,11 @@ struct Std140LayoutRulesImpl : GLSLConstantBufferLayoutRulesImpl
SimpleLayoutInfo GetVectorLayout(SimpleLayoutInfo elementInfo, size_t elementCount) override
{
assert(elementInfo.kind == LayoutResourceKind::Uniform);
+ auto size = elementInfo.size * elementCount;
SimpleLayoutInfo vectorInfo(
LayoutResourceKind::Uniform,
- elementInfo.size * elementCount,
- RoundUpToPowerOfTwo(elementInfo.size * elementInfo.alignment));
+ size,
+ RoundUpToPowerOfTwo(size));
return vectorInfo;
}
};