Title: [100394] trunk/Source/WebCore
Revision
100394
Author
[email protected]
Date
2011-11-15 19:18:14 -0800 (Tue, 15 Nov 2011)

Log Message

Unreviewed, rolling out r100308.
http://trac.webkit.org/changeset/100308
https://bugs.webkit.org/show_bug.cgi?id=72450

Introduces WebGL conformance test regressions. (Requested by
twiz on #webkit).

Patch by Sheriff Bot <[email protected]> on 2011-11-15

* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::copyTexImage2D):
(WebCore::WebGLRenderingContext::copyTexSubImage2D):
(WebCore::WebGLRenderingContext::readPixels):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (100393 => 100394)


--- trunk/Source/WebCore/ChangeLog	2011-11-16 03:06:10 UTC (rev 100393)
+++ trunk/Source/WebCore/ChangeLog	2011-11-16 03:18:14 UTC (rev 100394)
@@ -1,3 +1,17 @@
+2011-11-15  Sheriff Bot  <[email protected]>
+
+        Unreviewed, rolling out r100308.
+        http://trac.webkit.org/changeset/100308
+        https://bugs.webkit.org/show_bug.cgi?id=72450
+
+        Introduces WebGL conformance test regressions. (Requested by
+        twiz on #webkit).
+
+        * html/canvas/WebGLRenderingContext.cpp:
+        (WebCore::WebGLRenderingContext::copyTexImage2D):
+        (WebCore::WebGLRenderingContext::copyTexSubImage2D):
+        (WebCore::WebGLRenderingContext::readPixels):
+
 2011-11-15  James Robinson  <[email protected]>
 
         Rollout http://trac.webkit.org/changeset/99813, caused some crashes in

Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp (100393 => 100394)


--- trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp	2011-11-16 03:06:10 UTC (rev 100393)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp	2011-11-16 03:18:14 UTC (rev 100394)
@@ -82,29 +82,6 @@
 
 namespace {
 
-    class ScopedDrawingBufferBinder {
-    public:
-        ScopedDrawingBufferBinder(DrawingBuffer* drawingBuffer, WebGLFramebuffer* framebufferBinding)
-            : m_drawingBuffer(drawingBuffer)
-            , m_framebufferBinding(framebufferBinding)
-        {
-            // Commit DrawingBuffer if needed (e.g., for multisampling)
-            if (!m_framebufferBinding && m_drawingBuffer)
-                m_drawingBuffer->commit();
-        }
-
-        ~ScopedDrawingBufferBinder()
-        {
-            // Restore DrawingBuffer if needed
-            if (!m_framebufferBinding && m_drawingBuffer)
-                m_drawingBuffer->bind();
-        }
-
-    private:
-        DrawingBuffer* m_drawingBuffer;
-        WebGLFramebuffer* m_framebufferBinding;
-    };
-
     Platform3DObject objectOrZero(WebGLObject* object)
     {
         return object ? object->object() : 0;
@@ -1187,10 +1164,20 @@
     }
     clearIfComposited();
     if (isResourceSafe()) {
-        ScopedDrawingBufferBinder(m_drawingBuffer.get(), m_framebufferBinding.get());
+        // Commit DrawingBuffer if needed (e.g., for multisampling)
+        if (!m_framebufferBinding && m_drawingBuffer)
+            m_drawingBuffer->commit();
+
         m_context->copyTexImage2D(target, level, internalformat, x, y, width, height, border);
+
+        // Restore DrawingBuffer if needed
+        if (!m_framebufferBinding && m_drawingBuffer)
+            m_drawingBuffer->bind();
     } else {
-        ScopedDrawingBufferBinder(m_drawingBuffer.get(), m_framebufferBinding.get());
+        // Commit DrawingBuffer if needed (e.g., for multisampling)
+        if (!m_framebufferBinding && m_drawingBuffer)
+            m_drawingBuffer->commit();
+
         GC3Dint clippedX, clippedY;
         GC3Dsizei clippedWidth, clippedHeight;
         if (clip2D(x, y, width, height, getBoundFramebufferWidth(), getBoundFramebufferHeight(), &clippedX, &clippedY, &clippedWidth, &clippedHeight)) {
@@ -1202,6 +1189,10 @@
             }
         } else
             m_context->copyTexImage2D(target, level, internalformat, x, y, width, height, border);
+
+        // Restore DrawingBuffer if needed
+        if (!m_framebufferBinding && m_drawingBuffer)
+            m_drawingBuffer->bind();
     }
     // FIXME: if the framebuffer is not complete, none of the below should be executed.
     tex->setLevelInfo(target, level, internalformat, width, height, GraphicsContext3D::UNSIGNED_BYTE);
@@ -1232,10 +1223,17 @@
         return;
     }
     clearIfComposited();
