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)
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()
{
mDeleteStatus = true;
......@@ -985,12 +979,10 @@ bool Program::isFlaggedForDeletion() const
void Program::validate(const Caps &caps)
{
mInfoLog.reset();
mValidated = false;
if (mLinked)
{
applyUniforms();
mValidated = mProgram->validateSamplers(&mInfoLog, caps);
mValidated = (mProgram->validate(caps, &mInfoLog) == GL_TRUE);
}
else
{
......
......@@ -268,8 +268,6 @@ class Program : angle::NonCopyable
void getUniformiv(GLint location, GLint *params);
void getUniformuiv(GLint location, GLuint *params);
Error applyUniforms();
void getActiveUniformBlockName(GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName) const;
void getActiveUniformBlockiv(GLuint uniformBlockIndex, GLenum pname, GLint *params) const;
GLuint getActiveUniformBlockCount();
......
......@@ -48,6 +48,8 @@ class ProgramImpl : angle::NonCopyable
gl::Shader *vertexShader,
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 setUniform1fv(GLint location, GLsizei count, const GLfloat *v) = 0;
......@@ -80,8 +82,6 @@ class ProgramImpl : angle::NonCopyable
// determine if they can be removed from this interface.
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::map<GLuint, gl::VariableLocation> &getUniformIndices() const { return mUniformIndex; }
const std::vector<gl::UniformBlock*> &getUniformBlocks() const { return mUniformBlocks; }
......
......@@ -1168,6 +1168,12 @@ LinkResult ProgramD3D::link(const gl::Data &data,
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)
{
}
......
......@@ -72,7 +72,9 @@ class ProgramD3D : public ProgramImpl
gl::InfoLog &infoLog,
gl::Shader *fragmentShader,
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;
......
......@@ -374,7 +374,8 @@ gl::Error RendererD3D::applyState(const gl::Data &data, GLenum drawMode)
gl::Error RendererD3D::applyShaders(const gl::Data &data)
{
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();
......@@ -384,7 +385,7 @@ gl::Error RendererD3D::applyShaders(const gl::Data &data)
return error;
}
return program->applyUniforms();
return programD3D->applyUniforms();
}
// For each Direct3D sampler of either the pixel or vertex stage,
......
......@@ -203,6 +203,12 @@ LinkResult ProgramGL::link(const gl::Data &data,
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)
{
mFunctions->bindAttribLocation(mProgramID, index, name.c_str());
......@@ -365,13 +371,6 @@ bool ProgramGL::validateSamplers(gl::InfoLog *infoLog, const gl::Caps &caps)
return true;
}
gl::Error ProgramGL::applyUniforms()
{
//UNIMPLEMENTED();
// TODO(geofflang)
return gl::Error(GL_NO_ERROR);
}
void ProgramGL::reset()
{
ProgramImpl::reset();
......
......@@ -43,6 +43,8 @@ class ProgramGL : public ProgramImpl
gl::Shader *vertexShader,
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 setUniform1fv(GLint location, GLsizei count, const GLfloat *v) override;
......@@ -78,8 +80,6 @@ class ProgramGL : public ProgramImpl
const sh::InterfaceBlock &interfaceBlock,
const gl::Caps &caps);
gl::Error applyUniforms() override;
void reset() override;
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