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)) { |
danakj
2013/01/02 14:45:16
I'm still not a fan that after the if() statement,
shawnsingh
2013/01/02 18:36:01
The performance improvement comes from avoiding du
|
+ // Only intersect inverse-projected damage if the transform is invertible. |
+ gfx::RectF damageRectInRenderPassSpace = MathUtil::projectClippedRect(inverseTransform, frame.rootDamageRect); |
+ renderPassScissor.Intersect(damageRectInRenderPassSpace); |
+ } |
return renderPassScissor; |
} |