[chromium] Don't occlude on main-thread behind layers/surfaces with impl-thread animations
https://bugs.webkit.org/show_bug.cgi?id=81354
Patch by Dana Jansens <danakj@chromium.org> on 2012-03-18
Reviewed by Adrienne Walker.
Source/WebCore:
Layers and surfaces can have an animating opacity or translation on the
impl thread. In this case, the main thread does not know their actual
values, and treats these values as "unknowns". This means we can't use
them for marking areas of the screen as occluded, and we can't consider
a part of a layer occluded in a space that we can not reliably transform
to.
Unit test: CCOcclusionTrackerTestAnimationOpacity0OnMainThread
CCOcclusionTrackerTestAnimationOpacity1OnMainThread
CCOcclusionTrackerTestAnimationTranslateOnMainThread
* platform/graphics/chromium/cc/CCOcclusionTracker.cpp:
(WebCore::layerOpacityKnown):
(WebCore::layerTransformsToTargetKnown):
(WebCore::layerTransformsToScreenKnown):
(WebCore):
(WebCore::surfaceOpacityUnknown):
(WebCore::surfaceTransformsToTargetUnknown):
(WebCore::surfaceTransformsToScreenUnknown):
(WebCore::::finishedTargetRenderSurface):
(WebCore::contentToScreenSpaceTransform):
(WebCore::contentToTargetSurfaceTransform):
(WebCore::::markOccludedBehindLayer):
(WebCore::::occluded):
(WebCore::::unoccludedContentRect):
Source/WebKit/chromium:
* tests/CCOcclusionTrackerTest.cpp:
(WebCore):
(WebCore::addOpacityAnimationToLayer):
(WebCore::addTransformAnimationToLayer):
(CCOcclusionTrackerTestAnimationOpacity1OnMainThread):
(WebCore::CCOcclusionTrackerTestAnimationOpacity1OnMainThread::runMyTest):
(CCOcclusionTrackerTestAnimationOpacity0OnMainThread):
(WebCore::CCOcclusionTrackerTestAnimationOpacity0OnMainThread::runMyTest):
(CCOcclusionTrackerTestAnimationTranslateOnMainThread):
(WebCore::CCOcclusionTrackerTestAnimationTranslateOnMainThread::runMyTest):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@111145
268f45cc-cd09-0410-ab3c-
d52691b4dbfc