#version 140

in vec4 k;
out vec4 o;

in float gl_ClipDistance[5];

layout(row_major) uniform;

uniform sampler2D samp2Da[3];

layout(std140) uniform bn {
    layout(row_major) mat4 matra[4];
    layout(column_major) mat4 matca[4];
    layout(row_major) mat4 matr;
    layout(column_major) mat4 matc;
    mat4 matrdef;
};

uniform sampler2DRect sampR;
uniform isamplerBuffer sampB;

float foo();

void main()
{
    o.y = gl_ClipDistance[2];
    o.z = gl_ClipDistance[int(k)];
    o.w = float(textureSize(sampR) + textureSize(sampB)) / 100.0;
    o.z = foo();
}

// Test extra-function initializers

float i1 = gl_FrontFacing ? -2.0 : 2.0;
float i2 = 102;

float foo()
{
    return i1 + i2;
}

// test arrayed block
layout(std140) uniform bi {
    vec3 v[2];
} bname[4];
