| 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
|
|
|