Pass GL caps and version to compiler.
This allows us to get rid of some of the reliance on storing the
current context client version in the Renderer. A subsequent
patch will allow us to remove the client version ugly hack.
BUG=angle:789
Change-Id: I139e0f66e1d39e5cd41a484c841a7101b1f29540
Reviewed-on: https://chromium-review.googlesource.com/227712
Reviewed-by: Brandon Jones <bajones@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libGLESv2/ProgramBinary.cpp b/src/libGLESv2/ProgramBinary.cpp
index 40f1e8c..c5cb8a4 100644
--- a/src/libGLESv2/ProgramBinary.cpp
+++ b/src/libGLESv2/ProgramBinary.cpp
@@ -495,8 +495,10 @@
return length;
}
-LinkResult ProgramBinary::link(InfoLog &infoLog, const AttributeBindings &attributeBindings, Shader *fragmentShader, Shader *vertexShader,
- const std::vector<std::string>& transformFeedbackVaryings, GLenum transformFeedbackBufferMode, const Caps &caps)
+LinkResult ProgramBinary::link(const Data &data, InfoLog &infoLog, const AttributeBindings &attributeBindings,
+ Shader *fragmentShader, Shader *vertexShader,
+ const std::vector<std::string> &transformFeedbackVaryings,
+ GLenum transformFeedbackBufferMode)
{
if (!fragmentShader || !fragmentShader->isCompiled())
{
@@ -514,8 +516,8 @@
int registers;
std::vector<LinkedVarying> linkedVaryings;
- LinkResult result = mProgram->link(infoLog, fragmentShader, vertexShader, transformFeedbackVaryings, transformFeedbackBufferMode,
- ®isters, &linkedVaryings, &mOutputVariables, caps);
+ LinkResult result = mProgram->link(data, infoLog, fragmentShader, vertexShader, transformFeedbackVaryings, transformFeedbackBufferMode,
+ ®isters, &linkedVaryings, &mOutputVariables);
if (result.error.isError() || !result.linkSuccess)
{
return result;
@@ -526,18 +528,18 @@
return LinkResult(false, Error(GL_NO_ERROR));
}
- if (!mProgram->linkUniforms(infoLog, *vertexShader, *fragmentShader, caps))
+ if (!mProgram->linkUniforms(infoLog, *vertexShader, *fragmentShader, *data.caps))
{
return LinkResult(false, Error(GL_NO_ERROR));
}
- if (!linkUniformBlocks(infoLog, *vertexShader, *fragmentShader, caps))
+ if (!linkUniformBlocks(infoLog, *vertexShader, *fragmentShader, *data.caps))
{
return LinkResult(false, Error(GL_NO_ERROR));
}
if (!gatherTransformFeedbackLinkedVaryings(infoLog, linkedVaryings, transformFeedbackVaryings,
- transformFeedbackBufferMode, &mProgram->getTransformFeedbackLinkedVaryings(), caps))
+ transformFeedbackBufferMode, &mProgram->getTransformFeedbackLinkedVaryings(), *data.caps))
{
return LinkResult(false, Error(GL_NO_ERROR));
}