[Webkit-unassigned] [Bug 43992] [chromium] scrolling issues when accelerated compositor is enabled

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Aug 16 17:23:48 PDT 2010


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





--- Comment #4 from Vangelis Kokkevis <vangelis at chromium.org>  2010-08-16 17:23:48 PST ---
(From update of attachment 64524)

> diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
> index 163f6c5..ef0d9a6 100644
> --- a/WebCore/ChangeLog
> +++ b/WebCore/ChangeLog
> @@ -1,3 +1,32 @@
> +2010-08-16  Alexey Marinichev  <amarinichev at chromium.org>
> +
> +        Reviewed by NOBODY (OOPS!).
> +
> +        [chromium] scrolling issues when accelerated compositor is enabled
> +        https://bugs.webkit.org/show_bug.cgi?id=43992
> +
> +        No new tests. (OOPS!)
> +
> +        * platform/graphics/chromium/LayerRendererChromium.cpp:
> +        (WebCore::LayerRendererChromium::drawLayers):
> +
> +2010-08-16  Alexey Marinichev  <amarinichev at chromium.org>
> +
> +        Reviewed by NOBODY (OOPS!).
> +
> +        [chromium] scrolling issues when accelerated compositor is enabled
> +        https://bugs.webkit.org/show_bug.cgi?id=43992
> +
> +        Corrected scroll position not being updated, and an off-by-half error.
> +
> +        To test the former, follow instructions in the bug.  To test the
> +        latter, change GL_NEAREST to GL_LINEAR in LayerRendererChromium.cpp.
> +        Scrolling should work properly for all window sizes, without blurring
> +        images and shifting them to the left.
> +
> +        * platform/graphics/chromium/LayerRendererChromium.cpp:
> +        (WebCore::LayerRendererChromium::drawLayers):
> +
>  2010-08-16  Paul Sawaya  <psawaya at apple.com>
>  
>          Reviewed by Chris Marrin.
> diff --git a/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp b/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
> index 2f70efa..abaa274 100644
> --- a/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
> +++ b/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
> @@ -390,8 +390,8 @@ void LayerRendererChromium::drawLayers(const IntRect& updateRect, const IntRect&
>  #error "Need to implement for your platform."
>  #endif
>  
> -        scrolledLayerMatrix.translate3d((int)floorf(0.5 * visibleRect.width()) - scrollDelta.x(),
> -            (int)floorf(0.5 * visibleRect.height()) + scaleFactor * scrollDelta.y(), 0);
> +        scrolledLayerMatrix.translate3d((0.5 * visibleRect.width()) - scrollDelta.x(),
> +            (0.5 * visibleRect.height()) + scaleFactor * scrollDelta.y(), 0);
>          scrolledLayerMatrix.scale3d(1, -1, 1);
>  
>          // Switch shaders to avoid RGB swizzling.
> @@ -406,7 +406,10 @@ void LayerRendererChromium::drawLayers(const IntRect& updateRect, const IntRect&
>  
>          checkGLError();
>          m_scrollPosition = scrollPosition;
> -    }
> +    } else if (abs(scrollDelta.y()) > contentRect.height() || abs(scrollDelta.x()) > contentRect.width())
> +        // Scrolling larger than the contentRect size does not preserve any of the pixels, so there is
> +        // no need to copy framebuffer pixels back into the texture.
> +        m_scrollPosition = scrollPosition;
>  
>      // FIXME: The following check should go away when the compositor renders independently from its own thread.
>      // Ignore a 1x1 update rect at (0, 0) as that's used a way to kick off a redraw for the compositor.

WebCore/ChangeLog:11
 +          (WebCore::LayerRendererChromium::drawLayers):
There are two entries in the ChangeLog for this change.

WebCore/platform/graphics/chromium/LayerRendererChromium.cpp: 
 +          scrolledLayerMatrix.translate3d((int)floorf(0.5 * visibleRect.width()) - scrollDelta.x(),
Maybe remove the parenthesis around the 0.5* .. expressions as they're not needed anymore?

-- 
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