Add option to reflect all block members, inactive or active.

* The stages mask is more fine-grained, and each variable or block's mask
  indicates which stages it's active in.
This commit is contained in:
baldurk 2019-01-30 15:34:02 +00:00
parent 657acc0c40
commit a972e73ad7
17 changed files with 265 additions and 77 deletions

View file

@ -18,12 +18,12 @@ cb1: offset 0, type 1404, size 1, index 4, binding -1, stages 16
tb1: offset 0, type 1404, size 1, index 5, binding -1, stages 16
Uniform block reflection:
t4: offset -1, type ffffffff, size 0, index -1, binding 14, stages 0, numMembers 1
t5: offset -1, type ffffffff, size 0, index -1, binding 15, stages 0, numMembers 1
u5: offset -1, type ffffffff, size 0, index -1, binding 45, stages 0, numMembers 1
u6: offset -1, type ffffffff, size 0, index -1, binding 46, stages 0, numMembers 1
cb: offset -1, type ffffffff, size 4, index -1, binding 51, stages 0, numMembers 1
tb: offset -1, type ffffffff, size 4, index -1, binding 17, stages 0, numMembers 1
t4: offset -1, type ffffffff, size 0, index -1, binding 14, stages 16, numMembers 1
t5: offset -1, type ffffffff, size 0, index -1, binding 15, stages 16, numMembers 1
u5: offset -1, type ffffffff, size 0, index -1, binding 45, stages 16, numMembers 1
u6: offset -1, type ffffffff, size 0, index -1, binding 46, stages 16, numMembers 1
cb: offset -1, type ffffffff, size 4, index -1, binding 51, stages 16, numMembers 1
tb: offset -1, type ffffffff, size 4, index -1, binding 17, stages 16, numMembers 1
Buffer variable reflection:
@ -32,5 +32,5 @@ Buffer block reflection:
Pipeline input reflection:
Pipeline output reflection:
@entryPointOutput: offset 0, type 8b52, size 0, index 0, binding -1, stages 0
@entryPointOutput: offset 0, type 8b52, size 0, index 0, binding -1, stages 16

View file

@ -12,8 +12,8 @@ c2_b: offset 16, type 1404, size 1, index 1, binding -1, stages 16
c2_c: offset 20, type 1406, size 1, index 1, binding -1, stages 16
Uniform block reflection:
cbuff1: offset -1, type ffffffff, size 24, index -1, binding 2, stages 0, numMembers 3
cbuff2: offset -1, type ffffffff, size 24, index -1, binding 3, stages 0, numMembers 3
cbuff1: offset -1, type ffffffff, size 24, index -1, binding 2, stages 16, numMembers 3
cbuff2: offset -1, type ffffffff, size 24, index -1, binding 3, stages 16, numMembers 3
Buffer variable reflection:
@ -22,5 +22,5 @@ Buffer block reflection:
Pipeline input reflection:
Pipeline output reflection:
psout.Color: offset 0, type 8b52, size 0, index 0, binding -1, stages 0
psout.Color: offset 0, type 8b52, size 0, index 0, binding -1, stages 16

View file

