RESOLVED FIXED 87565
[BlackBerry] Update WebPageCompositor::render() API
https://bugs.webkit.org/show_bug.cgi?id=87565
Summary [BlackBerry] Update WebPageCompositor::render() API
Arvid Nilsson
Reported 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):
Attachments
Patch (50.44 KB, patch)
2012-05-27 06:08 PDT, Arvid Nilsson
no flags
Arvid Nilsson
Comment 1 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):
Arvid Nilsson
Comment 2 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):
Arvid Nilsson
Comment 3 2012-05-27 06:08:30 PDT
Rob Buis
Comment 4 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.
WebKit Review Bot
Comment 5 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>
WebKit Review Bot
Comment 6 2012-05-28 10:29:32 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.