Commit d1f5ef2e by Jamie Madill

Pass gl::Data to Framebuffer::clear.

This allows the implementation object to also check the caps. BUG=angleproject:930 Change-Id: I5a48ad942eaa5271b60cffd931829296e5d2a767 Reviewed-on: https://chromium-review.googlesource.com/263481Reviewed-by: 's avatarBrandon Jones <bajones@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent ed58f066
......@@ -479,9 +479,9 @@ Error Framebuffer::invalidateSub(size_t count, const GLenum *attachments, const
return mImpl->invalidateSub(count, attachments, area);
}
Error Framebuffer::clear(const State &state, GLbitfield mask)
Error Framebuffer::clear(const gl::Data &data, GLbitfield mask)
{
return mImpl->clear(state, mask);
return mImpl->clear(data, mask);
}
Error Framebuffer::clearBufferfv(const State &state, GLenum buffer, GLint drawbuffer, const GLfloat *values)
......
......@@ -112,7 +112,7 @@ class Framebuffer
Error invalidate(size_t count, const GLenum *attachments);
Error invalidateSub(size_t count, const GLenum *attachments, const gl::Rectangle &area);
Error clear(const State &state, GLbitfield mask);
Error clear(const gl::Data &data, GLbitfield mask);
Error clearBufferfv(const State &state, GLenum buffer, GLint drawbuffer, const GLfloat *values);
Error clearBufferuiv(const State &state, GLenum buffer, GLint drawbuffer, const GLuint *values);
Error clearBufferiv(const State &state, GLenum buffer, GLint drawbuffer, const GLint *values);
......
......@@ -42,7 +42,7 @@ class FramebufferImpl : angle::NonCopyable
virtual gl::Error invalidate(size_t count, const GLenum *attachments) = 0;
virtual gl::Error invalidateSub(size_t count, const GLenum *attachments, const gl::Rectangle &area) = 0;
virtual gl::Error clear(const gl::State &state, GLbitfield mask) = 0;
virtual gl::Error clear(const gl::Data &data, GLbitfield mask) = 0;
virtual gl::Error clearBufferfv(const gl::State &state, GLenum buffer, GLint drawbuffer, const GLfloat *values) = 0;
virtual gl::Error clearBufferuiv(const gl::State &state, GLenum buffer, GLint drawbuffer, const GLuint *values) = 0;
virtual gl::Error clearBufferiv(const gl::State &state, GLenum buffer, GLint drawbuffer, const GLint *values) = 0;
......
......@@ -173,8 +173,9 @@ gl::Error FramebufferD3D::invalidateSub(size_t, const GLenum *, const gl::Rectan
return gl::Error(GL_NO_ERROR);
}
gl::Error FramebufferD3D::clear(const gl::State &state, GLbitfield mask)
gl::Error FramebufferD3D::clear(const gl::Data &data, GLbitfield mask)
{
const gl::State &state = *data.state;
ClearParameters clearParams = GetClearParameters(state, mask);
return clear(state, clearParams);
}
......
......@@ -86,7 +86,7 @@ class FramebufferD3D : public FramebufferImpl
gl::Error invalidate(size_t count, const GLenum *attachments) override;
gl::Error invalidateSub(size_t count, const GLenum *attachments, const gl::Rectangle &area) override;
gl::Error clear(const gl::State &state, GLbitfield mask) override;
gl::Error clear(const gl::Data &data, GLbitfield mask) override;
gl::Error clearBufferfv(const gl::State &state, GLenum buffer, GLint drawbuffer, const GLfloat *values) override;
gl::Error clearBufferuiv(const gl::State &state, GLenum buffer, GLint drawbuffer, const GLuint *values) override;
gl::Error clearBufferiv(const gl::State &state, GLenum buffer, GLint drawbuffer, const GLint *values) override;
......
......@@ -9,6 +9,7 @@
#include "libANGLE/renderer/gl/FramebufferGL.h"
#include "common/debug.h"
#include "libANGLE/Data.h"
#include "libANGLE/State.h"
#include "libANGLE/FramebufferAttachment.h"
#include "libANGLE/angletypes.h"
......@@ -160,9 +161,9 @@ gl::Error FramebufferGL::invalidateSub(size_t count, const GLenum *attachments,
return gl::Error(GL_NO_ERROR);
}
gl::Error FramebufferGL::clear(const gl::State &state, GLbitfield mask)
gl::Error FramebufferGL::clear(const gl::Data &data, GLbitfield mask)
{
mStateManager->setClearState(state, mask);
mStateManager->setClearState(*data.state, mask);
mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mFramebufferID);
mFunctions->clear(mask);
......
......@@ -34,7 +34,7 @@ class FramebufferGL : public FramebufferImpl
gl::Error invalidate(size_t count, const GLenum *attachments) override;
gl::Error invalidateSub(size_t count, const GLenum *attachments, const gl::Rectangle &area) override;
gl::Error clear(const gl::State &state, GLbitfield mask) override;
gl::Error clear(const gl::Data &data, GLbitfield mask) override;
gl::Error clearBufferfv(const gl::State &state, GLenum buffer, GLint drawbuffer, const GLfloat *values) override;
gl::Error clearBufferuiv(const gl::State &state, GLenum buffer, GLint drawbuffer, const GLuint *values) override;
gl::Error clearBufferiv(const gl::State &state, GLenum buffer, GLint drawbuffer, const GLint *values) override;
......
......@@ -628,7 +628,7 @@ void GL_APIENTRY Clear(GLbitfield mask)
return;
}
Error error = framebufferObject->clear(context->getState(), mask);
Error error = framebufferObject->clear(context->getData(), mask);
if (error.isError())
{
context->recordError(error);
......
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