\r
in struct S { float f; } s;\r
\r
-float patch = 3.1;
\ No newline at end of file
+float patch = 3.1;\r
+\r
+uniform sampler2DMS sms;\r
+uniform isampler2DMS isms;\r
+uniform usampler2DMS usms;\r
+uniform sampler2DMSArray smsa;\r
+uniform isampler2DMSArray ismsa;\r
+uniform usampler2DMSArray usmsa;\r
+\r
+flat in ivec2 p2;\r
+flat in ivec3 p3;\r
+flat in int samp;\r
+\r
+void barWxyz()\r
+{\r
+ ivec2 t11 = textureSize( sms);\r
+ ivec2 t12 = textureSize(isms);\r
+ ivec2 t13 = textureSize(usms);\r
+ ivec3 t21 = textureSize( smsa);\r
+ ivec3 t22 = textureSize(ismsa);\r
+ ivec3 t23 = textureSize(usmsa);\r
+ vec4 t31 = texelFetch( sms, p2, samp);\r
+ ivec4 t32 = texelFetch(isms, p2, samp);\r
+ uvec4 t33 = texelFetch(usms, p2, 3);\r
+ vec4 t41 = texelFetch( smsa, p3, samp);\r
+ ivec4 t42 = texelFetch(ismsa, ivec3(2), samp);\r
+ uvec4 t43 = texelFetch(usmsa, p3, samp);\r
+}\r
0:111 Sequence\r
0:111 move second child to first child (4-component vector of int)\r
0:111 'c' (4-component vector of int)\r
-0:111 Function Call: texture(isA31;vf4;f1; (4-component vector of int)\r
-0:111 'Isca' (uniform isampler3DArray)\r
+0:111 Function Call: texture(isAC1;vf4;f1; (4-component vector of int)\r
+0:111 'Isca' (uniform isamplerCubeArray)\r
0:111 'i' (smooth in 4-component vector of float)\r
0:111 Constant:\r
0:111 0.700000\r
0:116 1 (const int)\r
0:117 move second child to first child (4-component vector of int)\r
0:117 'c' (4-component vector of int)\r
-0:117 Function Call: textureGrad(isA31;vf4;vf3;vf3; (4-component vector of int)\r
-0:117 'Isca' (uniform isampler3DArray)\r
+0:117 Function Call: textureGrad(isAC1;vf4;vf3;vf3; (4-component vector of int)\r
+0:117 'Isca' (uniform isamplerCubeArray)\r
0:117 'i' (smooth in 4-component vector of float)\r
0:117 Constant:\r
0:117 0.100000\r
0:? 'samp2DR' (uniform sampler2DRect)\r
0:? 'samp2DA' (uniform sampler2DArray)\r
0:? 'Sca' (uniform samplerCubeArray)\r
-0:? 'Isca' (uniform isampler3DArray)\r
+0:? 'Isca' (uniform isamplerCubeArray)\r
0:? 'Usca' (uniform usamplerCubeArray)\r
0:? 'Scas' (uniform samplerCubeArrayShadow)\r
0:? 'ai' (const 3-element array of int)\r
0:111 Sequence\r
0:111 move second child to first child (4-component vector of int)\r
0:111 'c' (4-component vector of int)\r
-0:111 Function Call: texture(isA31;vf4;f1; (4-component vector of int)\r
-0:111 'Isca' (uniform isampler3DArray)\r
+0:111 Function Call: texture(isAC1;vf4;f1; (4-component vector of int)\r
+0:111 'Isca' (uniform isamplerCubeArray)\r
0:111 'i' (smooth in 4-component vector of float)\r
0:111 Constant:\r
0:111 0.700000\r
0:116 1 (const int)\r
0:117 move second child to first child (4-component vector of int)\r
0:117 'c' (4-component vector of int)\r
-0:117 Function Call: textureGrad(isA31;vf4;vf3;vf3; (4-component vector of int)\r
-0:117 'Isca' (uniform isampler3DArray)\r
+0:117 Function Call: textureGrad(isAC1;vf4;vf3;vf3; (4-component vector of int)\r
+0:117 'Isca' (uniform isamplerCubeArray)\r
0:117 'i' (smooth in 4-component vector of float)\r
0:117 Constant:\r
0:117 0.100000\r
0:? 'samp2DR' (uniform sampler2DRect)\r
0:? 'samp2DA' (uniform sampler2DArray)\r
0:? 'Sca' (uniform samplerCubeArray)\r
-0:? 'Isca' (uniform isampler3DArray)\r
+0:? 'Isca' (uniform isamplerCubeArray)\r
0:? 'Usca' (uniform usamplerCubeArray)\r
0:? 'Scas' (uniform samplerCubeArrayShadow)\r
0:? 'ai' (const 3-element array of int)\r
150.frag\r
-Warning, version 150 is not yet complete; most version-specific features are present, but some are missing.\r
ERROR: 0:4: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord\r
ERROR: 0:5: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord\r
ERROR: 0:6: 'layout qualifier' : can only apply origin_upper_left and pixel_center_origin to gl_FragCoord \r
0:18 'patch' (float)\r
0:18 Constant:\r
0:18 3.100000\r
+0:31 Function Definition: barWxyz( (void)\r
+0:31 Function Parameters: \r
+0:33 Sequence\r
+0:33 Sequence\r
+0:33 move second child to first child (2-component vector of int)\r
+0:33 't11' (2-component vector of int)\r
+0:33 Function Call: textureSize(s21; (2-component vector of int)\r
+0:33 'sms' (uniform sampler2DMS)\r
+0:34 Sequence\r
+0:34 move second child to first child (2-component vector of int)\r
+0:34 't12' (2-component vector of int)\r
+0:34 Function Call: textureSize(is21; (2-component vector of int)\r
+0:34 'isms' (uniform isampler2DMS)\r
+0:35 Sequence\r
+0:35 move second child to first child (2-component vector of int)\r
+0:35 't13' (2-component vector of int)\r
+0:35 Function Call: textureSize(us21; (2-component vector of int)\r
+0:35 'usms' (uniform usampler2DMS)\r
+0:36 Sequence\r
+0:36 move second child to first child (3-component vector of int)\r
+0:36 't21' (3-component vector of int)\r
+0:36 Function Call: textureSize(sA21; (3-component vector of int)\r
+0:36 'smsa' (uniform sampler2DMSArray)\r
+0:37 Sequence\r
+0:37 move second child to first child (3-component vector of int)\r
+0:37 't22' (3-component vector of int)\r
+0:37 Function Call: textureSize(isA21; (3-component vector of int)\r
+0:37 'ismsa' (uniform isampler2DMSArray)\r
+0:38 Sequence\r
+0:38 move second child to first child (3-component vector of int)\r
+0:38 't23' (3-component vector of int)\r
+0:38 Function Call: textureSize(usA21; (3-component vector of int)\r
+0:38 'usmsa' (uniform usampler2DMSArray)\r
+0:39 Sequence\r
+0:39 move second child to first child (4-component vector of float)\r
+0:39 't31' (4-component vector of float)\r
+0:39 Function Call: texelFetch(s21;vi2;i1; (4-component vector of float)\r
+0:39 'sms' (uniform sampler2DMS)\r
+0:39 'p2' (flat in 2-component vector of int)\r
+0:39 'samp' (flat in int)\r
+0:40 Sequence\r
+0:40 move second child to first child (4-component vector of int)\r
+0:40 't32' (4-component vector of int)\r
+0:40 Function Call: texelFetch(is21;vi2;i1; (4-component vector of int)\r
+0:40 'isms' (uniform isampler2DMS)\r
+0:40 'p2' (flat in 2-component vector of int)\r
+0:40 'samp' (flat in int)\r
+0:41 Sequence\r
+0:41 move second child to first child (4-component vector of uint)\r
+0:41 't33' (4-component vector of uint)\r
+0:41 Function Call: texelFetch(us21;vi2;i1; (4-component vector of uint)\r
+0:41 'usms' (uniform usampler2DMS)\r
+0:41 'p2' (flat in 2-component vector of int)\r
+0:41 Constant:\r
+0:41 3 (const int)\r
+0:42 Sequence\r
+0:42 move second child to first child (4-component vector of float)\r
+0:42 't41' (4-component vector of float)\r
+0:42 Function Call: texelFetch(sA21;vi3;i1; (4-component vector of float)\r
+0:42 'smsa' (uniform sampler2DMSArray)\r
+0:42 'p3' (flat in 3-component vector of int)\r
+0:42 'samp' (flat in int)\r
+0:43 Sequence\r
+0:43 move second child to first child (4-component vector of int)\r
+0:43 't42' (4-component vector of int)\r
+0:43 Function Call: texelFetch(isA21;vi3;i1; (4-component vector of int)\r
+0:43 'ismsa' (uniform isampler2DMSArray)\r
+0:43 Constant:\r
+0:43 2 (const int)\r
+0:43 2 (const int)\r
+0:43 2 (const int)\r
+0:43 'samp' (flat in int)\r
+0:44 Sequence\r
+0:44 move second child to first child (4-component vector of uint)\r
+0:44 't43' (4-component vector of uint)\r
+0:44 Function Call: texelFetch(usA21;vi3;i1; (4-component vector of uint)\r
+0:44 'usmsa' (uniform usampler2DMSArray)\r
+0:44 'p3' (flat in 3-component vector of int)\r
+0:44 'samp' (flat in int)\r
0:? Linker Objects\r
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{float f})\r
0:? 'patch' (float)\r
+0:? 'sms' (uniform sampler2DMS)\r
+0:? 'isms' (uniform isampler2DMS)\r
+0:? 'usms' (uniform usampler2DMS)\r
+0:? 'smsa' (uniform sampler2DMSArray)\r
+0:? 'ismsa' (uniform isampler2DMSArray)\r
+0:? 'usmsa' (uniform usampler2DMSArray)\r
+0:? 'p2' (flat in 2-component vector of int)\r
+0:? 'p3' (flat in 3-component vector of int)\r
+0:? 'samp' (flat in int)\r
\r
\r
Linked fragment stage:\r
0:18 'patch' (float)\r
0:18 Constant:\r
0:18 3.100000\r
+0:31 Function Definition: barWxyz( (void)\r
+0:31 Function Parameters: \r
+0:33 Sequence\r
+0:33 Sequence\r
+0:33 move second child to first child (2-component vector of int)\r
+0:33 't11' (2-component vector of int)\r
+0:33 Function Call: textureSize(s21; (2-component vector of int)\r
+0:33 'sms' (uniform sampler2DMS)\r
+0:34 Sequence\r
+0:34 move second child to first child (2-component vector of int)\r
+0:34 't12' (2-component vector of int)\r
+0:34 Function Call: textureSize(is21; (2-component vector of int)\r
+0:34 'isms' (uniform isampler2DMS)\r
+0:35 Sequence\r
+0:35 move second child to first child (2-component vector of int)\r
+0:35 't13' (2-component vector of int)\r
+0:35 Function Call: textureSize(us21; (2-component vector of int)\r
+0:35 'usms' (uniform usampler2DMS)\r
+0:36 Sequence\r
+0:36 move second child to first child (3-component vector of int)\r
+0:36 't21' (3-component vector of int)\r
+0:36 Function Call: textureSize(sA21; (3-component vector of int)\r
+0:36 'smsa' (uniform sampler2DMSArray)\r
+0:37 Sequence\r
+0:37 move second child to first child (3-component vector of int)\r
+0:37 't22' (3-component vector of int)\r
+0:37 Function Call: textureSize(isA21; (3-component vector of int)\r
+0:37 'ismsa' (uniform isampler2DMSArray)\r
+0:38 Sequence\r
+0:38 move second child to first child (3-component vector of int)\r
+0:38 't23' (3-component vector of int)\r
+0:38 Function Call: textureSize(usA21; (3-component vector of int)\r
+0:38 'usmsa' (uniform usampler2DMSArray)\r
+0:39 Sequence\r
+0:39 move second child to first child (4-component vector of float)\r
+0:39 't31' (4-component vector of float)\r
+0:39 Function Call: texelFetch(s21;vi2;i1; (4-component vector of float)\r
+0:39 'sms' (uniform sampler2DMS)\r
+0:39 'p2' (flat in 2-component vector of int)\r
+0:39 'samp' (flat in int)\r
+0:40 Sequence\r
+0:40 move second child to first child (4-component vector of int)\r
+0:40 't32' (4-component vector of int)\r
+0:40 Function Call: texelFetch(is21;vi2;i1; (4-component vector of int)\r
+0:40 'isms' (uniform isampler2DMS)\r
+0:40 'p2' (flat in 2-component vector of int)\r
+0:40 'samp' (flat in int)\r
+0:41 Sequence\r
+0:41 move second child to first child (4-component vector of uint)\r
+0:41 't33' (4-component vector of uint)\r
+0:41 Function Call: texelFetch(us21;vi2;i1; (4-component vector of uint)\r
+0:41 'usms' (uniform usampler2DMS)\r
+0:41 'p2' (flat in 2-component vector of int)\r
+0:41 Constant:\r
+0:41 3 (const int)\r
+0:42 Sequence\r
+0:42 move second child to first child (4-component vector of float)\r
+0:42 't41' (4-component vector of float)\r
+0:42 Function Call: texelFetch(sA21;vi3;i1; (4-component vector of float)\r
+0:42 'smsa' (uniform sampler2DMSArray)\r
+0:42 'p3' (flat in 3-component vector of int)\r
+0:42 'samp' (flat in int)\r
+0:43 Sequence\r
+0:43 move second child to first child (4-component vector of int)\r
+0:43 't42' (4-component vector of int)\r
+0:43 Function Call: texelFetch(isA21;vi3;i1; (4-component vector of int)\r
+0:43 'ismsa' (uniform isampler2DMSArray)\r
+0:43 Constant:\r
+0:43 2 (const int)\r
+0:43 2 (const int)\r
+0:43 2 (const int)\r
+0:43 'samp' (flat in int)\r
+0:44 Sequence\r
+0:44 move second child to first child (4-component vector of uint)\r
+0:44 't43' (4-component vector of uint)\r
+0:44 Function Call: texelFetch(usA21;vi3;i1; (4-component vector of uint)\r
+0:44 'usmsa' (uniform usampler2DMSArray)\r
+0:44 'p3' (flat in 3-component vector of int)\r
+0:44 'samp' (flat in int)\r
0:? Linker Objects\r
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{float f})\r
0:? 'patch' (float)\r
+0:? 'sms' (uniform sampler2DMS)\r
+0:? 'isms' (uniform isampler2DMS)\r
+0:? 'usms' (uniform usampler2DMS)\r
+0:? 'smsa' (uniform sampler2DMSArray)\r
+0:? 'ismsa' (uniform isampler2DMSArray)\r
+0:? 'usmsa' (uniform usampler2DMSArray)\r
+0:? 'p2' (flat in 2-component vector of int)\r
+0:? 'p3' (flat in 3-component vector of int)\r
+0:? 'samp' (flat in int)\r
\r
150.geom\r
-Warning, version 150 is not yet complete; most version-specific features are present, but some are missing.\r
ERROR: 0:15: 'fromVertex' : block instance name redefinition \r
ERROR: 0:19: 'fromVertex' : redefinition \r
ERROR: 0:21: 'fooC' : block instance name redefinition \r
150.tesc\r
-Warning, version 150 is not yet complete; most version-specific features are present, but some are missing.\r
\r
Shader version: 150\r
Requested GL_ARB_tessellation_shader\r
0:? 'patchOut' (patch out 4-component vector of float)\r
\r
150.tese\r
-Warning, version 150 is not yet complete; most version-specific features are present, but some are missing.\r
ERROR: 0:12: 'barrier' : no matching overloaded function found \r
ERROR: 1 compilation errors. No code generated.\r
\r
150.vert\r
-Warning, version 150 is not yet complete; most version-specific features are present, but some are missing.\r
ERROR: 0:22: 'a' : cannot redeclare a user-block member array \r
ERROR: 1 compilation errors. No code generated.\r
\r
\r
noMain1.geom\r
ERROR: #version: geometry shaders require non-es profile and version 150 or above\r
-Warning, version 150 is not yet complete; most version-specific features are present, but some are missing.\r
ERROR: 1 compilation errors. No code generated.\r
\r
\r
0:? Linker Objects\r
\r
noMain2.geom\r
-Warning, version 150 is not yet complete; most version-specific features are present, but some are missing.\r
\r
Shader version: 150\r
invocations = 0\r
../../LunarGLASS/test/matrix2.frag\r
-Warning, version 150 is not yet complete; most version-specific features are present, but some are missing.\r
WARNING: 0:4: varying deprecated in version 130; may be removed in future release\r
WARNING: 0:13: varying deprecated in version 130; may be removed in future release\r
WARNING: 0:15: varying deprecated in version 130; may be removed in future release\r
../../LunarGLASS/test/simpleFunctionCall.frag\r
-Warning, version 150 is not yet complete; most version-specific features are present, but some are missing.\r
WARNING: 0:4: varying deprecated in version 130; may be removed in future release\r
\r
Shader version: 150\r
-Current functionality level: ESSL 3.0
+Current functionality level: ESSL 3.0, GLSL 1.5
+ create version system
+ Fixed functionality for a programmable stage.
+ ftransform(). Use invariant outputs instead.
GLSL 1.5 (Non-ES)
- - Deprecated gl_MaxVaryingComponents
+ + Deprecated gl_MaxVaryingComponents
+ Add new minimum maximums for gl_MaxVertexOutputComponents, gl_MaxGeometryInputComponents, gl_MaxGeometryOutputComponents, and gl_MaxFragmentInputComponents,
rather than relying on gl_MaxVaryingComponents. Also, corrected gl_MaxVaryingComponents to be 60 instead of 64.
+ Added gl_PrimitiveID as an input to fragment shaders.
+ Added gl_FragCoord qualifiers origin_upper_left, and pixel_center_integer to modify the values returned by gl_FragCoord (and have no affect on any other aspect of the pipeline or language).
+ including redeclaration of gl_FragCoord that adds nothing
- - Added support for multi-sample textures through sampler2DMS and sampler2DMSArray support in texelFetch() and textureSize().
+ + Added support for multi-sample textures through sampler2DMS and sampler2DMSArray support in texelFetch() and textureSize().
+ Broadened interface blocks from just uniforms to in and out interfaces as well.
+ Broaden array usage to include vertex shader inputs (vertex in).
+ Added geometry shaders. This includes targeting layers in FBO rendering.
if (version >= 130)
add2ndGenerationSamplingImaging(version, profile);
- //printf("%s\n", commonBuiltins.c_str();
+ // printf("%s\n", commonBuiltins.c_str());
}
//
snprintf(builtInConstant, maxSize, "const int gl_MaxVertexUniformComponents = %d;", resources.maxVertexUniformComponents);
s.append(builtInConstant);
- snprintf(builtInConstant, maxSize, "const int gl_MaxVaryingFloats = %d;", resources.maxVaryingFloats);
- s.append(builtInConstant);
+ if (version < 150 || ARBCompatibility) {
+ snprintf(builtInConstant, maxSize, "const int gl_MaxVaryingFloats = %d;", resources.maxVaryingFloats);
+ s.append(builtInConstant);
+ }
snprintf(builtInConstant, maxSize, "const int gl_MaxFragmentUniformComponents = %d;", resources.maxFragmentUniformComponents);
s.append(builtInConstant);
}
//
-// Convert the node's type to the given type, as allowed by the operation involved 'op'.
+// Convert the node's type to the given type, as allowed by the operation involved: 'op'.
// For implicit conversions, 'op' is not the requested conversion, it is the explicit
// operation requiring the implicit conversion.
//
//
switch (node->getBasicType()) {
case EbtVoid:
- case EbtSampler:
return 0;
- default: break;
+ case EbtSampler:
+ if (op != EOpFunctionCall)
+ return 0;
+ break;
+ default:
+ break;
}
//
case EOpMatrixTimesVector:
case EOpMatrixTimesScalar:
+ case EOpFunctionCall:
case EOpAssign:
case EOpAddAssign:
case EOpSubAssign:
if (function[i].type->getQualifier().isParamInput()) {
// In-qualified arguments just need an extra node added above the argument to
// convert to the correct type.
- arg = intermediate.addConversion(EOpAssign, *function[i].type, arg);
- if (aggregate)
- aggregate->getSequence()[i] = arg;
- else
- arguments = arg;
+ arg = intermediate.addConversion(EOpFunctionCall, *function[i].type, arg);
+ if (arg) {
+ if (aggregate)
+ aggregate->getSequence()[i] = arg;
+ else
+ arguments = arg;
+ }
}
}
}
infoSink.info.message(EPrefixError, "#version: statement must appear first in es-profile shader; before comments or newlines");
}
- // A metecheck on the condition of the compiler itself...
+ // A metacheck on the condition of the compiler itself...
switch (version) {
+
+ // ES versions
case 100:
case 300:
+ // versions are complete
+ break;
+ // Desktop versions
case 110:
case 120:
case 130:
case 140:
+ case 150:
// versions are complete
break;
+
default:
infoSink.info << "Warning, version " << version << " is not yet complete; most version-specific features are present, but some are missing.\n";
break;
| ISAMPLERCUBEARRAY {\r
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());\r
$$.basicType = EbtSampler;\r
- $$.sampler.set(EbtInt, Esd3D, true);\r
+ $$.sampler.set(EbtInt, EsdCube, true);\r
}\r
| USAMPLER1D {\r
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());\r