Commit 36cfd6a3 by Jamie Madill

Clean up Program::validate.

This method should really be an Impl method, since it corresponds to a specific OpenGL call. Making it an Impl method also allows us to remove applyUniforms, which doesn't correspond to a GL call. BUG=angleproject:1123 Change-Id: I2abee3cfaa7393cad44566782d51ed701e84846b Reviewed-on: https://chromium-review.googlesource.com/293825Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org>
parent d1fe1646
...@@ -966,12 +966,6 @@ void Program::getUniformuiv(GLint location, GLuint *v) ...@@ -966,12 +966,6 @@ void Program::getUniformuiv(GLint location, GLuint *v)
mProgram->getUniformuiv(location, v); mProgram->getUniformuiv(location, v);
} }
// Applies all the uniforms set for this program object to the renderer
Error Program::applyUniforms()
{
return mProgram->applyUniforms();
}
void Program::flagForDeletion() void Program::flagForDeletion()
{ {
mDeleteStatus = true; mDeleteStatus = true;
...@@ -985,12 +979,10 @@ bool Program::isFlaggedForDeletion() const ...@@ -985,12 +979,10 @@ bool Program::isFlaggedForDeletion() const
void Program::validate(const Caps &caps) void Program::validate(const Caps &caps)
{ {
mInfoLog.reset(); mInfoLog.reset();
mValidated = false;
if (mLinked) if (mLinked)
{ {
applyUniforms(); mValidated = (mProgram->validate(caps, &mInfoLog) == GL_TRUE);
mValidated = mProgram->validateSamplers(&mInfoLog, caps);
} }
else else
{ {
......
...@@ -268,8 +268,6 @@ class Program : angle::NonCopyable ...@@ -268,8 +268,6 @@ class Program : angle::NonCopyable
void getUniformiv(GLint location, GLint *params); void getUniformiv(GLint location, GLint *params);
void getUniformuiv(GLint location, GLuint *params); void getUniformuiv(GLint location, GLuint *params);
Error applyUniforms();
void getActiveUniformBlockName(GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) const; void getActiveUniformBlockName(GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) const;
void getActiveUniformBlockiv(GLuint uniformBlockIndex, GLenum pname, GLint *params) const; void getActiveUniformBlockiv(GLuint uniformBlockIndex, GLenum pname, GLint *params) const;
GLuint getActiveUniformBlockCount(); GLuint getActiveUniformBlockCount();
......
...@@ -48,6 +48,8 @@ class ProgramImpl : angle::NonCopyable ...@@ -48,6 +48,8 @@ class ProgramImpl : angle::NonCopyable
gl::Shader *vertexShader, gl::Shader *vertexShader,
std::map<int, gl::VariableLocation> *outputVariables) = 0; std::map<int, gl::VariableLocation> *outputVariables) = 0;
virtual GLboolean validate(const gl::Caps &caps, gl::InfoLog *infoLog) = 0;
virtual void bindAttributeLocation(GLuint index, const std::string &name) = 0; virtual void bindAttributeLocation(GLuint index, const std::string &name) = 0;
virtual void setUniform1fv(GLint location, GLsizei count, const GLfloat *v) = 0; virtual void setUniform1fv(GLint location, GLsizei count, const GLfloat *v) = 0;
...@@ -80,8 +82,6 @@ class ProgramImpl : angle::NonCopyable ...@@ -80,8 +82,6 @@ class ProgramImpl : angle::NonCopyable
// determine if they can be removed from this interface. // determine if they can be removed from this interface.
virtual bool validateSamplers(gl::InfoLog *infoLog, const gl::Caps &caps) = 0; virtual bool validateSamplers(gl::InfoLog *infoLog, const gl::Caps &caps) = 0;
virtual gl::Error applyUniforms() = 0;
const std::vector<gl::LinkedUniform*> &getUniforms() const { return mUniforms; } const std::vector<gl::LinkedUniform*> &getUniforms() const { return mUniforms; }
const std::map<GLuint, gl::VariableLocation> &getUniformIndices() const { return mUniformIndex; } const std::map<GLuint, gl::VariableLocation> &getUniformIndices() const { return mUniformIndex; }
const std::vector<gl::UniformBlock*> &getUniformBlocks() const { return mUniformBlocks; } const std::vector<gl::UniformBlock*> &getUniformBlocks() const { return mUniformBlocks; }
......
...@@ -1168,6 +1168,12 @@ LinkResult ProgramD3D::link(const gl::Data &data, ...@@ -1168,6 +1168,12 @@ LinkResult ProgramD3D::link(const gl::Data &data,
return LinkResult(true, gl::Error(GL_NO_ERROR)); return LinkResult(true, gl::Error(GL_NO_ERROR));
} }
GLboolean ProgramD3D::validate(const gl::Caps &caps, gl::InfoLog *infoLog)
{
applyUniforms();
return validateSamplers(infoLog, caps);
}
void ProgramD3D::bindAttributeLocation(GLuint index, const std::string &name) void ProgramD3D::bindAttributeLocation(GLuint index, const std::string &name)
{ {
} }
......
...@@ -72,7 +72,9 @@ class ProgramD3D : public ProgramImpl ...@@ -72,7 +72,9 @@ class ProgramD3D : public ProgramImpl
gl::InfoLog &infoLog, gl::InfoLog &infoLog,
gl::Shader *fragmentShader, gl::Shader *fragmentShader,
gl::Shader *vertexShader, gl::Shader *vertexShader,
std::map<int, gl::VariableLocation> *outputVariables); std::map<int, gl::VariableLocation> *outputVariables) override;
GLboolean validate(const gl::Caps &caps, gl::InfoLog *infoLog) override;
void bindAttributeLocation(GLuint index, const std::string &name) override; void bindAttributeLocation(GLuint index, const std::string &name) override;
......
...@@ -374,7 +374,8 @@ gl::Error RendererD3D::applyState(const gl::Data &data, GLenum drawMode) ...@@ -374,7 +374,8 @@ gl::Error RendererD3D::applyState(const gl::Data &data, GLenum drawMode)
gl::Error RendererD3D::applyShaders(const gl::Data &data) gl::Error RendererD3D::applyShaders(const gl::Data &data)
{ {
gl::Program *program = data.state->getProgram(); gl::Program *program = data.state->getProgram();
GetImplAs<ProgramD3D>(program)->updateCachedInputLayout(program, *data.state); ProgramD3D *programD3D = GetImplAs<ProgramD3D>(program);
programD3D->updateCachedInputLayout(program, *data.state);
const gl::Framebuffer *fbo = data.state->getDrawFramebuffer(); const gl::Framebuffer *fbo = data.state->getDrawFramebuffer();
...@@ -384,7 +385,7 @@ gl::Error RendererD3D::applyShaders(const gl::Data &data) ...@@ -384,7 +385,7 @@ gl::Error RendererD3D::applyShaders(const gl::Data &data)
return error; return error;
} }
return program->applyUniforms(); return programD3D->applyUniforms();
} }
// For each Direct3D sampler of either the pixel or vertex stage, // For each Direct3D sampler of either the pixel or vertex stage,
......
...@@ -203,6 +203,12 @@ LinkResult ProgramGL::link(const gl::Data &data, ...@@ -203,6 +203,12 @@ LinkResult ProgramGL::link(const gl::Data &data,
return LinkResult(true, gl::Error(GL_NO_ERROR)); return LinkResult(true, gl::Error(GL_NO_ERROR));
} }
GLboolean ProgramGL::validate(const gl::Caps & /*caps*/, gl::InfoLog * /*infoLog*/)
{
// TODO(jmadill): implement validate
return true;
}
void ProgramGL::bindAttributeLocation(GLuint index, const std::string &name) void ProgramGL::bindAttributeLocation(GLuint index, const std::string &name)
{ {
mFunctions->bindAttribLocation(mProgramID, index, name.c_str()); mFunctions->bindAttribLocation(mProgramID, index, name.c_str());
...@@ -365,13 +371,6 @@ bool ProgramGL::validateSamplers(gl::InfoLog *infoLog, const gl::Caps &caps) ...@@ -365,13 +371,6 @@ bool ProgramGL::validateSamplers(gl::InfoLog *infoLog, const gl::Caps &caps)
return true; return true;
} }
gl::Error ProgramGL::applyUniforms()
{
//UNIMPLEMENTED();
// TODO(geofflang)
return gl::Error(GL_NO_ERROR);
}
void ProgramGL::reset() void ProgramGL::reset()
{ {
ProgramImpl::reset(); ProgramImpl::reset();
......
...@@ -43,6 +43,8 @@ class ProgramGL : public ProgramImpl ...@@ -43,6 +43,8 @@ class ProgramGL : public ProgramImpl
gl::Shader *vertexShader, gl::Shader *vertexShader,
std::map<int, gl::VariableLocation> *outputVariables) override; std::map<int, gl::VariableLocation> *outputVariables) override;
GLboolean validate(const gl::Caps &caps, gl::InfoLog *infoLog) override;
void bindAttributeLocation(GLuint index, const std::string &name) override; void bindAttributeLocation(GLuint index, const std::string &name) override;
void setUniform1fv(GLint location, GLsizei count, const GLfloat *v) override; void setUniform1fv(GLint location, GLsizei count, const GLfloat *v) override;
...@@ -78,8 +80,6 @@ class ProgramGL : public ProgramImpl ...@@ -78,8 +80,6 @@ class ProgramGL : public ProgramImpl
const sh::InterfaceBlock &interfaceBlock, const sh::InterfaceBlock &interfaceBlock,
const gl::Caps &caps); const gl::Caps &caps);
gl::Error applyUniforms() override;
void reset() override; void reset() override;
GLuint getProgramID() const; GLuint getProgramID() const;
......
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