| Index: cc/direct_renderer.cc
|
| diff --git a/cc/direct_renderer.cc b/cc/direct_renderer.cc
|
| index 70522f2fc0289f7295edba5ffb246e26db4cbe87..e96cc4174088a719e6a9e3f4b372c56207a72629 100644
|
| --- a/cc/direct_renderer.cc
|
| +++ b/cc/direct_renderer.cc
|
| @@ -185,9 +185,12 @@ gfx::RectF DirectRenderer::computeScissorRectForRenderPass(const DrawingFrame& f
|
| if (frame.rootDamageRect == frame.rootRenderPass->output_rect)
|
| return renderPassScissor;
|
|
|
| - gfx::Transform inverseTransform = MathUtil::inverse(frame.currentRenderPass->transform_to_root_target);
|
| - gfx::RectF damageRectInRenderPassSpace = MathUtil::projectClippedRect(inverseTransform, frame.rootDamageRect);
|
| - renderPassScissor.Intersect(damageRectInRenderPassSpace);
|
| + gfx::Transform inverseTransform(gfx::Transform::kSkipInitialization);
|
| + if (frame.currentRenderPass->transform_to_root_target.GetInverse(&inverseTransform)) {
|
| + // Only intersect inverse-projected damage if the transform is invertible.
|
| + gfx::RectF damageRectInRenderPassSpace = MathUtil::projectClippedRect(inverseTransform, frame.rootDamageRect);
|
| + renderPassScissor.Intersect(damageRectInRenderPassSpace);
|
| + }
|
|
|
| return renderPassScissor;
|
| }
|
|
|