[Webkit-unassigned] [Bug 91537] Textures drawn during occlusion are incorrectly re-used when unoccluded.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Jul 18 13:41:57 PDT 2012


https://bugs.webkit.org/show_bug.cgi?id=91537





--- Comment #4 from Adrienne Walker <enne at google.com>  2012-07-18 13:41:56 PST ---
(From update of attachment 153010)
View in context: https://bugs.webkit.org/attachment.cgi?id=153010&action=review

> Source/WebCore/ChangeLog:3
> +        Textures drawn during occlusion are incorrectly re-used when unoccluded.

[chromium]

> Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:148
> +        : CCScopedTexture(allocator),
> +          m_isComplete(false)

style nit: Comma vertically aligned with colon.

> Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:445
> +    if (hasOcclusionFromOutsideTargetSurface)
> +        *hasOcclusionFromOutsideTargetSurface = (unoccludedInScreen != unoccludedInTarget);

I think you should be checking the occlusion on m_stack[lastIndex - 1].occlusionInScreen, which is the external occlusion for this surface prior to considering anything in the surface.  Any layers that draw into this target surface will update m_stack.last().occlusionInScreen as they go (if the transform to the screen is known), which muddles internal and external occlusion.

> Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:56
> +    , m_forSurface(forSurface)

I feel like this just shifts complexity around, but doesn't result in any net simplification.  On the other hand, CCQuadCuller is so tied to the occlusion iteration that I can't come up with any example for when you'd ever want to call append and appendSurface on the same quad culler.  Eh.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list