Fix uniform array handling in ProgramGL.

Our validation wouldn't correctly handle single-element arrays because it
was checking size > 1 instead of isArray().  This caused issues in
ProgramGL on some drivers that optimized the array size (AMD) if some elements
were unused.

BUG=angleproject:882

Change-Id: I417d13cd86380e2c6caa688f6398709a74692e21
Reviewed-on: https://chromium-review.googlesource.com/289201
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/validationES.cpp b/src/libANGLE/validationES.cpp
index 9213e81..0761d93 100644
--- a/src/libANGLE/validationES.cpp
+++ b/src/libANGLE/validationES.cpp
@@ -1126,7 +1126,7 @@
     LinkedUniform *uniform = program->getUniformByLocation(location);
 
     // attempting to write an array to a non-array uniform is an INVALID_OPERATION
-    if (uniform->elementCount() == 1 && count > 1)
+    if (!uniform->isArray() && count > 1)
     {
         context->recordError(Error(GL_INVALID_OPERATION));
         return false;