From b29ba33089d12f1b6e3d8a3d8a6cd0456d7394db Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 21 Jun 2013 19:43:44 +0000 Subject: [PATCH] Fix bug of accidentally overriding initial layout location with 0, which does not mean no location. Added in/out structure tests. git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22120 e7fa87d3-cd2b-0410-9028-fcbf551c1848 --- Test/300.frag | 13 +++++++++++++ Test/300.vert | 10 ++++++++++ glslang/Include/Types.h | 2 +- glslang/MachineIndependent/ParseHelper.cpp | 3 --- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Test/300.frag b/Test/300.frag index 4f22654..7419379 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 19f62d4..aa881e9 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 5fd3a7d..8081ca2 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 9d6c23a..a9040e9 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 -- 2.7.4