Changeset 85075 in webkit


Ignore:
Timestamp:
Apr 27, 2011 1:21:11 PM (13 years ago)
Author:
enne@google.com
Message:

2011-04-20 Adrienne Walker <enne@google.com>

Reviewed by Kenneth Russell.

[chromium] Fix incorrect scissor rect for layers that render into a rendersurface
https://bugs.webkit.org/show_bug.cgi?id=59020

  • compositing/flat-with-transformed-child-expected.txt: Added.
  • compositing/flat-with-transformed-child.html: Added.
  • platform/chromium-gpu-linux/compositing/flat-with-transformed-child-expected.checksum: Added.
  • platform/chromium-gpu-linux/compositing/flat-with-transformed-child-expected.png: Added.
  • platform/chromium/test_expectations.txt:

2011-04-20 Adrienne Walker <enne@google.com>

Reviewed by Kenneth Russell.

[chromium] Fix incorrect scissor rect for layers that render into a rendersurface
https://bugs.webkit.org/show_bug.cgi?id=59020

mapRect is the incorrect transform here. The parent scissor rect
needs to be projected into layer space instead.

Test: compositing/flat-with-transformed-child.html

  • platform/graphics/chromium/LayerRendererChromium.cpp: (WebCore::LayerRendererChromium::updatePropertiesAndRenderSurfaces):
Location:
trunk
Files:
4 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r85074 r85075  
     12011-04-20  Adrienne Walker  <enne@google.com>
     2
     3        Reviewed by Kenneth Russell.
     4
     5        [chromium] Fix incorrect scissor rect for layers that render into a rendersurface
     6        https://bugs.webkit.org/show_bug.cgi?id=59020
     7
     8        * compositing/flat-with-transformed-child-expected.txt: Added.
     9        * compositing/flat-with-transformed-child.html: Added.
     10        * platform/chromium-gpu-linux/compositing/flat-with-transformed-child-expected.checksum: Added.
     11        * platform/chromium-gpu-linux/compositing/flat-with-transformed-child-expected.png: Added.
     12        * platform/chromium/test_expectations.txt:
     13
    1142011-04-27  Martin Robinson  <mrobinson@igalia.com>
    215
  • trunk/LayoutTests/platform/chromium/test_expectations.txt

    r85060 r85075  
    39683968BUGDPRANKE WIN LINUX : media/video-controls-transformed.html = TEXT
    39693969BUGDPRANKE MAC CPU : media/video-controls-transformed.html = TEXT
     3970
     3971// Needs baselines everywhere
     3972BUGENNE : compositing/flat-with-transformed-child.html = FAIL
  • trunk/Source/WebCore/ChangeLog

    r85070 r85075  
     12011-04-20  Adrienne Walker  <enne@google.com>
     2
     3        Reviewed by Kenneth Russell.
     4
     5        [chromium] Fix incorrect scissor rect for layers that render into a rendersurface
     6        https://bugs.webkit.org/show_bug.cgi?id=59020
     7
     8        mapRect is the incorrect transform here.  The parent scissor rect
     9        needs to be projected into layer space instead.
     10
     11        Test: compositing/flat-with-transformed-child.html
     12
     13        * platform/graphics/chromium/LayerRendererChromium.cpp:
     14        (WebCore::LayerRendererChromium::updatePropertiesAndRenderSurfaces):
     15
    1162011-04-27  Pratik Solanki  <psolanki@apple.com>
    217
  • trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp

    r84582 r85075  
    629629        renderSurface->m_originTransform = layerOriginTransform;
    630630        if (layerOriginTransform.isInvertible() && drawLayer->superlayer()) {
     631            // Transform parent scissor rect into the space of the layer.
     632            IntRect parentScissor = drawLayer->superlayer()->scissorRect();
     633            parentScissor.intersect(layerOriginTransform.mapRect(transformedLayerRect));
    631634            TransformationMatrix parentToLayer = layerOriginTransform.inverse();
    632 
    633             drawLayer->setScissorRect(parentToLayer.mapRect(drawLayer->superlayer()->scissorRect()));
     635            IntRect scissor = parentToLayer.projectQuad(FloatQuad(FloatRect(parentScissor))).enclosingBoundingBox();
     636            scissor.intersect(transformedLayerRect);
     637            drawLayer->setScissorRect(scissor);
    634638        } else
    635639            drawLayer->setScissorRect(IntRect());
Note: See TracChangeset for help on using the changeset viewer.