Bug 87565 - [BlackBerry] Update WebPageCompositor::render() API
Summary: [BlackBerry] Update WebPageCompositor::render() API
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit BlackBerry (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Arvid Nilsson
URL:
Keywords:
Depends on: 87564
Blocks: 87567
  Show dependency treegraph
 
Reported: 2012-05-25 22:16 PDT by Arvid Nilsson
Modified: 2012-05-28 10:29 PDT (History)
3 users (show)

See Also:


Attachments
Patch (50.44 KB, patch)
2012-05-27 06:08 PDT, Arvid Nilsson
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Arvid Nilsson 2012-05-25 22:16:05 PDT
This was several patches internally


2012-04-24  Arvid Nilsson  <anilsson@rim.com>
    
            Update WebPageCompositor::render() API
            RIM PR #151887
    
            Now we have a clearer picture of what parameters need to be available
            in order to render the web page.
    
            Rubber-stamped by Mike Lattanzio and Filip Spacek.
    
            * Api/WebPageCompositor.cpp:
            (BlackBerry::WebKit::WebPageCompositorPrivate::render):
            (BlackBerry::WebKit::WebPageCompositor::render):
            (WebKit):
            * Api/WebPageCompositor.h:
            * Api/WebPageCompositorClient.h:
            * Api/WebPageCompositor_p.h:
            (WebPageCompositorPrivate):


commit e93e215b039248e18c4ae38432671f3269a8c9cb
Author: Arvid Nilsson <anilsson@rim.com>
Date:   Fri May 4 00:43:15 2012 +0200

    Source/WebKit/blackberry:
    
    2012-05-03  Arvid Nilsson  <anilsson@rim.com>
    
            Plumb through new WebPageCompositor parameters to LayerRenderer
            PR #154334
    
            The new API allows the embedder to specify the root transform and many
            OpenGL related parameters to be used when rendering the web page.
    
            To honor the transform, we have to implement a way to composite the
            BackingStore output using a generic transform. This method,
            BackingStorePrivate::compositeContents(), uses a strategy that differs
            from blitContents(), because that one is optimized for software
            blitting, while this one is optimized for GPU rendering. Specifically,
            instead of drawing the checkerboard first, and the rendered subregions
            of the tile afterward, we draw the whole tile in one call, and then
            draw checkered regions on top, if any.
    
            Removed the blit generation condvar from the new code paths for drawing
            BackingStore output using a transform, since the condvar is ineffective
            in preventing flicker when we're not in charge of swapping the window.
            Instead, another synchronization solution will be implemented in the
            future.
    
            Reviewed by Filip Spacek.
    
            * Api/BackingStore.cpp:
            (BlackBerry::WebKit::BackingStorePrivate::render):
            (BlackBerry::WebKit::BackingStorePrivate::blitContents):
            (WebKit):
            (BlackBerry::WebKit::BackingStorePrivate::compositeContents):
            * Api/BackingStore_p.h:
            (WebCore):
            (BackingStorePrivate):

            * Api/WebPageCompositor.cpp:
            (BlackBerry::WebKit::WebPageCompositorPrivate::setContext):
            (BlackBerry::WebKit::WebPageCompositorPrivate::setRootLayer):
            (BlackBerry::WebKit::WebPageCompositorPrivate::animationFrameChanged):
            (BlackBerry::WebKit::WebPageCompositorPrivate::prepareFrame):
            (BlackBerry::WebKit::WebPageCompositorPrivate::render):
            (BlackBerry::WebKit::WebPageCompositorPrivate::drawLayers):
            * Api/WebPageCompositor.h:
            * Api/WebPageCompositor_p.h:
            (WebPageCompositorPrivate):
            * WebCoreSupport/ChromeClientBlackBerry.cpp:
    
    Source/WebCore:
    
    2012-05-03  Arvid Nilsson  <anilsson@rim.com>
    
            Plumb through new WebPageCompositor parameters to LayerRenderer
            PR #154334
    
            The new API allows the embedder to specify the root transform and many
            OpenGL related parameters.
    
            Also refactor the code to allow several sets of layers to be rendered,
            and to allow interleaving the rendering of layers with rendering of
            buffer and checkerboard.
    
            Reviewed by Filip Spacek.
    
            * platform/graphics/blackberry/LayerCompositingThread.cpp:
            (WebCore::LayerCompositingThread::drawTextures):
            (WebCore::LayerCompositingThread::drawSurface):
            * platform/graphics/blackberry/LayerRenderer.cpp:
            (WebCore::LayerRenderer::orthoMatrix):
            (WebCore::LayerRenderer::LayerRenderer):
            (WebCore::LayerRenderer::prepareFrame):
            (WebCore):
            (WebCore::LayerRenderer::setViewport):
            (WebCore::LayerRenderer::compositeLayers):
            (WebCore::LayerRenderer::compositeBuffer):

            (WebCore::LayerRenderer::drawCheckerboardPattern):
            (WebCore::LayerRenderer::drawLayersOnSurfaces):
            (WebCore::LayerRenderer::prepareFrameRecursive):
            (WebCore::LayerRenderer::updateLayersRecursive):
            (WebCore::LayerRenderer::compositeLayersRecursive):
            (WebCore::LayerRenderer::updateScissorIfNeeded):
            (WebCore::LayerRenderingResults::addHolePunchRect):
            * platform/graphics/blackberry/LayerRenderer.h:
            (LayerRenderer):
Comment 1 Arvid Nilsson 2012-05-25 22:17:50 PDT
And this one, in between the other two:

commit 65c17ae0be75eb6c0db392b649e36528e55364be
Author: Arvid Nilsson <anilsson@rim.com>
Date:   Wed Apr 25 14:27:15 2012 +0200

    2012-04-25  Arvid Nilsson  <anilsson@rim.com>
    
            Another compositing change, another simulator build fix
            PR #151887
    
            Reviewed by Torch BuildBot.
    
            * Api/WebPageCompositor.cpp:
            (BlackBerry::WebKit::WebPageCompositor::render):
Comment 2 Arvid Nilsson 2012-05-27 00:40:02 PDT
This one also belongs in here:

commit 5b2bef3baa081daf8757ed785ec3a20a6a7cfe4a
Author: Arvid Nilsson <anilsson@rim.com>
Date:   Tue May 8 23:52:21 2012 +0200

    2012-05-08  Arvid Nilsson  <anilsson@rim.com>
    
            Remove unused variables
    
            Reviewed by Jacky Jiang.
    
            * Api/BackingStore.cpp:
            (BlackBerry::WebKit::BackingStorePrivate::compositeContents):
Comment 3 Arvid Nilsson 2012-05-27 06:08:30 PDT
Created attachment 144228 [details]
Patch
Comment 4 Rob Buis 2012-05-28 08:45:34 PDT
Comment on attachment 144228 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=144228&action=review

Looks good.

> Source/WebCore/platform/graphics/blackberry/LayerRenderer.cpp:321
> +        return;

Could combine with above if.

> Source/WebCore/platform/graphics/blackberry/LayerRenderer.cpp:325
> +    for (size_t i = 0; i < sublayers.size(); i++) {

might want to stick to always using ++i or i++, now it is inconsistent.

> Source/WebCore/platform/graphics/blackberry/LayerRenderer.cpp:326
> +        float opacity = 1;

I am not sure this extra var is needed.
Comment 5 WebKit Review Bot 2012-05-28 10:29:28 PDT
Comment on attachment 144228 [details]
Patch

Clearing flags on attachment: 144228

Committed r118696: <http://trac.webkit.org/changeset/118696>
Comment 6 WebKit Review Bot 2012-05-28 10:29:32 PDT
All reviewed patches have been landed.  Closing bug.