From 4a341975ed8bd6b826a2a4d58b5085e8ef74f69b Mon Sep 17 00:00:00 2001 From: Ethan Nicholas Date: Tue, 17 Jul 2018 15:38:03 -0400 Subject: fixed SPIR-V memory layout Bug: skia: Change-Id: Ib503e24e4cfcb3e064a9e34a4d9ca3230c989372 Reviewed-on: https://skia-review.googlesource.com/141838 Reviewed-by: Greg Daniel Commit-Queue: Ethan Nicholas --- src/sksl/SkSLMemoryLayout.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/sksl') diff --git a/src/sksl/SkSLMemoryLayout.h b/src/sksl/SkSLMemoryLayout.h index c009773b62..210769c8d7 100644 --- a/src/sksl/SkSLMemoryLayout.h +++ b/src/sksl/SkSLMemoryLayout.h @@ -75,9 +75,16 @@ public: */ size_t stride(const Type& type) const { switch (type.kind()) { - case Type::kMatrix_Kind: // fall through - case Type::kArray_Kind: - return this->alignment(type); + case Type::kMatrix_Kind: { + size_t base = vector_alignment(this->size(type.componentType()), type.rows()); + return this->roundUpIfNeeded(base); + } + case Type::kArray_Kind: { + int align = this->alignment(type.componentType()); + int stride = this->size(type.componentType()) + align - 1; + stride -= stride % align; + return this->roundUpIfNeeded(stride); + } default: ABORT("type does not have a stride"); } -- cgit v1.2.3