Reflection: Implement the std140 block offset calculation rules.

git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24027 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
John Kessenich 2013-11-13 05:40:44 +00:00
parent c043498b02
commit 568bc3ae55
5 changed files with 228 additions and 37 deletions

View file

@ -1,22 +1,41 @@
#version 440 core
uniform nameless {
layout(std140, row_major) uniform nameless {
vec3 anonMember1;
mat3x2 m23;
int scalarAfterm23;
vec4 anonDeadMember2;
vec4 anonMember3;
int scalarBeforeArray;
float floatArray[5];
int scalarAfterArray;
};
uniform named {
layout(std140, column_major) uniform c_nameless {
vec3 c_anonMember1;
mat3x2 c_m23;
int c_scalarAfterm23;
vec4 c_anonDeadMember2;
vec4 c_anonMember3;
};
layout(std140) uniform named {
vec3 deadMember1;
int scalar;
vec4 member2;
vec4 member3;
vec2 memvec2;
float memf1;
bool memf2;
int memf3;
vec2 memvec2a;
} ablock;
uniform namelessdead {
layout(std140) uniform namelessdead {
int a;
};
uniform namedDead {
layout(std140) uniform namedDead {
int b;
} bblock;
@ -68,6 +87,17 @@ void main()
liveFunction2();
f = anonMember3.z;
f = s.a;
f = ablock.scalar;
f = m23[1].y + scalarAfterm23;
f = c_m23[1].y + c_scalarAfterm23;
f += scalarBeforeArray;
f += floatArray[2];
f += scalarAfterArray;
f += ablock.memvec2.x;
f += ablock.memf1;
f += float(ablock.memf2);
f += ablock.memf3;
f += ablock.memvec2a.y;
} else
f = ufDead3;
}