[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

jamesr at google.com jamesr at google.com
Wed Dec 22 13:16:20 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 31edf9f3ebf5b0a02d634dd3c7e61c9b5bd19187
Author: jamesr at google.com <jamesr at google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Sep 10 03:25:25 2010 +0000

    2010-09-09  James Robinson  <jamesr at chromium.org>
    
            Reviewed by Kenneth Russell.
    
            [chromium] Don't call deleteTexture on a texture attached to an FBO that is not currently bound
            https://bugs.webkit.org/show_bug.cgi?id=45504
    
            The OpenGL semantics for glDeleteTextures() are that if one of the specified texture is attached
            to the currently bound FBO, that FBO's color attachment is removed.  However, if the specified
            texture is attached to a non-current FBO then OpenGL states explicitly that that FBO's color
            attachment is not cleared and that the texture stays alive even though its ID is no longer
            valid to use.  This is not the behavior we want in DrawingBuffer - we actually want the
            texture to be immediately deleted.  This patch makes sure the DrawingBuffer's FBO is bound
            before deleting its color attachment texture.
    
            * platform/graphics/chromium/DrawingBufferChromium.cpp:
            (WebCore::DrawingBuffer::~DrawingBuffer):
            (WebCore::DrawingBuffer::reset):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@67156 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 4065185..c2eb863 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -2,6 +2,25 @@
 
         Reviewed by Kenneth Russell.
 
+        [chromium] Don't call deleteTexture on a texture attached to an FBO that is not currently bound
+        https://bugs.webkit.org/show_bug.cgi?id=45504
+
+        The OpenGL semantics for glDeleteTextures() are that if one of the specified texture is attached
+        to the currently bound FBO, that FBO's color attachment is removed.  However, if the specified
+        texture is attached to a non-current FBO then OpenGL states explicitly that that FBO's color
+        attachment is not cleared and that the texture stays alive even though its ID is no longer
+        valid to use.  This is not the behavior we want in DrawingBuffer - we actually want the
+        texture to be immediately deleted.  This patch makes sure the DrawingBuffer's FBO is bound
+        before deleting its color attachment texture.
+
+        * platform/graphics/chromium/DrawingBufferChromium.cpp:
+        (WebCore::DrawingBuffer::~DrawingBuffer):
+        (WebCore::DrawingBuffer::reset):
+
+2010-09-09  James Robinson  <jamesr at chromium.org>
+
+        Reviewed by Kenneth Russell.
+
         [chromium] Chromium mac build should exclude all Skia files in platform/graphics/skia/, not just some
         https://bugs.webkit.org/show_bug.cgi?id=45516
 
diff --git a/WebCore/platform/graphics/chromium/DrawingBufferChromium.cpp b/WebCore/platform/graphics/chromium/DrawingBufferChromium.cpp
index 89e8705..64981ee 100644
--- a/WebCore/platform/graphics/chromium/DrawingBufferChromium.cpp
+++ b/WebCore/platform/graphics/chromium/DrawingBufferChromium.cpp
@@ -88,6 +88,8 @@ DrawingBuffer::~DrawingBuffer()
     if (m_internal->platformLayer)
         m_internal->platformLayer->setDrawingBuffer(0);
 #endif
+    m_context->bindFramebuffer(m_framebuffer);
+    m_context->deleteTexture(m_internal->offscreenColorTexture);
     m_context->deleteFramebuffer(m_framebuffer);
 }
 
@@ -113,9 +115,9 @@ void DrawingBuffer::reset(const IntSize& newSize)
     if (m_size == newSize)
         return;
     m_size = newSize;
-    m_context->deleteTexture(m_internal->offscreenColorTexture);
-    m_context->bindFramebuffer(m_framebuffer);
-    m_internal->offscreenColorTexture = generateColorTexture(m_context, m_size);
+
+    m_context->bindTexture(GraphicsContext3D::TEXTURE_2D, m_internal->offscreenColorTexture);
+    m_context->texImage2D(GraphicsContext3D::TEXTURE_2D, 0, GraphicsContext3D::RGBA, m_size.width(), m_size.height(), 0, GraphicsContext3D::RGBA, GraphicsContext3D::UNSIGNED_BYTE, 0);
 
 #if USE(ACCELERATED_COMPOSITING)
     if (m_internal->platformLayer)

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list