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

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, 3 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_strategy_common.cc » ('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 5ecdc32ed3602e8095e7876e57778ea59db0d154..e3f3298a9898201242eb4ccb493ff38c9c5f7707 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,28 @@ 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::IsAllowedQuad(const DrawQuad* quad) {
+ switch (quad->material) {
+ case DrawQuad::TEXTURE_CONTENT:
+ return TextureDrawQuad::MaterialCast(quad)->allow_overlay();
+ case DrawQuad::STREAM_VIDEO_CONTENT:
+ return StreamVideoDrawQuad::MaterialCast(quad)->allow_overlay();
+ case DrawQuad::IO_SURFACE_CONTENT:
+ return IOSurfaceDrawQuad::MaterialCast(quad)->allow_overlay;
+ default:
+ break;
+ }
+ return false;
+}
+
+// static
bool OverlayCandidate::FromDrawQuad(const DrawQuad* quad,
OverlayCandidate* candidate) {
if (quad->needs_blending || quad->shared_quad_state->opacity != 1.f ||
@@ -203,6 +220,11 @@ bool OverlayCandidate::FromDrawQuad(const DrawQuad* quad,
case DrawQuad::IO_SURFACE_CONTENT:
return FromIOSurfaceQuad(IOSurfaceDrawQuad::MaterialCast(quad),
candidate);
ccameron 2015/09/30 18:52:09 We're also going to want to make sure that things
Andre 2015/09/30 21:15:15 It's currently using OverlayCandidate::IsAllowedQu
+ case DrawQuad::TILED_CONTENT:
+ return FromTileQuad(TileDrawQuad::MaterialCast(quad), candidate);
+ case DrawQuad::SOLID_COLOR:
+ return FromSolidColorQuad(SolidColorDrawQuad::MaterialCast(quad),
+ candidate);
default:
break;
}
@@ -213,8 +235,6 @@ bool OverlayCandidate::FromDrawQuad(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 ||
@@ -231,8 +251,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)
@@ -276,8 +294,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)
@@ -289,4 +305,30 @@ bool OverlayCandidate::FromIOSurfaceQuad(const IOSurfaceDrawQuad* quad,
return true;
}
+// static
+bool OverlayCandidate::FromTileQuad(const TileDrawQuad* quad,
+ OverlayCandidate* candidate) {
ccameron 2015/09/30 18:52:09 We're going to need to plumb through a "allow_over
Andre 2015/09/30 20:57:17 I'm not sure how to do this. I think we want to Ti
+ 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
« no previous file with comments | « cc/output/overlay_candidate.h ('k') | cc/output/overlay_strategy_common.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698