Check for structures out from vertex or into fragment for ES 100 or desktop pre-150.
authorJohn Kessenich <cepheus@frii.com>
Wed, 4 Dec 2013 20:41:33 +0000 (20:41 +0000)
committerJohn Kessenich <cepheus@frii.com>
Wed, 4 Dec 2013 20:41:33 +0000 (20:41 +0000)
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24349 e7fa87d3-cd2b-0410-9028-fcbf551c1848

12 files changed:
Test/100.frag
Test/100scope.vert
Test/140.frag
Test/150.frag
Test/300.vert
Test/baseResults/100.frag.out
Test/baseResults/100scope.vert.out
Test/baseResults/140.frag.out
Test/baseResults/150.frag.out
Test/baseResults/300.vert.out
glslang/Include/revision.h
glslang/MachineIndependent/ParseHelper.cpp

index 1b7f0d0..28b0ec4 100644 (file)
@@ -176,4 +176,6 @@ int agggf(float f) { return 2; }
 int agggf(float f);\r
 int agggf(float f);  // ERROR, second prototype\r
 \r
+varying struct SSS { float f; } s; // ERROR\r
+\r
 uniform samplerExternalOES badExt;  // syntax ERROR\r
index 7e9f82b..f7e2675 100644 (file)
@@ -66,3 +66,5 @@ void main()
         S.x;        // 'S' is now visible as a variable\r
     }\r
 }\r
+\r
+varying struct SSS { float f; } s; // ERROR\r
index e7ae26d..1ac44ce 100644 (file)
@@ -16,3 +16,5 @@ void main()
 #else
 #error GL_ES is not set
 #endif
+
+in struct S { float f; } s; // ERROR
index d4d4488..49d5636 100644 (file)
@@ -12,3 +12,5 @@ void main()
 }\r
 \r
 layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord;  // ERROR, declared after use\r
+\r
+in struct S { float f; } s;\r
index 29453cf..05a5932 100644 (file)
@@ -157,3 +157,5 @@ int gggf(float f);
 
 int agggf(float f) { return 2; }
 int agggf(float f);
+
+out struct Ssss { float f; } ssss;
index bd7716f..dafad7d 100644 (file)
@@ -66,8 +66,9 @@ ERROR: 0:152: 'floating-point suffix' : not supported for this version or the en
 ERROR: 0:167: 'highp' : overloaded functions must have the same parameter precision qualifiers for argument 2\r
 ERROR: 0:170: 'multiple prototypes for same function' : not supported for this version or the enabled extensions \r
 ERROR: 0:177: 'multiple prototypes for same function' : not supported for this version or the enabled extensions \r
-ERROR: 0:179: '' :  syntax error\r
-ERROR: 61 compilation errors.  No code generated.\r
+ERROR: 0:179: 'fragment-shader struct input' : not supported for this version or the enabled extensions \r
+ERROR: 0:181: '' :  syntax error\r
+ERROR: 62 compilation errors.  No code generated.\r
 \r
 \r
 ERROR: node is still EOpNull!\r
@@ -342,6 +343,7 @@ ERROR: node is still EOpNull!
 0:?     'f123' (mediump float)\r
 0:?     'f124' (mediump float)\r
 0:?     'sCube' (uniform lowp samplerCube)\r
+0:?     's' (smooth in structure{f})\r
 \r
 \r
 Linked fragment stage:\r
index 0063ec5..f155096 100644 (file)
@@ -7,7 +7,8 @@ ERROR: 0:22: 'redefinition of built-in function' : not supported with this profi
 ERROR: 0:35: 'local function declaration' : not supported with this profile: es\r
 ERROR: 0:54: 'z' : undeclared identifier \r
 ERROR: 0:54: 'z' : redefinition \r
-ERROR: 8 compilation errors.  No code generated.\r
+ERROR: 0:70: 'vertex-shader struct output' : not supported for this version or the enabled extensions \r
+ERROR: 9 compilation errors.  No code generated.\r
 \r
 \r
 ERROR: node is still EOpNull!\r
@@ -112,6 +113,7 @@ ERROR: node is still EOpNull!
 0:?   Linker Objects\r
 0:?     'b' (bool)\r
 0:?     'tan' (highp float)\r
+0:?     's' (smooth out structure{f})\r
 \r
 \r
 Linked vertex stage:\r
index 4e963ee..7ac82bb 100644 (file)
@@ -2,7 +2,8 @@
 Warning, version 140 is not yet complete; most features are present, but a few are missing.\r
 WARNING: 0:3: varying deprecated in version 130; may be removed in future release\r
 ERROR: 0:17: '#error' : GL_ES is not set  \r
-ERROR: 1 compilation errors.  No code generated.\r
+ERROR: 0:20: 'fragment-shader struct input' : not supported for this version or the enabled extensions \r
+ERROR: 2 compilation errors.  No code generated.\r
 \r
 \r
 ERROR: node is still EOpNull!\r
@@ -22,6 +23,7 @@ ERROR: node is still EOpNull!
 0:?     'o' (out 4-component vector of float)\r
 0:?     'gl_ClipDistance' (smooth in 5-element array of float)\r
 0:?     'gl_ClipDistance' (smooth in 5-element array of float)\r
+0:?     's' (smooth in structure{f})\r
 \r
 \r
 Linked fragment stage:\r
index 398e38a..68d9ae0 100644 (file)
@@ -21,6 +21,7 @@ ERROR: node is still EOpNull!
 0:?     'gl_FragCoord' (gl_FragCoord 4-component vector of float)\r
 0:?     'gl_FragCoord' (gl_FragCoord 4-component vector of float)\r
 0:?     'foo' (smooth in 4-component vector of float)\r
+0:?     's' (smooth in structure{f})\r
 \r
 \r
 Linked fragment stage:\r
index 156914d..e41d351 100644 (file)
@@ -285,6 +285,7 @@ ERROR: node is still EOpNull!
 0:?     's2DS' (uniform lowp sampler2DShadow)\r
 0:?     's2DAS' (uniform lowp sampler2DArrayShadow)\r
 0:?     'c2D' (in highp 2-component vector of float)\r
+0:?     'ssss' (smooth out structure{f})\r
 0:?     'gl_VertexID' (gl_VertexId highp int)\r
 0:?     'gl_InstanceID' (gl_InstanceId highp int)\r
 \r
index 77e51ba..32650d7 100644 (file)
@@ -9,5 +9,5 @@
 // source have to figure out how to create revision.h just to get a build\r
 // going.  However, if it is not updated, it can be a version behind.\r
 \r
-#define GLSLANG_REVISION "24343"\r
-#define GLSLANG_DATE     "2013/12/04 12:46:19"\r
+#define GLSLANG_REVISION "24347"\r
+#define GLSLANG_DATE     "2013/12/04 13:08:16"\r
index cb74ed6..3d2d6f5 100644 (file)
@@ -1651,6 +1651,20 @@ void TParseContext::globalQualifierCheck(TSourceLoc loc, const TQualifier& quali
         }
     }
 
+    if (language == EShLangVertex && qualifier.storage == EvqVaryingOut) {
+        if (publicType.userDef) {
+            profileRequires(loc, EEsProfile, 300, 0, "vertex-shader struct output");
+            profileRequires(loc, ~EEsProfile, 150, 0, "vertex-shader struct output");
+        }
+    }
+
+    if (language == EShLangFragment && qualifier.storage == EvqVaryingIn) {
+        if (publicType.userDef) {
+            profileRequires(loc, EEsProfile, 300, 0, "fragment-shader struct input");
+            profileRequires(loc, ~EEsProfile, 150, 0, "fragment-shader struct input");
+        }
+    }
+
     if (publicType.basicType == EbtInt || publicType.basicType == EbtUint || publicType.basicType == EbtDouble) {
         profileRequires(loc, EEsProfile, 300, 0, "shader input/output");
         if (! qualifier.flat) {