Use packed enums on shader types in ANGLE renderer

This patch uses a packed internal enum ShaderType everywhere we
need a shader type instead of the GLenum value of the shader type.

This patch also uses program::getAttachedShader(type) everywhere
we need to get gl::Shader from a program in ANGLE.

BUG=angleproject:2169
Change-Id: I28a7fa1cfe35622c57a486932911110688eaadec
Reviewed-on: https://chromium-review.googlesource.com/972844
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/ProgramVk.cpp b/src/libANGLE/renderer/vulkan/ProgramVk.cpp
index 1673bcc..eb19bfe 100644
--- a/src/libANGLE/renderer/vulkan/ProgramVk.cpp
+++ b/src/libANGLE/renderer/vulkan/ProgramVk.cpp
@@ -126,6 +126,7 @@
     return vk::NoError();
 }
 
+// TODO(jiawei.shao@intel.com): Fully remove this enum by gl::ShaderType. (BUG=angleproject:2169)
 enum ShaderIndex : uint32_t
 {
     MinShaderIndex = 0,
@@ -139,9 +140,9 @@
     switch (shaderIndex)
     {
         case VertexShader:
-            return programState.getAttachedVertexShader();
+            return programState.getAttachedShader(gl::ShaderType::Vertex);
         case FragmentShader:
-            return programState.getAttachedFragmentShader();
+            return programState.getAttachedShader(gl::ShaderType::Fragment);
         default:
             UNREACHABLE();
             return nullptr;
@@ -458,9 +459,10 @@
 
     ASSERT(linkedUniform.typeInfo->componentType == entryPointType);
     const gl::ShaderType shaderType = linkedUniform.getFirstShaderTypeWhereActive();
-    ASSERT(shaderType != gl::ShaderType::SHADER_TYPE_INVALID);
+    ASSERT(shaderType != gl::ShaderType::InvalidEnum);
 
-    const DefaultUniformBlock &uniformBlock = mDefaultUniformBlocks[shaderType];
+    const DefaultUniformBlock &uniformBlock =
+        mDefaultUniformBlocks[static_cast<GLuint>(shaderType)];
     const sh::BlockMemberInfo &layoutInfo   = uniformBlock.uniformLayout[location];
     ReadFromDefaultUniformBlock(linkedUniform.typeInfo->componentCount, v, layoutInfo,
                                 &uniformBlock.uniformData);