Remove the now dead 'shared' type field, and add semantic check for buffer on non-block.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27700 e7fa87d3-cd2b-0410-9028-fcbf551c1848
diff --git a/Test/430.vert b/Test/430.vert
index 399a895..4cc8d29 100644
--- a/Test/430.vert
+++ b/Test/430.vert
@@ -155,3 +155,5 @@
memoryBarrierImage();
groupMemoryBarrier(); // ERROR
}
+
+buffer vec4 v; // ERROR
diff --git a/Test/baseResults/430.vert.out b/Test/baseResults/430.vert.out
index 4e8b1ef..de38acb 100644
--- a/Test/baseResults/430.vert.out
+++ b/Test/baseResults/430.vert.out
@@ -48,7 +48,8 @@
ERROR: 0:150: 'barrier' : no matching overloaded function found
ERROR: 0:154: 'memoryBarrierShared' : no matching overloaded function found
ERROR: 0:156: 'groupMemoryBarrier' : no matching overloaded function found
-ERROR: 48 compilation errors. No code generated.
+ERROR: 0:159: 'buffer' : buffers can be declared only as blocks
+ERROR: 49 compilation errors. No code generated.
Shader version: 430
@@ -127,6 +128,7 @@
0:? 'bbinst4' (layout(xfb_stride=80 ) out block{layout(xfb_buffer=1 xfb_offset=16 ) out 4-component vector of float bbv1})
0:? 'bbinst5' (out block{layout(xfb_buffer=1 xfb_offset=0 ) out 4-component vector of float bbv1, layout(xfb_buffer=1 xfb_offset=64 xfb_stride=80 ) out 4-component vector of float bbv2})
0:? 'sharedv' (shared 4-component vector of float)
+0:? 'v' (buffer 4-component vector of float)
0:? 'gl_VertexID' (gl_VertexId int)
0:? 'gl_InstanceID' (gl_InstanceId int)
@@ -213,6 +215,7 @@
0:? 'bbinst4' (layout(xfb_stride=80 ) out block{layout(xfb_buffer=1 xfb_offset=16 ) out 4-component vector of float bbv1})
0:? 'bbinst5' (out block{layout(xfb_buffer=1 xfb_offset=0 ) out 4-component vector of float bbv1, layout(xfb_buffer=1 xfb_offset=64 xfb_stride=80 ) out 4-component vector of float bbv2})
0:? 'sharedv' (shared 4-component vector of float)
+0:? 'v' (buffer 4-component vector of float)
0:? 'gl_VertexID' (gl_VertexId int)
0:? 'gl_InstanceID' (gl_InstanceId int)
diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h
index 82d247c..cb43467 100644
--- a/glslang/Include/Types.h
+++ b/glslang/Include/Types.h
@@ -315,7 +315,6 @@
nopersp = false;
patch = false;
sample = false;
- shared = false;
coherent = false;
volatil = false;
restrict = false;
@@ -333,7 +332,6 @@
bool nopersp : 1;
bool patch : 1;
bool sample : 1;
- bool shared : 1;
bool coherent : 1;
bool volatil : 1;
bool restrict : 1;
@@ -1179,8 +1177,6 @@
p += snprintf(p, end - p, "patch ");
if (qualifier.sample)
p += snprintf(p, end - p, "sample ");
- if (qualifier.shared)
- p += snprintf(p, end - p, "shared ");
if (qualifier.coherent)
p += snprintf(p, end - p, "coherent ");
if (qualifier.volatil)
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index a3484a9..16c6b92 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -1921,6 +1921,9 @@
if (qualifier.isMemory() && ! publicType.isImage() && publicType.qualifier.storage != EvqBuffer)
error(loc, "memory qualifiers cannot be used on this type", "", "");
+ if (qualifier.storage == EvqBuffer && publicType.basicType != EbtBlock)
+ error(loc, "buffers can be declared only as blocks", "buffer", "");
+
if (qualifier.storage != EvqVaryingIn && qualifier.storage != EvqVaryingOut)
return;
@@ -2093,7 +2096,6 @@
MERGE_SINGLETON(nopersp);
MERGE_SINGLETON(patch);
MERGE_SINGLETON(sample);
- MERGE_SINGLETON(shared);
MERGE_SINGLETON(coherent);
MERGE_SINGLETON(volatil);
MERGE_SINGLETON(restrict);
diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp
index 3628f99..310350d 100644
--- a/glslang/MachineIndependent/linkValidate.cpp
+++ b/glslang/MachineIndependent/linkValidate.cpp
@@ -296,8 +296,7 @@
}
// Memory...
- if (symbol.getQualifier().shared != unitSymbol.getQualifier().shared ||
- symbol.getQualifier().coherent != unitSymbol.getQualifier().coherent ||
+ if (symbol.getQualifier().coherent != unitSymbol.getQualifier().coherent ||
symbol.getQualifier().volatil != unitSymbol.getQualifier().volatil ||
symbol.getQualifier().restrict != unitSymbol.getQualifier().restrict ||
symbol.getQualifier().readonly != unitSymbol.getQualifier().readonly ||