I think I have found a driver bug.
struct Type {
ivec2 member0;
};
layout(std140, binding = 0) buffer Buffer {
int data0; // offset 0
Type data1; // BUG: offset is 8 but should be 16
} g_buffer;
Furthermore, in the following (std430) block dvec3 has base alignment 16 not 32 as it should.
layout(std430, binding = 0) buffer Input0 {
int data0;
float data1[5];
mat3x2 data2;
double data3;
double data4[2];
int data5;
dvec3 data6; // BUG: offset is 80 but should be 96
} g_input0;
Thanks.