ERROR: 0:84: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions \r
ERROR: 0:85: 'textureGatherOffset(...)' : not supported for this version or the enabled extensions \r
WARNING: 0:88: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5\r
-ERROR: 12 compilation errors. No code generated.\r
+WARNING: 0:120: '#extension' : extension is only partially supported: GL_ARB_shading_language_420pack\r
+ERROR: 0:123: 'uniform block' : not supported for this version or the enabled extensions \r
+ERROR: 0:130: '.' : field selection not allowed on matrix \r
+ERROR: 0:130: 'm43' : can't use function syntax on variable \r
+ERROR: 0:130: '=' : cannot convert from 'const float' to 'int'\r
+ERROR: 0:132: 'gl_MinProgramTexelOffset' : undeclared identifier \r
+ERROR: 0:132: 'gl_MaxProgramTexelOffset' : undeclared identifier \r
+ERROR: 18 compilation errors. No code generated.\r
\r
\r
ERROR: node is still EOpNull!\r
0:117 0.200000\r
0:117 0.200000\r
0:117 0.200000\r
+0:126 Function Definition: bar23444( (void)\r
+0:126 Function Parameters: \r
+0:? Sequence\r
+0:129 Sequence\r
+0:129 move second child to first child (float)\r
+0:129 'a1' (float)\r
+0:129 direct index (float)\r
+0:129 direct index (3-component vector of float)\r
+0:129 'm43' (4X3 matrix of float)\r
+0:129 Constant:\r
+0:129 3 (const int)\r
+0:129 Constant:\r
+0:129 1 (const int)\r
+0:131 Sequence\r
+0:131 move second child to first child (float)\r
+0:131 'b' (const (read only) float)\r
+0:131 component-wise multiply (float)\r
+0:131 Constant:\r
+0:131 2.000000\r
+0:131 'a1' (float)\r
+0:132 move second child to first child (float)\r
+0:132 direct index (float)\r
+0:132 'a' (3-component vector of float)\r
+0:132 Constant:\r
+0:132 0 (const int)\r
+0:132 add (float)\r
+0:132 'gl_MinProgramTexelOffset' (float)\r
+0:132 'gl_MaxProgramTexelOffset' (float)\r
0:? Linker Objects\r
0:? 'a' (3-component vector of float)\r
0:? 'b' (float)\r
0:? 'Isca' (uniform isampler3DArray)\r
0:? 'Usca' (uniform usamplerCubeArray)\r
0:? 'Scas' (uniform samplerCubeArrayShadow)\r
+0:? 'ai' (const 3-element array of int)\r
+0:? 10 (const int)\r
+0:? 23 (const int)\r
+0:? 32 (const int)\r
+0:? 'instanceName' (layout(binding=0 column_major shared ) uniform block{layout(column_major shared ) uniform int a})\r
+0:? 'bounds' (layout(binding=0 ) uniform sampler2D)\r
\r
\r
Linked fragment stage:\r
} else if (base->isVector() || base->isScalar()) {
if (base->isScalar()) {
const char* dotFeature = "scalar swizzle";
- requireProfile(loc, ECoreProfile | ECompatibilityProfile, dotFeature);
- profileRequires(loc, ECoreProfile | ECompatibilityProfile, 420, GL_ARB_shading_language_420pack, dotFeature);
+ requireProfile(loc, ~EEsProfile, dotFeature);
+ profileRequires(loc, ~EEsProfile, 420, GL_ARB_shading_language_420pack, dotFeature);
}
TVectorFields fields;
error(loc, "can only have one interpolation qualifier (flat, smooth, noperspective)", "", "");
// Ordering
- if (! force && version < 420) {
+ if (! force && version < 420 && ! extensionsTurnedOn(1, &GL_ARB_shading_language_420pack)) {
// non-function parameters
if (src.invariant && (dst.isInterpolation() || dst.isAuxiliary() || dst.storage != EvqTemporary || dst.precision != EpqNone))
error(loc, "invariant qualifier must appear first", "", "");
void TParseContext::redeclareBuiltinBlock(TSourceLoc loc, TTypeList& newTypeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes)
{
const char* feature = "built-in block redeclaration";
- requireProfile(loc, ECoreProfile | ECompatibilityProfile, feature);
- profileRequires(loc, ECoreProfile | ECompatibilityProfile, 410, GL_ARB_separate_shader_objects, feature);
+ requireProfile(loc, ~EEsProfile, feature);
+ profileRequires(loc, ~EEsProfile, 410, GL_ARB_separate_shader_objects, feature);
if (blockName != "gl_PerVertex" && blockName != "gl_PerFragment") {
error(loc, "cannot redeclare block: ", "block declaration", blockName.c_str());
publicType.qualifier.layoutAlign = value;
return;
} else if (id == "location") {
- requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, "location");
- profileRequires(loc, ECoreProfile | ECompatibilityProfile, 330, 0, "location");
+ profileRequires(loc, EEsProfile, 300, 0, "location");
+ profileRequires(loc, ~EEsProfile, 330, GL_ARB_separate_shader_objects, "location");
if ((unsigned int)value >= TQualifier::layoutLocationEnd)
error(loc, "location is too large", id.c_str(), "");
else
publicType.qualifier.layoutLocation = value;
return;
} else if (id == "binding") {
- requireProfile(loc, ECoreProfile | ECompatibilityProfile, "binding");
- profileRequires(loc, ECoreProfile | ECompatibilityProfile, 420, GL_ARB_shading_language_420pack, "binding");
+ requireProfile(loc, ~EEsProfile, "binding");
+ profileRequires(loc, ~EEsProfile, 420, GL_ARB_shading_language_420pack, "binding");
if ((unsigned int)value >= TQualifier::layoutBindingEnd)
error(loc, "binding is too large", id.c_str(), "");
else
requireStage(loc, EShLangVertex, feature);
requireStage(loc, (EShLanguageMask)~EShLangComputeMask, feature);
if (language == EShLangVertex)
- profileRequires(loc, ECoreProfile | ECompatibilityProfile, 330, 0, feature);
+ profileRequires(loc, ~EEsProfile, 330, GL_ARB_separate_shader_objects, feature);
else
- profileRequires(loc, ECoreProfile | ECompatibilityProfile, 410, GL_ARB_separate_shader_objects, feature);
+ profileRequires(loc, ~EEsProfile, 410, GL_ARB_separate_shader_objects, feature);
break;
}
case EvqVaryingOut:
requireStage(loc, EShLangFragment, feature);
requireStage(loc, (EShLanguageMask)~EShLangComputeMask, feature);
if (language == EShLangFragment)
- profileRequires(loc, ECoreProfile | ECompatibilityProfile, 330, 0, feature);
+ profileRequires(loc, ~EEsProfile, 330, GL_ARB_separate_shader_objects, feature);
else
- profileRequires(loc, ECoreProfile | ECompatibilityProfile, 410, GL_ARB_separate_shader_objects, feature);
+ profileRequires(loc, ~EEsProfile, 410, GL_ARB_separate_shader_objects, feature);
break;
}
case EvqUniform:
if (qualifier == EvqConst) {
if (initializer->getType().getQualifier().storage != EvqConst) {
const char* initFeature = "non-constant initializer";
- requireProfile(loc, ECoreProfile | ECompatibilityProfile, initFeature);
- profileRequires(loc, ECoreProfile | ECompatibilityProfile, 420, GL_ARB_shading_language_420pack, initFeature);
+ requireProfile(loc, ~EEsProfile, initFeature);
+ profileRequires(loc, ~EEsProfile, 420, GL_ARB_shading_language_420pack, initFeature);
variable->getWritableType().getQualifier().storage = EvqConstReadOnly;
qualifier = EvqConstReadOnly;
}
profileRequires(loc, ENoProfile, 140, 0, "uniform block");
break;
case EvqVaryingIn:
- requireProfile(loc, ECoreProfile | ECompatibilityProfile, "input block");
+ requireProfile(loc, ~EEsProfile, "input block");
+ profileRequires(loc, ~EEsProfile, 150, GL_ARB_separate_shader_objects, "input block");
break;
case EvqVaryingOut:
- requireProfile(loc, ECoreProfile | ECompatibilityProfile, "output block");
+ requireProfile(loc, ~EEsProfile, "output block");
+ profileRequires(loc, ~EEsProfile, 150, GL_ARB_separate_shader_objects, "output block");
break;
default:
error(loc, "only uniform, buffer, in, or out blocks are supported", blockName->c_str(), "");