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);