Support in/out for stage inputs/outputs, tied to being desktop version 150 or ES 300.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@20077 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
parent
1b12b9c575
commit
f59bfa07e0
3
Test/pre150.frag
Normal file
3
Test/pre150.frag
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
varying vec4 v;
|
||||||
|
in vec4 i;
|
||||||
|
out vec4 o;
|
@ -1,4 +1,4 @@
|
|||||||
#version 110
|
#version 150
|
||||||
|
|
||||||
#extension GL_3DL_array_objects : enable
|
#extension GL_3DL_array_objects : enable
|
||||||
|
|
||||||
@ -61,13 +61,13 @@ layout(row_major, column_major)
|
|||||||
|
|
||||||
layout(shared, row_major) uniform; // default is now shared and row_major
|
layout(shared, row_major) uniform; // default is now shared and row_major
|
||||||
|
|
||||||
layout(std140) uniform Transform { // layout of this block is std140
|
layout(std140) uniform Transform { // layout of this block is std140
|
||||||
mat4 M1; // row_major
|
mat4 M1; // row_major
|
||||||
layout(column_major) mat4 M2; // column major
|
layout(column_major) mat4 M2; // column major
|
||||||
mat3 N1; // row_major
|
mat3 N1; // row_major
|
||||||
};
|
};
|
||||||
|
|
||||||
layout(column_major) uniform T3 { // shared and column_major
|
layout(column_major) uniform T3 { // shared and column_major
|
||||||
mat4 M3; // column_major
|
mat4 M3; // column_major
|
||||||
layout(row_major) mat4 m4; // row major
|
layout(row_major) mat4 m4; // row major
|
||||||
mat3 N2; // column_major
|
mat3 N2; // column_major
|
||||||
@ -178,7 +178,7 @@ void main()
|
|||||||
light lightVar = light(3.0, vec3(1.0, 2.0, 3.0));
|
light lightVar = light(3.0, vec3(1.0, 2.0, 3.0));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
const float c[3] = float[3](5.0, 7.2, 1.1);
|
const float c[3] = float[3](5.0, 7.2, 1.1);
|
||||||
const float d[3] = float[](5.0, 7.2, 1.1);
|
const float d[3] = float[](5.0, 7.2, 1.1);
|
||||||
|
|
||||||
float g;
|
float g;
|
||||||
|
@ -6,3 +6,4 @@ versionsClean.frag
|
|||||||
versionsClean.vert
|
versionsClean.vert
|
||||||
versionsErrors.frag
|
versionsErrors.frag
|
||||||
versionsErrors.vert
|
versionsErrors.vert
|
||||||
|
pre150.frag
|
||||||
|
@ -623,14 +623,19 @@ bool TParseContext::globalQualifierFixAndErrorCheck(int line, TQualifier& qualif
|
|||||||
{
|
{
|
||||||
switch (qualifier) {
|
switch (qualifier) {
|
||||||
case EvqIn:
|
case EvqIn:
|
||||||
|
profileRequires(line, ENoProfile, 130, 0, "in for stage inputs");
|
||||||
|
profileRequires(line, EEsProfile, 300, 0, "in for stage inputs");
|
||||||
qualifier = EvqVaryingIn;
|
qualifier = EvqVaryingIn;
|
||||||
return false;
|
break;
|
||||||
case EvqOut:
|
case EvqOut:
|
||||||
|
profileRequires(line, ENoProfile, 130, 0, "out for stage outputs");
|
||||||
|
profileRequires(line, EEsProfile, 300, 0, "out for stage outputs");
|
||||||
qualifier = EvqVaryingOut;
|
qualifier = EvqVaryingOut;
|
||||||
return false;
|
break;
|
||||||
case EvqInOut:
|
case EvqInOut:
|
||||||
qualifier = EvqVaryingIn;
|
qualifier = EvqVaryingIn;
|
||||||
error(line, "cannot use both 'in' and 'out' at global scope", "", "");
|
error(line, "cannot use 'inout' at global scope", "", "");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ void TParseContext::profileRequires(int line, EProfile callingProfile, int minVe
|
|||||||
// one that takes a single extension
|
// one that takes a single extension
|
||||||
void TParseContext::profileRequires(int line, EProfile callingProfile, int minVersion, const char* extension, const char *featureDesc)
|
void TParseContext::profileRequires(int line, EProfile callingProfile, int minVersion, const char* extension, const char *featureDesc)
|
||||||
{
|
{
|
||||||
profileRequires(line, callingProfile, minVersion, 1, &extension, featureDesc);
|
profileRequires(line, callingProfile, minVersion, extension ? 1 : 0, &extension, featureDesc);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -1417,6 +1417,9 @@ single_declaration
|
|||||||
: fully_specified_type {
|
: fully_specified_type {
|
||||||
$$.type = $1;
|
$$.type = $1;
|
||||||
$$.intermAggregate = 0;
|
$$.intermAggregate = 0;
|
||||||
|
|
||||||
|
if (parseContext.globalQualifierFixAndErrorCheck($1.line, $1.qualifier))
|
||||||
|
parseContext.recover();
|
||||||
}
|
}
|
||||||
| fully_specified_type IDENTIFIER {
|
| fully_specified_type IDENTIFIER {
|
||||||
$$.intermAggregate = 0;
|
$$.intermAggregate = 0;
|
||||||
@ -1437,6 +1440,10 @@ single_declaration
|
|||||||
}
|
}
|
||||||
| fully_specified_type IDENTIFIER array_specifier {
|
| fully_specified_type IDENTIFIER array_specifier {
|
||||||
$$.intermAggregate = 0;
|
$$.intermAggregate = 0;
|
||||||
|
|
||||||
|
if (parseContext.globalQualifierFixAndErrorCheck($1.line, $1.qualifier))
|
||||||
|
parseContext.recover();
|
||||||
|
|
||||||
if (parseContext.structQualifierErrorCheck($2.line, $1))
|
if (parseContext.structQualifierErrorCheck($2.line, $1))
|
||||||
parseContext.recover();
|
parseContext.recover();
|
||||||
|
|
||||||
|
@ -213,7 +213,8 @@ enum TDebugOptions {
|
|||||||
EDebugOpIntermediate = 0x001,
|
EDebugOpIntermediate = 0x001,
|
||||||
EDebugOpAssembly = 0x002,
|
EDebugOpAssembly = 0x002,
|
||||||
EDebugOpObjectCode = 0x004,
|
EDebugOpObjectCode = 0x004,
|
||||||
EDebugOpLinkMaps = 0x008
|
EDebugOpLinkMaps = 0x008,
|
||||||
|
EDebugSuppressInfolog = 0x010
|
||||||
};
|
};
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user