Index: cc/layer_tree_host_impl.cc |
diff --git a/cc/layer_tree_host_impl.cc b/cc/layer_tree_host_impl.cc |
index 55f6452ded8bc55344b72f71dc08478de00335a7..d9859fbd595b4fc6bcbe3fb1f87ae55abb50e96b 100644 |
--- a/cc/layer_tree_host_impl.cc |
+++ b/cc/layer_tree_host_impl.cc |
@@ -491,8 +491,6 @@ static void appendQuadsToFillScreen(RenderPass* targetRenderPass, LayerImpl* roo |
// doesn't have any bounds and so can't generate this itself. |
// FIXME: Make the gutter quads generated by the solid color layer (make it smarter about generating quads to fill unoccluded areas). |
- DCHECK(rootLayer->screenSpaceTransform().IsInvertible()); |
- |
gfx::Rect rootTargetRect = rootLayer->renderSurface()->contentRect(); |
float opacity = 1; |
SharedQuadState* sharedQuadState = quadCuller.useSharedQuadState(SharedQuadState::Create()); |
@@ -504,10 +502,14 @@ static void appendQuadsToFillScreen(RenderPass* targetRenderPass, LayerImpl* roo |
opacity); |
AppendQuadsData appendQuadsData; |
- gfx::Transform transformToLayerSpace = MathUtil::inverse(rootLayer->screenSpaceTransform()); |
+ |
+ DCHECK(rootLayer->screenSpaceTransform().IsInvertible()); |
danakj
2013/01/04 21:56:07
This DCHECK is redundant with the DCHECK(didInvert
|
+ gfx::Transform transformToLayerSpace(gfx::Transform::kSkipInitialization); |
+ bool didInvert = rootLayer->screenSpaceTransform().GetInverse(&transformToLayerSpace); |
+ DCHECK(didInvert); |
for (Region::Iterator fillRects(fillRegion); fillRects.has_rect(); fillRects.next()) { |
// The root layer transform is composed of translations and scales only, |
- // no perspective, so mapping is sufficient. |
+ // no perspective, so mapping is sufficient (as opposed to projecting). |
danakj
2013/01/04 21:56:07
^_^
|
gfx::Rect layerRect = MathUtil::mapClippedRect(transformToLayerSpace, fillRects.rect()); |
// Skip the quad culler and just append the quads directly to avoid |
// occlusion checks. |
@@ -1277,7 +1279,9 @@ static gfx::Vector2dF scrollLayerWithViewportSpaceDelta(PinchZoomViewport* viewp |
// Layers with non-invertible screen space transforms should not have passed the scroll hit |
// test in the first place. |
DCHECK(layerImpl.screenSpaceTransform().IsInvertible()); |
- gfx::Transform inverseScreenSpaceTransform = MathUtil::inverse(layerImpl.screenSpaceTransform()); |
+ gfx::Transform inverseScreenSpaceTransform(gfx::Transform::kSkipInitialization); |
+ bool didInvert = layerImpl.screenSpaceTransform().GetInverse(&inverseScreenSpaceTransform); |
+ DCHECK(didInvert); |
danakj
2013/01/04 21:56:07
This is going to potentially bomb when we start im
|
gfx::PointF screenSpacePoint = gfx::ScalePoint(viewportPoint, scaleFromViewportToScreenSpace); |