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 ...@@ -479,9 +479,9 @@ Error Framebuffer::invalidateSub(size_t count, const GLenum *attachments, const
return mImpl->invalidateSub(count, attachments, area); 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) Error Framebuffer::clearBufferfv(const State &state, GLenum buffer, GLint drawbuffer, const GLfloat *values)
......
...@@ -112,7 +112,7 @@ class Framebuffer ...@@ -112,7 +112,7 @@ class Framebuffer
Error invalidate(size_t count, const GLenum *attachments); Error invalidate(size_t count, const GLenum *attachments);
Error invalidateSub(size_t count, const GLenum *attachments, const gl::Rectangle &area); 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 clearBufferfv(const State &state, GLenum buffer, GLint drawbuffer, const GLfloat *values);
Error clearBufferuiv(const State &state, GLenum buffer, GLint drawbuffer, const GLuint *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); Error clearBufferiv(const State &state, GLenum buffer, GLint drawbuffer, const GLint *values);
......
...@@ -42,7 +42,7 @@ class FramebufferImpl : angle::NonCopyable ...@@ -42,7 +42,7 @@ class FramebufferImpl : angle::NonCopyable
virtual gl::Error invalidate(size_t count, const GLenum *attachments) = 0; 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 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 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 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; 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 ...@@ -173,8 +173,9 @@ gl::Error FramebufferD3D::invalidateSub(size_t, const GLenum *, const gl::Rectan
return gl::Error(GL_NO_ERROR); 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); ClearParameters clearParams = GetClearParameters(state, mask);
return clear(state, clearParams); return clear(state, clearParams);
} }
......
...@@ -86,7 +86,7 @@ class FramebufferD3D : public FramebufferImpl ...@@ -86,7 +86,7 @@ class FramebufferD3D : public FramebufferImpl
gl::Error invalidate(size_t count, const GLenum *attachments) override; 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 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 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 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; gl::Error clearBufferiv(const gl::State &state, GLenum buffer, GLint drawbuffer, const GLint *values) override;
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "libANGLE/renderer/gl/FramebufferGL.h" #include "libANGLE/renderer/gl/FramebufferGL.h"
#include "common/debug.h" #include "common/debug.h"
#include "libANGLE/Data.h"
#include "libANGLE/State.h" #include "libANGLE/State.h"
#include "libANGLE/FramebufferAttachment.h" #include "libANGLE/FramebufferAttachment.h"
#include "libANGLE/angletypes.h" #include "libANGLE/angletypes.h"
...@@ -160,9 +161,9 @@ gl::Error FramebufferGL::invalidateSub(size_t count, const GLenum *attachments, ...@@ -160,9 +161,9 @@ gl::Error FramebufferGL::invalidateSub(size_t count, const GLenum *attachments,
return gl::Error(GL_NO_ERROR); 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); mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mFramebufferID);
mFunctions->clear(mask); mFunctions->clear(mask);
......
...@@ -34,7 +34,7 @@ class FramebufferGL : public FramebufferImpl ...@@ -34,7 +34,7 @@ class FramebufferGL : public FramebufferImpl
gl::Error invalidate(size_t count, const GLenum *attachments) override; 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 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 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 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; 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) ...@@ -628,7 +628,7 @@ void GL_APIENTRY Clear(GLbitfield mask)
return; return;
} }
Error error = framebufferObject->clear(context->getState(), mask); Error error = framebufferObject->clear(context->getData(), mask);
if (error.isError()) if (error.isError())
{ {
context->recordError(error); 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