diff --git a/Test/300.frag b/Test/300.frag index 4f22654a..7419379d 100644 --- a/Test/300.frag +++ b/Test/300.frag @@ -38,6 +38,16 @@ struct s { out s badout; // ERROR +struct S2 { + vec3 c; + float f; +}; + +in S2 s2; + +out vec3 sc; +out float sf; + void main() { float f; @@ -74,6 +84,9 @@ void main() f += gl_FragCoord.y; gl_FragDepth = f; + + sc = s2.c; + sf = s2.f; } float imageBuffer; // ERROR, reserved diff --git a/Test/300.vert b/Test/300.vert index 19f62d4a..aa881e96 100644 --- a/Test/300.vert +++ b/Test/300.vert @@ -9,6 +9,13 @@ varying vec2 v2; // ERROR in vec4 bad[10]; // ERROR +struct S { + vec3 c; + float f; +}; + +out S s; + void main() { int id = gl_VertexID + gl_InstanceID; @@ -34,6 +41,9 @@ void main() gl_Position = m44[2]; gl_PointSize = v2.y; + s.c = v3; + s.f = dm; + #ifdef GL_ES #error GL_ES is set #else diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 5fd3a7d0..8081ca26 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -687,6 +687,7 @@ public: const char* getStorageQualifierString() const { return ::getStorageQualifierString(qualifier.storage); } const char* getPrecisionQualifierString() const { return ::getPrecisionQualifierString(qualifier.precision); } TTypeList* getStruct() { return structure; } + TTypeList* getStruct() const { return structure; } int getObjectSize() const { @@ -705,7 +706,6 @@ public: return totalSize; } - TTypeList* getStruct() const { return structure; } TString& getMangledName() { if (!mangled) { diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 9d6c23a3..a9040e95 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -84,13 +84,10 @@ TParseContext::TParseContext(TSymbolTable& symt, TIntermediate& interm, int v, E globalUniformDefaults.clear(); globalUniformDefaults.layoutMatrix = ElmColumnMajor; globalUniformDefaults.layoutPacking = ElpShared; - globalUniformDefaults.layoutSlotLocation = 0; globalInputDefaults.clear(); - globalInputDefaults.layoutSlotLocation = 0; globalOutputDefaults.clear(); - globalOutputDefaults.layoutSlotLocation = 0; } // Get code that is not part of a shared symbol table, specific to this shader