| Index: Source/core/html/canvas/WebGL2RenderingContextBase.cpp
|
| diff --git a/Source/core/html/canvas/WebGL2RenderingContextBase.cpp b/Source/core/html/canvas/WebGL2RenderingContextBase.cpp
|
| index 4e025b4acbe8da5f8e6ac892706f3ae99d8f4600..b2f850d494dd2ee3cb26a9a0bef9bcd9cd995cd6 100644
|
| --- a/Source/core/html/canvas/WebGL2RenderingContextBase.cpp
|
| +++ b/Source/core/html/canvas/WebGL2RenderingContextBase.cpp
|
| @@ -1451,6 +1451,31 @@ void WebGL2RenderingContextBase::bindFramebuffer(GLenum target, WebGLFramebuffer
|
| setFramebuffer(target, buffer);
|
| }
|
|
|
| +void WebGL2RenderingContextBase::deleteFramebuffer(WebGLFramebuffer* framebuffer)
|
| +{
|
| + if (!deleteObject(framebuffer))
|
| + return;
|
| + GLenum target = 0;
|
| + if (framebuffer == m_framebufferBinding) {
|
| + if (framebuffer == m_readFramebufferBinding) {
|
| + target = GL_FRAMEBUFFER;
|
| + m_framebufferBinding = nullptr;
|
| + m_readFramebufferBinding = nullptr;
|
| + } else {
|
| + target = GL_DRAW_FRAMEBUFFER;
|
| + m_framebufferBinding = nullptr;
|
| + }
|
| + } else if (framebuffer == m_readFramebufferBinding) {
|
| + target = GL_READ_FRAMEBUFFER;
|
| + m_readFramebufferBinding = nullptr;
|
| + }
|
| + if (target) {
|
| + drawingBuffer()->setFramebufferBinding(target, 0);
|
| + // Have to call drawingBuffer()->bind() here to bind back to internal fbo.
|
| + drawingBuffer()->bind(target);
|
| + }
|
| +}
|
| +
|
| ScriptValue WebGL2RenderingContextBase::getParameter(ScriptState* scriptState, GLenum pname)
|
| {
|
| if (isContextLost())
|
| @@ -1838,4 +1863,24 @@ ScriptValue WebGL2RenderingContextBase::getTexParameter(ScriptState* scriptState
|
| }
|
| }
|
|
|
| +void WebGL2RenderingContextBase::restoreCurrentFramebuffer()
|
| +{
|
| + bindFramebuffer(GL_DRAW_FRAMEBUFFER, m_framebufferBinding.get());
|
| + bindFramebuffer(GL_READ_FRAMEBUFFER, m_readFramebufferBinding.get());
|
| +}
|
| +
|
| +GLenum WebGL2RenderingContextBase::boundFramebufferColorFormat()
|
| +{
|
| + if (m_readFramebufferBinding && m_readFramebufferBinding->object())
|
| + return m_readFramebufferBinding->colorBufferFormat();
|
| + if (m_requestedAttributes.alpha())
|
| + return GL_RGBA;
|
| + return GL_RGB;
|
| +}
|
| +
|
| +GLenum WebGL2RenderingContextBase::getDrawFramebufferTarget()
|
| +{
|
| + return GL_DRAW_FRAMEBUFFER;
|
| +}
|
| +
|
| } // namespace blink
|
|
|