diff options
author | Ben Murdoch <benm@google.com> | 2014-12-08 16:19:44 +0000 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2014-12-08 16:19:44 +0000 |
commit | 00baf3d9c5dfa87fdf81ae9e7b10a35d811b65e2 (patch) | |
tree | 5264a75acba31bc436ba3188e0259a26e44fa0a9 | |
parent | 03ad9a112c6f69f368a54914cb8dd13181dfb408 (diff) | |
parent | 04ab0eb41f1bb02eb722ce662bd9e6f47cca83a3 (diff) | |
download | angle-00baf3d9c5dfa87fdf81ae9e7b10a35d811b65e2.tar.gz |
Merge third_party/angle from https://chromium.googlesource.com/angle/angle.git at 04ab0eb41f1bb02eb722ce662bd9e6f47cca83a3
This commit was generated by merge_from_chromium.py.
Change-Id: I5c199facfc087cc2b58a220fde6facfdd4b13668
-rw-r--r-- | src/libGLESv2/Framebuffer.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/libGLESv2/Framebuffer.cpp b/src/libGLESv2/Framebuffer.cpp index 5b21433f..64617a53 100644 --- a/src/libGLESv2/Framebuffer.cpp +++ b/src/libGLESv2/Framebuffer.cpp @@ -637,12 +637,23 @@ DefaultFramebuffer::DefaultFramebuffer(rx::Renderer *renderer, Colorbuffer *colo Renderbuffer *colorRenderbuffer = new Renderbuffer(0, colorbuffer); mColorbuffers[0] = new RenderbufferAttachment(GL_BACK, colorRenderbuffer); - Renderbuffer *depthStencilBuffer = new Renderbuffer(0, depthStencil); + GLenum depthStencilActualFormat = depthStencil->getActualFormat(); + const gl::InternalFormat &depthStencilFormatInfo = GetInternalFormatInfo(depthStencilActualFormat); - // Make a new attachment objects to ensure we do not double-delete - // See angle issue 686 - mDepthbuffer = (depthStencilBuffer->getDepthSize() != 0 ? new RenderbufferAttachment(GL_DEPTH_ATTACHMENT, depthStencilBuffer) : NULL); - mStencilbuffer = (depthStencilBuffer->getStencilSize() != 0 ? new RenderbufferAttachment(GL_STENCIL_ATTACHMENT, depthStencilBuffer) : NULL); + if (depthStencilFormatInfo.depthBits != 0 || depthStencilFormatInfo.stencilBits != 0) + { + Renderbuffer *depthStencilBuffer = new Renderbuffer(0, depthStencil); + + // Make a new attachment objects to ensure we do not double-delete + // See angle issue 686 + mDepthbuffer = (depthStencilFormatInfo.depthBits != 0 ? new RenderbufferAttachment(GL_DEPTH_ATTACHMENT, depthStencilBuffer) : NULL); + mStencilbuffer = (depthStencilFormatInfo.stencilBits != 0 ? new RenderbufferAttachment(GL_STENCIL_ATTACHMENT, depthStencilBuffer) : NULL); + } + else + { + // This method transfers ownership, so delete the unused storage if we don't keep it. + SafeDelete(depthStencil); + } mDrawBufferStates[0] = GL_BACK; mReadBufferState = GL_BACK; |