@ -60,23 +60,23 @@ anonMember1: offset 0, type 8b51, size 1, index 0, binding -1, stages 1
uf1: offset 16, type 1406, size 1, index 1, binding -1, stages 1
Uniform block reflection:
nameless: offset -1, type ffffffff, size 496, index -1, binding -1, stages 0, numMembers 9
$Global: offset -1, type ffffffff, size 3088, index -1, binding -1, stages 0, numMembers 106
c_nameless: offset -1, type ffffffff, size 96, index -1, binding -1, stages 0, numMembers 5
nested: offset -1, type ffffffff, size 32, index -1, binding -1, stages 0, numMembers 4
abl: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0, numMembers 1
abl2: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0, numMembers 1
nameless: offset -1, type ffffffff, size 496, index -1, binding -1, stages 1, numMembers 9
$Global: offset -1, type ffffffff, size 3088, index -1, binding -1, stages 1, numMembers 106
c_nameless: offset -1, type ffffffff, size 96, index -1, binding -1, stages 1, numMembers 5
nested: offset -1, type ffffffff, size 32, index -1, binding -1, stages 1, numMembers 4
abl: offset -1, type ffffffff, size 4, index -1, binding -1, stages 1, numMembers 1
abl2: offset -1, type ffffffff, size 4, index -1, binding -1, stages 1, numMembers 1
Buffer variable reflection:
Buffer block reflection:
Pipeline input reflection:
attributeFloat: offset 0, type 1406, size 0, index 0, binding -1, stages 0
attributeFloat2: offset 0, type 8b50, size 0, index 0, binding -1, stages 0
attributeFloat3: offset 0, type 8b51, size 0, index 0, binding -1, stages 0
attributeFloat4: offset 0, type 8b52, size 0, index 0, binding -1, stages 0
attributeMat4: offset 0, type 8b5c, size 0, index 0, binding -1, stages 0
attributeFloat: offset 0, type 1406, size 0, index 0, binding -1, stages 1
attributeFloat2: offset 0, type 8b50, size 0, index 0, binding -1, stages 1
attributeFloat3: offset 0, type 8b51, size 0, index 0, binding -1, stages 1
attributeFloat4: offset 0, type 8b52, size 0, index 0, binding -1, stages 1
attributeMat4: offset 0, type 8b5c, size 0, index 0, binding -1, stages 1
Pipeline output reflection:

View file

@ -219,12 +219,12 @@ tb1: offset 0, type 1404, size 1, index 5, binding -1, stages 16
ts6: offset -1, type 8b5f, size 1, index -1, binding 71, stages 16
Uniform block reflection:
t4: offset -1, type ffffffff, size 0, index -1, binding 21, stages 0, numMembers 1
t5: offset -1, type ffffffff, size 0, index -1, binding 22, stages 0, numMembers 1
u5: offset -1, type ffffffff, size 0, index -1, binding 44, stages 0, numMembers 1
u6: offset -1, type ffffffff, size 0, index -1, binding 34, stages 0, numMembers 1
cb: offset -1, type ffffffff, size 4, index -1, binding 51, stages 0, numMembers 1
tb: offset -1, type ffffffff, size 4, index -1, binding 27, stages 0, numMembers 1
t4: offset -1, type ffffffff, size 0, index -1, binding 21, stages 16, numMembers 1
t5: offset -1, type ffffffff, size 0, index -1, binding 22, stages 16, numMembers 1
u5: offset -1, type ffffffff, size 0, index -1, binding 44, stages 16, numMembers 1
u6: offset -1, type ffffffff, size 0, index -1, binding 34, stages 16, numMembers 1
cb: offset -1, type ffffffff, size 4, index -1, binding 51, stages 16, numMembers 1
tb: offset -1, type ffffffff, size 4, index -1, binding 27, stages 16, numMembers 1
Buffer variable reflection:
@ -233,5 +233,5 @@ Buffer block reflection:
Pipeline input reflection:
Pipeline output reflection:
@entryPointOutput: offset 0, type 8b52, size 0, index 0, binding -1, stages 0
@entryPointOutput: offset 0, type 8b52, size 0, index 0, binding -1, stages 16

View file

@ -0,0 +1,21 @@
reflection.linked.vert
reflection.linked.frag
Uniform reflection:
ubo_block.unused_uniform: offset 0, type 1406, size 1, index 0, binding -1, stages 0
ubo_block.shared_uniform: offset 4, type 1406, size 1, index 0, binding -1, stages 17
ubo_block.vsonly_uniform: offset 8, type 1406, size 1, index 0, binding -1, stages 1
ubo_block.fsonly_uniform: offset 12, type 1406, size 1, index 0, binding -1, stages 16
Uniform block reflection:
ubo_block: offset -1, type ffffffff, size 16, index -1, binding 0, stages 17, numMembers 4
Buffer variable reflection:
Buffer block reflection:
Pipeline input reflection:
vertin: offset 0, type 1406, size 0, index 0, binding -1, stages 1
Pipeline output reflection:
fragout: offset 0, type 1406, size 0, index 0, binding -1, stages 16

View file

