Remove Renderer pointer from FBO attachments.
Removing the Renderer pointer is one step towards making FBO
attachments a minimal state object. Eventually we will be able
to store them as arrays instead of arrays of pointers.
BUG=angle:660
Change-Id: Idce34e06c339ecb18c60fef12d2ed911d0c4e0f6
Reviewed-on: https://chromium-review.googlesource.com/201835
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
diff --git a/src/libGLESv2/Framebuffer.cpp b/src/libGLESv2/Framebuffer.cpp
index 1fba656..806c9a0 100644
--- a/src/libGLESv2/Framebuffer.cpp
+++ b/src/libGLESv2/Framebuffer.cpp
@@ -132,7 +132,7 @@
FramebufferAttachmentImpl *attachmentImpl = createAttachmentImpl(type, colorbuffer, level, layer);
if (attachmentImpl)
{
- FramebufferAttachment *newAttachment = new FramebufferAttachment(mRenderer, colorbuffer, attachmentImpl);
+ FramebufferAttachment *newAttachment = new FramebufferAttachment(colorbuffer, attachmentImpl);
mColorbuffers[colorAttachment].set(newAttachment, type, level, layer);
}
else
@@ -146,7 +146,7 @@
FramebufferAttachmentImpl *attachmentImpl = createAttachmentImpl(type, depthbuffer, level, layer);
if (attachmentImpl)
{
- FramebufferAttachment *newAttachment = new FramebufferAttachment(mRenderer, depthbuffer, attachmentImpl);
+ FramebufferAttachment *newAttachment = new FramebufferAttachment(depthbuffer, attachmentImpl);
mDepthbuffer.set(newAttachment, type, level, layer);
}
else
@@ -160,7 +160,7 @@
FramebufferAttachmentImpl *attachmentImpl = createAttachmentImpl(type, stencilbuffer, level, layer);
if (attachmentImpl)
{
- FramebufferAttachment *newAttachment = new FramebufferAttachment(mRenderer, stencilbuffer, attachmentImpl);
+ FramebufferAttachment *newAttachment = new FramebufferAttachment(stencilbuffer, attachmentImpl);
mStencilbuffer.set(newAttachment, type, level, layer);
}
else
@@ -177,8 +177,9 @@
FramebufferAttachmentImpl *attachmentImpl = createAttachmentImpl(type, depthStencilBuffer, level, layer);
if (attachmentImpl)
{
- FramebufferAttachment *newAttachment = new FramebufferAttachment(mRenderer, depthStencilBuffer, attachmentImpl);
- if (newAttachment->getDepthSize() > 0 && newAttachment->getStencilSize() > 0)
+ FramebufferAttachment *newAttachment = new FramebufferAttachment(depthStencilBuffer, attachmentImpl);
+ int clientVersion = mRenderer->getCurrentClientVersion();
+ if (newAttachment->getDepthSize(clientVersion) > 0 && newAttachment->getStencilSize(clientVersion) > 0)
{
mDepthbuffer.set(newAttachment, type, level, layer);
mStencilbuffer.set(newAttachment, type, level, layer);
@@ -445,7 +446,8 @@
if (stencilbufferObject)
{
- return stencilbufferObject->getStencilSize() > 0;
+ int clientVersion = mRenderer->getCurrentClientVersion();
+ return stencilbufferObject->getStencilSize(clientVersion) > 0;
}
}
@@ -717,11 +719,11 @@
: Framebuffer(renderer)
{
Renderbuffer *colorRenderbuffer = new Renderbuffer(mRenderer, 0, colorbuffer);
- FramebufferAttachment *colorAttachment = new FramebufferAttachment(mRenderer, 0, new RenderbufferAttachment(colorRenderbuffer));
+ FramebufferAttachment *colorAttachment = new FramebufferAttachment(0, new RenderbufferAttachment(colorRenderbuffer));
mColorbuffers[0].set(colorAttachment, GL_RENDERBUFFER, 0, 0);
Renderbuffer *depthStencilRenderbuffer = new Renderbuffer(mRenderer, 0, depthStencil);
- FramebufferAttachment *depthStencilAttachment = new FramebufferAttachment(mRenderer, 0, new RenderbufferAttachment(depthStencilRenderbuffer));
+ FramebufferAttachment *depthStencilAttachment = new FramebufferAttachment(0, new RenderbufferAttachment(depthStencilRenderbuffer));
mDepthbuffer.set(depthStencilAttachment, (depthStencilRenderbuffer->getDepthSize() != 0) ? GL_RENDERBUFFER : GL_NONE, 0, 0);
mStencilbuffer.set(depthStencilAttachment, (depthStencilRenderbuffer->getStencilSize() != 0) ? GL_RENDERBUFFER : GL_NONE, 0, 0);