cc: Add visible_rect to Draw*Quad::SetNew().
Currently the visible_rect is implicitly set to the quad's |rect| value
then later changed by the occlusion/culling code. Instead we want to
compute this value up front and set it on the quad when the quad is
created. So add it to the SetNew() method. Currently it should always
be set to the same value as the |rect|.
R=enne
BUG=344962
Review URL: https://codereview.chromium.org/185563008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@255662 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/cc/layers/delegated_frame_provider_unittest.cc b/cc/layers/delegated_frame_provider_unittest.cc
index f29488d..a8e1683 100644
--- a/cc/layers/delegated_frame_provider_unittest.cc
+++ b/cc/layers/delegated_frame_provider_unittest.cc
@@ -50,6 +50,7 @@
quad->SetNew(sqs.get(),
gfx::Rect(0, 0, 10, 10),
gfx::Rect(0, 0, 10, 10),
+ gfx::Rect(0, 0, 10, 10),
resource_id,
false,
gfx::PointF(0.f, 0.f),
diff --git a/cc/layers/delegated_renderer_layer_impl.cc b/cc/layers/delegated_renderer_layer_impl.cc
index fc3c448..31b52920 100644
--- a/cc/layers/delegated_renderer_layer_impl.cc
+++ b/cc/layers/delegated_renderer_layer_impl.cc
@@ -364,12 +364,14 @@
if (!top.IsEmpty()) {
scoped_ptr<SolidColorDrawQuad> top_quad = SolidColorDrawQuad::Create();
- top_quad->SetNew(shared_quad_state, top, colors[i % kNumColors], false);
+ top_quad->SetNew(
+ shared_quad_state, top, top, colors[i % kNumColors], false);
quad_sink->Append(top_quad.PassAs<DrawQuad>(), append_quads_data);
scoped_ptr<SolidColorDrawQuad> bottom_quad = SolidColorDrawQuad::Create();
bottom_quad->SetNew(shared_quad_state,
bottom,
+ bottom,
colors[kNumColors - 1 - (i % kNumColors)],
false);
quad_sink->Append(bottom_quad.PassAs<DrawQuad>(), append_quads_data);
@@ -378,13 +380,14 @@
scoped_ptr<SolidColorDrawQuad> left_quad = SolidColorDrawQuad::Create();
left_quad->SetNew(shared_quad_state,
left,
+ left,
colors[kNumColors - 1 - (i % kNumColors)],
false);
quad_sink->Append(left_quad.PassAs<DrawQuad>(), append_quads_data);
scoped_ptr<SolidColorDrawQuad> right_quad = SolidColorDrawQuad::Create();
right_quad->SetNew(
- shared_quad_state, right, colors[i % kNumColors], false);
+ shared_quad_state, right, right, colors[i % kNumColors], false);
quad_sink->Append(right_quad.PassAs<DrawQuad>(), append_quads_data);
}
}
diff --git a/cc/layers/delegated_renderer_layer_impl_unittest.cc b/cc/layers/delegated_renderer_layer_impl_unittest.cc
index 5b6a890a..f3988941 100644
--- a/cc/layers/delegated_renderer_layer_impl_unittest.cc
+++ b/cc/layers/delegated_renderer_layer_impl_unittest.cc
@@ -552,11 +552,19 @@
scoped_ptr<SolidColorDrawQuad> color_quad;
color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_quad_state, gfx::Rect(20, 20, 3, 7), 1u, false);
+ color_quad->SetNew(shared_quad_state,
+ gfx::Rect(20, 20, 3, 7),
+ gfx::Rect(20, 20, 3, 7),
+ 1u,
+ false);
quad_sink.Append(color_quad.PassAs<DrawQuad>(), &data);
color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_quad_state, gfx::Rect(23, 20, 4, 7), 1u, false);
+ color_quad->SetNew(shared_quad_state,
+ gfx::Rect(23, 20, 4, 7),
+ gfx::Rect(23, 20, 4, 7),
+ 1u,
+ false);
quad_sink.Append(color_quad.PassAs<DrawQuad>(), &data);
}
@@ -589,31 +597,48 @@
RenderPassDrawQuad::Create();
render_pass_quad->SetNew(
shared_quad_state,
- gfx::Rect(5, 5, 7, 7), // rect
+ gfx::Rect(5, 5, 7, 7), // quad_rect
+ gfx::Rect(5, 5, 7, 7), // visible_rect
RenderPass::Id(10, 7), // render_pass_id
- false, // is_replica
- 0, // mask_resource_id
- child_pass_rect, // contents_changed_since_last_frame
- gfx::RectF(), // mask_uv_rect
- FilterOperations(), // filters
- FilterOperations()); // background_filters
+ false, // is_replica
+ 0, // mask_resource_id
+ child_pass_rect, // contents_changed_since_last_frame
+ gfx::RectF(), // mask_uv_rect
+ FilterOperations(), // filters
+ FilterOperations()); // background_filters
quad_sink.Append(render_pass_quad.PassAs<DrawQuad>(), &data);
scoped_ptr<SolidColorDrawQuad> color_quad;
color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_quad_state, gfx::Rect(0, 0, 10, 10), 1u, false);
+ color_quad->SetNew(shared_quad_state,
+ gfx::Rect(0, 0, 10, 10),
+ gfx::Rect(0, 0, 10, 10),
+ 1u,
+ false);
quad_sink.Append(color_quad.PassAs<DrawQuad>(), &data);
color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_quad_state, gfx::Rect(0, 10, 10, 10), 2u, false);
+ color_quad->SetNew(shared_quad_state,
+ gfx::Rect(0, 10, 10, 10),
+ gfx::Rect(0, 10, 10, 10),
+ 2u,
+ false);
quad_sink.Append(color_quad.PassAs<DrawQuad>(), &data);
color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_quad_state, gfx::Rect(10, 0, 10, 10), 3u, false);
+ color_quad->SetNew(shared_quad_state,
+ gfx::Rect(10, 0, 10, 10),
+ gfx::Rect(10, 0, 10, 10),
+ 3u,
+ false);
quad_sink.Append(color_quad.PassAs<DrawQuad>(), &data);
color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_quad_state, gfx::Rect(10, 10, 10, 10), 4u, false);
+ color_quad->SetNew(shared_quad_state,
+ gfx::Rect(10, 10, 10, 10),
+ gfx::Rect(10, 10, 10, 10),
+ 4u,
+ false);
quad_sink.Append(color_quad.PassAs<DrawQuad>(), &data);
delegated_renderer_layer->SetFrameDataForRenderPasses(
@@ -960,11 +985,19 @@
scoped_ptr<SolidColorDrawQuad> color_quad;
color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_quad_state, gfx::Rect(20, 20, 3, 7), 1u, false);
+ color_quad->SetNew(shared_quad_state,
+ gfx::Rect(20, 20, 3, 7),
+ gfx::Rect(20, 20, 3, 7),
+ 1u,
+ false);
quad_sink.Append(color_quad.PassAs<DrawQuad>(), &data);
color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_quad_state, gfx::Rect(23, 20, 4, 7), 1u, false);
+ color_quad->SetNew(shared_quad_state,
+ gfx::Rect(23, 20, 4, 7),
+ gfx::Rect(23, 20, 4, 7),
+ 1u,
+ false);
quad_sink.Append(color_quad.PassAs<DrawQuad>(), &data);
}
@@ -995,31 +1028,48 @@
RenderPassDrawQuad::Create();
render_pass_quad->SetNew(
shared_quad_state,
- gfx::Rect(5, 5, 7, 7), // rect
+ gfx::Rect(5, 5, 7, 7), // quad_rect
+ gfx::Rect(5, 5, 7, 7), // visible_quad_rect
RenderPass::Id(10, 7), // render_pass_id
- false, // is_replica
- 0, // mask_resource_id
- child_pass_rect, // contents_changed_since_last_frame
- gfx::RectF(), // mask_uv_rect
- FilterOperations(), // filters
- FilterOperations()); // background_filters
+ false, // is_replica
+ 0, // mask_resource_id
+ child_pass_rect, // contents_changed_since_last_frame
+ gfx::RectF(), // mask_uv_rect
+ FilterOperations(), // filters
+ FilterOperations()); // background_filters
quad_sink.Append(render_pass_quad.PassAs<DrawQuad>(), &data);
scoped_ptr<SolidColorDrawQuad> color_quad;
color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_quad_state, gfx::Rect(0, 0, 10, 10), 1u, false);
+ color_quad->SetNew(shared_quad_state,
+ gfx::Rect(0, 0, 10, 10),
+ gfx::Rect(0, 0, 10, 10),
+ 1u,
+ false);
quad_sink.Append(color_quad.PassAs<DrawQuad>(), &data);
color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_quad_state, gfx::Rect(0, 10, 10, 10), 2u, false);
+ color_quad->SetNew(shared_quad_state,
+ gfx::Rect(0, 10, 10, 10),
+ gfx::Rect(0, 10, 10, 10),
+ 2u,
+ false);
quad_sink.Append(color_quad.PassAs<DrawQuad>(), &data);
color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_quad_state, gfx::Rect(10, 0, 10, 10), 3u, false);
+ color_quad->SetNew(shared_quad_state,
+ gfx::Rect(10, 0, 10, 10),
+ gfx::Rect(10, 0, 10, 10),
+ 3u,
+ false);
quad_sink.Append(color_quad.PassAs<DrawQuad>(), &data);
color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_quad_state, gfx::Rect(10, 10, 10, 10), 4u, false);
+ color_quad->SetNew(shared_quad_state,
+ gfx::Rect(10, 10, 10, 10),
+ gfx::Rect(10, 10, 10, 10),
+ 4u,
+ false);
quad_sink.Append(color_quad.PassAs<DrawQuad>(), &data);
delegated_renderer_layer->SetFrameDataForRenderPasses(
diff --git a/cc/layers/heads_up_display_layer_impl.cc b/cc/layers/heads_up_display_layer_impl.cc
index be5af99..e98880a 100644
--- a/cc/layers/heads_up_display_layer_impl.cc
+++ b/cc/layers/heads_up_display_layer_impl.cc
@@ -115,6 +115,7 @@
gfx::Rect quad_rect(content_bounds());
gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect());
+ gfx::Rect visible_quad_rect(quad_rect);
bool premultiplied_alpha = true;
gfx::PointF uv_top_left(0.f, 0.f);
gfx::PointF uv_bottom_right(1.f, 1.f);
@@ -124,6 +125,7 @@
quad->SetNew(shared_quad_state,
quad_rect,
opaque_rect,
+ visible_quad_rect,
hud_resource_->id(),
premultiplied_alpha,
uv_top_left,
diff --git a/cc/layers/io_surface_layer_impl.cc b/cc/layers/io_surface_layer_impl.cc
index b8d6919..8779086 100644
--- a/cc/layers/io_surface_layer_impl.cc
+++ b/cc/layers/io_surface_layer_impl.cc
@@ -113,10 +113,12 @@
gfx::Rect quad_rect(content_bounds());
gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect());
+ gfx::Rect visible_quad_rect(quad_rect);
scoped_ptr<IOSurfaceDrawQuad> quad = IOSurfaceDrawQuad::Create();
quad->SetNew(shared_quad_state,
quad_rect,
opaque_rect,
+ visible_quad_rect,
io_surface_size_,
io_surface_resource_id_,
IOSurfaceDrawQuad::FLIPPED);
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc
index 05f3e1b..46fa012 100644
--- a/cc/layers/layer_impl.cc
+++ b/cc/layers/layer_impl.cc
@@ -304,10 +304,12 @@
if (!ShowDebugBorders())
return;
- gfx::Rect content_rect(content_bounds());
+ gfx::Rect quad_rect(content_bounds());
+ gfx::Rect visible_quad_rect(quad_rect);
scoped_ptr<DebugBorderDrawQuad> debug_border_quad =
DebugBorderDrawQuad::Create();
- debug_border_quad->SetNew(shared_quad_state, content_rect, color, width);
+ debug_border_quad->SetNew(
+ shared_quad_state, quad_rect, visible_quad_rect, color, width);
quad_sink->Append(debug_border_quad.PassAs<DrawQuad>(), append_quads_data);
}
diff --git a/cc/layers/nine_patch_layer_impl.cc b/cc/layers/nine_patch_layer_impl.cc
index a053d5e1..4d364464 100644
--- a/cc/layers/nine_patch_layer_impl.cc
+++ b/cc/layers/nine_patch_layer_impl.cc
@@ -224,6 +224,7 @@
quad->SetNew(shared_quad_state,
layer_top_left,
opaque_rect,
+ layer_top_left,
resource,
premultiplied_alpha,
uv_top_left.origin(),
@@ -237,6 +238,7 @@
quad->SetNew(shared_quad_state,
layer_top_right,
opaque_rect,
+ layer_top_right,
resource,
premultiplied_alpha,
uv_top_right.origin(),
@@ -250,6 +252,7 @@
quad->SetNew(shared_quad_state,
layer_bottom_left,
opaque_rect,
+ layer_bottom_left,
resource,
premultiplied_alpha,
uv_bottom_left.origin(),
@@ -263,6 +266,7 @@
quad->SetNew(shared_quad_state,
layer_bottom_right,
opaque_rect,
+ layer_bottom_right,
resource,
premultiplied_alpha,
uv_bottom_right.origin(),
@@ -276,6 +280,7 @@
quad->SetNew(shared_quad_state,
layer_top,
opaque_rect,
+ layer_top,
resource,
premultiplied_alpha,
uv_top.origin(),
@@ -289,6 +294,7 @@
quad->SetNew(shared_quad_state,
layer_left,
opaque_rect,
+ layer_left,
resource,
premultiplied_alpha,
uv_left.origin(),
@@ -302,6 +308,7 @@
quad->SetNew(shared_quad_state,
layer_right,
opaque_rect,
+ layer_right,
resource,
premultiplied_alpha,
uv_right.origin(),
@@ -315,6 +322,7 @@
quad->SetNew(shared_quad_state,
layer_bottom,
opaque_rect,
+ layer_bottom,
resource,
premultiplied_alpha,
uv_bottom.origin(),
@@ -329,6 +337,7 @@
quad->SetNew(shared_quad_state,
layer_center,
opaque_rect,
+ layer_center,
resource,
premultiplied_alpha,
uv_center.origin(),
diff --git a/cc/layers/painted_scrollbar_layer_impl.cc b/cc/layers/painted_scrollbar_layer_impl.cc
index 2af722d..bddd7e1 100644
--- a/cc/layers/painted_scrollbar_layer_impl.cc
+++ b/cc/layers/painted_scrollbar_layer_impl.cc
@@ -83,6 +83,7 @@
AppendDebugBorderQuad(quad_sink, shared_quad_state, append_quads_data);
gfx::Rect thumb_quad_rect = ComputeThumbQuadRect();
+ gfx::Rect visible_thumb_quad_rect = thumb_quad_rect;
ResourceProvider::ResourceId thumb_resource_id =
layer_tree_impl()->ResourceIdForUIResource(thumb_ui_resource_id_);
@@ -96,6 +97,7 @@
quad->SetNew(shared_quad_state,
thumb_quad_rect,
opaque_rect,
+ visible_thumb_quad_rect,
thumb_resource_id,
premultipled_alpha,
uv_top_left,
@@ -107,6 +109,7 @@
}
gfx::Rect track_quad_rect = content_bounds_rect;
+ gfx::Rect visible_track_quad_rect = track_quad_rect;
if (track_resource_id && !track_quad_rect.IsEmpty()) {
gfx::Rect opaque_rect(contents_opaque() ? track_quad_rect : gfx::Rect());
const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
@@ -114,6 +117,7 @@
quad->SetNew(shared_quad_state,
track_quad_rect,
opaque_rect,
+ visible_track_quad_rect,
track_resource_id,
premultipled_alpha,
uv_top_left,
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
index fc8647c..f2c3c3e 100644
--- a/cc/layers/picture_layer_impl.cc
+++ b/cc/layers/picture_layer_impl.cc
@@ -139,6 +139,7 @@
gfx::Rect geometry_rect = rect;
gfx::Rect opaque_rect = contents_opaque() ? geometry_rect : gfx::Rect();
+ gfx::Rect visible_geometry_rect = geometry_rect;
gfx::Size texture_size = rect.size();
gfx::RectF texture_rect = gfx::RectF(texture_size);
gfx::Rect quad_content_rect = rect;
@@ -148,6 +149,7 @@
quad->SetNew(shared_quad_state,
geometry_rect,
opaque_rect,
+ visible_geometry_rect,
texture_rect,
texture_size,
RGBA_8888,
@@ -198,7 +200,12 @@
scoped_ptr<DebugBorderDrawQuad> debug_border_quad =
DebugBorderDrawQuad::Create();
gfx::Rect geometry_rect = iter.geometry_rect();
- debug_border_quad->SetNew(shared_quad_state, geometry_rect, color, width);
+ gfx::Rect visible_geometry_rect = geometry_rect;
+ debug_border_quad->SetNew(shared_quad_state,
+ geometry_rect,
+ visible_geometry_rect,
+ color,
+ width);
quad_sink->Append(debug_border_quad.PassAs<DrawQuad>(),
append_quads_data);
}
@@ -213,18 +220,24 @@
iter;
++iter) {
gfx::Rect geometry_rect = iter.geometry_rect();
+ gfx::Rect visible_geometry_rect = geometry_rect;
if (!*iter || !iter->IsReadyToDraw()) {
if (DrawCheckerboardForMissingTiles()) {
// TODO(enne): Figure out how to show debug "invalidated checker" color
scoped_ptr<CheckerboardDrawQuad> quad = CheckerboardDrawQuad::Create();
SkColor color = DebugColors::DefaultCheckerboardColor();
- quad->SetNew(shared_quad_state, geometry_rect, color);
+ quad->SetNew(
+ shared_quad_state, geometry_rect, visible_geometry_rect, color);
if (quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data))
append_quads_data->num_missing_tiles++;
} else {
SkColor color = SafeOpaqueBackgroundColor();
scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create();
- quad->SetNew(shared_quad_state, geometry_rect, color, false);
+ quad->SetNew(shared_quad_state,
+ geometry_rect,
+ visible_geometry_rect,
+ color,
+ false);
if (quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data))
append_quads_data->num_missing_tiles++;
}
@@ -249,6 +262,7 @@
quad->SetNew(shared_quad_state,
geometry_rect,
opaque_rect,
+ visible_geometry_rect,
tile_version.get_resource_id(),
texture_rect,
iter.texture_size(),
@@ -269,6 +283,7 @@
quad->SetNew(shared_quad_state,
geometry_rect,
opaque_rect,
+ visible_geometry_rect,
texture_rect,
iter.texture_size(),
format,
@@ -282,6 +297,7 @@
scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create();
quad->SetNew(shared_quad_state,
geometry_rect,
+ visible_geometry_rect,
tile_version.get_solid_color(),
false);
draw_quad = quad.PassAs<DrawQuad>();
diff --git a/cc/layers/render_surface_impl.cc b/cc/layers/render_surface_impl.cc
index 6c0ec34..a87d692 100644
--- a/cc/layers/render_surface_impl.cc
+++ b/cc/layers/render_surface_impl.cc
@@ -154,6 +154,8 @@
owning_layer_->blend_mode());
if (owning_layer_->ShowDebugBorders()) {
+ gfx::Rect quad_rect = content_rect_;
+ gfx::Rect visible_quad_rect = quad_rect;
SkColor color = for_replica ?
DebugColors::SurfaceReplicaBorderColor() :
DebugColors::SurfaceBorderColor();
@@ -164,7 +166,8 @@
owning_layer_->layer_tree_impl());
scoped_ptr<DebugBorderDrawQuad> debug_border_quad =
DebugBorderDrawQuad::Create();
- debug_border_quad->SetNew(shared_quad_state, content_rect_, color, width);
+ debug_border_quad->SetNew(
+ shared_quad_state, quad_rect, visible_quad_rect, color, width);
quad_sink->Append(debug_border_quad.PassAs<DrawQuad>(), append_quads_data);
}
@@ -209,6 +212,7 @@
uv_scale_y);
}
+ gfx::Rect visible_content_rect(content_rect_);
ResourceProvider::ResourceId mask_resource_id =
mask_layer ? mask_layer->ContentsResourceId() : 0;
gfx::Rect contents_changed_since_last_frame =
@@ -217,6 +221,7 @@
scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create();
quad->SetNew(shared_quad_state,
content_rect_,
+ visible_content_rect,
render_pass_id,
for_replica,
mask_resource_id,
diff --git a/cc/layers/solid_color_layer_impl.cc b/cc/layers/solid_color_layer_impl.cc
index faa967be..b5514e74 100644
--- a/cc/layers/solid_color_layer_impl.cc
+++ b/cc/layers/solid_color_layer_impl.cc
@@ -34,13 +34,17 @@
int height = content_bounds().height();
for (int x = 0; x < width; x += tile_size_) {
for (int y = 0; y < height; y += tile_size_) {
- gfx::Rect solid_tile_rect(x,
- y,
- std::min(width - x, tile_size_),
- std::min(height - y, tile_size_));
+ gfx::Rect quad_rect(x,
+ y,
+ std::min(width - x, tile_size_),
+ std::min(height - y, tile_size_));
+ gfx::Rect visible_quad_rect(quad_rect);
scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create();
- quad->SetNew(
- shared_quad_state, solid_tile_rect, background_color(), false);
+ quad->SetNew(shared_quad_state,
+ quad_rect,
+ visible_quad_rect,
+ background_color(),
+ false);
quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data);
}
}
diff --git a/cc/layers/solid_color_scrollbar_layer_impl.cc b/cc/layers/solid_color_scrollbar_layer_impl.cc
index 0cfc853..027e122 100644
--- a/cc/layers/solid_color_scrollbar_layer_impl.cc
+++ b/cc/layers/solid_color_scrollbar_layer_impl.cc
@@ -91,14 +91,16 @@
void SolidColorScrollbarLayerImpl::AppendQuads(QuadSink* quad_sink,
AppendQuadsData* append_quads_data) {
- gfx::Rect thumb_quad_rect = ComputeThumbQuadRect();
+ gfx::Rect thumb_quad_rect(ComputeThumbQuadRect());
+ gfx::Rect visible_quad_rect(thumb_quad_rect);
SharedQuadState* shared_quad_state =
quad_sink->UseSharedQuadState(CreateSharedQuadState());
AppendDebugBorderQuad(quad_sink, shared_quad_state, append_quads_data);
scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create();
- quad->SetNew(shared_quad_state, thumb_quad_rect, color_, false);
+ quad->SetNew(
+ shared_quad_state, thumb_quad_rect, visible_quad_rect, color_, false);
quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data);
}
diff --git a/cc/layers/surface_layer_impl.cc b/cc/layers/surface_layer_impl.cc
index 6906f4e..1d7f735 100644
--- a/cc/layers/surface_layer_impl.cc
+++ b/cc/layers/surface_layer_impl.cc
@@ -46,7 +46,8 @@
scoped_ptr<SurfaceDrawQuad> quad = SurfaceDrawQuad::Create();
gfx::Rect quad_rect(content_bounds());
- quad->SetNew(shared_quad_state, quad_rect, surface_id_);
+ gfx::Rect visible_quad_rect(quad_rect);
+ quad->SetNew(shared_quad_state, quad_rect, visible_quad_rect, surface_id_);
quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data);
}
diff --git a/cc/layers/texture_layer_impl.cc b/cc/layers/texture_layer_impl.cc
index cafe542..5deb73a 100644
--- a/cc/layers/texture_layer_impl.cc
+++ b/cc/layers/texture_layer_impl.cc
@@ -172,12 +172,14 @@
gfx::Rect quad_rect(content_bounds());
gfx::Rect opaque_rect = opaque ? quad_rect : gfx::Rect();
+ gfx::Rect visible_quad_rect(quad_rect);
scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create();
ResourceProvider::ResourceId id =
valid_texture_copy_ ? texture_copy_->id() : external_texture_resource_;
quad->SetNew(shared_quad_state,
quad_rect,
opaque_rect,
+ visible_quad_rect,
id,
premultiplied_alpha_,
uv_top_left_,
diff --git a/cc/layers/tiled_layer_impl.cc b/cc/layers/tiled_layer_impl.cc
index d2767cf..cc58112 100644
--- a/cc/layers/tiled_layer_impl.cc
+++ b/cc/layers/tiled_layer_impl.cc
@@ -170,6 +170,7 @@
for (int i = left; i <= right; ++i) {
DrawableTile* tile = TileAt(i, j);
gfx::Rect tile_rect = tiler_->tile_bounds(i, j);
+ gfx::Rect visible_tile_rect = tile_rect;
SkColor border_color;
float border_width;
@@ -182,8 +183,11 @@
}
scoped_ptr<DebugBorderDrawQuad> debug_border_quad =
DebugBorderDrawQuad::Create();
- debug_border_quad->SetNew(
- shared_quad_state, tile_rect, border_color, border_width);
+ debug_border_quad->SetNew(shared_quad_state,
+ tile_rect,
+ visible_tile_rect,
+ border_color,
+ border_width);
quad_sink->Append(debug_border_quad.PassAs<DrawQuad>(),
append_quads_data);
}
@@ -199,6 +203,7 @@
gfx::Rect tile_rect = tiler_->tile_bounds(i, j);
gfx::Rect display_rect = tile_rect;
tile_rect.Intersect(content_rect);
+ gfx::Rect visible_tile_rect = tile_rect;
// Skip empty tiles.
if (tile_rect.IsEmpty())
@@ -217,7 +222,7 @@
scoped_ptr<CheckerboardDrawQuad> checkerboard_quad =
CheckerboardDrawQuad::Create();
checkerboard_quad->SetNew(
- shared_quad_state, tile_rect, checker_color);
+ shared_quad_state, tile_rect, visible_tile_rect, checker_color);
if (quad_sink->Append(checkerboard_quad.PassAs<DrawQuad>(),
append_quads_data))
append_quads_data->num_missing_tiles++;
@@ -244,6 +249,7 @@
quad->SetNew(shared_quad_state,
tile_rect,
tile_opaque_rect,
+ visible_tile_rect,
tile->resource_id(),
tex_coord_rect,
texture_size,
diff --git a/cc/layers/ui_resource_layer_impl.cc b/cc/layers/ui_resource_layer_impl.cc
index ad7fd2c..65b930c 100644
--- a/cc/layers/ui_resource_layer_impl.cc
+++ b/cc/layers/ui_resource_layer_impl.cc
@@ -111,17 +111,17 @@
DCHECK(!bounds().IsEmpty());
- gfx::Rect quad_rect(bounds());
-
bool opaque = layer_tree_impl()->IsUIResourceOpaque(ui_resource_id_) ||
contents_opaque();
- gfx::Rect opaque_rect(opaque ? quad_rect : gfx::Rect());
- scoped_ptr<TextureDrawQuad> quad;
- quad = TextureDrawQuad::Create();
+ gfx::Rect quad_rect(bounds());
+ gfx::Rect opaque_rect(opaque ? quad_rect : gfx::Rect());
+ gfx::Rect visible_quad_rect(quad_rect);
+ scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create();
quad->SetNew(shared_quad_state,
quad_rect,
opaque_rect,
+ visible_quad_rect,
resource,
premultiplied_alpha,
uv_top_left_,
diff --git a/cc/layers/video_layer_impl.cc b/cc/layers/video_layer_impl.cc
index 9a772c5..20c8c44 100644
--- a/cc/layers/video_layer_impl.cc
+++ b/cc/layers/video_layer_impl.cc
@@ -134,6 +134,7 @@
gfx::Rect quad_rect(content_bounds());
gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect());
+ gfx::Rect visible_quad_rect(quad_rect);
gfx::Rect visible_rect = frame_->visible_rect();
gfx::Size coded_size = frame_->coded_size();
@@ -159,6 +160,7 @@
texture_quad->SetNew(shared_quad_state,
quad_rect,
opaque_rect,
+ visible_quad_rect,
software_resources_[0],
premultiplied_alpha,
uv_top_left,
@@ -175,15 +177,16 @@
break;
gfx::SizeF tex_scale(tex_width_scale, tex_height_scale);
scoped_ptr<YUVVideoDrawQuad> yuv_video_quad = YUVVideoDrawQuad::Create();
- yuv_video_quad->SetNew(shared_quad_state,
- quad_rect,
- opaque_rect,
- tex_scale,
- frame_resources_[0],
- frame_resources_[1],
- frame_resources_[2],
- frame_resources_.size() > 3 ?
- frame_resources_[3] : 0);
+ yuv_video_quad->SetNew(
+ shared_quad_state,
+ quad_rect,
+ opaque_rect,
+ visible_quad_rect,
+ tex_scale,
+ frame_resources_[0],
+ frame_resources_[1],
+ frame_resources_[2],
+ frame_resources_.size() > 3 ? frame_resources_[3] : 0);
quad_sink->Append(yuv_video_quad.PassAs<DrawQuad>(), append_quads_data);
break;
}
@@ -200,6 +203,7 @@
texture_quad->SetNew(shared_quad_state,
quad_rect,
opaque_rect,
+ visible_quad_rect,
frame_resources_[0],
premultiplied_alpha,
uv_top_left,
@@ -222,6 +226,7 @@
shared_quad_state,
quad_rect,
opaque_rect,
+ visible_quad_rect,
frame_resources_[0],
scale * provider_client_impl_->stream_texture_matrix());
quad_sink->Append(stream_video_quad.PassAs<DrawQuad>(),
@@ -238,6 +243,7 @@
io_surface_quad->SetNew(shared_quad_state,
quad_rect,
opaque_rect,
+ visible_quad_rect,
visible_size,
frame_resources_[0],
IOSurfaceDrawQuad::UNFLIPPED);