@ -0,0 +1,20 @@
reflection.linked.vert
reflection.linked.frag
Uniform reflection:
ubo_block.shared_uniform: offset 4, type 1406, size 1, index 0, binding -1, stages 17
ubo_block.vsonly_uniform: offset 8, type 1406, size 1, index 0, binding -1, stages 17
ubo_block.fsonly_uniform: offset 12, type 1406, size 1, index 0, binding -1, stages 16
Uniform block reflection:
ubo_block: offset -1, type ffffffff, size 16, index -1, binding 0, stages 17, numMembers 4
Buffer variable reflection:
Buffer block reflection:
Pipeline input reflection:
vertin: offset 0, type 1406, size 0, index 0, binding -1, stages 1
Pipeline output reflection:
fragout: offset 0, type 1406, size 0, index 0, binding -1, stages 16

View file

@ -8,7 +8,7 @@ Buffer variable reflection:
Buffer block reflection:
Pipeline input reflection:
inval: offset 0, type 1406, size 0, index 0, binding -1, stages 0
inval: offset 0, type 1406, size 0, index 0, binding -1, stages 16
Pipeline output reflection:

View file

@ -1,30 +1,40 @@
reflection.options.vert
Uniform reflection:
UBO.verts[0].position[0]: offset 0, type 1406, size 1, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24
UBO.verts[1].position[0]: offset 24, type 1406, size 1, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24
UBO.verts[0].position[0]: offset 0, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24
UBO.verts[0].normal[0]: offset 12, type 1406, size 3, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24
UBO.verts[1].position[0]: offset 24, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24
UBO.verts[1].normal[0]: offset 36, type 1406, size 3, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24
UBO.flt[0]: offset 48, type 1406, size 8, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 4
UBO.unused: offset 80, type 8dc8, size 1, index 0, binding -1, stages 0
Uniform block reflection:
UBO: offset -1, type ffffffff, size 80, index -1, binding -1, stages 0, numMembers 5
UBO: offset -1, type ffffffff, size 96, index -1, binding -1, stages 1, numMembers 6
Buffer variable reflection:
t[0].v[0].position[0]: offset 0, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72
t[0].v[1].position[0]: offset 24, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72
t[0].v[2].position[0]: offset 48, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72
t[0].v[0].normal[0]: offset 12, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72
t[0].v[1].position[0]: offset 24, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72
t[0].v[1].normal[0]: offset 36, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72
t[0].v[2].position[0]: offset 48, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72
t[0].v[2].normal[0]: offset 60, type 1406, size 3, index 0, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72
MultipleArrays.tri[0].v[0].position[0]: offset 0, type 1406, size 1, index 1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72
MultipleArrays.vert[0].position[0]: offset 360, type 1406, size 1, index 1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24
padding[0]: offset 360, type 1405, size 10, index 0, binding -1, stages 0, arrayStride 4, topLevelArrayStride 4
MultipleArrays.tri[0].v[0].position[0]: offset 0, type 1406, size 3, index 1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 72
MultipleArrays.tri[0].v[0].normal[0]: offset 12, type 1406, size 3, index 1, binding -1, stages 0, arrayStride 4, topLevelArrayStride 72
MultipleArrays.tri[0].v[1].position[0]: offset 24, type 1406, size 3, index 1, binding -1, stages 0, arrayStride 4, topLevelArrayStride 72
MultipleArrays.tri[0].v[1].normal[0]: offset 36, type 1406, size 3, index 1, binding -1, stages 0, arrayStride 4, topLevelArrayStride 72
MultipleArrays.tri[0].v[2].position[0]: offset 48, type 1406, size 3, index 1, binding -1, stages 0, arrayStride 4, topLevelArrayStride 72
MultipleArrays.tri[0].v[2].normal[0]: offset 60, type 1406, size 3, index 1, binding -1, stages 0, arrayStride 4, topLevelArrayStride 72
MultipleArrays.vert[0].position[0]: offset 360, type 1406, size 3, index 1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 24
MultipleArrays.vert[0].normal[0]: offset 372, type 1406, size 3, index 1, binding -1, stages 0, arrayStride 4, topLevelArrayStride 24
MultipleArrays.f[0]: offset 480, type 1406, size 5, index 1, binding -1, stages 1, arrayStride 4, topLevelArrayStride 4
Buffer block reflection:
VertexCollection: offset -1, type ffffffff, size 360, index -1, binding -1, stages 0, numMembers 6
MultipleArrays: offset -1, type ffffffff, size 500, index -1, binding -1, stages 0, numMembers 9
VertexCollection: offset -1, type ffffffff, size 400, index -1, binding -1, stages 1, numMembers 7
MultipleArrays: offset -1, type ffffffff, size 500, index -1, binding -1, stages 1, numMembers 9
Pipeline input reflection:
gl_InstanceID: offset 0, type 1404, size 0, index 0, binding -1, stages 0
gl_InstanceID: offset 0, type 1404, size 0, index 0, binding -1, stages 1
Pipeline output reflection:
outval: offset 0, type 1406, size 0, index 0, binding -1, stages 0
outval: offset 0, type 1406, size 0, index 0, binding -1, stages 1

