Commit b8359275 by Jamie Madill

Clean up interface to ProgramImpl::link.

We no longer need to pass mutable shaders with the changed to packed varyings. BUG=angleproject:1123 Change-Id: I0a4bbf5d770ff48e10e3de2146840d8987b1e826 Reviewed-on: https://chromium-review.googlesource.com/295194Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 532061bb
...@@ -312,9 +312,7 @@ Error Program::link(const gl::Data &data) ...@@ -312,9 +312,7 @@ Error Program::link(const gl::Data &data)
linkOutputVariables(); linkOutputVariables();
rx::LinkResult result = rx::LinkResult result = mProgram->link(data, mInfoLog);
mProgram->link(data, mInfoLog, mData.mAttachedFragmentShader, mData.mAttachedVertexShader);
if (result.error.isError() || !result.linkSuccess) if (result.error.isError() || !result.linkSuccess)
{ {
return result.error; return result.error;
......
...@@ -40,11 +40,7 @@ class ProgramImpl : angle::NonCopyable ...@@ -40,11 +40,7 @@ class ProgramImpl : angle::NonCopyable
virtual LinkResult load(gl::InfoLog &infoLog, gl::BinaryInputStream *stream) = 0; virtual LinkResult load(gl::InfoLog &infoLog, gl::BinaryInputStream *stream) = 0;
virtual gl::Error save(gl::BinaryOutputStream *stream) = 0; virtual gl::Error save(gl::BinaryOutputStream *stream) = 0;
virtual LinkResult link(const gl::Data &data, virtual LinkResult link(const gl::Data &data, gl::InfoLog &infoLog) = 0;
gl::InfoLog &infoLog,
gl::Shader *fragmentShader,
gl::Shader *vertexShader) = 0;
virtual GLboolean validate(const gl::Caps &caps, gl::InfoLog *infoLog) = 0; virtual GLboolean validate(const gl::Caps &caps, gl::InfoLog *infoLog) = 0;
virtual void setUniform1fv(GLint location, GLsizei count, const GLfloat *v) = 0; virtual void setUniform1fv(GLint location, GLsizei count, const GLfloat *v) = 0;
......
...@@ -1128,24 +1128,24 @@ LinkResult ProgramD3D::compileProgramExecutables(gl::InfoLog &infoLog, ...@@ -1128,24 +1128,24 @@ LinkResult ProgramD3D::compileProgramExecutables(gl::InfoLog &infoLog,
return LinkResult(linkSuccess, gl::Error(GL_NO_ERROR)); return LinkResult(linkSuccess, gl::Error(GL_NO_ERROR));
} }
LinkResult ProgramD3D::link(const gl::Data &data, LinkResult ProgramD3D::link(const gl::Data &data, gl::InfoLog &infoLog)
gl::InfoLog &infoLog,
gl::Shader *fragmentShader,
gl::Shader *vertexShader)
{ {
ShaderD3D *vertexShaderD3D = GetImplAs<ShaderD3D>(vertexShader); const gl::Shader *vertexShader = mData.getAttachedVertexShader();
ShaderD3D *fragmentShaderD3D = GetImplAs<ShaderD3D>(fragmentShader); const gl::Shader *fragmentShader = mData.getAttachedFragmentShader();
mSamplersPS.resize(data.caps->maxTextureImageUnits); const ShaderD3D *vertexShaderD3D = GetImplAs<ShaderD3D>(vertexShader);
mSamplersVS.resize(data.caps->maxVertexTextureImageUnits); const ShaderD3D *fragmentShaderD3D = GetImplAs<ShaderD3D>(fragmentShader);
mPixelHLSL = fragmentShaderD3D->getTranslatedSource(); mSamplersVS.resize(data.caps->maxVertexTextureImageUnits);
fragmentShaderD3D->generateWorkarounds(&mPixelWorkarounds); mSamplersPS.resize(data.caps->maxTextureImageUnits);
mVertexHLSL = vertexShaderD3D->getTranslatedSource(); mVertexHLSL = vertexShaderD3D->getTranslatedSource();
vertexShaderD3D->generateWorkarounds(&mVertexWorkarounds); vertexShaderD3D->generateWorkarounds(&mVertexWorkarounds);
mShaderVersion = vertexShaderD3D->getShaderVersion(); mShaderVersion = vertexShaderD3D->getShaderVersion();
mPixelHLSL = fragmentShaderD3D->getTranslatedSource();
fragmentShaderD3D->generateWorkarounds(&mPixelWorkarounds);
if (mRenderer->getRendererLimitations().noFrontFacingSupport) if (mRenderer->getRendererLimitations().noFrontFacingSupport)
{ {
if (fragmentShaderD3D->usesFrontFacing()) if (fragmentShaderD3D->usesFrontFacing())
......
...@@ -70,11 +70,7 @@ class ProgramD3D : public ProgramImpl ...@@ -70,11 +70,7 @@ class ProgramD3D : public ProgramImpl
gl::Error getVertexExecutableForInputLayout(const gl::InputLayout &inputLayout, ShaderExecutableD3D **outExectuable, gl::InfoLog *infoLog); gl::Error getVertexExecutableForInputLayout(const gl::InputLayout &inputLayout, ShaderExecutableD3D **outExectuable, gl::InfoLog *infoLog);
ShaderExecutableD3D *getGeometryExecutable() const { return mGeometryExecutable; } ShaderExecutableD3D *getGeometryExecutable() const { return mGeometryExecutable; }
LinkResult link(const gl::Data &data, LinkResult link(const gl::Data &data, gl::InfoLog &infoLog) override;
gl::InfoLog &infoLog,
gl::Shader *fragmentShader,
gl::Shader *vertexShader) override;
GLboolean validate(const gl::Caps &caps, gl::InfoLog *infoLog) override; GLboolean validate(const gl::Caps &caps, gl::InfoLog *infoLog) override;
void initializeUniformStorage(); void initializeUniformStorage();
......
...@@ -58,14 +58,14 @@ gl::Error ProgramGL::save(gl::BinaryOutputStream *stream) ...@@ -58,14 +58,14 @@ gl::Error ProgramGL::save(gl::BinaryOutputStream *stream)
return gl::Error(GL_INVALID_OPERATION); return gl::Error(GL_INVALID_OPERATION);
} }
LinkResult ProgramGL::link(const gl::Data &data, LinkResult ProgramGL::link(const gl::Data &data, gl::InfoLog &infoLog)
gl::InfoLog &infoLog,
gl::Shader *fragmentShader,
gl::Shader *vertexShader)
{ {
// Reset the program state, delete the current program if one exists // Reset the program state, delete the current program if one exists
reset(); reset();
const gl::Shader *vertexShader = mData.getAttachedVertexShader();
const gl::Shader *fragmentShader = mData.getAttachedFragmentShader();
const ShaderGL *vertexShaderGL = GetImplAs<ShaderGL>(vertexShader); const ShaderGL *vertexShaderGL = GetImplAs<ShaderGL>(vertexShader);
const ShaderGL *fragmentShaderGL = GetImplAs<ShaderGL>(fragmentShader); const ShaderGL *fragmentShaderGL = GetImplAs<ShaderGL>(fragmentShader);
......
...@@ -37,11 +37,7 @@ class ProgramGL : public ProgramImpl ...@@ -37,11 +37,7 @@ class ProgramGL : public ProgramImpl
LinkResult load(gl::InfoLog &infoLog, gl::BinaryInputStream *stream) override; LinkResult load(gl::InfoLog &infoLog, gl::BinaryInputStream *stream) override;
gl::Error save(gl::BinaryOutputStream *stream) override; gl::Error save(gl::BinaryOutputStream *stream) override;
LinkResult link(const gl::Data &data, LinkResult link(const gl::Data &data, gl::InfoLog &infoLog) override;
gl::InfoLog &infoLog,
gl::Shader *fragmentShader,
gl::Shader *vertexShader) override;
GLboolean validate(const gl::Caps &caps, gl::InfoLog *infoLog) override; GLboolean validate(const gl::Caps &caps, gl::InfoLog *infoLog) override;
void setUniform1fv(GLint location, GLsizei count, const GLfloat *v) override; void setUniform1fv(GLint location, GLsizei count, const GLfloat *v) override;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment