* Non-block arrays should not be ignored when exploding types.
* When not exploding, set the array size correctly on each item.
Pipeline input reflection:
Pipeline output reflection:
-@entryPointOutput: offset 0, type 8b52, size 0, index 0, binding -1, stages 16
+@entryPointOutput: offset 0, type 8b52, size 1, index 0, binding -1, stages 16
Pipeline input reflection:
Pipeline output reflection:
-psout.Color: offset 0, type 8b52, size 0, index 0, binding -1, stages 16
+psout.Color: offset 0, type 8b52, size 1, index 0, binding -1, stages 16
Buffer block reflection:
Pipeline input reflection:
-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
+attributeFloat: offset 0, type 1406, size 1, index 0, binding -1, stages 1
+attributeFloat2: offset 0, type 8b50, size 1, index 0, binding -1, stages 1
+attributeFloat3: offset 0, type 8b51, size 1, index 0, binding -1, stages 1
+attributeFloat4: offset 0, type 8b52, size 1, index 0, binding -1, stages 1
+attributeMat4: offset 0, type 8b5c, size 1, index 0, binding -1, stages 1
Pipeline output reflection:
Pipeline input reflection:
Pipeline output reflection:
-@entryPointOutput: offset 0, type 8b52, size 0, index 0, binding -1, stages 16
+@entryPointOutput: offset 0, type 8b52, size 1, index 0, binding -1, stages 16
Buffer block reflection:
Pipeline input reflection:
-vertin: offset 0, type 1406, size 0, index 0, binding -1, stages 1
+vertin: offset 0, type 1406, size 1, index 0, binding -1, stages 1
Pipeline output reflection:
-fragout: offset 0, type 1406, size 0, index 0, binding -1, stages 16
+fragout: offset 0, type 1406, size 1, index 0, binding -1, stages 16
outval.a: offset 0, type 8b51, size 1, index 0, binding -1, stages 1
outval.b[0]: offset 0, type 8b50, size 4, index 0, binding -1, stages 1
outval.c: offset 0, type 8b5a, size 1, index 0, binding -1, stages 1
+outarr[0]: offset 0, type 1406, size 3, index 0, binding -1, stages 1
Buffer block reflection:
Pipeline input reflection:
-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
+attributeFloat: offset 0, type 1406, size 1, index 0, binding -1, stages 1
+attributeFloat2: offset 0, type 8b50, size 1, index 0, binding -1, stages 1
+attributeFloat3: offset 0, type 8b51, size 1, index 0, binding -1, stages 1
+attributeFloat4: offset 0, type 8b52, size 1, index 0, binding -1, stages 1
+attributeMat4: offset 0, type 8b5c, size 1, index 0, binding -1, stages 1
+attributeFloatArray: offset 0, type 1406, size 3, index 0, binding -1, stages 1
+gl_InstanceID: offset 0, type 1404, size 1, index 0, binding -1, stages 1
Pipeline output reflection:
};\r
\r
out OutputStruct outval;\r
+out float outarr[3];\r
\r
void main()\r
{\r
f += ubo.flt[gl_InstanceID];\r
TriangleInfo tlocal[5] = t;\r
outval.val = f;\r
+ outarr[2] = f;\r
}\r
in vec3 attributeFloat3;\r
in vec4 attributeFloat4;\r
in mat4 attributeMat4;\r
+in float attributeFloatArray[3];\r
\r
uniform deep3 deepA[2], deepB[2], deepC[3], deepD[2];\r
\r
f += attributeFloat3.x;\r
f += attributeFloat4.x;\r
f += attributeMat4[0][1];\r
+ f += attributeFloatArray[2];\r
f += buf1i.runtimeArray[3];\r
f += buf2i.runtimeArray[3].c;\r
f += buf3i.runtimeArray[gl_InstanceID];\r
}
// by convention if this is an arrayed block we ignore the array in the reflection
- if (type.isArray()) {
+ if (type.isArray() && type.getBasicType() == EbtBlock) {
blowUpIOAggregate(input, baseName, TType(type, 0));
} else {
blowUpIOAggregate(input, baseName, type);
TReflection::TNameToIndex::const_iterator it = reflection.nameToIndex.find(name.c_str());
if (it == reflection.nameToIndex.end()) {
reflection.nameToIndex[name.c_str()] = (int)ioItems.size();
- ioItems.push_back(TObjectReflection(name.c_str(), type, 0, mapToGlType(type), 0, 0));
+ ioItems.push_back(
+ TObjectReflection(name.c_str(), type, 0, mapToGlType(type), mapToGlArraySize(type), 0));
EShLanguageMask& stages = ioItems.back().stages;
stages = static_cast<EShLanguageMask>(stages | 1 << intermediate.getStage());