Changeset 100308 in webkit


Ignore:
Timestamp:
Nov 15, 2011 12:21:09 PM (12 years ago)
Author:
commit-queue@webkit.org
Message:

Patch removing duplicated code in the setup of the DrawingBuffer used
to host the back-buffer for WebGL contents.
https://bugs.webkit.org/show_bug.cgi?id=72327

Patch by Jeff Timanus <twiz@chromium.org> on 2011-11-15
Reviewed by Julien Chaffraix.

  • html/canvas/WebGLRenderingContext.cpp:

(WebCore::WebGLRenderingContext::copyTexImage2D):
(WebCore::WebGLRenderingContext::copyTexSubImage2D):
(WebCore::WebGLRenderingContext::readPixels):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r100307 r100308  
     12011-11-15  Jeff Timanus  <twiz@chromium.org>
     2
     3        Patch removing duplicated code in the setup of the DrawingBuffer used
     4        to host the back-buffer for WebGL contents.
     5        https://bugs.webkit.org/show_bug.cgi?id=72327
     6
     7        Reviewed by Julien Chaffraix.
     8
     9        * html/canvas/WebGLRenderingContext.cpp:
     10        (WebCore::WebGLRenderingContext::copyTexImage2D):
     11        (WebCore::WebGLRenderingContext::copyTexSubImage2D):
     12        (WebCore::WebGLRenderingContext::readPixels):
     13
    1142011-11-15  Eugene Nalimov  <enal@google.com>
    215
  • trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp

    r100191 r100308  
    8383namespace {
    8484
     85    class ScopedDrawingBufferBinder {
     86    public:
     87        ScopedDrawingBufferBinder(DrawingBuffer* drawingBuffer, WebGLFramebuffer* framebufferBinding)
     88            : m_drawingBuffer(drawingBuffer)
     89            , m_framebufferBinding(framebufferBinding)
     90        {
     91            // Commit DrawingBuffer if needed (e.g., for multisampling)
     92            if (!m_framebufferBinding && m_drawingBuffer)
     93                m_drawingBuffer->commit();
     94        }
     95
     96        ~ScopedDrawingBufferBinder()
     97        {
     98            // Restore DrawingBuffer if needed
     99            if (!m_framebufferBinding && m_drawingBuffer)
     100                m_drawingBuffer->bind();
     101        }
     102
     103    private:
     104        DrawingBuffer* m_drawingBuffer;
     105        WebGLFramebuffer* m_framebufferBinding;
     106    };
     107
    85108    Platform3DObject objectOrZero(WebGLObject* object)
    86109    {
     
    11651188    clearIfComposited();
    11661189    if (isResourceSafe()) {
    1167         // Commit DrawingBuffer if needed (e.g., for multisampling)
    1168         if (!m_framebufferBinding && m_drawingBuffer)
    1169             m_drawingBuffer->commit();
    1170 
     1190        ScopedDrawingBufferBinder(m_drawingBuffer.get(), m_framebufferBinding.get());
    11711191        m_context->copyTexImage2D(target, level, internalformat, x, y, width, height, border);
    1172 
    1173         // Restore DrawingBuffer if needed
    1174         if (!m_framebufferBinding && m_drawingBuffer)
    1175             m_drawingBuffer->bind();
    11761192    } else {
    1177         // Commit DrawingBuffer if needed (e.g., for multisampling)
    1178         if (!m_framebufferBinding && m_drawingBuffer)
    1179             m_drawingBuffer->commit();
    1180 
     1193        ScopedDrawingBufferBinder(m_drawingBuffer.get(), m_framebufferBinding.get());
    11811194        GC3Dint clippedX, clippedY;
    11821195        GC3Dsizei clippedWidth, clippedHeight;
     
    11901203        } else
    11911204            m_context->copyTexImage2D(target, level, internalformat, x, y, width, height, border);
    1192 
    1193         // Restore DrawingBuffer if needed
    1194         if (!m_framebufferBinding && m_drawingBuffer)
    1195             m_drawingBuffer->bind();
    11961205    }
    11971206    // FIXME: if the framebuffer is not complete, none of the below should be executed.
     
    12241233    }
    12251234    clearIfComposited();
    1226     if (isResourceSafe())
    1227         // Commit DrawingBuffer if needed (e.g., for multisampling)
    1228         if (!m_framebufferBinding && m_drawingBuffer)
    1229             m_drawingBuffer->commit();
    1230 
     1235    if (isResourceSafe()) {
     1236        ScopedDrawingBufferBinder(m_drawingBuffer.get(), m_framebufferBinding.get());
    12311237        m_context->copyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
    1232 
    1233         // Restore DrawingBuffer if needed
    1234         if (!m_framebufferBinding && m_drawingBuffer)
    1235             m_drawingBuffer->bind();
    1236     else {
     1238    } else {
    12371239        GC3Dint clippedX, clippedY;
    12381240        GC3Dsizei clippedWidth, clippedHeight;
     
    12571259            m_context->texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, zero.get());
    12581260            if (clippedWidth > 0 && clippedHeight > 0) {
    1259                 // Commit DrawingBuffer if needed (e.g., for multisampling)
    1260                 if (!m_framebufferBinding && m_drawingBuffer)
    1261                     m_drawingBuffer->commit();
    1262 
     1261                ScopedDrawingBufferBinder(m_drawingBuffer.get(), m_framebufferBinding.get());
    12631262                m_context->copyTexSubImage2D(target, level, xoffset + clippedX - x, yoffset + clippedY - y,
    12641263                                             clippedX, clippedY, clippedWidth, clippedHeight);
    1265 
    1266                // Restore DrawingBuffer if needed
    1267                if (!m_framebufferBinding && m_drawingBuffer)
    1268                   m_drawingBuffer->bind();
    12691264            }
    12701265        } else {
    1271             // Commit DrawingBuffer if needed (e.g., for multisampling)
    1272             if (!m_framebufferBinding && m_drawingBuffer)
    1273                 m_drawingBuffer->commit();
    1274 
     1266            ScopedDrawingBufferBinder(m_drawingBuffer.get(), m_framebufferBinding.get());
    12751267            m_context->copyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
    1276 
    1277             // Restore DrawingBuffer if needed
    1278             if (!m_framebufferBinding && m_drawingBuffer)
    1279                 m_drawingBuffer->bind();
    12801268        }
    12811269    }
     
    30423030    void* data = pixels->baseAddress();
    30433031
    3044     // Commit DrawingBuffer if needed (e.g., for multisampling)
    3045     if (!m_framebufferBinding && m_drawingBuffer)
    3046         m_drawingBuffer->commit();
    3047 
    3048     m_context->readPixels(x, y, width, height, format, type, data);
    3049 
    3050     // Restore DrawingBuffer if needed
    3051     if (!m_framebufferBinding && m_drawingBuffer)
    3052         m_drawingBuffer->bind();
     3032    {
     3033        ScopedDrawingBufferBinder(m_drawingBuffer.get(), m_framebufferBinding.get());
     3034        m_context->readPixels(x, y, width, height, format, type, data);
     3035    }
    30533036
    30543037#if OS(DARWIN)
Note: See TracChangeset for help on using the changeset viewer.