View file

@ -127,36 +127,36 @@ uf2: offset -1, type 1406, size 1, index -1, binding -1, stages 1
named.member3: offset 32, type 8b52, size 1, index 1, binding -1, stages 1
Uniform block reflection:
nameless: offset -1, type ffffffff, size 496, index -1, binding -1, stages 0, numMembers 9
named: offset -1, type ffffffff, size 304, index -1, binding -1, stages 0, numMembers 10
c_nameless: offset -1, type ffffffff, size 112, index -1, binding -1, stages 0, numMembers 5
nested: offset -1, type ffffffff, size 32, index -1, binding -1, stages 0, numMembers 4
abl[0]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0, numMembers 1
abl[1]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0, numMembers 1
abl[2]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0, numMembers 1
abl[3]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0, numMembers 1
abl2[0]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0, numMembers 1
abl2[1]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0, numMembers 1
abl2[2]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0, numMembers 1
abl2[3]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0, numMembers 1
buf1: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0, numMembers 2
buf2: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0, numMembers 4
buf3: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0, numMembers 2
buf4: offset -1, type ffffffff, size 4, index -1, binding -1, stages 0, numMembers 4
nested2: offset -1, type ffffffff, size 208, index -1, binding -1, stages 0, numMembers 15
VertexCollection: offset -1, type ffffffff, size 360, index -1, binding -1, stages 0, numMembers 30
nameless: offset -1, type ffffffff, size 496, index -1, binding -1, stages 1, numMembers 9
named: offset -1, type ffffffff, size 304, index -1, binding -1, stages 1, numMembers 10
c_nameless: offset -1, type ffffffff, size 112, index -1, binding -1, stages 1, numMembers 5
nested: offset -1, type ffffffff, size 32, index -1, binding -1, stages 1, numMembers 4
abl[0]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 1, numMembers 1
abl[1]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 1, numMembers 1
abl[2]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 1, numMembers 1
abl[3]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 1, numMembers 1
abl2[0]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 1, numMembers 1
abl2[1]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 1, numMembers 1
abl2[2]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 1, numMembers 1
abl2[3]: offset -1, type ffffffff, size 4, index -1, binding -1, stages 1, numMembers 1
buf1: offset -1, type ffffffff, size 4, index -1, binding -1, stages 1, numMembers 2
buf2: offset -1, type ffffffff, size 4, index -1, binding -1, stages 1, numMembers 4
buf3: offset -1, type ffffffff, size 4, index -1, binding -1, stages 1, numMembers 2
buf4: offset -1, type ffffffff, size 4, index -1, binding -1, stages 1, numMembers 4
nested2: offset -1, type ffffffff, size 208, index -1, binding -1, stages 1, numMembers 15
VertexCollection: offset -1, type ffffffff, size 400, index -1, binding -1, stages 1, numMembers 31
Buffer variable reflection:
Buffer block reflection:
Pipeline input reflection:
attributeFloat: offset 0, type 1406, size 0, index 0, binding -1, stages 0
attributeFloat2: offset 0, type 8b50, size 0, index 0, binding -1, stages 0
attributeFloat3: offset 0, type 8b51, size 0, index 0, binding -1, stages 0
attributeFloat4: offset 0, type 8b52, size 0, index 0, binding -1, stages 0
attributeMat4: offset 0, type 8b5c, size 0, index 0, binding -1, stages 0
gl_InstanceID: offset 0, type 1404, size 0, index 0, binding -1, stages 0
attributeFloat: offset 0, type 1406, size 0, index 0, binding -1, stages 1
attributeFloat2: offset 0, type 8b50, size 0, index 0, binding -1, stages 1
attributeFloat3: offset 0, type 8b51, size 0, index 0, binding -1, stages 1
attributeFloat4: offset 0, type 8b52, size 0, index 0, binding -1, stages 1
attributeMat4: offset 0, type 8b5c, size 0, index 0, binding -1, stages 1
gl_InstanceID: offset 0, type 1404, size 0, index 0, binding -1, stages 1
Pipeline output reflection:

