mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-08 11:30:06 +00:00
Front-end: Fix issue #147: ensure layout(index=N) has N in [0,1].
This commit is contained in:
parent
119f8f6906
commit
133253b6ee
@ -148,3 +148,5 @@ void fooKeyMem()
|
||||
{
|
||||
KeyMem.precise;
|
||||
}
|
||||
|
||||
layout(location=28, index=2) out vec4 outIndex2; // ERROR index out of range
|
@ -37,7 +37,8 @@ ERROR: 0:140: 'textureQueryLod' : no matching overloaded function found
|
||||
ERROR: 0:140: 'assign' : cannot convert from 'const float' to 'temp 2-component vector of float'
|
||||
ERROR: 0:141: 'textureQueryLod' : no matching overloaded function found
|
||||
ERROR: 0:141: 'assign' : cannot convert from 'const float' to 'temp 2-component vector of float'
|
||||
ERROR: 38 compilation errors. No code generated.
|
||||
ERROR: 0:152: 'index' : value must be 0 or 1
|
||||
ERROR: 39 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 330
|
||||
@ -122,6 +123,7 @@ ERROR: node is still EOpNull!
|
||||
0:? 'samp2Ds' (uniform sampler2DShadow)
|
||||
0:? 'precise' (global int)
|
||||
0:? 'KeyMem' (global structure{global int precise})
|
||||
0:? 'outIndex2' (layout(location=28 index=0 ) out 4-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
@ -211,4 +213,5 @@ ERROR: node is still EOpNull!
|
||||
0:? 'samp2Ds' (uniform sampler2DShadow)
|
||||
0:? 'precise' (global int)
|
||||
0:? 'KeyMem' (global structure{global int precise})
|
||||
0:? 'outIndex2' (layout(location=28 index=0 ) out 4-component vector of float)
|
||||
|
||||
|
@ -4225,6 +4225,13 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
|
||||
requireProfile(loc, ECompatibilityProfile | ECoreProfile, "index layout qualifier on fragment output");
|
||||
const char* exts[2] = { E_GL_ARB_separate_shader_objects, E_GL_ARB_explicit_attrib_location };
|
||||
profileRequires(loc, ECompatibilityProfile | ECoreProfile, 330, 2, exts, "index layout qualifier on fragment output");
|
||||
|
||||
// "It is also a compile-time error if a fragment shader sets a layout index to less than 0 or greater than 1."
|
||||
if (value < 0 || value > 1) {
|
||||
value = 0;
|
||||
error(loc, "value must be 0 or 1", "index", "");
|
||||
}
|
||||
|
||||
publicType.qualifier.layoutIndex = value;
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user