From 53863a3a90be679db4f013e19b54bc21dbf0e113 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 23 Jul 2017 13:54:15 -0600 Subject: [PATCH] GLSL: Implement version 320 for ES. --- Test/320.comp | 5 + Test/320.frag | 225 ++++++ Test/320.geom | 134 ++++ Test/320.tesc | 150 ++++ Test/320.tese | 114 +++ Test/320.vert | 255 +++++++ Test/baseResults/310.frag.out | 2 +- Test/baseResults/320.comp.out | 19 + Test/baseResults/320.frag.out | 576 +++++++++++++++ Test/baseResults/320.geom.out | 251 +++++++ Test/baseResults/320.tesc.out | 516 +++++++++++++ Test/baseResults/320.tese.out | 276 +++++++ Test/baseResults/320.vert.out | 797 +++++++++++++++++++++ glslang/MachineIndependent/Initialize.cpp | 22 +- glslang/MachineIndependent/ParseHelper.cpp | 34 +- glslang/MachineIndependent/Scan.cpp | 28 +- glslang/MachineIndependent/ShaderLang.cpp | 14 +- gtests/AST.FromFile.cpp | 6 + 18 files changed, 3386 insertions(+), 38 deletions(-) create mode 100644 Test/320.comp create mode 100644 Test/320.frag create mode 100644 Test/320.geom create mode 100644 Test/320.tesc create mode 100644 Test/320.tese create mode 100644 Test/320.vert create mode 100755 Test/baseResults/320.comp.out create mode 100755 Test/baseResults/320.frag.out create mode 100755 Test/baseResults/320.geom.out create mode 100755 Test/baseResults/320.tesc.out create mode 100755 Test/baseResults/320.tese.out create mode 100755 Test/baseResults/320.vert.out diff --git a/Test/320.comp b/Test/320.comp new file mode 100644 index 000000000..c31b047f5 --- /dev/null +++ b/Test/320.comp @@ -0,0 +1,5 @@ +#version 320 es + +void main() +{ +} diff --git a/Test/320.frag b/Test/320.frag new file mode 100644 index 000000000..bed3f1203 --- /dev/null +++ b/Test/320.frag @@ -0,0 +1,225 @@ +#version 320 es + +out outbname { int a; } outbinst; // ERROR, not out block in fragment shader + +in inbname { + int a; + vec4 v; + struct { int b; } s; // ERROR, nested struct definition +} inbinst; + +in inbname2 { + layout(location = 12) int aAnon; + layout(location = 13) centroid in vec4 vAnon; +}; + +in layout(location = 13) vec4 aliased; // ERROR, aliased + +in inbname2 { // ERROR, reuse of block name + int aAnon; + centroid in vec4 vAnon; +}; + +in badmember { // ERROR, aAnon already in global scope + int aAnon; +}; + +int inbname; // ERROR, redefinition of block name + +vec4 vAnon; // ERROR, anon in global scope; redefinition + +in arrayed { + float f; +} arrayedInst[4]; +uniform int i; +void fooIO() +{ + vec4 v = inbinst.v + vAnon; + v *= arrayedInst[2].f; + v *= arrayedInst[i].f; +} + +in vec4 gl_FragCoord; +layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; // ERROR, non-ES + +layout(early_fragment_tests) in; +out float gl_FragDepth; +layout(depth_any) out float gl_FragDepth; // ERROR, non-ES + +void main() +{ + gl_FragDepth = 0.2; // ERROR, early_fragment_tests declared + bool f = gl_FrontFacing; +} + +out float gl_FragDepth; + +void foo_GS() +{ + highp int l = gl_Layer; + highp int p = gl_PrimitiveID; +} + +in vec2 inf, ing; +uniform ivec2 offsets[4]; +uniform sampler2D sArray[4]; +uniform int sIndex; +layout(binding = 0) uniform atomic_uint auArray[2]; +uniform ubName { int i; } ubInst[4]; +buffer bbName { int i; } bbInst[4]; +highp uniform writeonly image2D iArray[5]; +const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4)); + +void pfoo() +{ + precise vec2 h; + h = fma(inf, ing, h); + textureGatherOffset(sArray[0], vec2(0.1), ivec2(inf)); + textureGatherOffsets(sArray[0], vec2(0.1), constOffsets); + textureGatherOffsets(sArray[0], vec2(0.1), offsets); // ERROR, offset not constant +} + +precision highp imageCubeArray ; +precision highp iimageCubeArray ; +precision highp uimageCubeArray ; + +precision highp samplerCubeArray ; +precision highp samplerCubeArrayShadow; +precision highp isamplerCubeArray ; +precision highp usamplerCubeArray ; + +uniform writeonly imageCubeArray CA1; +uniform writeonly iimageCubeArray CA2; +uniform writeonly uimageCubeArray CA3; + +#ifdef GL_EXT_texture_cube_map_array +uniform samplerCubeArray CA4; +uniform samplerCubeArrayShadow CA5; +uniform isamplerCubeArray CA6; +uniform usamplerCubeArray CA7; +#endif + +void CAT() +{ + highp vec4 b4 = texture(CA4, vec4(0.5), 0.24); + highp ivec4 b6 = texture(CA6, vec4(0.5), 0.26); + highp uvec4 b7 = texture(CA7, vec4(0.5), 0.27); +} + +void goodSample() +{ + lowp int a1 = gl_SampleID; + mediump vec2 a2 = gl_SamplePosition; + highp int a3 = gl_SampleMaskIn[0]; + gl_SampleMask[0] = a3; + mediump int n1 = gl_MaxSamples; + mediump int n2 = gl_NumSamples; +} + +uniform layout(r32f) highp image2D im2Df; +uniform layout(r32ui) highp uimage2D im2Du; +uniform layout(r32i) highp iimage2D im2Di; +uniform ivec2 P; + +uniform layout(rgba32f) highp image2D badIm2Df; // ERROR, needs readonly or writeonly +uniform layout(rgba8ui) highp uimage2D badIm2Du; // ERROR, needs readonly or writeonly +uniform layout(rgba16i) highp iimage2D badIm2Di; // ERROR, needs readonly or writeonly + +void goodImageAtom() +{ + float datf; + int dati; + uint datu; + + imageAtomicAdd( im2Di, P, dati); + imageAtomicAdd( im2Du, P, datu); + imageAtomicMin( im2Di, P, dati); + imageAtomicMin( im2Du, P, datu); + imageAtomicMax( im2Di, P, dati); + imageAtomicMax( im2Du, P, datu); + imageAtomicAnd( im2Di, P, dati); + imageAtomicAnd( im2Du, P, datu); + imageAtomicOr( im2Di, P, dati); + imageAtomicOr( im2Du, P, datu); + imageAtomicXor( im2Di, P, dati); + imageAtomicXor( im2Du, P, datu); + imageAtomicExchange(im2Di, P, dati); + imageAtomicExchange(im2Du, P, datu); + imageAtomicExchange(im2Df, P, datf); + imageAtomicCompSwap(im2Di, P, 3, dati); + imageAtomicCompSwap(im2Du, P, 5u, datu); + + imageAtomicMax(badIm2Di, P, dati); // ERROR, not an allowed layout() on the image + imageAtomicMax(badIm2Du, P, datu); // ERROR, not an allowed layout() on the image + imageAtomicExchange(badIm2Df, P, datf); // ERROR, not an allowed layout() on the image +} + +centroid out vec4 colorCentroidBad; // ERROR +flat out vec4 colorBadFlat; // ERROR +smooth out vec4 colorBadSmooth; // ERROR +noperspective out vec4 colorBadNo; // ERROR +flat centroid in vec2 colorfc; +in float scalarIn; + +sample in vec4 colorSampIn; +sample out vec4 colorSampleBad; // ERROR +flat sample in vec4 colorfsi; +sample in vec3 sampInArray[4]; + +void interp() +{ + float res; + vec2 res2; + vec3 res3; + vec4 res4; + + res2 = interpolateAtCentroid(colorfc); + res4 = interpolateAtCentroid(colorSampIn); + res4 = interpolateAtCentroid(colorfsi); + res = interpolateAtCentroid(scalarIn); + res3 = interpolateAtCentroid(sampInArray); // ERROR + res3 = interpolateAtCentroid(sampInArray[2]); + res2 = interpolateAtCentroid(sampInArray[2].xy); // ERROR + + res3 = interpolateAtSample(sampInArray, 1); // ERROR + res3 = interpolateAtSample(sampInArray[i], 0); + res2 = interpolateAtSample(sampInArray[2].xy, 2); // ERROR + res = interpolateAtSample(scalarIn, 1); + + res3 = interpolateAtOffset(sampInArray, vec2(0.2)); // ERROR + res3 = interpolateAtOffset(sampInArray[2], vec2(0.2)); + res2 = interpolateAtOffset(sampInArray[2].xy, vec2(0.2)); // ERROR, no swizzle + res = interpolateAtOffset(scalarIn + scalarIn, vec2(0.2)); // ERROR, no binary ops other than dereference + res = interpolateAtOffset(scalarIn, vec2(0.2)); + + float f; + res = interpolateAtCentroid(f); // ERROR, not interpolant + res4 = interpolateAtSample(outp, 0); // ERROR, not interpolant +} + +layout(blend_support_multiply) out; +layout(blend_support_screen) out; +layout(blend_support_overlay) out; +layout(blend_support_darken, blend_support_lighten) out; +layout(blend_support_colordodge) layout(blend_support_colorburn) out; +layout(blend_support_hardlight) out; +layout(blend_support_softlight) out; +layout(blend_support_difference) out; +layout(blend_support_exclusion) out; +layout(blend_support_hsl_hue) out; +layout(blend_support_hsl_saturation) out; +layout(blend_support_hsl_color) out; +layout(blend_support_hsl_luminosity) out; +layout(blend_support_all_equations) out; + +layout(blend_support_hsl_luminosity) out; // okay to repeat + +layout(blend_support_hsl_luminosity) in; // ERROR, only on "out" +layout(blend_support_hsl_luminosity) out vec4; // ERROR, only on standalone +layout(blend_support_hsl_luminosity) out vec4 badout; // ERROR, only on standalone +layout(blend_support_hsl_luminosity) struct badS {int i;}; // ERROR, only on standalone +layout(blend_support_hsl_luminosity) void blendFoo() { } // ERROR, only on standalone +void blendFoo(layout(blend_support_hsl_luminosity) vec3 v) { } // ERROR, only on standalone +layout(blend_support_flizbit) out; // ERROR, no flizbit + +out vec4 outAA[2][2]; // ERROR diff --git a/Test/320.geom b/Test/320.geom new file mode 100644 index 000000000..38d71c314 --- /dev/null +++ b/Test/320.geom @@ -0,0 +1,134 @@ +#version 320 es + +precision mediump float; + +in fromVertex { + in vec3 color; +} fromV[]; + +in vec4 nonBlockUnsized[]; + +out toFragment { + out vec3 color; +} toF; + +out fromVertex { // okay to reuse a block name for another block name + vec3 color; +}; + +out fooB { // ERROR, cannot reuse block name as block instance + vec2 color; +} fromVertex; + +int fromVertex; // ERROR, cannot reuse a block name for something else + +out fooC { // ERROR, cannot have same name for block and instance name + vec2 color; +} fooC; + +void main() +{ + EmitVertex(); + EndPrimitive(); + EmitStreamVertex(1); // ERROR + EndStreamPrimitive(0); // ERROR + + color = fromV[0].color; + gl_ClipDistance[3] = // ERROR, no ClipDistance + gl_in[1].gl_ClipDistance[2]; // ERROR, no ClipDistance + gl_Position = gl_in[0].gl_Position; + + gl_PrimitiveID = gl_PrimitiveIDIn; + gl_Layer = 2; +} + +layout(stream = 4) out vec4 ov4; // ERROR, no streams + +layout(line_strip, points, triangle_strip, points, triangle_strip) out; // just means triangle_strip" + +out ooutb { vec4 a; } ouuaa6; + +layout(max_vertices = 200) out; +layout(max_vertices = 300) out; // ERROR, too big +void foo(layout(max_vertices = 4) int a) // ERROR +{ + ouuaa6.a = vec4(1.0); +} + +layout(line_strip, points, triangle_strip, points) out; // ERROR, changing output primitive +layout(line_strip, points) out; // ERROR, changing output primitive +layout(triangle_strip) in; // ERROR, not an input primitive +layout(triangle_strip) uniform; // ERROR +layout(triangle_strip) out vec4 badv4; // ERROR, not on a variable +layout(triangle_strip) in vec4 bad2v4[]; // ERROR, not on a variable or input +layout(invocations = 3) out outbn { int a; }; // 2 ERROR, not on a block, not until 4.0 +out outbn2 { + layout(invocations = 3) int a; // 2 ERRORs, not on a block member, not until 4.0 + layout(max_vertices = 3) int b; // ERROR, not on a block member + layout(triangle_strip) int c; // ERROR, not on a block member +} outbi; + +layout(lines) out; // ERROR, not on output +layout(lines_adjacency) in; +layout(triangles) in; // ERROR, can't change it +layout(triangles_adjacency) in; // ERROR, can't change it +layout(invocations = 4) in; + +in sameName { + int a15; +} insn[]; + +out sameName { + float f15; +}; + +uniform sameName { + bool b15; +}; + +const int summ = gl_MaxVertexAttribs + + gl_MaxGeometryInputComponents + + gl_MaxGeometryOutputComponents + + gl_MaxGeometryImageUniforms + + gl_MaxGeometryTextureImageUnits + + gl_MaxGeometryOutputVertices + + gl_MaxGeometryTotalOutputComponents + + gl_MaxGeometryUniformComponents + + gl_MaxGeometryAtomicCounters + + gl_MaxGeometryAtomicCounterBuffers + + gl_MaxVertexTextureImageUnits + + gl_MaxCombinedTextureImageUnits + + gl_MaxTextureImageUnits + + gl_MaxDrawBuffers; + +void fooe1() +{ + gl_ViewportIndex; // ERROR, not in ES + gl_MaxViewports; // ERROR, not in ES + insn.length(); // 4: lines_adjacency + int inv = gl_InvocationID; +} + +in vec4 explArray[4]; +in vec4 explArrayBad[5]; // ERROR, wrong size +in vec4 nonArrayed; // ERROR, not an array +flat out vec3 myColor1; +centroid out vec3 myColor2; +centroid in vec3 centr[]; +sample out vec4 perSampleColor; // ERROR without sample extensions + +layout(max_vertices = 200) out; // matching redecl + +layout(location = 7, component = 2) in float comp[]; // ERROR, es has no component + +void notHere() +{ + gl_MaxGeometryVaryingComponents; // ERROR, not in ES + gl_VerticesIn; // ERROR, not in ES +} + +void pointSize2() +{ + highp float ps = gl_in[3].gl_PointSize; // ERROR, need extension + gl_PointSize = ps; // ERROR, need extension +} diff --git a/Test/320.tesc b/Test/320.tesc new file mode 100644 index 000000000..4fa20f638 --- /dev/null +++ b/Test/320.tesc @@ -0,0 +1,150 @@ +#version 320 es + +layout(vertices = 4) out; +out int outa[gl_out.length()]; + +layout(quads) in; // ERROR +layout(ccw) out; // ERROR +layout(fractional_even_spacing) in; // ERROR + +patch in vec4 patchIn; // ERROR +patch out vec4 patchOut; + +void main() +{ + barrier(); + + int a = gl_MaxTessControlInputComponents + + gl_MaxTessControlOutputComponents + + gl_MaxTessControlTextureImageUnits + + gl_MaxTessControlUniformComponents + + gl_MaxTessControlTotalOutputComponents; + + vec4 p = gl_in[1].gl_Position; + float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension + float cd = gl_in[1].gl_ClipDistance[2]; // ERROR, not in ES + + int pvi = gl_PatchVerticesIn; + int pid = gl_PrimitiveID; + int iid = gl_InvocationID; + + gl_out[gl_InvocationID].gl_Position = p; + gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR, need point_size extension + gl_out[gl_InvocationID].gl_ClipDistance[1] = cd; // ERROR, not in ES + + gl_TessLevelOuter[3] = 3.2; + gl_TessLevelInner[1] = 1.3; + + if (a > 10) + barrier(); // ERROR + else + barrier(); // ERROR + + barrier(); + + do { + barrier(); // ERROR + } while (a > 10); + + switch (a) { + default: + barrier(); // ERROR + break; + } + a < 12 ? a : (barrier(), a); // ERROR + { + barrier(); + } + + return; + + barrier(); // ERROR +} + +layout(vertices = 4) in; // ERROR, not on in +layout(vertices = 5) out; // ERROR, changing # + +void foo() +{ + gl_out[4].gl_Position; // ERROR, out of range + + barrier(); // ERROR, not in main +} + +in vec2 ina; // ERROR, not array +in vec2 inb[]; +in vec2 inc[18]; // ERROR, wrong size +in vec2 ind[gl_MaxPatchVertices]; +patch out float implA[]; // ERROR, not sized + +#extension GL_ARB_separate_shader_objects : enable + +layout(location = 3) in vec4 ivla[]; +layout(location = 4) in vec4 ivlb[]; +layout(location = 4) in vec4 ivlc[]; // ERROR, overlapping + +layout(location = 3) out vec4 ovla[]; +layout(location = 4) out vec4 ovlb[]; +layout(location = 4) out vec4 ovlc[]; // ERROR, overlapping + +patch out pinbn { + int a; +} pinbi; + +centroid out vec3 myColor2[]; +centroid in vec3 centr[]; +sample out vec4 perSampleColor[]; + +layout(vertices = 4) out float badlay[]; // ERROR, not on a variable +out float misSized[5]; // ERROR, size doesn't match +out float okaySize[4]; + +void pointSize2() +{ + float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension + gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR, need point_size extension +} + +precise vec3 pv3; + +void goodfoop() +{ + precise float d; + + pv3 *= pv3; + pv3 = fma(pv3, pv3, pv3); + d = fma(d, d, d); +} + +void bb() +{ + gl_BoundingBoxOES[0] = vec4(0.0); + gl_BoundingBoxOES[1] = vec4(1.0); + gl_BoundingBoxOES[2] = vec4(2.0); // ERROR, overflow +} + +out patch badpatchBName { // ERROR, array size required + float f; +} badpatchIName[]; + +out patch patchBName { + float f; +} patchIName[4]; + +void outputtingOutparam(out int a) +{ + a = 2; +} + +void outputting() +{ + outa[gl_InvocationID] = 2; + outa[1] = 2; // ERROR, not gl_InvocationID + gl_out[0].gl_Position = vec4(1.0); // ERROR, not gl_InvocationID + outa[1]; + gl_out[0]; + outputtingOutparam(outa[0]); // ERROR, not gl_InvocationID + outputtingOutparam(outa[gl_InvocationID]); + patchIName[1].f = 3.14; + outa[(gl_InvocationID)] = 2; +} diff --git a/Test/320.tese b/Test/320.tese new file mode 100644 index 000000000..b1507d9f9 --- /dev/null +++ b/Test/320.tese @@ -0,0 +1,114 @@ +#version 320 es + +layout(vertices = 4) out; // ERROR +layout(quads, cw) in; +layout(triangles) in; // ERROR +layout(isolines) in; // ERROR + +layout(ccw) in; // ERROR +layout(cw) in; + +layout(fractional_odd_spacing) in; +layout(equal_spacing) in; // ERROR +layout(fractional_even_spacing) in; // ERROR + +layout(point_mode) in; + +patch in vec4 patchIn; +patch out vec4 patchOut; // ERROR + +void main() +{ + barrier(); // ERROR + + int a = gl_MaxTessEvaluationInputComponents + + gl_MaxTessEvaluationOutputComponents + + gl_MaxTessEvaluationTextureImageUnits + + gl_MaxTessEvaluationUniformComponents + + gl_MaxTessPatchComponents + + gl_MaxPatchVertices + + gl_MaxTessGenLevel; + + vec4 p = gl_in[1].gl_Position; + float ps = gl_in[1].gl_PointSize; // ERROR, need point_size extension + float cd = gl_in[1].gl_ClipDistance[2]; // ERROR, not in ES + + int pvi = gl_PatchVerticesIn; + int pid = gl_PrimitiveID; + vec3 tc = gl_TessCoord; + float tlo = gl_TessLevelOuter[3]; + float tli = gl_TessLevelInner[1]; + + gl_Position = p; + gl_PointSize = ps; // ERROR, need point_size extension + gl_ClipDistance[2] = cd; // ERROR, not in ES +} + +smooth patch in vec4 badp1; // ERROR +flat patch in vec4 badp2; // ERROR +noperspective patch in vec4 badp3; // ERROR +patch sample in vec3 badp4; // ERROR + +#extension GL_ARB_separate_shader_objects : enable + +in gl_PerVertex // ERROR, no size +{ + vec4 gl_Position; +} gl_in[]; + +in gl_PerVertex // ERROR, second redeclaration of gl_in +{ + vec4 gl_Position; +} gl_in[]; + +layout(quads, cw) out; // ERROR +layout(triangles) out; // ERROR +layout(isolines) out; // ERROR +layout(cw) out; // ERROR +layout(fractional_odd_spacing) out; // ERROR +layout(equal_spacing) out; // ERROR +layout(fractional_even_spacing) out; // ERROR +layout(point_mode) out; // ERROR + +in vec2 ina; // ERROR, not array +in vec2 inb[]; +in vec2 inc[18]; // ERROR, wrong size +in vec2 ind[gl_MaxPatchVertices]; + +in testbla { // ERROR, not array + int f; +} bla; + +in testblb { + int f; +} blb[]; + +in testblc { // ERROR wrong size + int f; +} blc[18]; + +in testbld { + int f; +} bld[gl_MaxPatchVertices]; + +layout(location = 23) in vec4 ivla[]; +layout(location = 24) in vec4 ivlb[]; +layout(location = 24) in vec4 ivlc[]; // ERROR, overlap + +layout(location = 23) out vec4 ovla[2]; +layout(location = 24) out vec4 ovlb[2]; // ERROR, overlap + +in float gl_TessLevelOuter[4]; // ERROR, can't redeclare + +patch in pinbn { + int a; +} pinbi; + +centroid out vec3 myColor2; +centroid in vec3 centr[]; +sample out vec4 perSampleColor; + +void bbbad() +{ + gl_BoundingBoxOES; // ERROR, wrong stage +} diff --git a/Test/320.vert b/Test/320.vert new file mode 100644 index 000000000..42f1515cc --- /dev/null +++ b/Test/320.vert @@ -0,0 +1,255 @@ +#version 320 es + +out outbname { + int a; + out vec4 v; + highp sampler2D s; // ERROR, opaque type +} outbinst; + +out outbname2 { + layout(location = 12) int aAnon; + layout(location = 13) vec4 vAnon; +}; + +layout(location = 12) out highp int aliased; // ERROR, aliasing location + +in inbname { int a; } inbinst; // ERROR, no in block in vertex shader + +out gl_PerVertex { // ERROR, has extra member + highp vec4 gl_Position; + highp vec4 t; +}; + +void main() +{ + int sum = gl_VertexID + + gl_InstanceID; + gl_Position = vec4(1.0); + gl_PointSize = 2.0; // ERROR, removed by redeclaration +} + +out gl_PerVertex { // ERROR, already used and already redeclared + highp vec4 gl_Position; + highp vec4 t; +}; + +smooth out smo { // ERROR, no smooth on a block + int i; +} smon; + +flat out fmo { // ERROR, no flat on a block + int i; +} fmon; + +centroid out cmo { // ERROR, no centroid on a block + int i; +} cmon; + +invariant out imo { // ERROR, no invariant on a block + int i; +} imon; + +in vec2 inf, ing; +uniform ivec2 offsets[4]; +uniform sampler2D sArray[4]; +uniform int sIndex; +layout(binding = 0) uniform atomic_uint auArray[2]; +uniform ubName { int i; } ubInst[4]; +buffer bbName { int i; } bbInst[4]; +highp uniform writeonly image2D iArray[5]; +const ivec2 constOffsets[4] = ivec2[4](ivec2(0.1), ivec2(0.2), ivec2(0.3), ivec2(0.4)); + +void pfoo() +{ + precise vec2 h; + h = fma(inf, ing, h); + sArray[sIndex + 1]; + ubInst[sIndex + 1]; + bbInst[sIndex - 2]; // ERROR, still not supported + iArray[2]; + iArray[sIndex - 2]; + textureGatherOffset(sArray[0], vec2(0.1), ivec2(inf)); + textureGatherOffsets(sArray[0], vec2(0.1), constOffsets); + textureGatherOffsets(sArray[0], vec2(0.1), offsets); // ERROR, offset not constant +} + +uniform samplerBuffer noPreSamp1; // ERROR, no default precision +uniform isamplerBuffer noPreSamp2; // ERROR, no default precision +uniform usamplerBuffer noPreSamp3; // ERROR, no default precision +uniform writeonly imageBuffer noPreSamp4; // ERROR, no default precision +uniform writeonly iimageBuffer noPreSamp5; // ERROR, no default precision +uniform writeonly uimageBuffer noPreSamp6; // ERROR, no default precision + +precision highp samplerBuffer; +precision highp isamplerBuffer; +precision highp usamplerBuffer; +precision highp imageBuffer; +precision highp iimageBuffer; +precision highp uimageBuffer; + +#ifdef GL_OES_texture_buffer +uniform samplerBuffer bufSamp1; +uniform isamplerBuffer bufSamp2; +uniform usamplerBuffer bufSamp3; +#endif +#ifdef GL_EXT_texture_buffer +uniform writeonly imageBuffer bufSamp4; +uniform writeonly iimageBuffer bufSamp5; +uniform writeonly uimageBuffer bufSamp6; +#endif + +void bufferT() +{ + highp int s1 = textureSize(bufSamp1); + highp int s2 = textureSize(bufSamp2); + highp int s3 = textureSize(bufSamp3); + + highp int s4 = imageSize(bufSamp4); + highp int s5 = imageSize(bufSamp5); + highp int s6 = imageSize(bufSamp6); + + highp vec4 f1 = texelFetch(bufSamp1, s1); + highp ivec4 f2 = texelFetch(bufSamp2, s2); + highp uvec4 f3 = texelFetch(bufSamp3, s3); +} + +uniform writeonly imageCubeArray noPreCA1; // ERROR, no default precision +uniform writeonly iimageCubeArray noPreCA2; // ERROR, no default precision +uniform writeonly uimageCubeArray noPreCA3; // ERROR, no default precision + +uniform samplerCubeArray noPreCA4; // ERROR, no default precision +uniform samplerCubeArrayShadow noPreCA5; // ERROR, no default precision +uniform isamplerCubeArray noPreCA6; // ERROR, no default precision +uniform usamplerCubeArray noPreCA7; // ERROR, no default precision + +precision highp imageCubeArray ; +precision highp iimageCubeArray ; +precision highp uimageCubeArray ; + +precision highp samplerCubeArray ; +precision highp samplerCubeArrayShadow; +precision highp isamplerCubeArray ; +precision highp usamplerCubeArray ; + +uniform writeonly imageCubeArray CA1; +uniform writeonly iimageCubeArray CA2; +uniform writeonly uimageCubeArray CA3; + +layout(rgba16f) uniform readonly imageCubeArray rCA1; +layout(rgba32i) uniform readonly iimageCubeArray rCA2; +layout(r32ui) uniform readonly uimageCubeArray rCA3; + +#ifdef GL_OES_texture_cube_map_array +uniform samplerCubeArray CA4; +uniform samplerCubeArrayShadow CA5; +uniform isamplerCubeArray CA6; +uniform usamplerCubeArray CA7; +#endif + +void CAT() +{ + highp ivec3 s4 = textureSize(CA4, 1); + highp ivec3 s5 = textureSize(CA5, 1); + highp ivec3 s6 = textureSize(CA6, 1); + highp ivec3 s7 = textureSize(CA7, 1); + + highp vec4 t4 = texture(CA4, vec4(0.5)); + highp float t5 = texture(CA5, vec4(0.5), 3.0); + highp ivec4 t6 = texture(CA6, vec4(0.5)); + highp uvec4 t7 = texture(CA7, vec4(0.5)); + + highp vec4 L4 = textureLod(CA4, vec4(0.5), 0.24); + highp ivec4 L6 = textureLod(CA6, vec4(0.5), 0.26); + highp uvec4 L7 = textureLod(CA7, vec4(0.5), 0.27); + + highp vec4 g4 = textureGrad(CA4, vec4(0.5), vec3(0.1), vec3(0.2)); + highp ivec4 g6 = textureGrad(CA6, vec4(0.5), vec3(0.1), vec3(0.2)); + highp uvec4 g7 = textureGrad(CA7, vec4(0.5), vec3(0.1), vec3(0.2)); + + highp vec4 gath4 = textureGather(CA4, vec4(0.5)); + highp vec4 gathC4 = textureGather(CA4, vec4(0.5), 2); + highp ivec4 gath6 = textureGather(CA6, vec4(0.5)); + highp ivec4 gathC6 = textureGather(CA6, vec4(0.5), 1); + highp uvec4 gath7 = textureGather(CA7, vec4(0.5)); + highp uvec4 gathC7 = textureGather(CA7, vec4(0.5), 0); + + highp vec4 gath5 = textureGather(CA5, vec4(0.5), 2.5); + + highp ivec3 s1 = imageSize(CA1); + highp ivec3 s2 = imageSize(CA2); + highp ivec3 s3 = imageSize(CA3); + + imageStore(CA1, s3, vec4(1)); + imageStore(CA2, s3, ivec4(1)); + imageStore(CA3, s3, uvec4(1)); + + highp vec4 cl1 = imageLoad(rCA1, s3); + highp ivec4 cl2 = imageLoad(rCA2, s3); + highp uvec4 cl3 = imageLoad(rCA3, s3); +} + +uniform sampler2DMSArray noPrec2DMS; // ERROR, no default +uniform isampler2DMSArray noPrec2DMSi; // ERROR, no default +uniform usampler2DMSArray noPrec2DMSu; // ERROR, no default + +precision highp sampler2DMSArray; +precision highp isampler2DMSArray; +precision highp usampler2DMSArray; + +uniform sampler2DMSArray samp2DMSA; +uniform isampler2DMSArray samp2DMSAi; +uniform usampler2DMSArray samp2DMSAu; + +void MSA() +{ + vec4 tf = texelFetch(samp2DMSA, ivec3(5), 2); + ivec4 tfi = texelFetch(samp2DMSAi, ivec3(5), 2); + uvec4 tfu = texelFetch(samp2DMSAu, ivec3(5), 2); + + ivec3 tfs = textureSize(samp2DMSA); + ivec3 tfsi = textureSize(samp2DMSAi); + ivec3 tfsb = textureSize(samp2DMSAi, 4); // ERROR, no lod + ivec3 tfsu = textureSize(samp2DMSAu); +} + +uniform layout(r32f) highp image2D im2Df; +uniform layout(r32ui) highp uimage2D im2Du; +uniform layout(r32i) highp iimage2D im2Di; +uniform ivec2 P; + +void goodImageAtom() +{ + float datf; + int dati; + uint datu; + + imageAtomicAdd( im2Di, P, dati); + imageAtomicAdd( im2Du, P, datu); + imageAtomicMin( im2Di, P, dati); + imageAtomicMin( im2Du, P, datu); + imageAtomicMax( im2Di, P, dati); + imageAtomicMax( im2Du, P, datu); + imageAtomicAnd( im2Di, P, dati); + imageAtomicAnd( im2Du, P, datu); + imageAtomicOr( im2Di, P, dati); + imageAtomicOr( im2Du, P, datu); + imageAtomicXor( im2Di, P, dati); + imageAtomicXor( im2Du, P, datu); + imageAtomicExchange(im2Di, P, dati); + imageAtomicExchange(im2Du, P, datu); + imageAtomicExchange(im2Df, P, datf); + imageAtomicCompSwap(im2Di, P, 3, dati); + imageAtomicCompSwap(im2Du, P, 5u, datu); +} + +sample out vec4 colorSample; +flat sample out vec4 colorfsi; +sample out vec3 sampInArray[4]; +in vec4 inv4; + +void badInterp() +{ + interpolateAtCentroid(inv4); // ERROR, wrong stage + interpolateAtSample(inv4, 1); // ERROR, need extension + interpolateAtOffset(inv4, vec2(0.2)); // ERROR, need extension +} diff --git a/Test/baseResults/310.frag.out b/Test/baseResults/310.frag.out index a6346b312..810755613 100644 --- a/Test/baseResults/310.frag.out +++ b/Test/baseResults/310.frag.out @@ -123,7 +123,7 @@ ERROR: 0:391: 'interpolateAtOffset' : first argument must be an interpolant, or ERROR: 0:392: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element ERROR: 0:396: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element ERROR: 0:397: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element -ERROR: 0:400: 'blend equation' : required extension not requested: GL_KHR_blend_equation_advanced +ERROR: 0:400: 'blend equation' : not supported for this version or the enabled extensions ERROR: 0:423: 'blend equation' : can only apply to 'out' ERROR: 0:424: 'blend equation' : can only apply to a standalone qualifier ERROR: 0:425: 'blend equation' : can only apply to a standalone qualifier diff --git a/Test/baseResults/320.comp.out b/Test/baseResults/320.comp.out new file mode 100755 index 000000000..09cedd0a0 --- /dev/null +++ b/Test/baseResults/320.comp.out @@ -0,0 +1,19 @@ +320.comp +Shader version: 320 +local_size = (1, 1, 1) +0:? Sequence +0:3 Function Definition: main( ( global void) +0:3 Function Parameters: +0:? Linker Objects + + +Linked compute stage: + + +Shader version: 320 +local_size = (1, 1, 1) +0:? Sequence +0:3 Function Definition: main( ( global void) +0:3 Function Parameters: +0:? Linker Objects + diff --git a/Test/baseResults/320.frag.out b/Test/baseResults/320.frag.out new file mode 100755 index 000000000..76dbeaf8d --- /dev/null +++ b/Test/baseResults/320.frag.out @@ -0,0 +1,576 @@ +320.frag +ERROR: 0:3: 'output block' : not supported in this stage: fragment +ERROR: 0:7: 'float' : type requires declaration of default precision qualifier +ERROR: 0:8: '' : cannot nest a structure definition inside a structure or block +ERROR: 0:16: 'location' : overlapping use of location 13 +ERROR: 0:18: 'inbname2' : Cannot reuse block name within the same interface: in +ERROR: 0:23: 'badmember' : nameless block contains a member that already has a name at global scope +ERROR: 0:27: 'inbname' : redefinition +ERROR: 0:29: 'vAnon' : redefinition +ERROR: 0:43: 'origin_upper_left' : not supported with this profile: es +ERROR: 0:43: 'pixel_center_integer' : not supported with this profile: es +ERROR: 0:43: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord +ERROR: 0:47: 'depth layout qualifier' : not supported with this profile: es +ERROR: 0:51: 'assign' : l-value required "gl_FragDepth" (can't modify gl_FragDepth if using early_fragment_tests) +ERROR: 0:79: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument +ERROR: 0:124: 'rgba32f' : format requires readonly or writeonly memory qualifier +ERROR: 0:125: 'rgba8ui' : format requires readonly or writeonly memory qualifier +ERROR: 0:126: 'rgba16i' : format requires readonly or writeonly memory qualifier +ERROR: 0:152: 'imageAtomicMax' : only supported on image with format r32i or r32ui +ERROR: 0:153: 'imageAtomicMax' : only supported on image with format r32i or r32ui +ERROR: 0:154: 'imageAtomicExchange' : only supported on image with format r32f +ERROR: 0:157: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output +ERROR: 0:158: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output +ERROR: 0:159: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output +ERROR: 0:160: 'noperspective' : Reserved word. +ERROR: 0:160: 'noperspective' : not supported with this profile: es +ERROR: 0:160: 'flat/smooth/noperspective' : can't use interpolation qualifier on a fragment output +ERROR: 0:165: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output +ERROR: 0:180: 'interpolateAtCentroid' : no matching overloaded function found +ERROR: 0:180: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float' +ERROR: 0:182: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element +ERROR: 0:184: 'interpolateAtSample' : no matching overloaded function found +ERROR: 0:184: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float' +ERROR: 0:186: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element +ERROR: 0:189: 'interpolateAtOffset' : no matching overloaded function found +ERROR: 0:189: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float' +ERROR: 0:191: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element +ERROR: 0:192: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element +ERROR: 0:196: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element +ERROR: 0:197: 'outp' : undeclared identifier +ERROR: 0:197: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element +ERROR: 0:197: 'assign' : cannot convert from ' global float' to ' temp mediump 4-component vector of float' +ERROR: 0:217: 'blend equation' : can only apply to 'out' +ERROR: 0:218: 'blend equation' : can only apply to a standalone qualifier +ERROR: 0:219: 'blend equation' : can only apply to a standalone qualifier +ERROR: 0:220: 'blend equation' : can only apply to a standalone qualifier +ERROR: 0:221: 'blend equation' : can only apply to a standalone qualifier +ERROR: 0:222: 'blend equation' : can only apply to a standalone qualifier +ERROR: 0:223: 'blend_support' : unknown blend equation +ERROR: 0:225: 'fragment-shader array-of-array output' : not supported with this profile: es +ERROR: 49 compilation errors. No code generated. + + +Shader version: 320 +gl_FragCoord pixel center is integer +gl_FragCoord origin is upper left +using early_fragment_tests +using depth_any +using blend_support_multiply blend_support_screen blend_support_overlay blend_support_darken blend_support_lighten blend_support_colordodge blend_support_colorburn blend_support_hardlight blend_support_softlight blend_support_difference blend_support_exclusion blend_support_hsl_hue blend_support_hsl_saturation blend_support_hsl_color blend_support_hsl_luminosity blend_support_all_equations +ERROR: node is still EOpNull! +0:35 Function Definition: fooIO( ( global void) +0:35 Function Parameters: +0:37 Sequence +0:37 Sequence +0:37 move second child to first child ( temp mediump 4-component vector of float) +0:37 'v' ( temp mediump 4-component vector of float) +0:37 add ( temp mediump 4-component vector of float) +0:37 v: direct index for structure ( in mediump 4-component vector of float) +0:37 'inbinst' ( in block{ in mediump int a, in mediump 4-component vector of float v, in structure{ global mediump int b} s}) +0:37 Constant: +0:37 1 (const int) +0:37 vAnon: direct index for structure (layout( location=13) centroid in mediump 4-component vector of float) +0:37 'anon@0' ( in block{layout( location=12) in mediump int aAnon, layout( location=13) centroid in mediump 4-component vector of float vAnon}) +0:37 Constant: +0:37 1 (const uint) +0:38 vector scale second child into first child ( temp mediump 4-component vector of float) +0:38 'v' ( temp mediump 4-component vector of float) +0:38 f: direct index for structure ( in mediump float) +0:38 direct index ( temp block{ in mediump float f}) +0:38 'arrayedInst' ( in 4-element array of block{ in mediump float f}) +0:38 Constant: +0:38 2 (const int) +0:38 Constant: +0:38 0 (const int) +0:39 vector scale second child into first child ( temp mediump 4-component vector of float) +0:39 'v' ( temp mediump 4-component vector of float) +0:39 f: direct index for structure ( in mediump float) +0:39 indirect index ( temp block{ in mediump float f}) +0:39 'arrayedInst' ( in 4-element array of block{ in mediump float f}) +0:39 'i' ( uniform mediump int) +0:39 Constant: +0:39 0 (const int) +0:49 Function Definition: main( ( global void) +0:49 Function Parameters: +0:51 Sequence +0:51 move second child to first child ( temp highp float) +0:51 'gl_FragDepth' ( gl_FragDepth highp float FragDepth) +0:51 Constant: +0:51 0.200000 +0:52 Sequence +0:52 move second child to first child ( temp bool) +0:52 'f' ( temp bool) +0:52 'gl_FrontFacing' ( gl_FrontFacing bool Face) +0:57 Function Definition: foo_GS( ( global void) +0:57 Function Parameters: +0:59 Sequence +0:59 Sequence +0:59 move second child to first child ( temp highp int) +0:59 'l' ( temp highp int) +0:59 'gl_Layer' ( flat in highp int Layer) +0:60 Sequence +0:60 move second child to first child ( temp highp int) +0:60 'p' ( temp highp int) +0:60 'gl_PrimitiveID' ( flat in highp int PrimitiveID) +0:73 Function Definition: pfoo( ( global void) +0:73 Function Parameters: +0:? Sequence +0:76 move second child to first child ( temp mediump 2-component vector of float) +0:76 'h' ( noContraction temp mediump 2-component vector of float) +0:76 fma ( global mediump 2-component vector of float) +0:76 'inf' ( smooth in mediump 2-component vector of float) +0:76 'ing' ( smooth in mediump 2-component vector of float) +0:76 'h' ( noContraction temp mediump 2-component vector of float) +0:77 textureGatherOffset ( global lowp 4-component vector of float) +0:77 direct index ( temp lowp sampler2D) +0:77 'sArray' ( uniform 4-element array of lowp sampler2D) +0:77 Constant: +0:77 0 (const int) +0:77 Constant: +0:77 0.100000 +0:77 0.100000 +0:77 Convert float to int ( temp lowp 2-component vector of int) +0:77 'inf' ( smooth in mediump 2-component vector of float) +0:78 textureGatherOffsets ( global lowp 4-component vector of float, operation at mediump) +0:78 direct index ( temp lowp sampler2D) +0:78 'sArray' ( uniform 4-element array of lowp sampler2D) +0:78 Constant: +0:78 0 (const int) +0:78 Constant: +0:78 0.100000 +0:78 0.100000 +0:78 Constant: +0:78 0 (const int) +0:78 0 (const int) +0:78 0 (const int) +0:78 0 (const int) +0:78 0 (const int) +0:78 0 (const int) +0:78 0 (const int) +0:78 0 (const int) +0:79 textureGatherOffsets ( global lowp 4-component vector of float, operation at mediump) +0:79 direct index ( temp lowp sampler2D) +0:79 'sArray' ( uniform 4-element array of lowp sampler2D) +0:79 Constant: +0:79 0 (const int) +0:79 Constant: +0:79 0.100000 +0:79 0.100000 +0:79 'offsets' ( uniform 4-element array of mediump 2-component vector of int) +0:102 Function Definition: CAT( ( global void) +0:102 Function Parameters: +0:104 Sequence +0:104 Sequence +0:104 move second child to first child ( temp highp 4-component vector of float) +0:104 'b4' ( temp highp 4-component vector of float) +0:104 texture ( global highp 4-component vector of float) +0:104 'CA4' ( uniform highp samplerCubeArray) +0:104 Constant: +0:104 0.500000 +0:104 0.500000 +0:104 0.500000 +0:104 0.500000 +0:104 Constant: +0:104 0.240000 +0:105 Sequence +0:105 move second child to first child ( temp highp 4-component vector of int) +0:105 'b6' ( temp highp 4-component vector of int) +0:105 texture ( global highp 4-component vector of int) +0:105 'CA6' ( uniform highp isamplerCubeArray) +0:105 Constant: +0:105 0.500000 +0:105 0.500000 +0:105 0.500000 +0:105 0.500000 +0:105 Constant: +0:105 0.260000 +0:106 Sequence +0:106 move second child to first child ( temp highp 4-component vector of uint) +0:106 'b7' ( temp highp 4-component vector of uint) +0:106 texture ( global highp 4-component vector of uint) +0:106 'CA7' ( uniform highp usamplerCubeArray) +0:106 Constant: +0:106 0.500000 +0:106 0.500000 +0:106 0.500000 +0:106 0.500000 +0:106 Constant: +0:106 0.270000 +0:109 Function Definition: goodSample( ( global void) +0:109 Function Parameters: +0:111 Sequence +0:111 Sequence +0:111 move second child to first child ( temp lowp int) +0:111 'a1' ( temp lowp int) +0:111 'gl_SampleID' ( flat in lowp int SampleId) +0:112 Sequence +0:112 move second child to first child ( temp mediump 2-component vector of float) +0:112 'a2' ( temp mediump 2-component vector of float) +0:112 'gl_SamplePosition' ( smooth in mediump 2-component vector of float SamplePosition) +0:113 Sequence +0:113 move second child to first child ( temp highp int) +0:113 'a3' ( temp highp int) +0:113 direct index ( flat temp highp int SampleMaskIn) +0:113 'gl_SampleMaskIn' ( flat in implicitly-sized array of highp int SampleMaskIn) +0:113 Constant: +0:113 0 (const int) +0:114 move second child to first child ( temp highp int) +0:114 direct index ( temp highp int SampleMaskIn) +0:114 'gl_SampleMask' ( out implicitly-sized array of highp int SampleMaskIn) +0:114 Constant: +0:114 0 (const int) +0:114 'a3' ( temp highp int) +0:115 Sequence +0:115 move second child to first child ( temp mediump int) +0:115 'n1' ( temp mediump int) +0:115 Constant: +0:115 4 (const int) +0:116 Sequence +0:116 move second child to first child ( temp mediump int) +0:116 'n2' ( temp mediump int) +0:116 'gl_NumSamples' ( uniform lowp int) +0:128 Function Definition: goodImageAtom( ( global void) +0:128 Function Parameters: +0:? Sequence +0:134 imageAtomicAdd ( global highp int) +0:134 'im2Di' (layout( r32i) uniform highp iimage2D) +0:134 'P' ( uniform mediump 2-component vector of int) +0:134 'dati' ( temp mediump int) +0:135 imageAtomicAdd ( global highp uint) +0:135 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:135 'P' ( uniform mediump 2-component vector of int) +0:135 'datu' ( temp mediump uint) +0:136 imageAtomicMin ( global highp int) +0:136 'im2Di' (layout( r32i) uniform highp iimage2D) +0:136 'P' ( uniform mediump 2-component vector of int) +0:136 'dati' ( temp mediump int) +0:137 imageAtomicMin ( global highp uint) +0:137 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:137 'P' ( uniform mediump 2-component vector of int) +0:137 'datu' ( temp mediump uint) +0:138 imageAtomicMax ( global highp int) +0:138 'im2Di' (layout( r32i) uniform highp iimage2D) +0:138 'P' ( uniform mediump 2-component vector of int) +0:138 'dati' ( temp mediump int) +0:139 imageAtomicMax ( global highp uint) +0:139 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:139 'P' ( uniform mediump 2-component vector of int) +0:139 'datu' ( temp mediump uint) +0:140 imageAtomicAnd ( global highp int) +0:140 'im2Di' (layout( r32i) uniform highp iimage2D) +0:140 'P' ( uniform mediump 2-component vector of int) +0:140 'dati' ( temp mediump int) +0:141 imageAtomicAnd ( global highp uint) +0:141 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:141 'P' ( uniform mediump 2-component vector of int) +0:141 'datu' ( temp mediump uint) +0:142 imageAtomicOr ( global highp int) +0:142 'im2Di' (layout( r32i) uniform highp iimage2D) +0:142 'P' ( uniform mediump 2-component vector of int) +0:142 'dati' ( temp mediump int) +0:143 imageAtomicOr ( global highp uint) +0:143 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:143 'P' ( uniform mediump 2-component vector of int) +0:143 'datu' ( temp mediump uint) +0:144 imageAtomicXor ( global highp int) +0:144 'im2Di' (layout( r32i) uniform highp iimage2D) +0:144 'P' ( uniform mediump 2-component vector of int) +0:144 'dati' ( temp mediump int) +0:145 imageAtomicXor ( global highp uint) +0:145 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:145 'P' ( uniform mediump 2-component vector of int) +0:145 'datu' ( temp mediump uint) +0:146 imageAtomicExchange ( global highp int) +0:146 'im2Di' (layout( r32i) uniform highp iimage2D) +0:146 'P' ( uniform mediump 2-component vector of int) +0:146 'dati' ( temp mediump int) +0:147 imageAtomicExchange ( global highp uint) +0:147 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:147 'P' ( uniform mediump 2-component vector of int) +0:147 'datu' ( temp mediump uint) +0:148 imageAtomicExchange ( global highp float) +0:148 'im2Df' (layout( r32f) uniform highp image2D) +0:148 'P' ( uniform mediump 2-component vector of int) +0:148 'datf' ( temp mediump float) +0:149 imageAtomicCompSwap ( global highp int) +0:149 'im2Di' (layout( r32i) uniform highp iimage2D) +0:149 'P' ( uniform mediump 2-component vector of int) +0:149 Constant: +0:149 3 (const int) +0:149 'dati' ( temp mediump int) +0:150 imageAtomicCompSwap ( global highp uint) +0:150 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:150 'P' ( uniform mediump 2-component vector of int) +0:150 Constant: +0:150 5 (const uint) +0:150 'datu' ( temp mediump uint) +0:152 imageAtomicMax ( global highp int) +0:152 'badIm2Di' (layout( rgba16i) uniform highp iimage2D) +0:152 'P' ( uniform mediump 2-component vector of int) +0:152 'dati' ( temp mediump int) +0:153 imageAtomicMax ( global highp uint) +0:153 'badIm2Du' (layout( rgba8ui) uniform highp uimage2D) +0:153 'P' ( uniform mediump 2-component vector of int) +0:153 'datu' ( temp mediump uint) +0:154 imageAtomicExchange ( global highp float) +0:154 'badIm2Df' (layout( rgba32f) uniform highp image2D) +0:154 'P' ( uniform mediump 2-component vector of int) +0:154 'datf' ( temp mediump float) +0:169 Function Definition: interp( ( global void) +0:169 Function Parameters: +0:? Sequence +0:176 move second child to first child ( temp mediump 2-component vector of float) +0:176 'res2' ( temp mediump 2-component vector of float) +0:176 interpolateAtCentroid ( global mediump 2-component vector of float) +0:176 'colorfc' ( centroid flat in mediump 2-component vector of float) +0:177 move second child to first child ( temp mediump 4-component vector of float) +0:177 'res4' ( temp mediump 4-component vector of float) +0:177 interpolateAtCentroid ( global mediump 4-component vector of float) +0:177 'colorSampIn' ( smooth sample in mediump 4-component vector of float) +0:178 move second child to first child ( temp mediump 4-component vector of float) +0:178 'res4' ( temp mediump 4-component vector of float) +0:178 interpolateAtCentroid ( global mediump 4-component vector of float) +0:178 'colorfsi' ( flat sample in mediump 4-component vector of float) +0:179 move second child to first child ( temp mediump float) +0:179 'res' ( temp mediump float) +0:179 interpolateAtCentroid ( global mediump float) +0:179 'scalarIn' ( smooth in mediump float) +0:180 'res3' ( temp mediump 3-component vector of float) +0:181 move second child to first child ( temp mediump 3-component vector of float) +0:181 'res3' ( temp mediump 3-component vector of float) +0:181 interpolateAtCentroid ( global mediump 3-component vector of float) +0:181 direct index ( smooth sample temp mediump 3-component vector of float) +0:181 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) +0:181 Constant: +0:181 2 (const int) +0:182 move second child to first child ( temp mediump 2-component vector of float) +0:182 'res2' ( temp mediump 2-component vector of float) +0:182 interpolateAtCentroid ( global mediump 2-component vector of float) +0:182 vector swizzle ( temp mediump 2-component vector of float) +0:182 direct index ( smooth sample temp mediump 3-component vector of float) +0:182 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) +0:182 Constant: +0:182 2 (const int) +0:182 Sequence +0:182 Constant: +0:182 0 (const int) +0:182 Constant: +0:182 1 (const int) +0:184 'res3' ( temp mediump 3-component vector of float) +0:185 move second child to first child ( temp mediump 3-component vector of float) +0:185 'res3' ( temp mediump 3-component vector of float) +0:185 interpolateAtSample ( global mediump 3-component vector of float) +0:185 indirect index ( smooth sample temp mediump 3-component vector of float) +0:185 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) +0:185 'i' ( uniform mediump int) +0:185 Constant: +0:185 0 (const int) +0:186 move second child to first child ( temp mediump 2-component vector of float) +0:186 'res2' ( temp mediump 2-component vector of float) +0:186 interpolateAtSample ( global mediump 2-component vector of float) +0:186 vector swizzle ( temp mediump 2-component vector of float) +0:186 direct index ( smooth sample temp mediump 3-component vector of float) +0:186 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) +0:186 Constant: +0:186 2 (const int) +0:186 Sequence +0:186 Constant: +0:186 0 (const int) +0:186 Constant: +0:186 1 (const int) +0:186 Constant: +0:186 2 (const int) +0:187 move second child to first child ( temp mediump float) +0:187 'res' ( temp mediump float) +0:187 interpolateAtSample ( global mediump float) +0:187 'scalarIn' ( smooth in mediump float) +0:187 Constant: +0:187 1 (const int) +0:189 'res3' ( temp mediump 3-component vector of float) +0:190 move second child to first child ( temp mediump 3-component vector of float) +0:190 'res3' ( temp mediump 3-component vector of float) +0:190 interpolateAtOffset ( global mediump 3-component vector of float) +0:190 direct index ( smooth sample temp mediump 3-component vector of float) +0:190 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) +0:190 Constant: +0:190 2 (const int) +0:190 Constant: +0:190 0.200000 +0:190 0.200000 +0:191 move second child to first child ( temp mediump 2-component vector of float) +0:191 'res2' ( temp mediump 2-component vector of float) +0:191 interpolateAtOffset ( global mediump 2-component vector of float) +0:191 vector swizzle ( temp mediump 2-component vector of float) +0:191 direct index ( smooth sample temp mediump 3-component vector of float) +0:191 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) +0:191 Constant: +0:191 2 (const int) +0:191 Sequence +0:191 Constant: +0:191 0 (const int) +0:191 Constant: +0:191 1 (const int) +0:191 Constant: +0:191 0.200000 +0:191 0.200000 +0:192 move second child to first child ( temp mediump float) +0:192 'res' ( temp mediump float) +0:192 interpolateAtOffset ( global mediump float) +0:192 add ( temp mediump float) +0:192 'scalarIn' ( smooth in mediump float) +0:192 'scalarIn' ( smooth in mediump float) +0:192 Constant: +0:192 0.200000 +0:192 0.200000 +0:193 move second child to first child ( temp mediump float) +0:193 'res' ( temp mediump float) +0:193 interpolateAtOffset ( global mediump float) +0:193 'scalarIn' ( smooth in mediump float) +0:193 Constant: +0:193 0.200000 +0:193 0.200000 +0:196 move second child to first child ( temp mediump float) +0:196 'res' ( temp mediump float) +0:196 interpolateAtCentroid ( global mediump float) +0:196 'f' ( temp mediump float) +0:197 'res4' ( temp mediump 4-component vector of float) +0:221 Function Definition: blendFoo( ( temp void) +0:221 Function Parameters: +0:222 Function Definition: blendFoo(vf3; ( global void) +0:222 Function Parameters: +0:222 'v' ( in mediump 3-component vector of float) +0:? Linker Objects +0:? 'outbinst' ( out block{ out mediump int a}) +0:? 'inbinst' ( in block{ in mediump int a, in mediump 4-component vector of float v, in structure{ global mediump int b} s}) +0:? 'anon@0' ( in block{layout( location=12) in mediump int aAnon, layout( location=13) centroid in mediump 4-component vector of float vAnon}) +0:? 'aliased' (layout( location=13) smooth in mediump 4-component vector of float) +0:? 'arrayedInst' ( in 4-element array of block{ in mediump float f}) +0:? 'i' ( uniform mediump int) +0:? 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) +0:? 'gl_FragDepth' ( gl_FragDepth highp float FragDepth) +0:? 'inf' ( smooth in mediump 2-component vector of float) +0:? 'ing' ( smooth in mediump 2-component vector of float) +0:? 'offsets' ( uniform 4-element array of mediump 2-component vector of int) +0:? 'sArray' ( uniform 4-element array of lowp sampler2D) +0:? 'sIndex' ( uniform mediump int) +0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint) +0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump int i}) +0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer mediump int i}) +0:? 'iArray' ( writeonly uniform 5-element array of highp image2D) +0:? 'constOffsets' ( const 4-element array of mediump 2-component vector of int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 'CA1' ( writeonly uniform highp imageCubeArray) +0:? 'CA2' ( writeonly uniform highp iimageCubeArray) +0:? 'CA3' ( writeonly uniform highp uimageCubeArray) +0:? 'CA4' ( uniform highp samplerCubeArray) +0:? 'CA5' ( uniform highp samplerCubeArrayShadow) +0:? 'CA6' ( uniform highp isamplerCubeArray) +0:? 'CA7' ( uniform highp usamplerCubeArray) +0:? 'gl_SampleMaskIn' ( flat in implicitly-sized array of highp int SampleMaskIn) +0:? 'gl_SampleMask' ( out implicitly-sized array of highp int SampleMaskIn) +0:? 'im2Df' (layout( r32f) uniform highp image2D) +0:? 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:? 'im2Di' (layout( r32i) uniform highp iimage2D) +0:? 'P' ( uniform mediump 2-component vector of int) +0:? 'badIm2Df' (layout( rgba32f) uniform highp image2D) +0:? 'badIm2Du' (layout( rgba8ui) uniform highp uimage2D) +0:? 'badIm2Di' (layout( rgba16i) uniform highp iimage2D) +0:? 'colorCentroidBad' ( centroid out mediump 4-component vector of float) +0:? 'colorBadFlat' ( flat out mediump 4-component vector of float) +0:? 'colorBadSmooth' ( smooth out mediump 4-component vector of float) +0:? 'colorBadNo' ( noperspective out mediump 4-component vector of float) +0:? 'colorfc' ( centroid flat in mediump 2-component vector of float) +0:? 'scalarIn' ( smooth in mediump float) +0:? 'colorSampIn' ( smooth sample in mediump 4-component vector of float) +0:? 'colorSampleBad' ( sample out mediump 4-component vector of float) +0:? 'colorfsi' ( flat sample in mediump 4-component vector of float) +0:? 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) +0:? 'badout' ( out mediump 4-component vector of float) +0:? 'outAA' ( out 2-element array of 2-element array of mediump 4-component vector of float) + + +Linked fragment stage: + +ERROR: Linking fragment stage: when more than one fragment shader output, all must have location qualifiers + +Shader version: 320 +gl_FragCoord pixel center is integer +gl_FragCoord origin is upper left +using early_fragment_tests +using depth_any +using blend_support_multiply blend_support_screen blend_support_overlay blend_support_darken blend_support_lighten blend_support_colordodge blend_support_colorburn blend_support_hardlight blend_support_softlight blend_support_difference blend_support_exclusion blend_support_hsl_hue blend_support_hsl_saturation blend_support_hsl_color blend_support_hsl_luminosity blend_support_all_equations +ERROR: node is still EOpNull! +0:49 Function Definition: main( ( global void) +0:49 Function Parameters: +0:51 Sequence +0:51 move second child to first child ( temp highp float) +0:51 'gl_FragDepth' ( gl_FragDepth highp float FragDepth) +0:51 Constant: +0:51 0.200000 +0:52 Sequence +0:52 move second child to first child ( temp bool) +0:52 'f' ( temp bool) +0:52 'gl_FrontFacing' ( gl_FrontFacing bool Face) +0:? Linker Objects +0:? 'outbinst' ( out block{ out mediump int a}) +0:? 'inbinst' ( in block{ in mediump int a, in mediump 4-component vector of float v, in structure{ global mediump int b} s}) +0:? 'anon@0' ( in block{layout( location=12) in mediump int aAnon, layout( location=13) centroid in mediump 4-component vector of float vAnon}) +0:? 'aliased' (layout( location=13) smooth in mediump 4-component vector of float) +0:? 'arrayedInst' ( in 4-element array of block{ in mediump float f}) +0:? 'i' ( uniform mediump int) +0:? 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) +0:? 'gl_FragDepth' ( gl_FragDepth highp float FragDepth) +0:? 'inf' ( smooth in mediump 2-component vector of float) +0:? 'ing' ( smooth in mediump 2-component vector of float) +0:? 'offsets' ( uniform 4-element array of mediump 2-component vector of int) +0:? 'sArray' ( uniform 4-element array of lowp sampler2D) +0:? 'sIndex' ( uniform mediump int) +0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint) +0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform mediump int i}) +0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer mediump int i}) +0:? 'iArray' ( writeonly uniform 5-element array of highp image2D) +0:? 'constOffsets' ( const 4-element array of mediump 2-component vector of int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 'CA1' ( writeonly uniform highp imageCubeArray) +0:? 'CA2' ( writeonly uniform highp iimageCubeArray) +0:? 'CA3' ( writeonly uniform highp uimageCubeArray) +0:? 'CA4' ( uniform highp samplerCubeArray) +0:? 'CA5' ( uniform highp samplerCubeArrayShadow) +0:? 'CA6' ( uniform highp isamplerCubeArray) +0:? 'CA7' ( uniform highp usamplerCubeArray) +0:? 'gl_SampleMaskIn' ( flat in 1-element array of highp int SampleMaskIn) +0:? 'gl_SampleMask' ( out 1-element array of highp int SampleMaskIn) +0:? 'im2Df' (layout( r32f) uniform highp image2D) +0:? 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:? 'im2Di' (layout( r32i) uniform highp iimage2D) +0:? 'P' ( uniform mediump 2-component vector of int) +0:? 'badIm2Df' (layout( rgba32f) uniform highp image2D) +0:? 'badIm2Du' (layout( rgba8ui) uniform highp uimage2D) +0:? 'badIm2Di' (layout( rgba16i) uniform highp iimage2D) +0:? 'colorCentroidBad' ( centroid out mediump 4-component vector of float) +0:? 'colorBadFlat' ( flat out mediump 4-component vector of float) +0:? 'colorBadSmooth' ( smooth out mediump 4-component vector of float) +0:? 'colorBadNo' ( noperspective out mediump 4-component vector of float) +0:? 'colorfc' ( centroid flat in mediump 2-component vector of float) +0:? 'scalarIn' ( smooth in mediump float) +0:? 'colorSampIn' ( smooth sample in mediump 4-component vector of float) +0:? 'colorSampleBad' ( sample out mediump 4-component vector of float) +0:? 'colorfsi' ( flat sample in mediump 4-component vector of float) +0:? 'sampInArray' ( smooth sample in 4-element array of mediump 3-component vector of float) +0:? 'badout' ( out mediump 4-component vector of float) +0:? 'outAA' ( out 2-element array of 2-element array of mediump 4-component vector of float) + diff --git a/Test/baseResults/320.geom.out b/Test/baseResults/320.geom.out new file mode 100755 index 000000000..f3337660b --- /dev/null +++ b/Test/baseResults/320.geom.out @@ -0,0 +1,251 @@ +320.geom +ERROR: 0:19: 'fromVertex' : block instance name redefinition +ERROR: 0:23: 'fromVertex' : redefinition +ERROR: 0:25: 'fooC' : block instance name redefinition +ERROR: 0:33: 'EmitStreamVertex' : no matching overloaded function found +ERROR: 0:34: 'EndStreamPrimitive' : no matching overloaded function found +ERROR: 0:37: 'gl_ClipDistance' : undeclared identifier +ERROR: 0:37: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector +ERROR: 0:38: 'gl_ClipDistance' : no such field in structure +ERROR: 0:38: 'expression' : left of '[' is not of type array, matrix, or vector +ERROR: 0:37: 'assign' : l-value required (can't modify a const) +ERROR: 0:45: 'selecting output stream' : not supported with this profile: es +ERROR: 0:52: 'max_vertices' : too large, must be less than gl_MaxGeometryOutputVertices +ERROR: 0:52: 'max_vertices' : cannot change previously set layout value +ERROR: 0:53: 'max_vertices' : can only apply to a standalone qualifier +ERROR: 0:58: 'points' : cannot change previously set output primitive +ERROR: 0:59: 'points' : cannot change previously set output primitive +ERROR: 0:60: 'triangle_strip' : cannot apply to input +ERROR: 0:61: 'triangle_strip' : cannot apply to: uniform +ERROR: 0:62: 'triangle_strip' : can only apply to a standalone qualifier +ERROR: 0:63: 'triangle_strip' : can only apply to a standalone qualifier +ERROR: 0:64: 'invocations' : can only apply to a standalone qualifier +ERROR: 0:66: 'invocations' : can only apply to a standalone qualifier +ERROR: 0:67: 'max_vertices' : can only apply to a standalone qualifier +ERROR: 0:68: 'triangle_strip' : can only apply to a standalone qualifier +ERROR: 0:71: 'lines' : cannot apply to 'out' +ERROR: 0:73: 'triangles' : cannot change previously set input primitive +ERROR: 0:74: 'triangles_adjacency' : cannot change previously set input primitive +ERROR: 0:106: 'gl_ViewportIndex' : undeclared identifier +ERROR: 0:107: 'gl_MaxViewports' : undeclared identifier +ERROR: 0:113: 'lines_adjacency' : inconsistent input primitive for array size of explArrayBad +ERROR: 0:114: 'in' : type must be an array: nonArrayed +ERROR: 0:122: 'component' : not supported with this profile: es +ERROR: 0:126: 'gl_MaxGeometryVaryingComponents' : undeclared identifier +ERROR: 0:127: 'gl_VerticesIn' : undeclared identifier +ERROR: 0:132: 'gl_PointSize' : required extension not requested: Possible extensions include: +GL_EXT_geometry_point_size +GL_OES_geometry_point_size +ERROR: 0:133: 'gl_PointSize' : required extension not requested: Possible extensions include: +GL_EXT_geometry_point_size +GL_OES_geometry_point_size +ERROR: 36 compilation errors. No code generated. + + +Shader version: 320 +invocations = 4 +max_vertices = 200 +input primitive = lines_adjacency +output primitive = triangle_strip +ERROR: node is still EOpNull! +0:29 Function Definition: main( ( global void) +0:29 Function Parameters: +0:31 Sequence +0:31 EmitVertex ( global void) +0:32 EndPrimitive ( global void) +0:33 Constant: +0:33 0.000000 +0:34 Constant: +0:34 0.000000 +0:36 move second child to first child ( temp mediump 3-component vector of float) +0:36 color: direct index for structure (layout( stream=0) out mediump 3-component vector of float) +0:36 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) +0:36 Constant: +0:36 0 (const uint) +0:36 color: direct index for structure ( in mediump 3-component vector of float) +0:36 direct index ( temp block{ in mediump 3-component vector of float color}) +0:36 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color}) +0:36 Constant: +0:36 0 (const int) +0:36 Constant: +0:36 0 (const int) +0:37 move second child to first child ( temp float) +0:37 Constant: +0:37 0.000000 +0:38 Constant: +0:38 0.000000 +0:39 move second child to first child ( temp highp 4-component vector of float) +0:39 gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position) +0:39 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize}) +0:39 Constant: +0:39 0 (const uint) +0:39 gl_Position: direct index for structure ( in highp 4-component vector of float Position) +0:39 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) +0:39 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 0 (const int) +0:41 move second child to first child ( temp highp int) +0:41 'gl_PrimitiveID' (layout( stream=0) out highp int PrimitiveID) +0:41 'gl_PrimitiveIDIn' ( in highp int PrimitiveID) +0:42 move second child to first child ( temp highp int) +0:42 'gl_Layer' (layout( stream=0) out highp int Layer) +0:42 Constant: +0:42 2 (const int) +0:53 Function Definition: foo(i1; ( global void) +0:53 Function Parameters: +0:53 'a' ( in highp int) +0:55 Sequence +0:55 move second child to first child ( temp mediump 4-component vector of float) +0:55 a: direct index for structure (layout( stream=0) out mediump 4-component vector of float) +0:55 'ouuaa6' (layout( stream=0) out block{layout( stream=0) out mediump 4-component vector of float a}) +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1.000000 +0:55 1.000000 +0:55 1.000000 +0:55 1.000000 +0:104 Function Definition: fooe1( ( global void) +0:104 Function Parameters: +0:106 Sequence +0:106 'gl_ViewportIndex' ( temp float) +0:107 'gl_MaxViewports' ( temp float) +0:108 Constant: +0:108 4 (const int) +0:109 Sequence +0:109 move second child to first child ( temp highp int) +0:109 'inv' ( temp highp int) +0:109 'gl_InvocationID' ( in highp int InvocationID) +0:124 Function Definition: notHere( ( global void) +0:124 Function Parameters: +0:126 Sequence +0:126 'gl_MaxGeometryVaryingComponents' ( temp float) +0:127 'gl_VerticesIn' ( temp float) +0:130 Function Definition: pointSize2( ( global void) +0:130 Function Parameters: +0:132 Sequence +0:132 Sequence +0:132 move second child to first child ( temp highp float) +0:132 'ps' ( temp highp float) +0:132 gl_PointSize: direct index for structure ( in highp float PointSize) +0:132 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) +0:132 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) +0:132 Constant: +0:132 3 (const int) +0:132 Constant: +0:132 1 (const int) +0:133 move second child to first child ( temp highp float) +0:133 gl_PointSize: direct index for structure (layout( stream=0) gl_PointSize highp float PointSize) +0:133 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize}) +0:133 Constant: +0:133 1 (const uint) +0:133 'ps' ( temp highp float) +0:? Linker Objects +0:? 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color}) +0:? 'nonBlockUnsized' ( in 4-element array of mediump 4-component vector of float) +0:? 'toF' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) +0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) +0:? 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) +0:? 'ov4' (layout( stream=4) out mediump 4-component vector of float) +0:? 'ouuaa6' (layout( stream=0) out block{layout( stream=0) out mediump 4-component vector of float a}) +0:? 'badv4' (layout( stream=0) out mediump 4-component vector of float) +0:? 'bad2v4' ( in 4-element array of mediump 4-component vector of float) +0:? 'anon@1' (layout( stream=0) out block{layout( stream=0) out highp int a}) +0:? 'outbi' (layout( stream=0) out block{layout( stream=0) out highp int a, layout( stream=0) out highp int b, layout( stream=0) out highp int c}) +0:? 'insn' ( in 4-element array of block{ in highp int a15}) +0:? 'anon@2' (layout( stream=0) out block{layout( stream=0) out mediump float f15}) +0:? 'anon@3' (layout( column_major shared) uniform block{layout( column_major shared) uniform bool b15}) +0:? 'summ' ( const highp int) +0:? 2752 (const int) +0:? 'explArray' ( in 4-element array of mediump 4-component vector of float) +0:? 'explArrayBad' ( in 5-element array of mediump 4-component vector of float) +0:? 'nonArrayed' ( in mediump 4-component vector of float) +0:? 'myColor1' (layout( stream=0) flat out mediump 3-component vector of float) +0:? 'myColor2' (layout( stream=0) centroid out mediump 3-component vector of float) +0:? 'centr' ( centroid in 4-element array of mediump 3-component vector of float) +0:? 'perSampleColor' (layout( stream=0) sample out mediump 4-component vector of float) +0:? 'comp' (layout( location=7 component=2) in 4-element array of mediump float) + + +Linked geometry stage: + + +Shader version: 320 +invocations = 4 +max_vertices = 200 +input primitive = lines_adjacency +output primitive = triangle_strip +ERROR: node is still EOpNull! +0:29 Function Definition: main( ( global void) +0:29 Function Parameters: +0:31 Sequence +0:31 EmitVertex ( global void) +0:32 EndPrimitive ( global void) +0:33 Constant: +0:33 0.000000 +0:34 Constant: +0:34 0.000000 +0:36 move second child to first child ( temp mediump 3-component vector of float) +0:36 color: direct index for structure (layout( stream=0) out mediump 3-component vector of float) +0:36 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) +0:36 Constant: +0:36 0 (const uint) +0:36 color: direct index for structure ( in mediump 3-component vector of float) +0:36 direct index ( temp block{ in mediump 3-component vector of float color}) +0:36 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color}) +0:36 Constant: +0:36 0 (const int) +0:36 Constant: +0:36 0 (const int) +0:37 move second child to first child ( temp float) +0:37 Constant: +0:37 0.000000 +0:38 Constant: +0:38 0.000000 +0:39 move second child to first child ( temp highp 4-component vector of float) +0:39 gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position) +0:39 'anon@1' (layout( stream=0) out block{layout( stream=0) gl_Position highp 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize highp float PointSize gl_PointSize}) +0:39 Constant: +0:39 0 (const uint) +0:39 gl_Position: direct index for structure ( in highp 4-component vector of float Position) +0:39 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) +0:39 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 0 (const int) +0:41 move second child to first child ( temp highp int) +0:41 'gl_PrimitiveID' (layout( stream=0) out highp int PrimitiveID) +0:41 'gl_PrimitiveIDIn' ( in highp int PrimitiveID) +0:42 move second child to first child ( temp highp int) +0:42 'gl_Layer' (layout( stream=0) out highp int Layer) +0:42 Constant: +0:42 2 (const int) +0:? Linker Objects +0:? 'fromV' ( in 4-element array of block{ in mediump 3-component vector of float color}) +0:? 'nonBlockUnsized' ( in 4-element array of mediump 4-component vector of float) +0:? 'toF' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) +0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out mediump 3-component vector of float color}) +0:? 'gl_in' ( in 4-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize}) +0:? 'ov4' (layout( stream=4) out mediump 4-component vector of float) +0:? 'ouuaa6' (layout( stream=0) out block{layout( stream=0) out mediump 4-component vector of float a}) +0:? 'badv4' (layout( stream=0) out mediump 4-component vector of float) +0:? 'bad2v4' ( in 4-element array of mediump 4-component vector of float) +0:? 'anon@1' (layout( stream=0) out block{layout( stream=0) out highp int a}) +0:? 'outbi' (layout( stream=0) out block{layout( stream=0) out highp int a, layout( stream=0) out highp int b, layout( stream=0) out highp int c}) +0:? 'insn' ( in 4-element array of block{ in highp int a15}) +0:? 'anon@2' (layout( stream=0) out block{layout( stream=0) out mediump float f15}) +0:? 'anon@3' (layout( column_major shared) uniform block{layout( column_major shared) uniform bool b15}) +0:? 'summ' ( const highp int) +0:? 2752 (const int) +0:? 'explArray' ( in 4-element array of mediump 4-component vector of float) +0:? 'explArrayBad' ( in 5-element array of mediump 4-component vector of float) +0:? 'nonArrayed' ( in mediump 4-component vector of float) +0:? 'myColor1' (layout( stream=0) flat out mediump 3-component vector of float) +0:? 'myColor2' (layout( stream=0) centroid out mediump 3-component vector of float) +0:? 'centr' ( centroid in 4-element array of mediump 3-component vector of float) +0:? 'perSampleColor' (layout( stream=0) sample out mediump 4-component vector of float) +0:? 'comp' (layout( location=7 component=2) in 4-element array of mediump float) + diff --git a/Test/baseResults/320.tesc.out b/Test/baseResults/320.tesc.out new file mode 100755 index 000000000..ff8012b1f --- /dev/null +++ b/Test/baseResults/320.tesc.out @@ -0,0 +1,516 @@ +320.tesc +ERROR: 0:6: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) +ERROR: 0:7: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) +ERROR: 0:8: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) +ERROR: 0:10: 'patch' : can only use on output in tessellation-control shader +ERROR: 0:24: 'gl_PointSize' : required extension not requested: Possible extensions include: +GL_EXT_tessellation_point_size +GL_OES_tessellation_point_size +ERROR: 0:25: 'gl_ClipDistance' : no such field in structure +ERROR: 0:25: 'expression' : left of '[' is not of type array, matrix, or vector +ERROR: 0:32: 'gl_PointSize' : required extension not requested: Possible extensions include: +GL_EXT_tessellation_point_size +GL_OES_tessellation_point_size +ERROR: 0:33: 'gl_ClipDistance' : no such field in structure +ERROR: 0:33: 'expression' : left of '[' is not of type array, matrix, or vector +ERROR: 0:33: 'assign' : l-value required (can't modify a const) +ERROR: 0:39: '' : tessellation control barrier() cannot be placed within flow control +ERROR: 0:41: '' : tessellation control barrier() cannot be placed within flow control +ERROR: 0:46: '' : tessellation control barrier() cannot be placed within flow control +ERROR: 0:51: '' : tessellation control barrier() cannot be placed within flow control +ERROR: 0:54: '' : tessellation control barrier() cannot be placed within flow control +ERROR: 0:61: '' : tessellation control barrier() cannot be placed after a return from main() +ERROR: 0:64: 'vertices' : can only apply to 'out' +ERROR: 0:65: 'vertices' : cannot change previously set layout value +ERROR: 0:69: '[' : array index out of range '4' +ERROR: 0:71: '' : tessellation control barrier() must be in main() +ERROR: 0:74: 'in' : type must be an array: ina +ERROR: 0:76: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized +ERROR: 0:78: '' : array size required +ERROR: 0:84: 'location' : overlapping use of location 4 +ERROR: 0:88: 'location' : overlapping use of location 4 +ERROR: 0:98: 'vertices' : can only apply to a standalone qualifier +ERROR: 0:99: 'vertices' : inconsistent output number of vertices for array size of misSized +ERROR: 0:104: 'gl_PointSize' : required extension not requested: Possible extensions include: +GL_EXT_tessellation_point_size +GL_OES_tessellation_point_size +ERROR: 0:105: 'gl_PointSize' : required extension not requested: Possible extensions include: +GL_EXT_tessellation_point_size +GL_OES_tessellation_point_size +ERROR: 0:123: '[' : array index out of range '2' +ERROR: 0:126: '' : array size required +ERROR: 0:142: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID +ERROR: 0:143: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID +ERROR: 0:146: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID +ERROR: 35 compilation errors. No code generated. + + +Shader version: 320 +Requested GL_ARB_separate_shader_objects +vertices = 4 +ERROR: node is still EOpNull! +0:13 Function Definition: main( ( global void) +0:13 Function Parameters: +0:15 Sequence +0:15 Barrier ( global void) +0:17 Sequence +0:17 move second child to first child ( temp highp int) +0:17 'a' ( temp highp int) +0:17 Constant: +0:17 5392 (const int) +0:23 Sequence +0:23 move second child to first child ( temp highp 4-component vector of float) +0:23 'p' ( temp highp 4-component vector of float) +0:23 gl_Position: direct index for structure ( in highp 4-component vector of float Position) +0:23 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV}) +0:23 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV}) +0:23 Constant: +0:23 1 (const int) +0:23 Constant: +0:23 0 (const int) +0:24 Sequence +0:24 move second child to first child ( temp highp float) +0:24 'ps' ( temp highp float) +0:24 gl_PointSize: direct index for structure ( in highp float PointSize) +0:24 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV}) +0:24 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV}) +0:24 Constant: +0:24 1 (const int) +0:24 Constant: +0:24 1 (const int) +0:25 Sequence +0:25 move second child to first child ( temp highp float) +0:25 'cd' ( temp highp float) +0:25 Constant: +0:25 0.000000 +0:27 Sequence +0:27 move second child to first child ( temp highp int) +0:27 'pvi' ( temp highp int) +0:27 'gl_PatchVerticesIn' ( in highp int PatchVertices) +0:28 Sequence +0:28 move second child to first child ( temp highp int) +0:28 'pid' ( temp highp int) +0:28 'gl_PrimitiveID' ( in highp int PrimitiveID) +0:29 Sequence +0:29 move second child to first child ( temp highp int) +0:29 'iid' ( temp highp int) +0:29 'gl_InvocationID' ( in highp int InvocationID) +0:31 move second child to first child ( temp highp 4-component vector of float) +0:31 gl_Position: direct index for structure ( out highp 4-component vector of float Position) +0:31 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:31 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:31 'gl_InvocationID' ( in highp int InvocationID) +0:31 Constant: +0:31 0 (const int) +0:31 'p' ( temp highp 4-component vector of float) +0:32 move second child to first child ( temp highp float) +0:32 gl_PointSize: direct index for structure ( out highp float PointSize) +0:32 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:32 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:32 'gl_InvocationID' ( in highp int InvocationID) +0:32 Constant: +0:32 1 (const int) +0:32 'ps' ( temp highp float) +0:33 move second child to first child ( temp highp float) +0:33 Constant: +0:33 0.000000 +0:33 'cd' ( temp highp float) +0:35 move second child to first child ( temp highp float) +0:35 direct index ( patch temp highp float TessLevelOuter) +0:35 'gl_TessLevelOuter' ( patch out 4-element array of highp float TessLevelOuter) +0:35 Constant: +0:35 3 (const int) +0:35 Constant: +0:35 3.200000 +0:36 move second child to first child ( temp highp float) +0:36 direct index ( patch temp highp float TessLevelInner) +0:36 'gl_TessLevelInner' ( patch out 2-element array of highp float TessLevelInner) +0:36 Constant: +0:36 1 (const int) +0:36 Constant: +0:36 1.300000 +0:38 Test condition and select ( temp void) +0:38 Condition +0:38 Compare Greater Than ( temp bool) +0:38 'a' ( temp highp int) +0:38 Constant: +0:38 10 (const int) +0:38 true case +0:39 Barrier ( global void) +0:38 false case +0:41 Barrier ( global void) +0:43 Barrier ( global void) +0:47 Loop with condition not tested first +0:47 Loop Condition +0:47 Compare Greater Than ( temp bool) +0:47 'a' ( temp highp int) +0:47 Constant: +0:47 10 (const int) +0:47 Loop Body +0:46 Sequence +0:46 Barrier ( global void) +0:49 switch +0:49 condition +0:49 'a' ( temp highp int) +0:49 body +0:49 Sequence +0:50 default: +0:? Sequence +0:51 Barrier ( global void) +0:52 Branch: Break +0:54 Test condition and select ( temp highp int) +0:54 Condition +0:54 Compare Less Than ( temp bool) +0:54 'a' ( temp highp int) +0:54 Constant: +0:54 12 (const int) +0:54 true case +0:54 'a' ( temp highp int) +0:54 false case +0:54 Comma ( temp highp int) +0:54 Barrier ( global void) +0:54 'a' ( temp highp int) +0:56 Sequence +0:56 Barrier ( global void) +0:59 Branch: Return +0:61 Barrier ( global void) +0:67 Function Definition: foo( ( global void) +0:67 Function Parameters: +0:69 Sequence +0:69 gl_Position: direct index for structure ( out highp 4-component vector of float Position) +0:69 direct index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:69 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:69 Constant: +0:69 4 (const int) +0:69 Constant: +0:69 0 (const int) +0:71 Barrier ( global void) +0:102 Function Definition: pointSize2( ( global void) +0:102 Function Parameters: +0:104 Sequence +0:104 Sequence +0:104 move second child to first child ( temp highp float) +0:104 'ps' ( temp highp float) +0:104 gl_PointSize: direct index for structure ( in highp float PointSize) +0:104 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV}) +0:104 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV}) +0:104 Constant: +0:104 1 (const int) +0:104 Constant: +0:104 1 (const int) +0:105 move second child to first child ( temp highp float) +0:105 gl_PointSize: direct index for structure ( out highp float PointSize) +0:105 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:105 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:105 'gl_InvocationID' ( in highp int InvocationID) +0:105 Constant: +0:105 1 (const int) +0:105 'ps' ( temp highp float) +0:110 Function Definition: goodfoop( ( global void) +0:110 Function Parameters: +0:? Sequence +0:114 multiply second child into first child ( temp highp 3-component vector of float) +0:114 'pv3' ( noContraction temp highp 3-component vector of float) +0:114 'pv3' ( noContraction temp highp 3-component vector of float) +0:115 move second child to first child ( temp highp 3-component vector of float) +0:115 'pv3' ( noContraction temp highp 3-component vector of float) +0:115 fma ( global highp 3-component vector of float) +0:115 'pv3' ( noContraction temp highp 3-component vector of float) +0:115 'pv3' ( noContraction temp highp 3-component vector of float) +0:115 'pv3' ( noContraction temp highp 3-component vector of float) +0:116 move second child to first child ( temp highp float) +0:116 'd' ( noContraction temp highp float) +0:116 fma ( global highp float) +0:116 'd' ( noContraction temp highp float) +0:116 'd' ( noContraction temp highp float) +0:116 'd' ( noContraction temp highp float) +0:119 Function Definition: bb( ( global void) +0:119 Function Parameters: +0:121 Sequence +0:121 move second child to first child ( temp highp 4-component vector of float) +0:121 direct index ( patch temp highp 4-component vector of float BoundingBox) +0:121 'gl_BoundingBoxOES' ( patch out 2-element array of highp 4-component vector of float BoundingBox) +0:121 Constant: +0:121 0 (const int) +0:121 Constant: +0:121 0.000000 +0:121 0.000000 +0:121 0.000000 +0:121 0.000000 +0:122 move second child to first child ( temp highp 4-component vector of float) +0:122 direct index ( patch temp highp 4-component vector of float BoundingBox) +0:122 'gl_BoundingBoxOES' ( patch out 2-element array of highp 4-component vector of float BoundingBox) +0:122 Constant: +0:122 1 (const int) +0:122 Constant: +0:122 1.000000 +0:122 1.000000 +0:122 1.000000 +0:122 1.000000 +0:123 move second child to first child ( temp highp 4-component vector of float) +0:123 direct index ( patch temp highp 4-component vector of float BoundingBox) +0:123 'gl_BoundingBoxOES' ( patch out 2-element array of highp 4-component vector of float BoundingBox) +0:123 Constant: +0:123 2 (const int) +0:123 Constant: +0:123 2.000000 +0:123 2.000000 +0:123 2.000000 +0:123 2.000000 +0:134 Function Definition: outputtingOutparam(i1; ( global void) +0:134 Function Parameters: +0:134 'a' ( out highp int) +0:136 Sequence +0:136 move second child to first child ( temp highp int) +0:136 'a' ( out highp int) +0:136 Constant: +0:136 2 (const int) +0:139 Function Definition: outputting( ( global void) +0:139 Function Parameters: +0:141 Sequence +0:141 move second child to first child ( temp highp int) +0:141 indirect index ( temp highp int) +0:141 'outa' ( out 4-element array of highp int) +0:141 'gl_InvocationID' ( in highp int InvocationID) +0:141 Constant: +0:141 2 (const int) +0:142 move second child to first child ( temp highp int) +0:142 direct index ( temp highp int) +0:142 'outa' ( out 4-element array of highp int) +0:142 Constant: +0:142 1 (const int) +0:142 Constant: +0:142 2 (const int) +0:143 move second child to first child ( temp highp 4-component vector of float) +0:143 gl_Position: direct index for structure ( out highp 4-component vector of float Position) +0:143 direct index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:143 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:143 Constant: +0:143 0 (const int) +0:143 Constant: +0:143 0 (const int) +0:143 Constant: +0:143 1.000000 +0:143 1.000000 +0:143 1.000000 +0:143 1.000000 +0:144 direct index ( temp highp int) +0:144 'outa' ( out 4-element array of highp int) +0:144 Constant: +0:144 1 (const int) +0:145 direct index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:145 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:145 Constant: +0:145 0 (const int) +0:146 Function Call: outputtingOutparam(i1; ( global void) +0:146 direct index ( temp highp int) +0:146 'outa' ( out 4-element array of highp int) +0:146 Constant: +0:146 0 (const int) +0:147 Function Call: outputtingOutparam(i1; ( global void) +0:147 indirect index ( temp highp int) +0:147 'outa' ( out 4-element array of highp int) +0:147 'gl_InvocationID' ( in highp int InvocationID) +0:148 move second child to first child ( temp highp float) +0:148 f: direct index for structure ( out highp float) +0:148 direct index ( patch temp block{ out highp float f}) +0:148 'patchIName' ( patch out 4-element array of block{ out highp float f}) +0:148 Constant: +0:148 1 (const int) +0:148 Constant: +0:148 0 (const int) +0:148 Constant: +0:148 3.140000 +0:149 move second child to first child ( temp highp int) +0:149 indirect index ( temp highp int) +0:149 'outa' ( out 4-element array of highp int) +0:149 'gl_InvocationID' ( in highp int InvocationID) +0:149 Constant: +0:149 2 (const int) +0:? Linker Objects +0:? 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:? 'outa' ( out 4-element array of highp int) +0:? 'patchIn' ( patch in highp 4-component vector of float) +0:? 'patchOut' ( patch out highp 4-component vector of float) +0:? 'ina' ( in highp 2-component vector of float) +0:? 'inb' ( in 32-element array of highp 2-component vector of float) +0:? 'inc' ( in 32-element array of highp 2-component vector of float) +0:? 'ind' ( in 32-element array of highp 2-component vector of float) +0:? 'implA' ( patch out implicitly-sized array of highp float) +0:? 'ivla' (layout( location=3) in 32-element array of highp 4-component vector of float) +0:? 'ivlb' (layout( location=4) in 32-element array of highp 4-component vector of float) +0:? 'ivlc' (layout( location=4) in 32-element array of highp 4-component vector of float) +0:? 'ovla' (layout( location=3) out 4-element array of highp 4-component vector of float) +0:? 'ovlb' (layout( location=4) out 4-element array of highp 4-component vector of float) +0:? 'ovlc' (layout( location=4) out 4-element array of highp 4-component vector of float) +0:? 'pinbi' ( patch out block{ out highp int a}) +0:? 'myColor2' ( centroid out 4-element array of highp 3-component vector of float) +0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float) +0:? 'perSampleColor' ( sample out 4-element array of highp 4-component vector of float) +0:? 'badlay' ( out 4-element array of highp float) +0:? 'misSized' ( out 5-element array of highp float) +0:? 'okaySize' ( out 4-element array of highp float) +0:? 'pv3' ( noContraction temp highp 3-component vector of float) +0:? 'badpatchIName' ( patch out implicitly-sized array of block{ out highp float f}) +0:? 'patchIName' ( patch out 4-element array of block{ out highp float f}) + + +Linked tessellation control stage: + + +Shader version: 320 +Requested GL_ARB_separate_shader_objects +vertices = 4 +ERROR: node is still EOpNull! +0:13 Function Definition: main( ( global void) +0:13 Function Parameters: +0:15 Sequence +0:15 Barrier ( global void) +0:17 Sequence +0:17 move second child to first child ( temp highp int) +0:17 'a' ( temp highp int) +0:17 Constant: +0:17 5392 (const int) +0:23 Sequence +0:23 move second child to first child ( temp highp 4-component vector of float) +0:23 'p' ( temp highp 4-component vector of float) +0:23 gl_Position: direct index for structure ( in highp 4-component vector of float Position) +0:23 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:23 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:23 Constant: +0:23 1 (const int) +0:23 Constant: +0:23 0 (const int) +0:24 Sequence +0:24 move second child to first child ( temp highp float) +0:24 'ps' ( temp highp float) +0:24 gl_PointSize: direct index for structure ( in highp float PointSize) +0:24 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:24 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:24 Constant: +0:24 1 (const int) +0:24 Constant: +0:24 1 (const int) +0:25 Sequence +0:25 move second child to first child ( temp highp float) +0:25 'cd' ( temp highp float) +0:25 Constant: +0:25 0.000000 +0:27 Sequence +0:27 move second child to first child ( temp highp int) +0:27 'pvi' ( temp highp int) +0:27 'gl_PatchVerticesIn' ( in highp int PatchVertices) +0:28 Sequence +0:28 move second child to first child ( temp highp int) +0:28 'pid' ( temp highp int) +0:28 'gl_PrimitiveID' ( in highp int PrimitiveID) +0:29 Sequence +0:29 move second child to first child ( temp highp int) +0:29 'iid' ( temp highp int) +0:29 'gl_InvocationID' ( in highp int InvocationID) +0:31 move second child to first child ( temp highp 4-component vector of float) +0:31 gl_Position: direct index for structure ( out highp 4-component vector of float Position) +0:31 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:31 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:31 'gl_InvocationID' ( in highp int InvocationID) +0:31 Constant: +0:31 0 (const int) +0:31 'p' ( temp highp 4-component vector of float) +0:32 move second child to first child ( temp highp float) +0:32 gl_PointSize: direct index for structure ( out highp float PointSize) +0:32 indirect index ( temp block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:32 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:32 'gl_InvocationID' ( in highp int InvocationID) +0:32 Constant: +0:32 1 (const int) +0:32 'ps' ( temp highp float) +0:33 move second child to first child ( temp highp float) +0:33 Constant: +0:33 0.000000 +0:33 'cd' ( temp highp float) +0:35 move second child to first child ( temp highp float) +0:35 direct index ( patch temp highp float TessLevelOuter) +0:35 'gl_TessLevelOuter' ( patch out 4-element array of highp float TessLevelOuter) +0:35 Constant: +0:35 3 (const int) +0:35 Constant: +0:35 3.200000 +0:36 move second child to first child ( temp highp float) +0:36 direct index ( patch temp highp float TessLevelInner) +0:36 'gl_TessLevelInner' ( patch out 2-element array of highp float TessLevelInner) +0:36 Constant: +0:36 1 (const int) +0:36 Constant: +0:36 1.300000 +0:38 Test condition and select ( temp void) +0:38 Condition +0:38 Compare Greater Than ( temp bool) +0:38 'a' ( temp highp int) +0:38 Constant: +0:38 10 (const int) +0:38 true case +0:39 Barrier ( global void) +0:38 false case +0:41 Barrier ( global void) +0:43 Barrier ( global void) +0:47 Loop with condition not tested first +0:47 Loop Condition +0:47 Compare Greater Than ( temp bool) +0:47 'a' ( temp highp int) +0:47 Constant: +0:47 10 (const int) +0:47 Loop Body +0:46 Sequence +0:46 Barrier ( global void) +0:49 switch +0:49 condition +0:49 'a' ( temp highp int) +0:49 body +0:49 Sequence +0:50 default: +0:? Sequence +0:51 Barrier ( global void) +0:52 Branch: Break +0:54 Test condition and select ( temp highp int) +0:54 Condition +0:54 Compare Less Than ( temp bool) +0:54 'a' ( temp highp int) +0:54 Constant: +0:54 12 (const int) +0:54 true case +0:54 'a' ( temp highp int) +0:54 false case +0:54 Comma ( temp highp int) +0:54 Barrier ( global void) +0:54 'a' ( temp highp int) +0:56 Sequence +0:56 Barrier ( global void) +0:59 Branch: Return +0:61 Barrier ( global void) +0:? Linker Objects +0:? 'gl_out' ( out 4-element array of block{ out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) +0:? 'outa' ( out 4-element array of highp int) +0:? 'patchIn' ( patch in highp 4-component vector of float) +0:? 'patchOut' ( patch out highp 4-component vector of float) +0:? 'ina' ( in highp 2-component vector of float) +0:? 'inb' ( in 32-element array of highp 2-component vector of float) +0:? 'inc' ( in 32-element array of highp 2-component vector of float) +0:? 'ind' ( in 32-element array of highp 2-component vector of float) +0:? 'implA' ( patch out 1-element array of highp float) +0:? 'ivla' (layout( location=3) in 32-element array of highp 4-component vector of float) +0:? 'ivlb' (layout( location=4) in 32-element array of highp 4-component vector of float) +0:? 'ivlc' (layout( location=4) in 32-element array of highp 4-component vector of float) +0:? 'ovla' (layout( location=3) out 4-element array of highp 4-component vector of float) +0:? 'ovlb' (layout( location=4) out 4-element array of highp 4-component vector of float) +0:? 'ovlc' (layout( location=4) out 4-element array of highp 4-component vector of float) +0:? 'pinbi' ( patch out block{ out highp int a}) +0:? 'myColor2' ( centroid out 4-element array of highp 3-component vector of float) +0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float) +0:? 'perSampleColor' ( sample out 4-element array of highp 4-component vector of float) +0:? 'badlay' ( out 4-element array of highp float) +0:? 'misSized' ( out 5-element array of highp float) +0:? 'okaySize' ( out 4-element array of highp float) +0:? 'pv3' ( noContraction temp highp 3-component vector of float) +0:? 'badpatchIName' ( patch out 1-element array of block{ out highp float f}) +0:? 'patchIName' ( patch out 4-element array of block{ out highp float f}) + diff --git a/Test/baseResults/320.tese.out b/Test/baseResults/320.tese.out new file mode 100755 index 000000000..ad8fe72e3 --- /dev/null +++ b/Test/baseResults/320.tese.out @@ -0,0 +1,276 @@ +320.tese +ERROR: 0:3: 'vertices' : there is no such layout identifier for this stage taking an assigned value +ERROR: 0:5: 'triangles' : cannot change previously set input primitive +ERROR: 0:6: 'isolines' : cannot change previously set input primitive +ERROR: 0:8: 'ccw' : cannot change previously set vertex order +ERROR: 0:12: 'equal_spacing' : cannot change previously set vertex spacing +ERROR: 0:13: 'fractional_even_spacing' : cannot change previously set vertex spacing +ERROR: 0:18: 'patch' : can only use on input in tessellation-evaluation shader +ERROR: 0:22: 'barrier' : no matching overloaded function found +ERROR: 0:33: 'gl_PointSize' : required extension not requested: Possible extensions include: +GL_EXT_tessellation_point_size +GL_OES_tessellation_point_size +ERROR: 0:34: 'gl_ClipDistance' : no such field in structure +ERROR: 0:34: 'expression' : left of '[' is not of type array, matrix, or vector +ERROR: 0:43: 'gl_PointSize' : required extension not requested: Possible extensions include: +GL_EXT_tessellation_point_size +GL_OES_tessellation_point_size +ERROR: 0:44: 'gl_ClipDistance' : undeclared identifier +ERROR: 0:44: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector +ERROR: 0:44: 'assign' : l-value required (can't modify a const) +ERROR: 0:47: 'patch' : cannot use interpolation qualifiers with patch +ERROR: 0:48: 'patch' : cannot use interpolation qualifiers with patch +ERROR: 0:49: 'noperspective' : Reserved word. +ERROR: 0:49: 'noperspective' : not supported with this profile: es +ERROR: 0:49: 'patch' : cannot use interpolation qualifiers with patch +ERROR: 0:50: '' : can only have one auxiliary qualifier (centroid, patch, and sample) +ERROR: 0:54: 'gl_PerVertex' : block already declared with size, can't redeclare as implicitly-sized +ERROR: 0:59: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use +ERROR: 0:64: 'quads' : cannot apply to 'out' +ERROR: 0:64: 'cw' : can only apply to 'in' +ERROR: 0:65: 'triangles' : cannot apply to 'out' +ERROR: 0:66: 'isolines' : cannot apply to 'out' +ERROR: 0:67: 'cw' : can only apply to 'in' +ERROR: 0:68: 'fractional_odd_spacing' : can only apply to 'in' +ERROR: 0:69: 'equal_spacing' : can only apply to 'in' +ERROR: 0:70: 'fractional_even_spacing' : can only apply to 'in' +ERROR: 0:71: 'point_mode' : can only apply to 'in' +ERROR: 0:73: 'in' : type must be an array: ina +ERROR: 0:75: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized +ERROR: 0:78: 'in' : type must be an array: bla +ERROR: 0:86: '[]' : tessellation input array size must be gl_MaxPatchVertices or implicitly sized +ERROR: 0:96: 'location' : overlapping use of location 24 +ERROR: 0:99: 'location' : overlapping use of location 24 +ERROR: 0:101: 'gl_TessLevelOuter' : identifiers starting with "gl_" are reserved +ERROR: 0:113: 'gl_BoundingBoxOES' : undeclared identifier +ERROR: 40 compilation errors. No code generated. + + +Shader version: 320 +Requested GL_ARB_separate_shader_objects +input primitive = quads +vertex spacing = fractional_odd_spacing +triangle order = cw +using point mode +ERROR: node is still EOpNull! +0:20 Function Definition: main( ( global void) +0:20 Function Parameters: +0:22 Sequence +0:22 Constant: +0:22 0.000000 +0:24 Sequence +0:24 move second child to first child ( temp highp int) +0:24 'a' ( temp highp int) +0:24 Constant: +0:24 1512 (const int) +0:32 Sequence +0:32 move second child to first child ( temp highp 4-component vector of float) +0:32 'p' ( temp highp 4-component vector of float) +0:32 gl_Position: direct index for structure ( in highp 4-component vector of float Position) +0:32 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV}) +0:32 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV}) +0:32 Constant: +0:32 1 (const int) +0:32 Constant: +0:32 0 (const int) +0:33 Sequence +0:33 move second child to first child ( temp highp float) +0:33 'ps' ( temp highp float) +0:33 gl_PointSize: direct index for structure ( in highp float PointSize) +0:33 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV}) +0:33 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in implicitly-sized array of highp 4-component vector of float gl_PositionPerViewNV}) +0:33 Constant: +0:33 1 (const int) +0:33 Constant: +0:33 1 (const int) +0:34 Sequence +0:34 move second child to first child ( temp highp float) +0:34 'cd' ( temp highp float) +0:34 Constant: +0:34 0.000000 +0:36 Sequence +0:36 move second child to first child ( temp highp int) +0:36 'pvi' ( temp highp int) +0:36 'gl_PatchVerticesIn' ( in highp int PatchVertices) +0:37 Sequence +0:37 move second child to first child ( temp highp int) +0:37 'pid' ( temp highp int) +0:37 'gl_PrimitiveID' ( in highp int PrimitiveID) +0:38 Sequence +0:38 move second child to first child ( temp highp 3-component vector of float) +0:38 'tc' ( temp highp 3-component vector of float) +0:38 'gl_TessCoord' ( in highp 3-component vector of float TessCoord) +0:39 Sequence +0:39 move second child to first child ( temp highp float) +0:39 'tlo' ( temp highp float) +0:39 direct index ( patch temp highp float TessLevelOuter) +0:39 'gl_TessLevelOuter' ( patch in 4-element array of highp float TessLevelOuter) +0:39 Constant: +0:39 3 (const int) +0:40 Sequence +0:40 move second child to first child ( temp highp float) +0:40 'tli' ( temp highp float) +0:40 direct index ( patch temp highp float TessLevelInner) +0:40 'gl_TessLevelInner' ( patch in 2-element array of highp float TessLevelInner) +0:40 Constant: +0:40 1 (const int) +0:42 move second child to first child ( temp highp 4-component vector of float) +0:42 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) +0:42 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize}) +0:42 Constant: +0:42 0 (const uint) +0:42 'p' ( temp highp 4-component vector of float) +0:43 move second child to first child ( temp highp float) +0:43 gl_PointSize: direct index for structure ( gl_PointSize highp float PointSize) +0:43 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize}) +0:43 Constant: +0:43 1 (const uint) +0:43 'ps' ( temp highp float) +0:44 move second child to first child ( temp highp float) +0:44 Constant: +0:44 0.000000 +0:44 'cd' ( temp highp float) +0:111 Function Definition: bbbad( ( global void) +0:111 Function Parameters: +0:113 Sequence +0:113 'gl_BoundingBoxOES' ( temp float) +0:? Linker Objects +0:? 'patchIn' ( patch in highp 4-component vector of float) +0:? 'patchOut' ( patch out highp 4-component vector of float) +0:? 'badp1' ( smooth patch in highp 4-component vector of float) +0:? 'badp2' ( flat patch in highp 4-component vector of float) +0:? 'badp3' ( noperspective patch in highp 4-component vector of float) +0:? 'badp4' ( patch sample in highp 3-component vector of float) +0:? 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position}) +0:? 'ina' ( in highp 2-component vector of float) +0:? 'inb' ( in 32-element array of highp 2-component vector of float) +0:? 'inc' ( in 32-element array of highp 2-component vector of float) +0:? 'ind' ( in 32-element array of highp 2-component vector of float) +0:? 'bla' ( in block{ in highp int f}) +0:? 'blb' ( in 32-element array of block{ in highp int f}) +0:? 'blc' ( in 32-element array of block{ in highp int f}) +0:? 'bld' ( in 32-element array of block{ in highp int f}) +0:? 'ivla' (layout( location=23) in 32-element array of highp 4-component vector of float) +0:? 'ivlb' (layout( location=24) in 32-element array of highp 4-component vector of float) +0:? 'ivlc' (layout( location=24) in 32-element array of highp 4-component vector of float) +0:? 'ovla' (layout( location=23) out 2-element array of highp 4-component vector of float) +0:? 'ovlb' (layout( location=24) out 2-element array of highp 4-component vector of float) +0:? 'pinbi' ( patch in block{ in highp int a}) +0:? 'myColor2' ( centroid out highp 3-component vector of float) +0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float) +0:? 'perSampleColor' ( sample out highp 4-component vector of float) + + +Linked tessellation evaluation stage: + + +Shader version: 320 +Requested GL_ARB_separate_shader_objects +input primitive = quads +vertex spacing = fractional_odd_spacing +triangle order = cw +using point mode +ERROR: node is still EOpNull! +0:20 Function Definition: main( ( global void) +0:20 Function Parameters: +0:22 Sequence +0:22 Constant: +0:22 0.000000 +0:24 Sequence +0:24 move second child to first child ( temp highp int) +0:24 'a' ( temp highp int) +0:24 Constant: +0:24 1512 (const int) +0:32 Sequence +0:32 move second child to first child ( temp highp 4-component vector of float) +0:32 'p' ( temp highp 4-component vector of float) +0:32 gl_Position: direct index for structure ( in highp 4-component vector of float Position) +0:32 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:32 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:32 Constant: +0:32 1 (const int) +0:32 Constant: +0:32 0 (const int) +0:33 Sequence +0:33 move second child to first child ( temp highp float) +0:33 'ps' ( temp highp float) +0:33 gl_PointSize: direct index for structure ( in highp float PointSize) +0:33 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:33 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:33 Constant: +0:33 1 (const int) +0:33 Constant: +0:33 1 (const int) +0:34 Sequence +0:34 move second child to first child ( temp highp float) +0:34 'cd' ( temp highp float) +0:34 Constant: +0:34 0.000000 +0:36 Sequence +0:36 move second child to first child ( temp highp int) +0:36 'pvi' ( temp highp int) +0:36 'gl_PatchVerticesIn' ( in highp int PatchVertices) +0:37 Sequence +0:37 move second child to first child ( temp highp int) +0:37 'pid' ( temp highp int) +0:37 'gl_PrimitiveID' ( in highp int PrimitiveID) +0:38 Sequence +0:38 move second child to first child ( temp highp 3-component vector of float) +0:38 'tc' ( temp highp 3-component vector of float) +0:38 'gl_TessCoord' ( in highp 3-component vector of float TessCoord) +0:39 Sequence +0:39 move second child to first child ( temp highp float) +0:39 'tlo' ( temp highp float) +0:39 direct index ( patch temp highp float TessLevelOuter) +0:39 'gl_TessLevelOuter' ( patch in 4-element array of highp float TessLevelOuter) +0:39 Constant: +0:39 3 (const int) +0:40 Sequence +0:40 move second child to first child ( temp highp float) +0:40 'tli' ( temp highp float) +0:40 direct index ( patch temp highp float TessLevelInner) +0:40 'gl_TessLevelInner' ( patch in 2-element array of highp float TessLevelInner) +0:40 Constant: +0:40 1 (const int) +0:42 move second child to first child ( temp highp 4-component vector of float) +0:42 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) +0:42 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize}) +0:42 Constant: +0:42 0 (const uint) +0:42 'p' ( temp highp 4-component vector of float) +0:43 move second child to first child ( temp highp float) +0:43 gl_PointSize: direct index for structure ( gl_PointSize highp float PointSize) +0:43 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, gl_PointSize highp float PointSize gl_PointSize}) +0:43 Constant: +0:43 1 (const uint) +0:43 'ps' ( temp highp float) +0:44 move second child to first child ( temp highp float) +0:44 Constant: +0:44 0.000000 +0:44 'cd' ( temp highp float) +0:? Linker Objects +0:? 'patchIn' ( patch in highp 4-component vector of float) +0:? 'patchOut' ( patch out highp 4-component vector of float) +0:? 'badp1' ( smooth patch in highp 4-component vector of float) +0:? 'badp2' ( flat patch in highp 4-component vector of float) +0:? 'badp3' ( noperspective patch in highp 4-component vector of float) +0:? 'badp4' ( patch sample in highp 3-component vector of float) +0:? 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position}) +0:? 'ina' ( in highp 2-component vector of float) +0:? 'inb' ( in 32-element array of highp 2-component vector of float) +0:? 'inc' ( in 32-element array of highp 2-component vector of float) +0:? 'ind' ( in 32-element array of highp 2-component vector of float) +0:? 'bla' ( in block{ in highp int f}) +0:? 'blb' ( in 32-element array of block{ in highp int f}) +0:? 'blc' ( in 32-element array of block{ in highp int f}) +0:? 'bld' ( in 32-element array of block{ in highp int f}) +0:? 'ivla' (layout( location=23) in 32-element array of highp 4-component vector of float) +0:? 'ivlb' (layout( location=24) in 32-element array of highp 4-component vector of float) +0:? 'ivlc' (layout( location=24) in 32-element array of highp 4-component vector of float) +0:? 'ovla' (layout( location=23) out 2-element array of highp 4-component vector of float) +0:? 'ovlb' (layout( location=24) out 2-element array of highp 4-component vector of float) +0:? 'pinbi' ( patch in block{ in highp int a}) +0:? 'myColor2' ( centroid out highp 3-component vector of float) +0:? 'centr' ( centroid in 32-element array of highp 3-component vector of float) +0:? 'perSampleColor' ( sample out highp 4-component vector of float) + diff --git a/Test/baseResults/320.vert.out b/Test/baseResults/320.vert.out new file mode 100755 index 000000000..2838ab89d --- /dev/null +++ b/Test/baseResults/320.vert.out @@ -0,0 +1,797 @@ +320.vert +ERROR: 0:6: 's' : member of block cannot be or contain a sampler, image, or atomic_uint type +ERROR: 0:14: 'location' : overlapping use of location 12 +ERROR: 0:16: 'input block' : not supported in this stage: vertex +ERROR: 0:18: 'gl_PerVertex' : block redeclaration has extra members +ERROR: 0:28: 'gl_PointSize' : member of nameless block was not redeclared +ERROR: 0:28: 'assign' : cannot convert from ' const float' to ' gl_PointSize highp void PointSize' +ERROR: 0:31: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use +ERROR: 0:36: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block +ERROR: 0:40: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block +ERROR: 0:44: 'centroid' : cannot use centroid qualifier on an interface block +ERROR: 0:48: 'invariant' : cannot use invariant qualifier on an interface block +ERROR: 0:68: 'variable indexing buffer block array' : not supported with this profile: es +ERROR: 0:73: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument +ERROR: 0:76: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:77: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:78: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:79: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:80: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:81: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:116: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:117: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:118: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:120: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:121: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:122: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:123: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:191: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:192: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:193: 'sampler/image' : type requires declaration of default precision qualifier +ERROR: 0:211: 'textureSize' : no matching overloaded function found +ERROR: 0:211: '=' : cannot convert from ' const float' to ' temp highp 3-component vector of int' +ERROR: 0:252: 'interpolateAtCentroid' : no matching overloaded function found +ERROR: 0:253: 'interpolateAtSample' : no matching overloaded function found +ERROR: 0:254: 'interpolateAtOffset' : no matching overloaded function found +ERROR: 34 compilation errors. No code generated. + + +Shader version: 320 +ERROR: node is still EOpNull! +0:23 Function Definition: main( ( global void) +0:23 Function Parameters: +0:25 Sequence +0:25 Sequence +0:25 move second child to first child ( temp highp int) +0:25 'sum' ( temp highp int) +0:25 add ( temp highp int) +0:25 'gl_VertexID' ( gl_VertexId highp int VertexId) +0:26 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) +0:27 move second child to first child ( temp highp 4-component vector of float) +0:27 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) +0:27 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, }) +0:27 Constant: +0:27 0 (const uint) +0:27 Constant: +0:27 1.000000 +0:27 1.000000 +0:27 1.000000 +0:27 1.000000 +0:28 gl_PointSize: direct index for structure ( gl_PointSize highp void PointSize) +0:28 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, }) +0:28 Constant: +0:28 1 (const uint) +0:62 Function Definition: pfoo( ( global void) +0:62 Function Parameters: +0:? Sequence +0:65 move second child to first child ( temp highp 2-component vector of float) +0:65 'h' ( noContraction temp highp 2-component vector of float) +0:65 fma ( global highp 2-component vector of float) +0:65 'inf' ( in highp 2-component vector of float) +0:65 'ing' ( in highp 2-component vector of float) +0:65 'h' ( noContraction temp highp 2-component vector of float) +0:66 indirect index ( temp lowp sampler2D) +0:66 'sArray' ( uniform 4-element array of lowp sampler2D) +0:66 add ( temp highp int) +0:66 'sIndex' ( uniform highp int) +0:66 Constant: +0:66 1 (const int) +0:67 indirect index (layout( column_major shared) temp block{layout( column_major shared) uniform highp int i}) +0:67 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i}) +0:67 add ( temp highp int) +0:67 'sIndex' ( uniform highp int) +0:67 Constant: +0:67 1 (const int) +0:68 indirect index (layout( column_major shared) temp block{layout( column_major shared) buffer highp int i}) +0:68 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i}) +0:68 subtract ( temp highp int) +0:68 'sIndex' ( uniform highp int) +0:68 Constant: +0:68 2 (const int) +0:69 direct index ( writeonly temp highp image2D) +0:69 'iArray' ( writeonly uniform 5-element array of highp image2D) +0:69 Constant: +0:69 2 (const int) +0:70 indirect index ( writeonly temp highp image2D) +0:70 'iArray' ( writeonly uniform 5-element array of highp image2D) +0:70 subtract ( temp highp int) +0:70 'sIndex' ( uniform highp int) +0:70 Constant: +0:70 2 (const int) +0:71 textureGatherOffset ( global lowp 4-component vector of float) +0:71 direct index ( temp lowp sampler2D) +0:71 'sArray' ( uniform 4-element array of lowp sampler2D) +0:71 Constant: +0:71 0 (const int) +0:71 Constant: +0:71 0.100000 +0:71 0.100000 +0:71 Convert float to int ( temp lowp 2-component vector of int) +0:71 'inf' ( in highp 2-component vector of float) +0:72 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) +0:72 direct index ( temp lowp sampler2D) +0:72 'sArray' ( uniform 4-element array of lowp sampler2D) +0:72 Constant: +0:72 0 (const int) +0:72 Constant: +0:72 0.100000 +0:72 0.100000 +0:72 Constant: +0:72 0 (const int) +0:72 0 (const int) +0:72 0 (const int) +0:72 0 (const int) +0:72 0 (const int) +0:72 0 (const int) +0:72 0 (const int) +0:72 0 (const int) +0:73 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) +0:73 direct index ( temp lowp sampler2D) +0:73 'sArray' ( uniform 4-element array of lowp sampler2D) +0:73 Constant: +0:73 0 (const int) +0:73 Constant: +0:73 0.100000 +0:73 0.100000 +0:73 'offsets' ( uniform 4-element array of highp 2-component vector of int) +0:101 Function Definition: bufferT( ( global void) +0:101 Function Parameters: +0:103 Sequence +0:103 Sequence +0:103 move second child to first child ( temp highp int) +0:103 's1' ( temp highp int) +0:103 textureSize ( global highp int) +0:103 'bufSamp1' ( uniform highp samplerBuffer) +0:104 Sequence +0:104 move second child to first child ( temp highp int) +0:104 's2' ( temp highp int) +0:104 textureSize ( global highp int) +0:104 'bufSamp2' ( uniform highp isamplerBuffer) +0:105 Sequence +0:105 move second child to first child ( temp highp int) +0:105 's3' ( temp highp int) +0:105 textureSize ( global highp int) +0:105 'bufSamp3' ( uniform highp usamplerBuffer) +0:107 Sequence +0:107 move second child to first child ( temp highp int) +0:107 's4' ( temp highp int) +0:107 imageQuerySize ( global highp int) +0:107 'bufSamp4' ( writeonly uniform highp imageBuffer) +0:108 Sequence +0:108 move second child to first child ( temp highp int) +0:108 's5' ( temp highp int) +0:108 imageQuerySize ( global highp int) +0:108 'bufSamp5' ( writeonly uniform highp iimageBuffer) +0:109 Sequence +0:109 move second child to first child ( temp highp int) +0:109 's6' ( temp highp int) +0:109 imageQuerySize ( global highp int) +0:109 'bufSamp6' ( writeonly uniform highp uimageBuffer) +0:111 Sequence +0:111 move second child to first child ( temp highp 4-component vector of float) +0:111 'f1' ( temp highp 4-component vector of float) +0:111 textureFetch ( global highp 4-component vector of float) +0:111 'bufSamp1' ( uniform highp samplerBuffer) +0:111 's1' ( temp highp int) +0:112 Sequence +0:112 move second child to first child ( temp highp 4-component vector of int) +0:112 'f2' ( temp highp 4-component vector of int) +0:112 textureFetch ( global highp 4-component vector of int) +0:112 'bufSamp2' ( uniform highp isamplerBuffer) +0:112 's2' ( temp highp int) +0:113 Sequence +0:113 move second child to first child ( temp highp 4-component vector of uint) +0:113 'f3' ( temp highp 4-component vector of uint) +0:113 textureFetch ( global highp 4-component vector of uint) +0:113 'bufSamp3' ( uniform highp usamplerBuffer) +0:113 's3' ( temp highp int) +0:149 Function Definition: CAT( ( global void) +0:149 Function Parameters: +0:151 Sequence +0:151 Sequence +0:151 move second child to first child ( temp highp 3-component vector of int) +0:151 's4' ( temp highp 3-component vector of int) +0:151 textureSize ( global highp 3-component vector of int) +0:151 'CA4' ( uniform highp samplerCubeArray) +0:151 Constant: +0:151 1 (const int) +0:152 Sequence +0:152 move second child to first child ( temp highp 3-component vector of int) +0:152 's5' ( temp highp 3-component vector of int) +0:152 textureSize ( global highp 3-component vector of int) +0:152 'CA5' ( uniform highp samplerCubeArrayShadow) +0:152 Constant: +0:152 1 (const int) +0:153 Sequence +0:153 move second child to first child ( temp highp 3-component vector of int) +0:153 's6' ( temp highp 3-component vector of int) +0:153 textureSize ( global highp 3-component vector of int) +0:153 'CA6' ( uniform highp isamplerCubeArray) +0:153 Constant: +0:153 1 (const int) +0:154 Sequence +0:154 move second child to first child ( temp highp 3-component vector of int) +0:154 's7' ( temp highp 3-component vector of int) +0:154 textureSize ( global highp 3-component vector of int) +0:154 'CA7' ( uniform highp usamplerCubeArray) +0:154 Constant: +0:154 1 (const int) +0:156 Sequence +0:156 move second child to first child ( temp highp 4-component vector of float) +0:156 't4' ( temp highp 4-component vector of float) +0:156 texture ( global highp 4-component vector of float) +0:156 'CA4' ( uniform highp samplerCubeArray) +0:156 Constant: +0:156 0.500000 +0:156 0.500000 +0:156 0.500000 +0:156 0.500000 +0:157 Sequence +0:157 move second child to first child ( temp highp float) +0:157 't5' ( temp highp float) +0:157 texture ( global highp float) +0:157 'CA5' ( uniform highp samplerCubeArrayShadow) +0:157 Constant: +0:157 0.500000 +0:157 0.500000 +0:157 0.500000 +0:157 0.500000 +0:157 Constant: +0:157 3.000000 +0:158 Sequence +0:158 move second child to first child ( temp highp 4-component vector of int) +0:158 't6' ( temp highp 4-component vector of int) +0:158 texture ( global highp 4-component vector of int) +0:158 'CA6' ( uniform highp isamplerCubeArray) +0:158 Constant: +0:158 0.500000 +0:158 0.500000 +0:158 0.500000 +0:158 0.500000 +0:159 Sequence +0:159 move second child to first child ( temp highp 4-component vector of uint) +0:159 't7' ( temp highp 4-component vector of uint) +0:159 texture ( global highp 4-component vector of uint) +0:159 'CA7' ( uniform highp usamplerCubeArray) +0:159 Constant: +0:159 0.500000 +0:159 0.500000 +0:159 0.500000 +0:159 0.500000 +0:161 Sequence +0:161 move second child to first child ( temp highp 4-component vector of float) +0:161 'L4' ( temp highp 4-component vector of float) +0:161 textureLod ( global highp 4-component vector of float) +0:161 'CA4' ( uniform highp samplerCubeArray) +0:161 Constant: +0:161 0.500000 +0:161 0.500000 +0:161 0.500000 +0:161 0.500000 +0:161 Constant: +0:161 0.240000 +0:162 Sequence +0:162 move second child to first child ( temp highp 4-component vector of int) +0:162 'L6' ( temp highp 4-component vector of int) +0:162 textureLod ( global highp 4-component vector of int) +0:162 'CA6' ( uniform highp isamplerCubeArray) +0:162 Constant: +0:162 0.500000 +0:162 0.500000 +0:162 0.500000 +0:162 0.500000 +0:162 Constant: +0:162 0.260000 +0:163 Sequence +0:163 move second child to first child ( temp highp 4-component vector of uint) +0:163 'L7' ( temp highp 4-component vector of uint) +0:163 textureLod ( global highp 4-component vector of uint) +0:163 'CA7' ( uniform highp usamplerCubeArray) +0:163 Constant: +0:163 0.500000 +0:163 0.500000 +0:163 0.500000 +0:163 0.500000 +0:163 Constant: +0:163 0.270000 +0:165 Sequence +0:165 move second child to first child ( temp highp 4-component vector of float) +0:165 'g4' ( temp highp 4-component vector of float) +0:165 textureGrad ( global highp 4-component vector of float) +0:165 'CA4' ( uniform highp samplerCubeArray) +0:165 Constant: +0:165 0.500000 +0:165 0.500000 +0:165 0.500000 +0:165 0.500000 +0:165 Constant: +0:165 0.100000 +0:165 0.100000 +0:165 0.100000 +0:165 Constant: +0:165 0.200000 +0:165 0.200000 +0:165 0.200000 +0:166 Sequence +0:166 move second child to first child ( temp highp 4-component vector of int) +0:166 'g6' ( temp highp 4-component vector of int) +0:166 textureGrad ( global highp 4-component vector of int) +0:166 'CA6' ( uniform highp isamplerCubeArray) +0:166 Constant: +0:166 0.500000 +0:166 0.500000 +0:166 0.500000 +0:166 0.500000 +0:166 Constant: +0:166 0.100000 +0:166 0.100000 +0:166 0.100000 +0:166 Constant: +0:166 0.200000 +0:166 0.200000 +0:166 0.200000 +0:167 Sequence +0:167 move second child to first child ( temp highp 4-component vector of uint) +0:167 'g7' ( temp highp 4-component vector of uint) +0:167 textureGrad ( global highp 4-component vector of uint) +0:167 'CA7' ( uniform highp usamplerCubeArray) +0:167 Constant: +0:167 0.500000 +0:167 0.500000 +0:167 0.500000 +0:167 0.500000 +0:167 Constant: +0:167 0.100000 +0:167 0.100000 +0:167 0.100000 +0:167 Constant: +0:167 0.200000 +0:167 0.200000 +0:167 0.200000 +0:169 Sequence +0:169 move second child to first child ( temp highp 4-component vector of float) +0:169 'gath4' ( temp highp 4-component vector of float) +0:169 textureGather ( global highp 4-component vector of float) +0:169 'CA4' ( uniform highp samplerCubeArray) +0:169 Constant: +0:169 0.500000 +0:169 0.500000 +0:169 0.500000 +0:169 0.500000 +0:170 Sequence +0:170 move second child to first child ( temp highp 4-component vector of float) +0:170 'gathC4' ( temp highp 4-component vector of float) +0:170 textureGather ( global highp 4-component vector of float) +0:170 'CA4' ( uniform highp samplerCubeArray) +0:170 Constant: +0:170 0.500000 +0:170 0.500000 +0:170 0.500000 +0:170 0.500000 +0:170 Constant: +0:170 2 (const int) +0:171 Sequence +0:171 move second child to first child ( temp highp 4-component vector of int) +0:171 'gath6' ( temp highp 4-component vector of int) +0:171 textureGather ( global highp 4-component vector of int) +0:171 'CA6' ( uniform highp isamplerCubeArray) +0:171 Constant: +0:171 0.500000 +0:171 0.500000 +0:171 0.500000 +0:171 0.500000 +0:172 Sequence +0:172 move second child to first child ( temp highp 4-component vector of int) +0:172 'gathC6' ( temp highp 4-component vector of int) +0:172 textureGather ( global highp 4-component vector of int) +0:172 'CA6' ( uniform highp isamplerCubeArray) +0:172 Constant: +0:172 0.500000 +0:172 0.500000 +0:172 0.500000 +0:172 0.500000 +0:172 Constant: +0:172 1 (const int) +0:173 Sequence +0:173 move second child to first child ( temp highp 4-component vector of uint) +0:173 'gath7' ( temp highp 4-component vector of uint) +0:173 textureGather ( global highp 4-component vector of uint) +0:173 'CA7' ( uniform highp usamplerCubeArray) +0:173 Constant: +0:173 0.500000 +0:173 0.500000 +0:173 0.500000 +0:173 0.500000 +0:174 Sequence +0:174 move second child to first child ( temp highp 4-component vector of uint) +0:174 'gathC7' ( temp highp 4-component vector of uint) +0:174 textureGather ( global highp 4-component vector of uint) +0:174 'CA7' ( uniform highp usamplerCubeArray) +0:174 Constant: +0:174 0.500000 +0:174 0.500000 +0:174 0.500000 +0:174 0.500000 +0:174 Constant: +0:174 0 (const int) +0:176 Sequence +0:176 move second child to first child ( temp highp 4-component vector of float) +0:176 'gath5' ( temp highp 4-component vector of float) +0:176 textureGather ( global highp 4-component vector of float) +0:176 'CA5' ( uniform highp samplerCubeArrayShadow) +0:176 Constant: +0:176 0.500000 +0:176 0.500000 +0:176 0.500000 +0:176 0.500000 +0:176 Constant: +0:176 2.500000 +0:178 Sequence +0:178 move second child to first child ( temp highp 3-component vector of int) +0:178 's1' ( temp highp 3-component vector of int) +0:178 imageQuerySize ( global highp 3-component vector of int) +0:178 'CA1' ( writeonly uniform highp imageCubeArray) +0:179 Sequence +0:179 move second child to first child ( temp highp 3-component vector of int) +0:179 's2' ( temp highp 3-component vector of int) +0:179 imageQuerySize ( global highp 3-component vector of int) +0:179 'CA2' ( writeonly uniform highp iimageCubeArray) +0:180 Sequence +0:180 move second child to first child ( temp highp 3-component vector of int) +0:180 's3' ( temp highp 3-component vector of int) +0:180 imageQuerySize ( global highp 3-component vector of int) +0:180 'CA3' ( writeonly uniform highp uimageCubeArray) +0:182 imageStore ( global highp void) +0:182 'CA1' ( writeonly uniform highp imageCubeArray) +0:182 's3' ( temp highp 3-component vector of int) +0:182 Constant: +0:182 1.000000 +0:182 1.000000 +0:182 1.000000 +0:182 1.000000 +0:183 imageStore ( global highp void) +0:183 'CA2' ( writeonly uniform highp iimageCubeArray) +0:183 's3' ( temp highp 3-component vector of int) +0:183 Constant: +0:183 1 (const int) +0:183 1 (const int) +0:183 1 (const int) +0:183 1 (const int) +0:184 imageStore ( global highp void) +0:184 'CA3' ( writeonly uniform highp uimageCubeArray) +0:184 's3' ( temp highp 3-component vector of int) +0:184 Constant: +0:184 1 (const uint) +0:184 1 (const uint) +0:184 1 (const uint) +0:184 1 (const uint) +0:186 Sequence +0:186 move second child to first child ( temp highp 4-component vector of float) +0:186 'cl1' ( temp highp 4-component vector of float) +0:186 imageLoad ( global highp 4-component vector of float) +0:186 'rCA1' (layout( rgba16f) readonly uniform highp imageCubeArray) +0:186 's3' ( temp highp 3-component vector of int) +0:187 Sequence +0:187 move second child to first child ( temp highp 4-component vector of int) +0:187 'cl2' ( temp highp 4-component vector of int) +0:187 imageLoad ( global highp 4-component vector of int) +0:187 'rCA2' (layout( rgba32i) readonly uniform highp iimageCubeArray) +0:187 's3' ( temp highp 3-component vector of int) +0:188 Sequence +0:188 move second child to first child ( temp highp 4-component vector of uint) +0:188 'cl3' ( temp highp 4-component vector of uint) +0:188 imageLoad ( global highp 4-component vector of uint) +0:188 'rCA3' (layout( r32ui) readonly uniform highp uimageCubeArray) +0:188 's3' ( temp highp 3-component vector of int) +0:203 Function Definition: MSA( ( global void) +0:203 Function Parameters: +0:205 Sequence +0:205 Sequence +0:205 move second child to first child ( temp highp 4-component vector of float) +0:205 'tf' ( temp highp 4-component vector of float) +0:205 textureFetch ( global highp 4-component vector of float) +0:205 'samp2DMSA' ( uniform highp sampler2DMSArray) +0:205 Constant: +0:205 5 (const int) +0:205 5 (const int) +0:205 5 (const int) +0:205 Constant: +0:205 2 (const int) +0:206 Sequence +0:206 move second child to first child ( temp highp 4-component vector of int) +0:206 'tfi' ( temp highp 4-component vector of int) +0:206 textureFetch ( global highp 4-component vector of int) +0:206 'samp2DMSAi' ( uniform highp isampler2DMSArray) +0:206 Constant: +0:206 5 (const int) +0:206 5 (const int) +0:206 5 (const int) +0:206 Constant: +0:206 2 (const int) +0:207 Sequence +0:207 move second child to first child ( temp highp 4-component vector of uint) +0:207 'tfu' ( temp highp 4-component vector of uint) +0:207 textureFetch ( global highp 4-component vector of uint) +0:207 'samp2DMSAu' ( uniform highp usampler2DMSArray) +0:207 Constant: +0:207 5 (const int) +0:207 5 (const int) +0:207 5 (const int) +0:207 Constant: +0:207 2 (const int) +0:209 Sequence +0:209 move second child to first child ( temp highp 3-component vector of int) +0:209 'tfs' ( temp highp 3-component vector of int) +0:209 textureSize ( global highp 3-component vector of int) +0:209 'samp2DMSA' ( uniform highp sampler2DMSArray) +0:210 Sequence +0:210 move second child to first child ( temp highp 3-component vector of int) +0:210 'tfsi' ( temp highp 3-component vector of int) +0:210 textureSize ( global highp 3-component vector of int) +0:210 'samp2DMSAi' ( uniform highp isampler2DMSArray) +0:212 Sequence +0:212 move second child to first child ( temp highp 3-component vector of int) +0:212 'tfsu' ( temp highp 3-component vector of int) +0:212 textureSize ( global highp 3-component vector of int) +0:212 'samp2DMSAu' ( uniform highp usampler2DMSArray) +0:220 Function Definition: goodImageAtom( ( global void) +0:220 Function Parameters: +0:? Sequence +0:226 imageAtomicAdd ( global highp int) +0:226 'im2Di' (layout( r32i) uniform highp iimage2D) +0:226 'P' ( uniform highp 2-component vector of int) +0:226 'dati' ( temp highp int) +0:227 imageAtomicAdd ( global highp uint) +0:227 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:227 'P' ( uniform highp 2-component vector of int) +0:227 'datu' ( temp highp uint) +0:228 imageAtomicMin ( global highp int) +0:228 'im2Di' (layout( r32i) uniform highp iimage2D) +0:228 'P' ( uniform highp 2-component vector of int) +0:228 'dati' ( temp highp int) +0:229 imageAtomicMin ( global highp uint) +0:229 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:229 'P' ( uniform highp 2-component vector of int) +0:229 'datu' ( temp highp uint) +0:230 imageAtomicMax ( global highp int) +0:230 'im2Di' (layout( r32i) uniform highp iimage2D) +0:230 'P' ( uniform highp 2-component vector of int) +0:230 'dati' ( temp highp int) +0:231 imageAtomicMax ( global highp uint) +0:231 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:231 'P' ( uniform highp 2-component vector of int) +0:231 'datu' ( temp highp uint) +0:232 imageAtomicAnd ( global highp int) +0:232 'im2Di' (layout( r32i) uniform highp iimage2D) +0:232 'P' ( uniform highp 2-component vector of int) +0:232 'dati' ( temp highp int) +0:233 imageAtomicAnd ( global highp uint) +0:233 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:233 'P' ( uniform highp 2-component vector of int) +0:233 'datu' ( temp highp uint) +0:234 imageAtomicOr ( global highp int) +0:234 'im2Di' (layout( r32i) uniform highp iimage2D) +0:234 'P' ( uniform highp 2-component vector of int) +0:234 'dati' ( temp highp int) +0:235 imageAtomicOr ( global highp uint) +0:235 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:235 'P' ( uniform highp 2-component vector of int) +0:235 'datu' ( temp highp uint) +0:236 imageAtomicXor ( global highp int) +0:236 'im2Di' (layout( r32i) uniform highp iimage2D) +0:236 'P' ( uniform highp 2-component vector of int) +0:236 'dati' ( temp highp int) +0:237 imageAtomicXor ( global highp uint) +0:237 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:237 'P' ( uniform highp 2-component vector of int) +0:237 'datu' ( temp highp uint) +0:238 imageAtomicExchange ( global highp int) +0:238 'im2Di' (layout( r32i) uniform highp iimage2D) +0:238 'P' ( uniform highp 2-component vector of int) +0:238 'dati' ( temp highp int) +0:239 imageAtomicExchange ( global highp uint) +0:239 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:239 'P' ( uniform highp 2-component vector of int) +0:239 'datu' ( temp highp uint) +0:240 imageAtomicExchange ( global highp float) +0:240 'im2Df' (layout( r32f) uniform highp image2D) +0:240 'P' ( uniform highp 2-component vector of int) +0:240 'datf' ( temp highp float) +0:241 imageAtomicCompSwap ( global highp int) +0:241 'im2Di' (layout( r32i) uniform highp iimage2D) +0:241 'P' ( uniform highp 2-component vector of int) +0:241 Constant: +0:241 3 (const int) +0:241 'dati' ( temp highp int) +0:242 imageAtomicCompSwap ( global highp uint) +0:242 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:242 'P' ( uniform highp 2-component vector of int) +0:242 Constant: +0:242 5 (const uint) +0:242 'datu' ( temp highp uint) +0:250 Function Definition: badInterp( ( global void) +0:250 Function Parameters: +0:252 Sequence +0:252 Constant: +0:252 0.000000 +0:253 Constant: +0:253 0.000000 +0:254 Constant: +0:254 0.000000 +0:? Linker Objects +0:? 'outbinst' ( out block{ out highp int a, out highp 4-component vector of float v, out highp sampler2D s}) +0:? 'anon@0' ( out block{layout( location=12) out highp int aAnon, layout( location=13) out highp 4-component vector of float vAnon}) +0:? 'aliased' (layout( location=12) smooth out highp int) +0:? 'inbinst' ( in block{ in highp int a}) +0:? 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, }) +0:? 'smon' ( smooth out block{ out highp int i}) +0:? 'fmon' ( flat out block{ out highp int i}) +0:? 'cmon' ( centroid out block{ out highp int i}) +0:? 'imon' ( invariant out block{ out highp int i}) +0:? 'inf' ( in highp 2-component vector of float) +0:? 'ing' ( in highp 2-component vector of float) +0:? 'offsets' ( uniform 4-element array of highp 2-component vector of int) +0:? 'sArray' ( uniform 4-element array of lowp sampler2D) +0:? 'sIndex' ( uniform highp int) +0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint) +0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i}) +0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i}) +0:? 'iArray' ( writeonly uniform 5-element array of highp image2D) +0:? 'constOffsets' ( const 4-element array of highp 2-component vector of int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 'noPreSamp1' ( uniform mediump samplerBuffer) +0:? 'noPreSamp2' ( uniform mediump isamplerBuffer) +0:? 'noPreSamp3' ( uniform mediump usamplerBuffer) +0:? 'noPreSamp4' ( writeonly uniform mediump imageBuffer) +0:? 'noPreSamp5' ( writeonly uniform mediump iimageBuffer) +0:? 'noPreSamp6' ( writeonly uniform mediump uimageBuffer) +0:? 'bufSamp1' ( uniform highp samplerBuffer) +0:? 'bufSamp2' ( uniform highp isamplerBuffer) +0:? 'bufSamp3' ( uniform highp usamplerBuffer) +0:? 'bufSamp4' ( writeonly uniform highp imageBuffer) +0:? 'bufSamp5' ( writeonly uniform highp iimageBuffer) +0:? 'bufSamp6' ( writeonly uniform highp uimageBuffer) +0:? 'noPreCA1' ( writeonly uniform mediump imageCubeArray) +0:? 'noPreCA2' ( writeonly uniform mediump iimageCubeArray) +0:? 'noPreCA3' ( writeonly uniform mediump uimageCubeArray) +0:? 'noPreCA4' ( uniform mediump samplerCubeArray) +0:? 'noPreCA5' ( uniform mediump samplerCubeArrayShadow) +0:? 'noPreCA6' ( uniform mediump isamplerCubeArray) +0:? 'noPreCA7' ( uniform mediump usamplerCubeArray) +0:? 'CA1' ( writeonly uniform highp imageCubeArray) +0:? 'CA2' ( writeonly uniform highp iimageCubeArray) +0:? 'CA3' ( writeonly uniform highp uimageCubeArray) +0:? 'rCA1' (layout( rgba16f) readonly uniform highp imageCubeArray) +0:? 'rCA2' (layout( rgba32i) readonly uniform highp iimageCubeArray) +0:? 'rCA3' (layout( r32ui) readonly uniform highp uimageCubeArray) +0:? 'CA4' ( uniform highp samplerCubeArray) +0:? 'CA5' ( uniform highp samplerCubeArrayShadow) +0:? 'CA6' ( uniform highp isamplerCubeArray) +0:? 'CA7' ( uniform highp usamplerCubeArray) +0:? 'noPrec2DMS' ( uniform mediump sampler2DMSArray) +0:? 'noPrec2DMSi' ( uniform mediump isampler2DMSArray) +0:? 'noPrec2DMSu' ( uniform mediump usampler2DMSArray) +0:? 'samp2DMSA' ( uniform highp sampler2DMSArray) +0:? 'samp2DMSAi' ( uniform highp isampler2DMSArray) +0:? 'samp2DMSAu' ( uniform highp usampler2DMSArray) +0:? 'im2Df' (layout( r32f) uniform highp image2D) +0:? 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:? 'im2Di' (layout( r32i) uniform highp iimage2D) +0:? 'P' ( uniform highp 2-component vector of int) +0:? 'colorSample' ( smooth sample out highp 4-component vector of float) +0:? 'colorfsi' ( flat sample out highp 4-component vector of float) +0:? 'sampInArray' ( smooth sample out 4-element array of highp 3-component vector of float) +0:? 'inv4' ( in highp 4-component vector of float) +0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) + + +Linked vertex stage: + + +Shader version: 320 +ERROR: node is still EOpNull! +0:23 Function Definition: main( ( global void) +0:23 Function Parameters: +0:25 Sequence +0:25 Sequence +0:25 move second child to first child ( temp highp int) +0:25 'sum' ( temp highp int) +0:25 add ( temp highp int) +0:25 'gl_VertexID' ( gl_VertexId highp int VertexId) +0:26 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) +0:27 move second child to first child ( temp highp 4-component vector of float) +0:27 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) +0:27 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, }) +0:27 Constant: +0:27 0 (const uint) +0:27 Constant: +0:27 1.000000 +0:27 1.000000 +0:27 1.000000 +0:27 1.000000 +0:28 gl_PointSize: direct index for structure ( gl_PointSize highp void PointSize) +0:28 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, }) +0:28 Constant: +0:28 1 (const uint) +0:? Linker Objects +0:? 'outbinst' ( out block{ out highp int a, out highp 4-component vector of float v, out highp sampler2D s}) +0:? 'anon@0' ( out block{layout( location=12) out highp int aAnon, layout( location=13) out highp 4-component vector of float vAnon}) +0:? 'aliased' (layout( location=12) smooth out highp int) +0:? 'inbinst' ( in block{ in highp int a}) +0:? 'anon@1' ( out block{ gl_Position highp 4-component vector of float Position gl_Position, }) +0:? 'smon' ( smooth out block{ out highp int i}) +0:? 'fmon' ( flat out block{ out highp int i}) +0:? 'cmon' ( centroid out block{ out highp int i}) +0:? 'imon' ( invariant out block{ out highp int i}) +0:? 'inf' ( in highp 2-component vector of float) +0:? 'ing' ( in highp 2-component vector of float) +0:? 'offsets' ( uniform 4-element array of highp 2-component vector of int) +0:? 'sArray' ( uniform 4-element array of lowp sampler2D) +0:? 'sIndex' ( uniform highp int) +0:? 'auArray' (layout( binding=0 offset=0) uniform 2-element array of highp atomic_uint) +0:? 'ubInst' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform highp int i}) +0:? 'bbInst' (layout( column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp int i}) +0:? 'iArray' ( writeonly uniform 5-element array of highp image2D) +0:? 'constOffsets' ( const 4-element array of highp 2-component vector of int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 0 (const int) +0:? 'noPreSamp1' ( uniform mediump samplerBuffer) +0:? 'noPreSamp2' ( uniform mediump isamplerBuffer) +0:? 'noPreSamp3' ( uniform mediump usamplerBuffer) +0:? 'noPreSamp4' ( writeonly uniform mediump imageBuffer) +0:? 'noPreSamp5' ( writeonly uniform mediump iimageBuffer) +0:? 'noPreSamp6' ( writeonly uniform mediump uimageBuffer) +0:? 'bufSamp1' ( uniform highp samplerBuffer) +0:? 'bufSamp2' ( uniform highp isamplerBuffer) +0:? 'bufSamp3' ( uniform highp usamplerBuffer) +0:? 'bufSamp4' ( writeonly uniform highp imageBuffer) +0:? 'bufSamp5' ( writeonly uniform highp iimageBuffer) +0:? 'bufSamp6' ( writeonly uniform highp uimageBuffer) +0:? 'noPreCA1' ( writeonly uniform mediump imageCubeArray) +0:? 'noPreCA2' ( writeonly uniform mediump iimageCubeArray) +0:? 'noPreCA3' ( writeonly uniform mediump uimageCubeArray) +0:? 'noPreCA4' ( uniform mediump samplerCubeArray) +0:? 'noPreCA5' ( uniform mediump samplerCubeArrayShadow) +0:? 'noPreCA6' ( uniform mediump isamplerCubeArray) +0:? 'noPreCA7' ( uniform mediump usamplerCubeArray) +0:? 'CA1' ( writeonly uniform highp imageCubeArray) +0:? 'CA2' ( writeonly uniform highp iimageCubeArray) +0:? 'CA3' ( writeonly uniform highp uimageCubeArray) +0:? 'rCA1' (layout( rgba16f) readonly uniform highp imageCubeArray) +0:? 'rCA2' (layout( rgba32i) readonly uniform highp iimageCubeArray) +0:? 'rCA3' (layout( r32ui) readonly uniform highp uimageCubeArray) +0:? 'CA4' ( uniform highp samplerCubeArray) +0:? 'CA5' ( uniform highp samplerCubeArrayShadow) +0:? 'CA6' ( uniform highp isamplerCubeArray) +0:? 'CA7' ( uniform highp usamplerCubeArray) +0:? 'noPrec2DMS' ( uniform mediump sampler2DMSArray) +0:? 'noPrec2DMSi' ( uniform mediump isampler2DMSArray) +0:? 'noPrec2DMSu' ( uniform mediump usampler2DMSArray) +0:? 'samp2DMSA' ( uniform highp sampler2DMSArray) +0:? 'samp2DMSAi' ( uniform highp isampler2DMSArray) +0:? 'samp2DMSAu' ( uniform highp usampler2DMSArray) +0:? 'im2Df' (layout( r32f) uniform highp image2D) +0:? 'im2Du' (layout( r32ui) uniform highp uimage2D) +0:? 'im2Di' (layout( r32i) uniform highp iimage2D) +0:? 'P' ( uniform highp 2-component vector of int) +0:? 'colorSample' ( smooth sample out highp 4-component vector of float) +0:? 'colorfsi' ( flat sample out highp 4-component vector of float) +0:? 'sampInArray' ( smooth sample out 4-element array of highp 3-component vector of float) +0:? 'inv4' ( in highp 4-component vector of float) +0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) + diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 5ccbf8626..5cd167e04 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -5316,13 +5316,14 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("texture2DGradEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DProjGradEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("textureCubeGradEXT", 1, &E_GL_EXT_shader_texture_lod); - symbolTable.setFunctionExtensions("textureGatherOffsets", Num_AEP_gpu_shader5, AEP_gpu_shader5); + if (version == 310) + symbolTable.setFunctionExtensions("textureGatherOffsets", Num_AEP_gpu_shader5, AEP_gpu_shader5); } - if (version >= 310) + if (version == 310) symbolTable.setFunctionExtensions("fma", Num_AEP_gpu_shader5, AEP_gpu_shader5); } - if (profile == EEsProfile) { + if (profile == EEsProfile && version < 320) { symbolTable.setFunctionExtensions("imageAtomicAdd", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicMin", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicMax", 1, &E_GL_OES_shader_image_atomic); @@ -5357,8 +5358,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion case EShLangTessControl: if (profile == EEsProfile && version >= 310) { - symbolTable.setVariableExtensions("gl_BoundingBoxOES", Num_AEP_primitive_bounding_box, AEP_primitive_bounding_box); BuiltInVariable("gl_BoundingBoxOES", EbvBoundingBox, symbolTable); + if (version < 320) + symbolTable.setVariableExtensions("gl_BoundingBoxOES", Num_AEP_primitive_bounding_box, + AEP_primitive_bounding_box); } // Fall through @@ -5505,7 +5508,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SamplePosition", EbvSamplePosition, symbolTable); BuiltInVariable("gl_SampleMaskIn", EbvSampleMask, symbolTable); BuiltInVariable("gl_SampleMask", EbvSampleMask, symbolTable); - if (profile == EEsProfile) { + if (profile == EEsProfile && version < 320) { symbolTable.setVariableExtensions("gl_SampleID", 1, &E_GL_OES_sample_variables); symbolTable.setVariableExtensions("gl_SamplePosition", 1, &E_GL_OES_sample_variables); symbolTable.setVariableExtensions("gl_SampleMaskIn", 1, &E_GL_OES_sample_variables); @@ -5539,14 +5542,15 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("texture2DGradEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("texture2DProjGradEXT", 1, &E_GL_EXT_shader_texture_lod); symbolTable.setFunctionExtensions("textureCubeGradEXT", 1, &E_GL_EXT_shader_texture_lod); - symbolTable.setFunctionExtensions("textureGatherOffsets", Num_AEP_gpu_shader5, AEP_gpu_shader5); + if (version < 320) + symbolTable.setFunctionExtensions("textureGatherOffsets", Num_AEP_gpu_shader5, AEP_gpu_shader5); } if (version == 100) { symbolTable.setFunctionExtensions("dFdx", 1, &E_GL_OES_standard_derivatives); symbolTable.setFunctionExtensions("dFdy", 1, &E_GL_OES_standard_derivatives); symbolTable.setFunctionExtensions("fwidth", 1, &E_GL_OES_standard_derivatives); } - if (version >= 310) { + if (version == 310) { symbolTable.setFunctionExtensions("fma", Num_AEP_gpu_shader5, AEP_gpu_shader5); symbolTable.setFunctionExtensions("interpolateAtCentroid", 1, &E_GL_OES_shader_multisample_interpolation); symbolTable.setFunctionExtensions("interpolateAtSample", 1, &E_GL_OES_shader_multisample_interpolation); @@ -5675,12 +5679,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_FragDepthEXT", 1, &E_GL_EXT_frag_depth); - if (profile == EEsProfile) { + if (profile == EEsProfile && version < 320) { symbolTable.setVariableExtensions("gl_PrimitiveID", Num_AEP_geometry_shader, AEP_geometry_shader); symbolTable.setVariableExtensions("gl_Layer", Num_AEP_geometry_shader, AEP_geometry_shader); } - if (profile == EEsProfile) { + if (profile == EEsProfile && version < 320) { symbolTable.setFunctionExtensions("imageAtomicAdd", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicMin", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicMax", 1, &E_GL_OES_shader_image_atomic); diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 25d360e69..687c2118a 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -383,7 +383,8 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn if (base->getQualifier().storage == EvqBuffer) requireProfile(base->getLoc(), ~EEsProfile, "variable indexing buffer block array"); else if (base->getQualifier().storage == EvqUniform) - profileRequires(base->getLoc(), EEsProfile, 0, Num_AEP_gpu_shader5, AEP_gpu_shader5, "variable indexing uniform block array"); + profileRequires(base->getLoc(), EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, + "variable indexing uniform block array"); else { // input/output blocks either don't exist or can be variable indexed } @@ -392,7 +393,7 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn else if (base->getBasicType() == EbtSampler && version >= 130) { const char* explanation = "variable indexing sampler array"; requireProfile(base->getLoc(), EEsProfile | ECoreProfile | ECompatibilityProfile, explanation); - profileRequires(base->getLoc(), EEsProfile, 0, Num_AEP_gpu_shader5, AEP_gpu_shader5, explanation); + profileRequires(base->getLoc(), EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, explanation); profileRequires(base->getLoc(), ECoreProfile | ECompatibilityProfile, 400, nullptr, explanation); } @@ -1417,7 +1418,8 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan else profileRequires(loc, ~EEsProfile, 400, E_GL_ARB_gpu_shader5, feature); if (! (*argp)[fnCandidate[0].type->getSampler().shadow ? 3 : 2]->getAsConstantUnion()) - profileRequires(loc, EEsProfile, 0, Num_AEP_gpu_shader5, AEP_gpu_shader5, "non-constant offset argument"); + profileRequires(loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, + "non-constant offset argument"); if (! fnCandidate[0].type->getSampler().shadow) compArg = 3; break; @@ -1631,7 +1633,8 @@ void TParseContext::nonOpBuiltInCheck(const TSourceLoc& loc, const TFunction& fn profileRequires(loc, ~EEsProfile, 400, E_GL_ARB_gpu_shader5, feature); int offsetArg = fnCandidate[0].type->getSampler().shadow ? 3 : 2; if (! callNode.getSequence()[offsetArg]->getAsConstantUnion()) - profileRequires(loc, EEsProfile, 0, Num_AEP_gpu_shader5, AEP_gpu_shader5, "non-constant offset argument"); + profileRequires(loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, + "non-constant offset argument"); if (! fnCandidate[0].type->getSampler().shadow) compArg = 3; } else if (fnCandidate.getName().compare("textureGatherOffsets") == 0) { @@ -3016,19 +3019,22 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua switch (language) { case EShLangGeometry: if (qualifier.storage == EvqVaryingIn) - if (extensionsTurnedOn(Num_AEP_geometry_shader, AEP_geometry_shader)) + if ((profile == EEsProfile && version >= 320) || + extensionsTurnedOn(Num_AEP_geometry_shader, AEP_geometry_shader)) return; break; case EShLangTessControl: if ( qualifier.storage == EvqVaryingIn || (qualifier.storage == EvqVaryingOut && ! qualifier.patch)) - if (extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader)) + if ((profile == EEsProfile && version >= 320) || + extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader)) return; break; case EShLangTessEvaluation: if ((qualifier.storage == EvqVaryingIn && ! qualifier.patch) || qualifier.storage == EvqVaryingOut) - if (extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader)) + if ((profile == EEsProfile && version >= 320) || + extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader)) return; break; default: @@ -3267,7 +3273,8 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS return nullptr; bool nonEsRedecls = (profile != EEsProfile && (version >= 130 || identifier == "gl_TexCoord")); - bool esRedecls = (profile == EEsProfile && extensionsTurnedOn(Num_AEP_shader_io_blocks, AEP_shader_io_blocks)); + bool esRedecls = (profile == EEsProfile && + (version >= 320 || extensionsTurnedOn(Num_AEP_shader_io_blocks, AEP_shader_io_blocks))); if (! esRedecls && ! nonEsRedecls) return nullptr; @@ -3406,7 +3413,7 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newTypeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes) { const char* feature = "built-in block redeclaration"; - profileRequires(loc, EEsProfile, 0, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature); + profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature); profileRequires(loc, ~EEsProfile, 410, E_GL_ARB_separate_shader_objects, feature); if (blockName != "gl_PerVertex" && blockName != "gl_PerFragment") { @@ -4040,7 +4047,8 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi bool found = false; for (TBlendEquationShift be = (TBlendEquationShift)0; be < EBlendCount; be = (TBlendEquationShift)(be + 1)) { if (id == TQualifier::getBlendEquationString(be)) { - requireExtensions(loc, 1, &E_GL_KHR_blend_equation_advanced, "blend equation"); + profileRequires(loc, EEsProfile, 320, E_GL_KHR_blend_equation_advanced, "blend equation"); + profileRequires(loc, ~EEsProfile, 0, E_GL_KHR_blend_equation_advanced, "blend equation"); intermediate.addBlendEquation(be); publicType.shaderQualifiers.blendEquation = true; found = true; @@ -5807,7 +5815,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con case EvqVaryingOut: requireProfile(memberLoc, ECoreProfile | ECompatibilityProfile | EEsProfile, feature); profileRequires(memberLoc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, feature); - profileRequires(memberLoc, EEsProfile, 0, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature); + profileRequires(memberLoc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature); memberWithLocation = true; break; default: @@ -5931,14 +5939,14 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q // "Compute shaders do not permit user-defined input variables..." requireStage(loc, (EShLanguageMask)(EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask|EShLangFragmentMask), "input block"); if (language == EShLangFragment) - profileRequires(loc, EEsProfile, 0, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "fragment input block"); + profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "fragment input block"); break; case EvqVaryingOut: profileRequires(loc, ~EEsProfile, 150, E_GL_ARB_separate_shader_objects, "output block"); requireStage(loc, (EShLanguageMask)(EShLangVertexMask|EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask), "output block"); // ES 310 can have a block before shader_io is turned on, so skip this test for built-ins if (language == EShLangVertex && ! parsingBuiltins) - profileRequires(loc, EEsProfile, 0, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "vertex output block"); + profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "vertex output block"); break; default: error(loc, "only uniform, buffer, in, or out blocks are supported", blockName->c_str(), ""); diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 096d34e4c..25122eec1 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -864,14 +864,17 @@ int TScanContext::tokenizeIdentifier() case PATCH: if (parseContext.symbolTable.atBuiltInLevel() || - (parseContext.profile == EEsProfile && parseContext.extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader)) || + (parseContext.profile == EEsProfile && + (parseContext.version >= 320 || + parseContext.extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader))) || (parseContext.profile != EEsProfile && parseContext.extensionTurnedOn(E_GL_ARB_tessellation_shader))) return keyword; return es30ReservedFromGLSL(400); case SAMPLE: - if (parseContext.extensionsTurnedOn(1, &E_GL_OES_shader_multisample_interpolation)) + if ((parseContext.profile == EEsProfile && parseContext.version >= 320) || + parseContext.extensionsTurnedOn(1, &E_GL_OES_shader_multisample_interpolation)) return keyword; return es30ReservedFromGLSL(400); @@ -925,7 +928,8 @@ int TScanContext::tokenizeIdentifier() case IIMAGEBUFFER: case UIMAGEBUFFER: afterType = true; - if (parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) + if ((parseContext.profile == EEsProfile && parseContext.version >= 320) || + parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) return keyword; return firstGenerationImage(false); @@ -948,7 +952,8 @@ int TScanContext::tokenizeIdentifier() case IIMAGECUBEARRAY: case UIMAGECUBEARRAY: afterType = true; - if (parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array)) + if ((parseContext.profile == EEsProfile && parseContext.version >= 320) || + parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array)) return keyword; return secondGenerationImage(); @@ -1030,7 +1035,8 @@ int TScanContext::tokenizeIdentifier() case ISAMPLERCUBEARRAY: case USAMPLERCUBEARRAY: afterType = true; - if (parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array)) + if ((parseContext.profile == EEsProfile && parseContext.version >= 320) || + parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array)) return keyword; if (parseContext.profile == EEsProfile || (parseContext.version < 400 && ! parseContext.extensionTurnedOn(E_GL_ARB_texture_cube_map_array))) reservedWord(); @@ -1069,14 +1075,16 @@ int TScanContext::tokenizeIdentifier() case SAMPLERBUFFER: afterType = true; - if (parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) + if ((parseContext.profile == EEsProfile && parseContext.version >= 320) || + parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) return keyword; return es30ReservedFromGLSL(130); case ISAMPLERBUFFER: case USAMPLERBUFFER: afterType = true; - if (parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) + if ((parseContext.profile == EEsProfile && parseContext.version >= 320) || + parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) return keyword; return es30ReservedFromGLSL(140); @@ -1092,7 +1100,8 @@ int TScanContext::tokenizeIdentifier() case ISAMPLER2DMSARRAY: case USAMPLER2DMSARRAY: afterType = true; - if (parseContext.extensionsTurnedOn(1, &E_GL_OES_texture_storage_multisample_2d_array)) + if ((parseContext.profile == EEsProfile && parseContext.version >= 320) || + parseContext.extensionsTurnedOn(1, &E_GL_OES_texture_storage_multisample_2d_array)) return keyword; return es30ReservedFromGLSL(150); @@ -1228,7 +1237,8 @@ int TScanContext::tokenizeIdentifier() return keyword; case PRECISE: - if ((parseContext.profile == EEsProfile && parseContext.extensionsTurnedOn(Num_AEP_gpu_shader5, AEP_gpu_shader5)) || + if ((parseContext.profile == EEsProfile && + (parseContext.version >= 320 || parseContext.extensionsTurnedOn(Num_AEP_gpu_shader5, AEP_gpu_shader5))) || (parseContext.profile != EEsProfile && parseContext.version >= 400)) return keyword; if (parseContext.profile == EEsProfile && parseContext.version == 310) { diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 2f1a7ccc7..2d8ac4865 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -116,7 +116,7 @@ TParseContextBase* CreateParseContext(TSymbolTable& symbolTable, TIntermediate& // Local mapping functions for making arrays of symbol tables.... -const int VersionCount = 15; // index range in MapVersionToIndex +const int VersionCount = 16; // index range in MapVersionToIndex int MapVersionToIndex(int version) { @@ -139,6 +139,7 @@ int MapVersionToIndex(int version) case 310: index = 13; break; case 450: index = 14; break; case 500: index = 0; break; // HLSL + case 320: index = 15; break; default: assert(0); break; } @@ -456,9 +457,9 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo // Get a good profile... if (profile == ENoProfile) { - if (version == 300 || version == 310) { + if (version == 300 || version == 310 || version == 320) { correct = false; - infoSink.info.message(EPrefixError, "#version: versions 300 and 310 require specifying the 'es' profile"); + infoSink.info.message(EPrefixError, "#version: versions 300, 310, and 320 require specifying the 'es' profile"); profile = EEsProfile; } else if (version == 100) profile = EEsProfile; @@ -475,16 +476,16 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo profile = EEsProfile; else profile = ENoProfile; - } else if (version == 300 || version == 310) { + } else if (version == 300 || version == 310 || version == 320) { if (profile != EEsProfile) { correct = false; - infoSink.info.message(EPrefixError, "#version: versions 300 and 310 support only the es profile"); + infoSink.info.message(EPrefixError, "#version: versions 300, 310, and 320 support only the es profile"); } profile = EEsProfile; } else { if (profile == EEsProfile) { correct = false; - infoSink.info.message(EPrefixError, "#version: only version 300 and 310 support the es profile"); + infoSink.info.message(EPrefixError, "#version: only version 300, 310, and 320 support the es profile"); if (version >= FirstProfileVersion) profile = ECoreProfile; else @@ -500,6 +501,7 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo case 100: break; case 300: break; case 310: break; + case 320: break; // desktop versions case 110: break; diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 594545f2c..5e3061385 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -101,6 +101,12 @@ INSTANTIATE_TEST_CASE_P( "310.tese", "310implicitSizeArrayError.vert", "310AofA.vert", + "320.comp", + "320.vert", + "320.geom", + "320.frag", + "320.tesc", + "320.tese", "330.frag", "330comp.frag", "constErrors.frag",