Chromium Code Reviews| 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; |
| } |