Index: cc/gl_renderer.cc |
diff --git a/cc/gl_renderer.cc b/cc/gl_renderer.cc |
index 8f03721dc53f36b7230d9a0f190145ef6830737b..54eef96e72702b364769cb97a438d2a338211053 100644 |
--- a/cc/gl_renderer.cc |
+++ b/cc/gl_renderer.cc |
@@ -521,10 +521,10 @@ void GLRenderer::drawRenderPassQuad(DrawingFrame& frame, const RenderPassDrawQua |
gfx::Transform contentsDeviceTransform = MathUtil::to2dTransform(frame.windowMatrix * frame.projectionMatrix * quadRectMatrix); |
// Can only draw surface if device matrix is invertible. |
- if (!contentsDeviceTransform.IsInvertible()) |
+ gfx::Transform contentsDeviceTransformInverse(gfx::Transform::kSkipInitialization); |
+ if (!contentsDeviceTransform.GetInverse(&contentsDeviceTransformInverse)) |
return; |
- gfx::Transform contentsDeviceTransformInverse = MathUtil::inverse(contentsDeviceTransform); |
scoped_ptr<ScopedResource> backgroundTexture = drawBackgroundFilters( |
frame, quad, contentsDeviceTransform, contentsDeviceTransformInverse); |
@@ -861,8 +861,11 @@ void GLRenderer::drawTileQuad(const DrawingFrame& frame, const TileDrawQuad* qua |
LayerQuad deviceQuad(leftEdge, topEdge, rightEdge, bottomEdge); |
// Map device space quad to local space. deviceTransform has no 3d component since it was generated with to2dTransform() so we don't need to project. |
- gfx::Transform deviceTransformInverse = MathUtil::inverse(deviceTransform); |
- localQuad = MathUtil::mapQuad(deviceTransformInverse, deviceQuad.ToQuadF(), clipped); |
+ // We should have already checked that the transform was uninvertible above. |
+ gfx::Transform inverseDeviceTransform(gfx::Transform::kSkipInitialization); |
+ bool didInvert = deviceTransform.GetInverse(&inverseDeviceTransform); |
+ DCHECK(didInvert); |
+ localQuad = MathUtil::mapQuad(inverseDeviceTransform, deviceQuad.ToQuadF(), clipped); |
// We should not DCHECK(!clipped) here, because anti-aliasing inflation may cause deviceQuad to become |
// clipped. To our knowledge this scenario does not need to be handled differently than the unclipped case. |