Make all fragment shader out variables require location layout qualifier

Make all fragment shader out variables require location layout
qualifier. Previously, the last variable did not need a location layout
qualifier if the previous variables had those.

TEST=angle_unittests
BUG=angleproject:1070

Change-Id: I3763b8ca38b1e14ee8456a54592c01e0fd89692c
Reviewed-on: https://chromium-review.googlesource.com/286101
Tested-by: Kimmo Kinnunen <kkinnunen@nvidia.com>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
diff --git a/src/compiler/translator/ValidateOutputs.cpp b/src/compiler/translator/ValidateOutputs.cpp
index 614d790..daa903a 100644
--- a/src/compiler/translator/ValidateOutputs.cpp
+++ b/src/compiler/translator/ValidateOutputs.cpp
@@ -14,7 +14,7 @@
       mSink(sink),
       mMaxDrawBuffers(maxDrawBuffers),
       mNumErrors(0),
-      mHasUnspecifiedOutputLocation(false)
+      mUnspecifiedOutputLocationCount(0)
 {
 }
 
@@ -32,14 +32,15 @@
     {
         const TType &type = symbol->getType();
         const int location = type.getLayoutQualifier().location;
+        const bool isUnspecifiedOutputLocation = location == -1;
 
-        if (mHasUnspecifiedOutputLocation)
+        if (mUnspecifiedOutputLocationCount > 0 || (isUnspecifiedOutputLocation && !mOutputMap.empty()))
         {
             error(symbol->getLine(), "must explicitly specify all locations when using multiple fragment outputs", name.c_str());
         }
-        else if (location == -1)
+        else if (isUnspecifiedOutputLocation)
         {
-            mHasUnspecifiedOutputLocation = true;
+            ++mUnspecifiedOutputLocationCount;
         }
         else
         {