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

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: Plumb allow_overlay 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
Index: cc/output/overlay_candidate.cc
diff --git a/cc/output/overlay_candidate.cc b/cc/output/overlay_candidate.cc
index 4e6a36b0239a15229e99b61e03b117d903535eca..29709ce6ce402705b6eb3d73195d10a36909e2fd 100644
--- a/cc/output/overlay_candidate.cc
+++ b/cc/output/overlay_candidate.cc
@@ -12,6 +12,7 @@
#include "cc/quads/solid_color_draw_quad.h"
#include "cc/quads/stream_video_draw_quad.h"
#include "cc/quads/texture_draw_quad.h"
+#include "cc/quads/tile_draw_quad.h"
#include "ui/gfx/geometry/rect_conversions.h"
#include "ui/gfx/geometry/vector3d_f.h"
@@ -172,12 +173,20 @@ OverlayCandidate::OverlayCandidate()
is_clipped(false),
use_output_surface_for_resource(false),
resource_id(0),
+ solid_color(SK_ColorTRANSPARENT),
plane_z_order(0),
overlay_handled(false) {}
OverlayCandidate::~OverlayCandidate() {}
// static
+bool OverlayCandidate::IsVideoQuad(const DrawQuad* quad) {
+ return quad->material == DrawQuad::TEXTURE_CONTENT ||
+ quad->material == DrawQuad::STREAM_VIDEO_CONTENT ||
+ quad->material == DrawQuad::IO_SURFACE_CONTENT;
+}
+
+// static
bool OverlayCandidate::FromDrawQuad(const DrawQuad* quad,
OverlayCandidate* candidate) {
if (quad->needs_blending || quad->shared_quad_state->opacity != 1.f ||
@@ -203,6 +212,11 @@ bool OverlayCandidate::FromDrawQuad(const DrawQuad* quad,
case DrawQuad::IO_SURFACE_CONTENT:
return FromIOSurfaceQuad(IOSurfaceDrawQuad::MaterialCast(quad),
candidate);
+ case DrawQuad::TILED_CONTENT:
+ return FromTileQuad(TileDrawQuad::MaterialCast(quad), candidate);
+ case DrawQuad::SOLID_COLOR:
+ return FromSolidColorQuad(SolidColorDrawQuad::MaterialCast(quad),
+ candidate);
default:
break;
}
@@ -225,8 +239,6 @@ bool OverlayCandidate::IsInvisibleQuad(const DrawQuad* quad) {
// static
bool OverlayCandidate::FromTextureQuad(const TextureDrawQuad* quad,
OverlayCandidate* candidate) {
- if (!quad->allow_overlay())
- return false;
gfx::OverlayTransform overlay_transform = GetOverlayTransform(
quad->shared_quad_state->quad_to_target_transform, quad->y_flipped);
if (quad->background_color != SK_ColorTRANSPARENT ||
@@ -243,8 +255,6 @@ bool OverlayCandidate::FromTextureQuad(const TextureDrawQuad* quad,
// static
bool OverlayCandidate::FromStreamVideoQuad(const StreamVideoDrawQuad* quad,
OverlayCandidate* candidate) {
- if (!quad->allow_overlay())
- return false;
gfx::OverlayTransform overlay_transform = GetOverlayTransform(
quad->shared_quad_state->quad_to_target_transform, false);
if (overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID)
@@ -288,8 +298,6 @@ bool OverlayCandidate::FromStreamVideoQuad(const StreamVideoDrawQuad* quad,
// static
bool OverlayCandidate::FromIOSurfaceQuad(const IOSurfaceDrawQuad* quad,
OverlayCandidate* candidate) {
- if (!quad->allow_overlay)
- return false;
gfx::OverlayTransform overlay_transform = GetOverlayTransform(
quad->shared_quad_state->quad_to_target_transform, false);
if (overlay_transform != gfx::OVERLAY_TRANSFORM_NONE)
@@ -301,4 +309,30 @@ bool OverlayCandidate::FromIOSurfaceQuad(const IOSurfaceDrawQuad* quad,
return true;
}
+// static
+bool OverlayCandidate::FromTileQuad(const TileDrawQuad* 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_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->solid_color = quad->color;
+ return true;
+}
+
} // namespace cc

Powered by Google App Engine
This is Rietveld 408576698