mesh shader: fix implicit index-array size calculation for lines and triangles
authorTry <try9998@gmail.com>
Sun, 16 Oct 2022 13:36:19 +0000 (15:36 +0200)
committerTry <try9998@gmail.com>
Sun, 16 Oct 2022 13:36:19 +0000 (15:36 +0200)
#fixed #3041

glslang/MachineIndependent/ParseHelper.cpp

index e2ac43c..92df16f 100644 (file)
@@ -836,12 +836,16 @@ int TParseContext::getIoArrayImplicitSize(const TQualifier &qualifier, TString *
     } else if (language == EShLangMesh) {
         unsigned int maxPrimitives =
             intermediate.getPrimitives() != TQualifier::layoutNotSet ? intermediate.getPrimitives() : 0;
-        if (qualifier.builtIn == EbvPrimitiveIndicesNV || qualifier.builtIn == EbvPrimitiveTriangleIndicesEXT ||
-            qualifier.builtIn == EbvPrimitiveLineIndicesEXT || qualifier.builtIn == EbvPrimitivePointIndicesEXT) {
+        if (qualifier.builtIn == EbvPrimitiveIndicesNV) {
             expectedSize = maxPrimitives * TQualifier::mapGeometryToSize(intermediate.getOutputPrimitive());
             str = "max_primitives*";
             str += TQualifier::getGeometryString(intermediate.getOutputPrimitive());
         }
+        else if (qualifier.builtIn == EbvPrimitiveTriangleIndicesEXT || qualifier.builtIn == EbvPrimitiveLineIndicesEXT ||
+                 qualifier.builtIn == EbvPrimitivePointIndicesEXT) {
+            expectedSize = maxPrimitives;
+            str = "max_primitives";
+        }
         else if (qualifier.isPerPrimitive()) {
             expectedSize = maxPrimitives;
             str = "max_primitives";