Index: cc/output/overlay_strategy_single_on_top.cc |
diff --git a/cc/output/overlay_strategy_single_on_top.cc b/cc/output/overlay_strategy_single_on_top.cc |
index 4c2064196ddbca9181d192cd94d51b6c4603f3f9..a53644b255693d68bbf6244828ea73aee5dc97e9 100644 |
--- a/cc/output/overlay_strategy_single_on_top.cc |
+++ b/cc/output/overlay_strategy_single_on_top.cc |
@@ -37,7 +37,10 @@ bool OverlayStrategySingleOnTop::Attempt( |
return false; |
// Simple quads only. |
- if (!quad.quadTransform().IsIdentityOrTranslation() || quad.needs_blending || |
+ OverlayCandidate::OverlayTransform overlay_transform = |
+ OverlayCandidate::GetOverlayTransform(quad.quadTransform(), quad.flipped); |
+ if (overlay_transform == OverlayCandidate::INVALID || |
+ !quad.quadTransform().IsIdentityOrTranslation() || quad.needs_blending || |
quad.shared_quad_state->opacity != 1.f || |
quad.shared_quad_state->blend_mode != SkXfermode::kSrcOver_Mode || |
quad.premultiplied_alpha || quad.background_color != SK_ColorTRANSPARENT) |
@@ -52,11 +55,9 @@ bool OverlayStrategySingleOnTop::Attempt( |
// Add the overlay. |
OverlayCandidate candidate; |
- gfx::RectF float_rect(quad.rect); |
- quad.quadTransform().TransformRect(&float_rect); |
- candidate.transform = |
- quad.flipped ? OverlayCandidate::FLIP_VERTICAL : OverlayCandidate::NONE; |
- candidate.display_rect = gfx::ToNearestRect(float_rect); |
+ candidate.transform = overlay_transform; |
+ candidate.display_rect = |
+ OverlayCandidate::GetOverlayRect(quad.quadTransform(), quad.rect); |
candidate.uv_rect = BoundingRect(quad.uv_top_left, quad.uv_bottom_right); |
candidate.format = RGBA_8888; |
candidates.push_back(candidate); |