Forbid shared and packed layouts in WebGL

WebGL 2.0 spec section 5.25 specifies this.

BUG=angleproject:1542
TEST=WebGL 2 conformance tests

Change-Id: Ic5758bc0e767a8e6dd032e42c0a69bcae06381c4
Reviewed-on: https://chromium-review.googlesource.com/399682
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
diff --git a/src/compiler/translator/ParseContext.cpp b/src/compiler/translator/ParseContext.cpp
index 79b2b06..70c0c27 100644
--- a/src/compiler/translator/ParseContext.cpp
+++ b/src/compiler/translator/ParseContext.cpp
@@ -2865,10 +2865,18 @@
 
     if (qualifierType == "shared")
     {
+        if (IsWebGLBasedSpec(mShaderSpec))
+        {
+            error(qualifierTypeLine, "Only std140 layout is allowed in WebGL", "shared");
+        }
         qualifier.blockStorage = EbsShared;
     }
     else if (qualifierType == "packed")
     {
+        if (IsWebGLBasedSpec(mShaderSpec))
+        {
+            error(qualifierTypeLine, "Only std140 layout is allowed in WebGL", "packed");
+        }
         qualifier.blockStorage = EbsPacked;
     }
     else if (qualifierType == "std140")