View file

@ -0,0 +1,19 @@
#version 440 core
layout(binding = 0, std140) uniform ubo_block {
float unused_uniform;
float shared_uniform;
float vsonly_uniform;
float fsonly_uniform;
} ubo;
in float vertout;
out float fragout;
void main()
{
fragout = vertout;
fragout += ubo.shared_uniform;
fragout += ubo.fsonly_uniform;
}

View file

@ -0,0 +1,19 @@
#version 440 core
layout(binding = 0, std140) uniform ubo_block {
float unused_uniform;
float shared_uniform;
float vsonly_uniform;
float fsonly_uniform;
} ubo;
in float vertin;
out float vertout;
void main()
{
vertout = vertin;
vertout += ubo.shared_uniform;
vertout += ubo.vsonly_uniform;
}

View file

@ -11,6 +11,7 @@ struct TriangleInfo {
buffer VertexCollection {
TriangleInfo t[5];
uint padding[10];
};
buffer MultipleArrays {
@ -22,6 +23,7 @@ buffer MultipleArrays {
uniform UBO {
VertexInfo verts[2];
float flt[8];
uvec4 unused;
} ubo;
out float outval;

View file

@ -172,6 +172,7 @@ struct TriangleInfo {
buffer VertexCollection {
TriangleInfo t[5];
uint padding[10];
};
out float outval;

View file

@ -32,12 +32,16 @@ diff -b $BASEDIR/badMacroArgs.frag.out $TARGETDIR/badMacroArgs.frag.out || HASER
echo Running reflection...
$EXE -l -q -C reflection.vert > $TARGETDIR/reflection.vert.out
diff -b $BASEDIR/reflection.vert.out $TARGETDIR/reflection.vert.out || HASERROR=1
$EXE -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers reflection.options.vert > $TARGETDIR/reflection.options.vert.out
$EXE -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers --reflect-all-block-variables reflection.options.vert > $TARGETDIR/reflection.options.vert.out
diff -b $BASEDIR/reflection.options.vert.out $TARGETDIR/reflection.options.vert.out || HASERROR=1
$EXE -l -q -C reflection.frag > $TARGETDIR/reflection.frag.out
diff -b $BASEDIR/reflection.frag.out $TARGETDIR/reflection.frag.out || HASERROR=1
$EXE -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers reflection.frag > $TARGETDIR/reflection.options.frag.out
$EXE -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers --reflect-all-block-variables reflection.frag > $TARGETDIR/reflection.options.frag.out
diff -b $BASEDIR/reflection.options.frag.out $TARGETDIR/reflection.options.frag.out || HASERROR=1
$EXE -l -q -C reflection.linked.vert reflection.linked.frag > $TARGETDIR/reflection.linked.out
diff -b $BASEDIR/reflection.linked.out $TARGETDIR/reflection.linked.out || HASERROR=1
$EXE -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers --reflect-all-block-variables reflection.linked.vert reflection.linked.frag > $TARGETDIR/reflection.linked.options.out
diff -b $BASEDIR/reflection.linked.options.out $TARGETDIR/reflection.linked.options.out || HASERROR=1
$EXE -D -Od -e flizv -l -q -C -V -Od hlsl.reflection.vert > $TARGETDIR/hlsl.reflection.vert.out
diff -b $BASEDIR/hlsl.reflection.vert.out $TARGETDIR/hlsl.reflection.vert.out || HASERROR=1
$EXE -D -Od -e main -l -q -C -V -Od hlsl.reflection.binding.frag > $TARGETDIR/hlsl.reflection.binding.frag.out