Turn on the sampler 2DMS types for ES 3.1.
authorJohn Kessenich <cepheus@frii.com>
Thu, 14 Aug 2014 23:30:11 +0000 (23:30 +0000)
committerJohn Kessenich <cepheus@frii.com>
Thu, 14 Aug 2014 23:30:11 +0000 (23:30 +0000)
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27741 e7fa87d3-cd2b-0410-9028-fcbf551c1848

Test/310.vert
Test/baseResults/310.frag.out
Test/baseResults/310.vert.out
Todo.txt
glslang/MachineIndependent/Initialize.cpp
glslang/MachineIndependent/Scan.cpp

index d4d710f..ed8ab34 100644 (file)
@@ -47,3 +47,24 @@ void main()
     v4 = unpackUnorm4x8(u1);\r
     v4 = unpackSnorm4x8(u1);\r
 }\r
+\r
+precision highp sampler2DMS;\r
+precision highp isampler2DMS;\r
+precision highp usampler2DMS;\r
+\r
+uniform sampler2DMS s2dms;\r
+uniform isampler2DMS is2dms;\r
+uniform usampler2DMS us2dms;\r
+uniform usampler2DMSArray us2dmsa;   // ERROR\r
+\r
+void foo()\r
+{\r
+    ivec2 v2;\r
+    v2 = textureSize(s2dms);\r
+    v2 = textureSize(us2dms);\r
+    vec4 v4 = texelFetch(s2dms, v2, 2);\r
+    ivec4 iv4 = texelFetch(is2dms, v2, 2);\r
+    textureSamples(s2dms);   // ERROR\r
+\r
+\r
+}
\ No newline at end of file
index 92682da..5d4c895 100644 (file)
@@ -23,15 +23,12 @@ ERROR: 0:78: 'location' : too large for fragment output
 ERROR: 0:78: 'location' : overlapping use of location 40\r
 ERROR: 0:79: 'non-literal layout-id value' : not supported with this profile: es\r
 ERROR: 0:79: 'layout-id value' : cannot be negative \r
-ERROR: 0:92: 'sampler2DMS' : Reserved word. \r
-ERROR: 0:98: 'textureSize' : no matching overloaded function found \r
-ERROR: 0:98: 'assign' :  cannot convert from 'const float' to 'highp 2-component vector of int'\r
 ERROR: 0:99: 'writeonly' : argument cannot drop memory qualifier when passed to formal parameter \r
 ERROR: 0:102: 'out' : cannot be bool \r
 ERROR: 0:103: 'image2D' : sampler/image types can only be used in uniform variables or function parameters: imageOut\r
 ERROR: 0:103: '' : image variables not declared 'writeonly' must have a format layout qualifier \r
 ERROR: 0:104: 'out' : cannot be a matrix \r
-ERROR: 31 compilation errors.  No code generated.\r
+ERROR: 28 compilation errors.  No code generated.\r
 \r
 \r
 Shader version: 310\r
@@ -225,7 +222,10 @@ ERROR: node is still EOpNull!
 0:97            'isamp2DA' (uniform highp isampler2DArray)\r
 0:97            Constant:\r
 0:97              3 (const int)\r
