Vulkan: Don't let glslang link shaders

The translator outputs intermediate shaders for Vulkan that are later to
be modified by the SPIR-V transformer.  glslang has no business trying
to link them.

Bug: angleproject:5740
Change-Id: I9ae418f54b91312b5fd0ef794acbc46a40261a0e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2753096
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/glslang_wrapper_utils.cpp b/src/libANGLE/renderer/glslang_wrapper_utils.cpp
index da0fab7..1f8f0f9 100644
--- a/src/libANGLE/renderer/glslang_wrapper_utils.cpp
+++ b/src/libANGLE/renderer/glslang_wrapper_utils.cpp
@@ -5103,8 +5103,6 @@
         {gl::ShaderType::Geometry, &geometryShader},
         {gl::ShaderType::Compute, &computeShader},
     };
-    glslang::TProgram program;
-
     for (const gl::ShaderType shaderType : linkedShaderStages)
     {
         if (shaderSources[shaderType].empty())
@@ -5112,18 +5110,12 @@
             continue;
         }
 
+        glslang::TProgram program;
+
         ANGLE_TRY(CompileShader(callback, builtInResources, shaderType, shaderSources[shaderType],
                                 shaders[shaderType], &program));
-    }
 
-    ANGLE_TRY(LinkProgram(callback, &program));
-
-    for (const gl::ShaderType shaderType : linkedShaderStages)
-    {
-        if (shaderSources[shaderType].empty())
-        {
-            continue;
-        }
+        ANGLE_TRY(LinkProgram(callback, &program));
 
         glslang::TIntermediate *intermediate = program.getIntermediate(kShLanguageMap[shaderType]);
         glslang::GlslangToSpv(*intermediate, (*spirvBlobsOut)[shaderType]);