These are two fixes:
The shaders are issued backwards starting from the fragment shader and, therefore, in the first pass when we fill out the shader keys for the TES no TCS will be present. So don't bail out in this case and assume there is a VS. Later, when the VS shader is compiled it will check whether a TES is present without a TCS and report the error.
Fixes: 956a6ceb shader: Pass information about the layout of generics and patches to the next stage
In addition, it seems that GLES doesn't allow arrays of arrays as IO, unless these are tied to a vertex IO, so prefer interface blocks on GLES.