-0:98      'v2' (highp 2-component vector of int)\r
+0:98      move second child to first child (highp 2-component vector of int)\r
+0:98        'v2' (highp 2-component vector of int)\r
+0:98        Function Call: textureSize(s21; (highp 2-component vector of int)\r
+0:98          's2dms' (uniform highp sampler2DMS)\r
 0:99      move second child to first child (highp 2-component vector of int)\r
 0:99        'v2' (highp 2-component vector of int)\r
 0:99        Function Call: imageSize(I21; (highp 2-component vector of int)\r
@@ -455,7 +455,10 @@ ERROR: node is still EOpNull!
 0:97            'isamp2DA' (uniform highp isampler2DArray)\r
 0:97            Constant:\r
 0:97              3 (const int)\r
-0:98      'v2' (highp 2-component vector of int)\r
+0:98      move second child to first child (highp 2-component vector of int)\r
+0:98        'v2' (highp 2-component vector of int)\r
+0:98        Function Call: textureSize(s21; (highp 2-component vector of int)\r
+0:98          's2dms' (uniform highp sampler2DMS)\r
 0:99      move second child to first child (highp 2-component vector of int)\r
 0:99        'v2' (highp 2-component vector of int)\r
 0:99        Function Call: imageSize(I21; (highp 2-component vector of int)\r
index 77d6851..4deca14 100644 (file)
@@ -4,7 +4,10 @@ ERROR: 0:3: 'shared' : not supported in this stage: vertex
 ERROR: 0:4: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value \r
 ERROR: 0:5: 'buffer' : buffers can be declared only as blocks \r
 ERROR: 0:10: 'location' : overlapping use of location 3\r
-ERROR: 4 compilation errors.  No code generated.\r
+ERROR: 0:58: 'usampler2DMSArray' : Reserved word. \r
+ERROR: 0:58: 'sampler/image' : type requires declaration of default precision qualifier \r
+ERROR: 0:67: 'textureSamples' : no matching overloaded function found \r
+ERROR: 7 compilation errors.  No code generated.\r
 \r
 \r
 Shader version: 310\r
@@ -126,6 +129,35 @@ ERROR: node is still EOpNull!
 0:48        'v4' (mediump 4-component vector of float)\r
 0:48        Function Call: unpackSnorm4x8(u1; (mediump 4-component vector of float)\r
 0:48          'u1' (highp uint)\r
+0:60  Function Definition: foo( (void)\r
+0:60    Function Parameters: \r
+0:?     Sequence\r
+0:63      move second child to first child (highp 2-component vector of int)\r
+0:63        'v2' (highp 2-component vector of int)\r
+0:63        Function Call: textureSize(s21; (highp 2-component vector of int)\r
+0:63          's2dms' (uniform highp sampler2DMS)\r
+0:64      move second child to first child (highp 2-component vector of int)\r
+0:64        'v2' (highp 2-component vector of int)\r
+0:64        Function Call: textureSize(us21; (highp 2-component vector of int)\r
+0:64          'us2dms' (uniform highp usampler2DMS)\r
+0:65      Sequence\r
+0:65        move second child to first child (highp 4-component vector of float)\r
+0:65          'v4' (highp 4-component vector of float)\r
+0:65          Function Call: texelFetch(s21;vi2;i1; (highp 4-component vector of float)\r
+0:65            's2dms' (uniform highp sampler2DMS)\r
+0:65            'v2' (highp 2-component vector of int)\r
+0:65            Constant:\r
+0:65              2 (const int)\r
+0:66      Sequence\r
+0:66        move second child to first child (highp 4-component vector of int)\r
+0:66          'iv4' (highp 4-component vector of int)\r
+0:66          Function Call: texelFetch(is21;vi2;i1; (highp 4-component vector of int)\r
+0:66            'is2dms' (uniform highp isampler2DMS)\r
+0:66            'v2' (highp 2-component vector of int)\r
+0:66            Constant:\r
+0:66              2 (const int)\r
+0:67      Constant:\r
+0:67        0.000000\r
 0:?   Linker Objects\r
 0:?     's' (shared highp 4-component vector of float)\r
 0:?     'v' (buffer highp 4-component vector of float)\r
@@ -133,6 +165,10 @@ ERROR: node is still EOpNull!
 0:?     'y' (layout(location=3 ) uniform highp 4X4 matrix of float)\r
 0:?     'xi' (layout(location=2 ) smooth out highp 4X4 matrix of float)\r
 0:?     'yi' (layout(location=3 ) smooth out highp 4X4 matrix of float)\r
+0:?     's2dms' (uniform highp sampler2DMS)\r
+0:?     'is2dms' (uniform highp isampler2DMS)\r
+0:?     'us2dms' (uniform highp usampler2DMS)\r
+0:?     'us2dmsa' (uniform mediump usampler2DMSArray)\r
 0:?     'gl_VertexID' (gl_VertexId highp int)\r
 0:?     'gl_InstanceID' (gl_InstanceId highp int)\r
 \r
@@ -259,6 +295,35 @@ ERROR: node is still EOpNull!
 0:48        'v4' (mediump 4-component vector of float)\r
 0:48        Function Call: unpackSnorm4x8(u1; (mediump 4-component vector of float)\r
 0:48          'u1' (highp uint)\r
+0:60  Function Definition: foo( (void)\r
+0:60    Function Parameters: \r
+0:?     Sequence\r
+0:63      move second child to first child (highp 2-component vector of int)\r
+0:63        'v2' (highp 2-component vector of int)\r
+0:63        Function Call: textureSize(s21; (highp 2-component vector of int)\r
+0:63          's2dms' (uniform highp sampler2DMS)\r
+0:64      move second child to first child (highp 2-component vector of int)\r
+0:64        'v2' (highp 2-component vector of int)\r
+0:64        Function Call: textureSize(us21; (highp 2-component vector of int)\r
+0:64          'us2dms' (uniform highp usampler2DMS)\r
+0:65      Sequence\r
+0:65        move second child to first child (highp 4-component vector of float)\r
+0:65          'v4' (highp 4-component vector of float)\r
+0:65          Function Call: texelFetch(s21;vi2;i1; (highp 4-component vector of float)\r
+0:65            's2dms' (uniform highp sampler2DMS)\r
+0:65            'v2' (highp 2-component vector of int)\r
+0:65            Constant:\r
+0:65              2 (const int)\r
+0:66      Sequence\r
+0:66        move second child to first child (highp 4-component vector of int)\r
+0:66          'iv4' (highp 4-component vector of int)\r
+0:66          Function Call: texelFetch(is21;vi2;i1; (highp 4-component vector of int)\r
+0:66            'is2dms' (uniform highp isampler2DMS)\r
+0:66            'v2' (highp 2-component vector of int)\r
+0:66            Constant:\r
+0:66              2 (const int)\r
+0:67      Constant:\r
+0:67        0.000000\r
 0:?   Linker Objects\r
 0:?     's' (shared highp 4-component vector of float)\r
 0:?     'v' (buffer highp 4-component vector of float)\r
@@ -266,6 +331,10 @@ ERROR: node is still EOpNull!
 0:?     'y' (layout(location=3 ) uniform highp 4X4 matrix of float)\r
 0:?     'xi' (layout(location=2 ) smooth out highp 4X4 matrix of float)\r
 0:?     'yi' (layout(location=3 ) smooth out highp 4X4 matrix of float)\r
+0:?     's2dms' (uniform highp sampler2DMS)\r
+0:?     'is2dms' (uniform highp isampler2DMS)\r
+0:?     'us2dms' (uniform highp usampler2DMS)\r
+0:?     'us2dmsa' (uniform mediump usampler2DMSArray)\r
 0:?     'gl_VertexID' (gl_VertexId highp int)\r
 0:?     'gl_InstanceID' (gl_InstanceId highp int)\r
 \r
index f3912ad..6d03f46 100644 (file)
--- a/Todo.txt
+++ b/Todo.txt
@@ -85,7 +85,7 @@ Shader Functionality to Implement/Finish
       - overlapping offsets
       + frexp/ldexp
       + packUnorm4x8(),packSnorm4x8(), unpackUnorm4x8(), unpackSnorm4x8()
-      - 2DMS samplers and images
+      + 2DMS samplers and images
       - inheritance of memory qualifiers in block members
     GLSL 1.2
       + Handle multiple compilation units per stage
index a0a7deb..57459ff 100644 (file)
@@ -1757,7 +1757,11 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile)
 
                 if ((ms || image) && shadow)
                     continue;
-                if (ms && (profile == EEsProfile || version < 150))
+                if (ms && profile != EEsProfile && version < 150)
+                    continue;
+                if (ms && image && profile == EEsProfile)
+                    continue;
+                if (ms && profile == EEsProfile && version < 310)
                     continue;
 
                 for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not
@@ -1777,6 +1781,8 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile)
                             continue;
                         if (dim == EsdBuffer && (shadow || arrayed || ms))
                             continue;
+                        if (ms && arrayed && profile == EEsProfile)
+                            continue;
 
                         for (int bType = 0; bType < 3; ++bType) { // float, int, uint results
 
index e9d3cfb..1d7c417 100644 (file)
@@ -842,6 +842,11 @@ int TScanContext::tokenizeIdentifier()
     case SAMPLER2DMS:
     case ISAMPLER2DMS:
     case USAMPLER2DMS:
+        afterType = true;
+        if (parseContext.profile == EEsProfile && parseContext.version >= 310)
+            return keyword;
+        return es30ReservedFromGLSL(150);
+
     case SAMPLER2DMSARRAY:
     case ISAMPLER2DMSARRAY:
     case USAMPLER2DMSARRAY: