Commit 6d708263 by Jamie Madill

Refactor Framebuffer::invalidateSub.

Use our new helper methods to simplify this method. BUG=angle:732 Change-Id: I56b837678d5efbc60de6de4bdb01447ca811e71d Reviewed-on: https://chromium-review.googlesource.com/213855Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarShannon Woods <shannonwoods@chromium.org>
parent 04994ec4
...@@ -571,56 +571,22 @@ void Framebuffer::invalidateSub(const Caps &caps, GLsizei numAttachments, const ...@@ -571,56 +571,22 @@ void Framebuffer::invalidateSub(const Caps &caps, GLsizei numAttachments, const
GLint x, GLint y, GLsizei width, GLsizei height) GLint x, GLint y, GLsizei width, GLsizei height)
{ {
ASSERT(completeness() == GL_FRAMEBUFFER_COMPLETE); ASSERT(completeness() == GL_FRAMEBUFFER_COMPLETE);
for (int i = 0; i < numAttachments; ++i) for (GLsizei attachIndex = 0; attachIndex < numAttachments; ++attachIndex)
{ {
rx::RenderTarget *renderTarget = NULL; GLenum attachmentTarget = attachments[attachIndex];
if (attachments[i] >= GL_COLOR_ATTACHMENT0 && attachments[i] <= GL_COLOR_ATTACHMENT15) gl::FramebufferAttachment *attachment =
{ (attachmentTarget == GL_DEPTH_STENCIL_ATTACHMENT) ? getDepthOrStencilbuffer() :
gl::FramebufferAttachment *attachment = getColorbuffer(attachments[i] - GL_COLOR_ATTACHMENT0); getAttachment(attachmentTarget);
if (attachment)
{
renderTarget = attachment->getRenderTarget();
}
}
else if (attachments[i] == GL_COLOR)
{
gl::FramebufferAttachment *attachment = getColorbuffer(0);
if (attachment)
{
renderTarget = attachment->getRenderTarget();
}
}
else
{
gl::FramebufferAttachment *attachment = NULL;
switch (attachments[i])
{
case GL_DEPTH_ATTACHMENT:
case GL_DEPTH:
attachment = mDepthbuffer;
break;
case GL_STENCIL_ATTACHMENT:
case GL_STENCIL:
attachment = mStencilbuffer;
break;
case GL_DEPTH_STENCIL_ATTACHMENT:
attachment = getDepthOrStencilbuffer();
break;
default:
UNREACHABLE();
}
if (attachment) if (attachment)
{
rx::RenderTarget *renderTarget = attachment->getRenderTarget();
if (renderTarget)
{ {
renderTarget = attachment->getRenderTarget(); renderTarget->invalidate(x, y, width, height);
} }
} }
if (renderTarget)
{
renderTarget->invalidate(x, y, width, height);
}
} }
} }
...@@ -702,6 +668,7 @@ FramebufferAttachment *DefaultFramebuffer::getAttachment(GLenum attachment) cons ...@@ -702,6 +668,7 @@ FramebufferAttachment *DefaultFramebuffer::getAttachment(GLenum attachment) cons
{ {
switch (attachment) switch (attachment)
{ {
case GL_COLOR:
case GL_BACK: case GL_BACK:
return getColorbuffer(0); return getColorbuffer(0);
case GL_DEPTH: case GL_DEPTH:
......
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