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/gl/ProgramGL.cpp b/src/libANGLE/renderer/gl/ProgramGL.cpp
index d6f3976..89cd454 100644
--- a/src/libANGLE/renderer/gl/ProgramGL.cpp
+++ b/src/libANGLE/renderer/gl/ProgramGL.cpp
@@ -131,9 +131,10 @@
{
preLink();
- if (mState.getAttachedComputeShader())
+ if (mState.getAttachedShader(gl::ShaderType::Compute))
{
- const ShaderGL *computeShaderGL = GetImplAs<ShaderGL>(mState.getAttachedComputeShader());
+ const ShaderGL *computeShaderGL =
+ GetImplAs<ShaderGL>(mState.getAttachedShader(gl::ShaderType::Compute));
mFunctions->attachShader(mProgramID, computeShaderGL->getShaderID());
@@ -150,8 +151,8 @@
for (const auto &tfVarying : mState.getTransformFeedbackVaryingNames())
{
std::string tfVaryingMappedName =
- mState.getAttachedVertexShader()->getTransformFeedbackVaryingMappedName(tfVarying,
- context);
+ mState.getAttachedShader(gl::ShaderType::Vertex)
+ ->getTransformFeedbackVaryingMappedName(tfVarying, context);
transformFeedbackVaryingMappedNames.push_back(tfVaryingMappedName);
}
@@ -176,10 +177,12 @@
&transformFeedbackVaryings[0], mState.getTransformFeedbackBufferMode());
}
- const ShaderGL *vertexShaderGL = GetImplAs<ShaderGL>(mState.getAttachedVertexShader());
- const ShaderGL *fragmentShaderGL = GetImplAs<ShaderGL>(mState.getAttachedFragmentShader());
- const ShaderGL *geometryShaderGL =
- rx::SafeGetImplAs<ShaderGL, gl::Shader>(mState.getAttachedGeometryShader());
+ const ShaderGL *vertexShaderGL =
+ GetImplAs<ShaderGL>(mState.getAttachedShader(gl::ShaderType::Vertex));
+ const ShaderGL *fragmentShaderGL =
+ GetImplAs<ShaderGL>(mState.getAttachedShader(gl::ShaderType::Fragment));
+ const ShaderGL *geometryShaderGL = rx::SafeGetImplAs<ShaderGL, gl::Shader>(
+ mState.getAttachedShader(gl::ShaderType::Geometry));
// Attach the shaders
mFunctions->attachShader(mProgramID, vertexShaderGL->getShaderID());