Changeset 139186 in webkit


Ignore:
Timestamp:
Jan 9, 2013 5:31:47 AM (11 years ago)
Author:
zeno.albisser@digia.com
Message:

[Qt] WebGL content is incomplete when using multiple canvas
https://bugs.webkit.org/show_bug.cgi?id=106313

While we are using double buffering for WebGL,
we do not use a drawable that implements a mechanism
for swapping buffers.
Therefore we have to make sure that all GL commands
have been executed properly before copying the texture
onto the GraphicsSurface.

Reviewed by Simon Hausmann.

  • platform/graphics/qt/GraphicsContext3DQt.cpp:

(WebCore::GraphicsContext3DPrivate::blitMultisampleFramebufferAndRestoreContext):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r139184 r139186  
     12013-01-09  Zeno Albisser  <zeno@webkit.org>
     2
     3        [Qt] WebGL content is incomplete when using multiple canvas
     4        https://bugs.webkit.org/show_bug.cgi?id=106313
     5
     6        While we are using double buffering for WebGL,
     7        we do not use a drawable that implements a mechanism
     8        for swapping buffers.
     9        Therefore we have to make sure that all GL commands
     10        have been executed properly before copying the texture
     11        onto the GraphicsSurface.
     12
     13        Reviewed by Simon Hausmann.
     14
     15        * platform/graphics/qt/GraphicsContext3DQt.cpp:
     16        (WebCore::GraphicsContext3DPrivate::blitMultisampleFramebufferAndRestoreContext):
     17
    1182013-01-09  Carlos Garcia Campos  <cgarcia@igalia.com>
    219
  • trunk/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp

    r138346 r139186  
    323323void GraphicsContext3DPrivate::blitMultisampleFramebufferAndRestoreContext() const
    324324{
    325     if (!m_context->m_attrs.antialias)
    326         return;
    327 
    328325    const QOpenGLContext* currentContext = QOpenGLContext::currentContext();
    329326    QSurface* currentSurface = 0;
     
    332329        m_platformContext->makeCurrent(m_surface);
    333330    }
    334     blitMultisampleFramebuffer();
     331
     332    if (m_context->m_attrs.antialias)
     333        blitMultisampleFramebuffer();
     334
     335    // While the context is still bound, make sure all the Framebuffer content is in finished state.
     336    // This is necessary as we are doing our own double buffering instead of using a drawable that provides swapBuffers.
     337    glFinish();
     338
    335339    if (currentContext && currentContext != m_platformContext)
    336340        const_cast<QOpenGLContext*>(currentContext)->makeCurrent(currentSurface);
Note: See TracChangeset for help on using the changeset viewer.