X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fglsl%2Freflect.cpp;h=6027acde36862363a6597bebe60db488fa666351;hp=cc2e3a0c8bc2c6570e30bb50decd35cd413b97f1;hb=241cf36a6d7735706804bb3c517529bbe078f1ee;hpb=6f06479b765946bdd3174b2c05e7a1dda24c31c2 diff --git a/source/glsl/reflect.cpp b/source/glsl/reflect.cpp index cc2e3a0c..6027acde 100644 --- a/source/glsl/reflect.cpp +++ b/source/glsl/reflect.cpp @@ -304,6 +304,8 @@ void MemoryRequirementsCalculator::visit(StructDeclaration &strct) } r_size = total; r_alignment = max_align; + r_size += r_alignment-1; + r_size -= r_size%r_alignment; } void MemoryRequirementsCalculator::visit(VariableDeclaration &var) @@ -320,7 +322,11 @@ void MemoryRequirementsCalculator::visit(VariableDeclaration &var) if(var.array) if(const Literal *literal = dynamic_cast(var.array_size.get())) if(literal->value.check_type()) - r_size += r_alignment*(literal->value.value()-1); + { + unsigned aligned_size = r_size+r_alignment-1; + aligned_size -= aligned_size%r_alignment; + r_size = aligned_size*literal->value.value(); + } }