Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3051)

Unified Diff: cc/output/overlay_candidate.cc

Issue 1380653003: Mac Overlays: Allow SolidColor and Tile quads to be candidates for overlays. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@AllOrNothing2
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/output/overlay_candidate.h ('k') | cc/output/overlay_candidate_validator.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/output/overlay_candidate.cc
diff --git a/cc/output/overlay_candidate.cc b/cc/output/overlay_candidate.cc
index 658f15382bc68a9ff6d67f7512954d6e73534e3f..8c045b512d13fb69581425935ab370692ee740df 100644
--- a/cc/output/overlay_candidate.cc
+++ b/cc/output/overlay_candidate.cc
@@ -172,8 +172,7 @@ OverlayCandidate::OverlayCandidate()
format(RGBA_8888),
uv_rect(0.f, 0.f, 1.f, 1.f),
is_clipped(false),
- use_output_surface_for_resource(false),
- resource_id(0),
+ resource_type(HAS_RESOURCE),
plane_z_order(0),
overlay_handled(false) {}
@@ -208,6 +207,12 @@ bool OverlayCandidate::FromDrawQuad(ResourceProvider* resource_provider,
case DrawQuad::IO_SURFACE_CONTENT:
return FromIOSurfaceQuad(
resource_provider, IOSurfaceDrawQuad::MaterialCast(quad), candidate);
+ case DrawQuad::TILED_CONTENT:
+ return FromTileQuad(resource_provider, TileDrawQuad::MaterialCast(quad),
+ candidate);
+ case DrawQuad::SOLID_COLOR:
+ return FromSolidColorQuad(SolidColorDrawQuad::MaterialCast(quad),
+ candidate);
default:
break;
}
@@ -236,10 +241,9 @@ bool OverlayCandidate::FromTextureQuad(ResourceProvider* resource_provider,
gfx::OverlayTransform overlay_transform = GetOverlayTransform(
quad->shared_quad_state->quad_to_target_transform, quad->y_flipped);
if (quad->background_color != SK_ColorTRANSPARENT ||
- quad->premultiplied_alpha ||
overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID)
return false;
- candidate->resource_id = quad->resource_id();
+ candidate->resource.resource_id = quad->resource_id();
candidate->resource_size_in_pixels = quad->resource_size_in_pixels();
candidate->transform = overlay_transform;
candidate->uv_rect = BoundingRect(quad->uv_top_left, quad->uv_bottom_right);
@@ -261,7 +265,7 @@ bool OverlayCandidate::FromStreamVideoQuad(ResourceProvider* resource_provider,
// coordinates yet.
return false;
}
- candidate->resource_id = quad->resource_id();
+ candidate->resource.resource_id = quad->resource_id();
candidate->resource_size_in_pixels = quad->resource_size_in_pixels();
candidate->transform = overlay_transform;
@@ -302,11 +306,41 @@ bool OverlayCandidate::FromIOSurfaceQuad(ResourceProvider* resource_provider,
quad->shared_quad_state->quad_to_target_transform, false);
if (overlay_transform != gfx::OVERLAY_TRANSFORM_NONE)
return false;
- candidate->resource_id = quad->io_surface_resource_id();
+ candidate->resource.resource_id = quad->io_surface_resource_id();
candidate->resource_size_in_pixels = quad->io_surface_size;
candidate->transform = overlay_transform;
candidate->uv_rect = gfx::RectF(1.f, 1.f);
return true;
}
+// static
+bool OverlayCandidate::FromTileQuad(ResourceProvider* resource_provider,
+ const TileDrawQuad* quad,
+ OverlayCandidate* candidate) {
+ if (!resource_provider->IsOverlayCandidate(quad->resource_id()))
+ return false;
+ candidate->transform = GetOverlayTransform(
+ quad->shared_quad_state->quad_to_target_transform, false);
+ if (candidate->transform != gfx::OVERLAY_TRANSFORM_NONE)
+ return false;
+ candidate->resource.resource_id = quad->resource_id();
+ candidate->resource_size_in_pixels = quad->texture_size;
+ candidate->uv_rect = quad->tex_coord_rect;
+ candidate->uv_rect.Scale(1.f / quad->texture_size.width(),
+ 1.f / quad->texture_size.height());
+ return true;
+}
+
+// static
+bool OverlayCandidate::FromSolidColorQuad(const SolidColorDrawQuad* quad,
+ OverlayCandidate* candidate) {
+ candidate->transform = GetOverlayTransform(
+ quad->shared_quad_state->quad_to_target_transform, false);
+ if (candidate->transform != gfx::OVERLAY_TRANSFORM_NONE)
+ return false;
+ candidate->resource_type = SOLID_COLOR;
+ candidate->resource.solid_color = quad->color;
+ return true;
+}
+
} // namespace cc
« no previous file with comments | « cc/output/overlay_candidate.h ('k') | cc/output/overlay_candidate_validator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698