My confusion was regarding inner padding of data passed to the array<vec3f>. It is now clear, that in order for it to work correctly, the inbound data should be explicitly padded, thus:
[
1, 2, 3,
4, 5, 6,
7, 8, 9
] ->
[
1, 2, 3, 0,
4, 5, 6, 0,
7, 8, 9, 0
]
becomes
[
1, 2, 3, 0,
4, 5, 6, 0,
7, 8, 9, 0
]
In order for it to work correctly.