Nonfunctional: Add reflect test case, and fix long lines in reflection code.
authorJohn Kessenich <cepheus@frii.com>
Fri, 28 Jul 2017 23:32:27 +0000 (17:32 -0600)
committerJohn Kessenich <cepheus@frii.com>
Fri, 28 Jul 2017 23:32:27 +0000 (17:32 -0600)
Test/baseResults/reflection.vert.out
Test/reflection.vert
glslang/MachineIndependent/reflection.cpp

index de49cc4..55e0844 100644 (file)
@@ -70,6 +70,9 @@ deepD[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1
 deepD[1].v3: offset -1, type 8b54, size 1, index -1, binding -1
 abl.foo: offset 0, type 1406, size 1, index 7, binding -1
 abl2.foo: offset 0, type 1406, size 1, index 11, binding -1
+buf1.runtimeArray: offset 4, type 1406, size 4, index 12, binding -1
+buf2.runtimeArray.c: offset 8, type 1406, size 1, index 13, binding -1
+buf3.runtimeArray: offset 4, type 1406, size 0, index 14, binding -1
 anonMember1: offset 0, type 8b51, size 1, index 0, binding -1
 uf1: offset -1, type 1406, size 1, index -1, binding -1
 uf2: offset -1, type 1406, size 1, index -1, binding -1
@@ -88,6 +91,10 @@ abl2[0]: offset -1, type ffffffff, size 4, index -1, binding -1
 abl2[1]: offset -1, type ffffffff, size 4, index -1, binding -1
 abl2[2]: offset -1, type ffffffff, size 4, index -1, binding -1
 abl2[3]: offset -1, type ffffffff, size 4, index -1, binding -1
+buf1: offset -1, type ffffffff, size 4, index -1, binding -1
+buf2: offset -1, type ffffffff, size 4, index -1, binding -1
+buf3: offset -1, type ffffffff, size 4, index -1, binding -1
+buf4: offset -1, type ffffffff, size 4, index -1, binding -1
 
 Vertex attribute reflection:
 attributeFloat: offset 0, type 1406, size 0, index 0, binding -1
@@ -95,4 +102,5 @@ attributeFloat2: offset 0, type 8b50, size 0, index 0, binding -1
 attributeFloat3: offset 0, type 8b51, size 0, index 0, binding -1
 attributeFloat4: offset 0, type 8b52, size 0, index 0, binding -1
 attributeMat4: offset 0, type 8b5c, size 0, index 0, binding -1
+gl_InstanceID: offset 0, type 1404, size 0, index 0, binding -1
 
index be49822..7549f08 100644 (file)
@@ -133,6 +133,26 @@ uniform abl2 {
     float foo;\r
 } arrBl2[4];\r
 \r
+buffer buf1 {\r
+    float scalar;\r
+    float runtimeArray[];\r
+} buf1i;\r
+\r
+buffer buf2 {\r
+    float scalar;\r
+    N2 runtimeArray[];\r
+} buf2i;\r
+\r
+buffer buf3 {\r
+    float scalar;\r
+    float runtimeArray[];\r
+} buf3i;\r
+\r
+buffer buf4 {\r
+    float scalar;\r
+    N2 runtimeArray[];\r
+} buf4i;\r
+\r
 void main()\r
 {\r
     liveFunction1(image_ui2D, sampler_2D, sampler_2DMSArray);\r
@@ -179,4 +199,8 @@ void main()
     f += attributeFloat3.x;\r
     f += attributeFloat4.x;\r
     f += attributeMat4[0][1];\r
+    f += buf1i.runtimeArray[3];\r
+    f += buf2i.runtimeArray[3].c;\r
+    f += buf3i.runtimeArray[gl_InstanceID];\r
+    f += buf4i.runtimeArray[gl_InstanceID].c;\r
 }\r
index aa132e7..c3bdb7f 100644 (file)
@@ -131,8 +131,11 @@ public:
         for (int m = 0; m <= index; ++m) {
             // modify just the children's view of matrix layout, if there is one for this member
             TLayoutMatrix subMatrixLayout = memberList[m].type->getQualifier().layoutMatrix;
-            int memberAlignment = intermediate.getBaseAlignment(*memberList[m].type, memberSize, dummyStride, type.getQualifier().layoutPacking == ElpStd140,
-                                                                subMatrixLayout != ElmNone ? subMatrixLayout == ElmRowMajor : type.getQualifier().layoutMatrix == ElmRowMajor);
+            int memberAlignment = intermediate.getBaseAlignment(*memberList[m].type, memberSize, dummyStride,
+                                                                type.getQualifier().layoutPacking == ElpStd140,
+                                                                subMatrixLayout != ElmNone
+                                                                    ? subMatrixLayout == ElmRowMajor
+                                                                    : type.getQualifier().layoutMatrix == ElmRowMajor);
             RoundToPow2(offset, memberAlignment);
             if (m < index)
                 offset += memberSize;
@@ -151,7 +154,8 @@ public:
 
         int lastMemberSize;
         int dummyStride;
-        intermediate.getBaseAlignment(*memberList[lastIndex].type, lastMemberSize, dummyStride, blockType.getQualifier().layoutPacking == ElpStd140,
+        intermediate.getBaseAlignment(*memberList[lastIndex].type, lastMemberSize, dummyStride,
+                                      blockType.getQualifier().layoutPacking == ElpStd140,
                                       blockType.getQualifier().layoutMatrix == ElmRowMajor);
 
         return lastOffset + lastMemberSize;
@@ -167,7 +171,7 @@ public:
     void blowUpActiveAggregate(const TType& baseType, const TString& baseName, const TList<TIntermBinary*>& derefs,
                                TList<TIntermBinary*>::const_iterator deref, int offset, int blockIndex, int arraySize)
     {
-        // process the part of the derefence chain that was explicit in the shader
+        // process the part of the dereference chain that was explicit in the shader
         TString name = baseName;
         const TType* terminalType = &baseType;
         for (; deref != derefs.end(); ++deref) {
@@ -235,7 +239,7 @@ public:
         }
 
         // Finally, add a full string to the reflection database, and update the array size if necessary.
-        // If the derefenced entity to record is an array, compute the size and update the maximum size.
+        // If the dereferenced entity to record is an array, compute the size and update the maximum size.
 
         // there might not be a final array dereference, it could have been copied as an array object
         if (arraySize == 0)
@@ -244,7 +248,8 @@ public:
         TReflection::TNameToIndex::const_iterator it = reflection.nameToIndex.find(name);
         if (it == reflection.nameToIndex.end()) {
             reflection.nameToIndex[name] = (int)reflection.indexToUniform.size();
-            reflection.indexToUniform.push_back(TObjectReflection(name, *terminalType, offset, mapToGlType(*terminalType),
+            reflection.indexToUniform.push_back(TObjectReflection(name, *terminalType, offset,
+                                                                  mapToGlType(*terminalType),
                                                                   arraySize, blockIndex));
         } else if (arraySize > 1) {
             int& reflectedArraySize = reflection.indexToUniform[it->second].size;
@@ -417,7 +422,8 @@ public:
                 case Esd2D:
                     switch ((int)sampler.ms) {
                     case false:  return sampler.arrayed ? GL_INT_SAMPLER_2D_ARRAY : GL_INT_SAMPLER_2D;
-                    case true:   return sampler.arrayed ? GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY : GL_INT_SAMPLER_2D_MULTISAMPLE;
+                    case true:   return sampler.arrayed ? GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+                                                        : GL_INT_SAMPLER_2D_MULTISAMPLE;
                     }
                 case Esd3D:
                     return GL_INT_SAMPLER_3D;
@@ -435,7 +441,8 @@ public:
                 case Esd2D:
                     switch ((int)sampler.ms) {
                     case false:  return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_2D_ARRAY : GL_UNSIGNED_INT_SAMPLER_2D;
-                    case true:   return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY : GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE;
+                    case true:   return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+                                                        : GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE;
                     }
                 case Esd3D:
                     return GL_UNSIGNED_INT_SAMPLER_3D;
@@ -495,7 +502,8 @@ public:
                 case Esd2D:
                     switch ((int)sampler.ms) {
                     case false:  return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_2D_ARRAY : GL_UNSIGNED_INT_IMAGE_2D;
-                    case true:   return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY : GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE;
+                    case true:   return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY
+                                                        : GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE;
                     }
                 case Esd3D:
                     return GL_UNSIGNED_INT_IMAGE_3D;