ERROR: 0:119: 'writeonly' : argument cannot drop memory qualifier when passed to formal parameter \r
ERROR: 0:122: '' : memory qualifiers cannot be used on this type \r
ERROR: 0:123: '' : memory qualifiers cannot be used on this type \r
-ERROR: 0:135: 'restrict' : argument cannot drop memory qualifier when passed to formal parameter \r
+ERROR: 0:135: 'volatile' : argument cannot drop memory qualifier when passed to formal parameter \r
ERROR: 0:139: 'rg8i' : does not apply to unsigned integer images \r
ERROR: 0:140: 'rgba32i' : does not apply to floating point images \r
ERROR: 0:141: 'rgba32f' : does not apply to unsigned integer images \r
0:134 Function Call: passr(iI21; (void)\r
0:134 'qualim1' (layout(r32i ) coherent readonly uniform iimage2D)\r
0:135 Function Call: passr(iI21; (void)\r
-0:135 'qualim2' (layout(r32i ) coherent restrict readonly uniform iimage2D)\r
+0:135 'qualim2' (layout(r32i ) coherent volatile readonly uniform iimage2D)\r
0:136 Function Call: passr(iI21; (void)\r
0:136 'iimg2D' (layout(r32i ) uniform iimage2D)\r
0:? Linker Objects\r
0:? 'vol' (volatile float)\r
0:? 'vol2' (readonly int)\r
0:? 'qualim1' (layout(r32i ) coherent readonly uniform iimage2D)\r
-0:? 'qualim2' (layout(r32i ) coherent restrict readonly uniform iimage2D)\r
+0:? 'qualim2' (layout(r32i ) coherent volatile readonly uniform iimage2D)\r
0:? 'i1bad' (layout(rg8i ) uniform uimage2D)\r
0:? 'i2bad' (layout(rgba32i ) uniform image2D)\r
0:? 'i3bad' (layout(rgba32f ) uniform uimage2D)\r
0:134 Function Call: passr(iI21; (void)\r
0:134 'qualim1' (layout(r32i ) coherent readonly uniform iimage2D)\r
0:135 Function Call: passr(iI21; (void)\r
-0:135 'qualim2' (layout(r32i ) coherent restrict readonly uniform iimage2D)\r
+0:135 'qualim2' (layout(r32i ) coherent volatile readonly uniform iimage2D)\r
0:136 Function Call: passr(iI21; (void)\r
0:136 'iimg2D' (layout(r32i ) uniform iimage2D)\r
0:? Linker Objects\r
0:? 'vol' (volatile float)\r
0:? 'vol2' (readonly int)\r
0:? 'qualim1' (layout(r32i ) coherent readonly uniform iimage2D)\r
-0:? 'qualim2' (layout(r32i ) coherent restrict readonly uniform iimage2D)\r
+0:? 'qualim2' (layout(r32i ) coherent volatile readonly uniform iimage2D)\r
0:? 'i1bad' (layout(rg8i ) uniform uimage2D)\r
0:? 'i2bad' (layout(rgba32i ) uniform image2D)\r
0:? 'i3bad' (layout(rgba32f ) uniform uimage2D)\r
if (profile == EEsProfile && version >= 310 ||
profile != EEsProfile && version >= 430) {
commonBuiltins.append(
- "uint atomicAdd(coherent volatile restrict inout uint, uint);"
- " int atomicAdd(coherent volatile restrict inout int, int);"
+ "uint atomicAdd(coherent volatile inout uint, uint);"
+ " int atomicAdd(coherent volatile inout int, int);"
- "uint atomicMin(coherent volatile restrict inout uint, uint);"
- " int atomicMin(coherent volatile restrict inout int, int);"
+ "uint atomicMin(coherent volatile inout uint, uint);"
+ " int atomicMin(coherent volatile inout int, int);"
- "uint atomicMax(coherent volatile restrict inout uint, uint);"
- " int atomicMax(coherent volatile restrict inout int, int);"
+ "uint atomicMax(coherent volatile inout uint, uint);"
+ " int atomicMax(coherent volatile inout int, int);"
- "uint atomicAnd(coherent volatile restrict inout uint, uint);"
- " int atomicAnd(coherent volatile restrict inout int, int);"
+ "uint atomicAnd(coherent volatile inout uint, uint);"
+ " int atomicAnd(coherent volatile inout int, int);"
- "uint atomicOr (coherent volatile restrict inout uint, uint);"
- " int atomicOr (coherent volatile restrict inout int, int);"
+ "uint atomicOr (coherent volatile inout uint, uint);"
+ " int atomicOr (coherent volatile inout int, int);"
- "uint atomicXor(coherent volatile restrict inout uint, uint);"
- " int atomicXor(coherent volatile restrict inout int, int);"
+ "uint atomicXor(coherent volatile inout uint, uint);"
+ " int atomicXor(coherent volatile inout int, int);"
- "uint atomicExchange(coherent volatile restrict inout uint, uint);"
- " int atomicExchange(coherent volatile restrict inout int, int);"
+ "uint atomicExchange(coherent volatile inout uint, uint);"
+ " int atomicExchange(coherent volatile inout int, int);"
- "uint atomicCompSwap(coherent volatile restrict inout uint, uint, uint);"
- " int atomicCompSwap(coherent volatile restrict inout int, int, int);"
+ "uint atomicCompSwap(coherent volatile inout uint, uint, uint);"
+ " int atomicCompSwap(coherent volatile inout int, int, int);"
"\n");
}
commonBuiltins.append(postfixes[dims]);
}
if (sampler.image)
- commonBuiltins.append(" imageSize(readonly writeonly volatile coherent restrict ");
+ commonBuiltins.append(" imageSize(readonly writeonly volatile coherent ");
else
commonBuiltins.append(" textureSize(");
commonBuiltins.append(typeName);
if (profile != EEsProfile && version >= 430 && sampler.ms) {
commonBuiltins.append("int ");
if (sampler.image)
- commonBuiltins.append("imageSamples(");
+ commonBuiltins.append("imageSamples(readonly writeonly volatile coherent ");
else
commonBuiltins.append("textureSamples(");
commonBuiltins.append(typeName);
imageParams.append(", int");
commonBuiltins.append(prefixes[sampler.type]);
- commonBuiltins.append("vec4 imageLoad(readonly volatile coherent restrict ");
+ commonBuiltins.append("vec4 imageLoad(readonly volatile coherent ");
commonBuiltins.append(imageParams);
commonBuiltins.append(");\n");
- commonBuiltins.append("void imageStore(writeonly volatile coherent restrict ");
+ commonBuiltins.append("void imageStore(writeonly volatile coherent ");
commonBuiltins.append(imageParams);
commonBuiltins.append(", ");
commonBuiltins.append(prefixes[sampler.type]);
const int numBuiltins = 7;
static const char* atomicFunc[numBuiltins] = {
- " imageAtomicAdd(volatile coherent restrict ",
- " imageAtomicMin(volatile coherent restrict ",
- " imageAtomicMax(volatile coherent restrict ",
- " imageAtomicAnd(volatile coherent restrict ",
- " imageAtomicOr(volatile coherent restrict ",
- " imageAtomicXor(volatile coherent restrict ",
- " imageAtomicExchange(volatile coherent restrict "
+ " imageAtomicAdd(volatile coherent ",
+ " imageAtomicMin(volatile coherent ",
+ " imageAtomicMax(volatile coherent ",
+ " imageAtomicAnd(volatile coherent ",
+ " imageAtomicOr(volatile coherent ",
+ " imageAtomicXor(volatile coherent ",
+ " imageAtomicExchange(volatile coherent "
};
for (size_t i = 0; i < numBuiltins; ++i) {
}
commonBuiltins.append(dataType);
- commonBuiltins.append(" imageAtomicCompSwap(volatile coherent restrict ");
+ commonBuiltins.append(" imageAtomicCompSwap(volatile coherent ");
commonBuiltins.append(imageParams);
commonBuiltins.append(", ");
commonBuiltins.append(dataType);
// GL_ARB_ES3_1_compatibility
// TODO: spec issue: are there restrictions on the kind of layout() that can be used? what about dropping memory qualifiers?
if (version >= 450) {
- commonBuiltins.append("float imageAtomicExchange(volatile coherent restrict ");
+ commonBuiltins.append("float imageAtomicExchange(volatile coherent ");
commonBuiltins.append(imageParams);
commonBuiltins.append(", float);\n");
}