-    if (isResourceSafe()) {
-        ScopedDrawingBufferBinder(m_drawingBuffer.get(), m_framebufferBinding.get());
+    if (isResourceSafe())
+        // Commit DrawingBuffer if needed (e.g., for multisampling)
+        if (!m_framebufferBinding && m_drawingBuffer)
+            m_drawingBuffer->commit();
+
         m_context->copyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
-    } else {
+
+        // Restore DrawingBuffer if needed
+        if (!m_framebufferBinding && m_drawingBuffer)
+            m_drawingBuffer->bind();
+    else {
         GC3Dint clippedX, clippedY;
         GC3Dsizei clippedWidth, clippedHeight;
         if (clip2D(x, y, width, height, getBoundFramebufferWidth(), getBoundFramebufferHeight(), &clippedX, &clippedY, &clippedWidth, &clippedHeight)) {
@@ -1258,13 +1256,27 @@
             }
             m_context->texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, zero.get());
             if (clippedWidth > 0 && clippedHeight > 0) {
-                ScopedDrawingBufferBinder(m_drawingBuffer.get(), m_framebufferBinding.get());
+                // Commit DrawingBuffer if needed (e.g., for multisampling)
+                if (!m_framebufferBinding && m_drawingBuffer)
+                    m_drawingBuffer->commit();
+
                 m_context->copyTexSubImage2D(target, level, xoffset + clippedX - x, yoffset + clippedY - y,
                                              clippedX, clippedY, clippedWidth, clippedHeight);
+
+               // Restore DrawingBuffer if needed
+               if (!m_framebufferBinding && m_drawingBuffer)
+                  m_drawingBuffer->bind();
             }
         } else {
-            ScopedDrawingBufferBinder(m_drawingBuffer.get(), m_framebufferBinding.get());
+            // Commit DrawingBuffer if needed (e.g., for multisampling)
+            if (!m_framebufferBinding && m_drawingBuffer)
+                m_drawingBuffer->commit();
+
             m_context->copyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
+
+            // Restore DrawingBuffer if needed
+            if (!m_framebufferBinding && m_drawingBuffer)
+                m_drawingBuffer->bind();
         }
     }
     cleanupAfterGraphicsCall(false);
@@ -3029,11 +3041,16 @@
     clearIfComposited();
     void* data = ""
 
-    {
-        ScopedDrawingBufferBinder(m_drawingBuffer.get(), m_framebufferBinding.get());
-        m_context->readPixels(x, y, width, height, format, type, data);
-    }
+    // Commit DrawingBuffer if needed (e.g., for multisampling)
+    if (!m_framebufferBinding && m_drawingBuffer)
+        m_drawingBuffer->commit();
 
+    m_context->readPixels(x, y, width, height, format, type, data);
+
+    // Restore DrawingBuffer if needed
+    if (!m_framebufferBinding && m_drawingBuffer)
+        m_drawingBuffer->bind();
+
 #if OS(DARWIN)
     // FIXME: remove this section when GL driver bug on Mac is fixed, i.e.,
     // when alpha is off, readPixels should set alpha to 255 instead of 0.
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to