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);
diff --git a/cc/output/renderer_pixeltest.cc b/cc/output/renderer_pixeltest.cc
index 3157e48..d934d17 100644
--- a/cc/output/renderer_pixeltest.cc
+++ b/cc/output/renderer_pixeltest.cc
@@ -92,6 +92,7 @@
scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create();
quad->SetNew(shared_state,
rect,
+ rect,
pass_id,
false, // is_replica
0, // mask_resource_id
@@ -136,6 +137,7 @@
quad->SetNew(shared_state,
rect,
gfx::Rect(),
+ rect,
resource,
premultiplied_alpha,
gfx::PointF(0.0f, 0.0f), // uv_top_left
@@ -205,7 +207,7 @@
CreateTestSharedQuadState(gfx::Transform(), rect);
scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_state.get(), rect, SK_ColorGREEN, false);
+ color_quad->SetNew(shared_state.get(), rect, rect, SK_ColorGREEN, false);
pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
@@ -231,7 +233,8 @@
CreateTestSharedQuadState(gfx::Transform(), small_rect);
scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(child_shared_state.get(), rect, SK_ColorGREEN, false);
+ color_quad->SetNew(
+ child_shared_state.get(), rect, rect, SK_ColorGREEN, false);
child_pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
RenderPass::Id root_id(1, 1);
@@ -280,7 +283,7 @@
pass->quad_list.push_back(texture_quad.PassAs<DrawQuad>());
scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_state.get(), rect, SK_ColorWHITE, false);
+ color_quad->SetNew(shared_state.get(), rect, rect, SK_ColorWHITE, false);
pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
RenderPassList pass_list;
@@ -315,7 +318,7 @@
scoped_ptr<SharedQuadState> color_quad_state =
CreateTestSharedQuadState(gfx::Transform(), rect);
scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(color_quad_state.get(), rect, SK_ColorWHITE, false);
+ color_quad->SetNew(color_quad_state.get(), rect, rect, SK_ColorWHITE, false);
pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
RenderPassList pass_list;
@@ -348,7 +351,7 @@
pass->quad_list.push_back(texture_quad.PassAs<DrawQuad>());
scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_state.get(), rect, SK_ColorWHITE, false);
+ color_quad->SetNew(shared_state.get(), rect, rect, SK_ColorWHITE, false);
pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
RenderPassList pass_list;
@@ -384,7 +387,7 @@
scoped_ptr<SharedQuadState> color_quad_state =
CreateTestSharedQuadState(gfx::Transform(), rect);
scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(color_quad_state.get(), rect, SK_ColorWHITE, false);
+ color_quad->SetNew(color_quad_state.get(), rect, rect, SK_ColorWHITE, false);
pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
RenderPassList pass_list;
@@ -461,8 +464,15 @@
}
scoped_ptr<YUVVideoDrawQuad> yuv_quad = YUVVideoDrawQuad::Create();
- yuv_quad->SetNew(shared_state, rect, opaque_rect, gfx::Size(),
- y_resource, u_resource, v_resource, a_resource);
+ yuv_quad->SetNew(shared_state,
+ rect,
+ opaque_rect,
+ rect,
+ gfx::Size(),
+ y_resource,
+ u_resource,
+ v_resource,
+ a_resource);
return yuv_quad.Pass();
}
};
@@ -506,7 +516,7 @@
pass->quad_list.push_back(yuv_quad.PassAs<DrawQuad>());
scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_state.get(), rect, SK_ColorWHITE, false);
+ color_quad->SetNew(shared_state.get(), rect, rect, SK_ColorWHITE, false);
pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
@@ -535,7 +545,7 @@
pass->quad_list.push_back(yuv_quad.PassAs<DrawQuad>());
scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_state.get(), rect, SK_ColorBLACK, false);
+ color_quad->SetNew(shared_state.get(), rect, rect, SK_ColorBLACK, false);
pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
@@ -567,31 +577,26 @@
CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
shared_state->opacity = 0.5f;
+ gfx::Rect blue_rect(0,
+ 0,
+ this->device_viewport_size_.width(),
+ this->device_viewport_size_.height() / 2);
scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
- blue->SetNew(shared_state.get(),
- gfx::Rect(0,
- 0,
- this->device_viewport_size_.width(),
- this->device_viewport_size_.height() / 2),
- SK_ColorBLUE,
- false);
+ blue->SetNew(shared_state.get(), blue_rect, blue_rect, SK_ColorBLUE, false);
+ gfx::Rect yellow_rect(0,
+ this->device_viewport_size_.height() / 2,
+ this->device_viewport_size_.width(),
+ this->device_viewport_size_.height() / 2);
scoped_ptr<SolidColorDrawQuad> yellow = SolidColorDrawQuad::Create();
- yellow->SetNew(shared_state.get(),
- gfx::Rect(0,
- this->device_viewport_size_.height() / 2,
- this->device_viewport_size_.width(),
- this->device_viewport_size_.height() / 2),
- SK_ColorYELLOW,
- false);
+ yellow->SetNew(
+ shared_state.get(), yellow_rect, yellow_rect, SK_ColorYELLOW, false);
scoped_ptr<SharedQuadState> blank_state =
CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
scoped_ptr<SolidColorDrawQuad> white = SolidColorDrawQuad::Create();
- white->SetNew(blank_state.get(),
- viewport_rect,
- SK_ColorWHITE,
- false);
+ white->SetNew(
+ blank_state.get(), viewport_rect, viewport_rect, SK_ColorWHITE, false);
child_pass->quad_list.push_back(blue.PassAs<DrawQuad>());
child_pass->quad_list.push_back(yellow.PassAs<DrawQuad>());
@@ -627,6 +632,7 @@
RenderPassDrawQuad::Create();
render_pass_quad->SetNew(pass_shared_state.get(),
pass_rect,
+ pass_rect,
child_pass_id,
false,
0,
@@ -668,31 +674,26 @@
CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
shared_state->opacity = 0.5f;
+ gfx::Rect blue_rect(0,
+ 0,
+ this->device_viewport_size_.width(),
+ this->device_viewport_size_.height() / 2);
scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
- blue->SetNew(shared_state.get(),
- gfx::Rect(0,
- 0,
- this->device_viewport_size_.width(),
- this->device_viewport_size_.height() / 2),
- SK_ColorBLUE,
- false);
+ blue->SetNew(shared_state.get(), blue_rect, blue_rect, SK_ColorBLUE, false);
+ gfx::Rect yellow_rect(0,
+ this->device_viewport_size_.height() / 2,
+ this->device_viewport_size_.width(),
+ this->device_viewport_size_.height() / 2);
scoped_ptr<SolidColorDrawQuad> yellow = SolidColorDrawQuad::Create();
- yellow->SetNew(shared_state.get(),
- gfx::Rect(0,
- this->device_viewport_size_.height() / 2,
- this->device_viewport_size_.width(),
- this->device_viewport_size_.height() / 2),
- SK_ColorYELLOW,
- false);
+ yellow->SetNew(
+ shared_state.get(), yellow_rect, yellow_rect, SK_ColorYELLOW, false);
scoped_ptr<SharedQuadState> blank_state =
CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
scoped_ptr<SolidColorDrawQuad> white = SolidColorDrawQuad::Create();
- white->SetNew(blank_state.get(),
- viewport_rect,
- SK_ColorWHITE,
- false);
+ white->SetNew(
+ blank_state.get(), viewport_rect, viewport_rect, SK_ColorWHITE, false);
child_pass->quad_list.push_back(blue.PassAs<DrawQuad>());
child_pass->quad_list.push_back(yellow.PassAs<DrawQuad>());
@@ -708,6 +709,7 @@
RenderPassDrawQuad::Create();
render_pass_quad->SetNew(pass_shared_state.get(),
pass_rect,
+ pass_rect,
child_pass_id,
false,
0,
@@ -747,31 +749,26 @@
CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
shared_state->opacity = 0.5f;
+ gfx::Rect blue_rect(0,
+ 0,
+ this->device_viewport_size_.width(),
+ this->device_viewport_size_.height() / 2);
scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
- blue->SetNew(shared_state.get(),
- gfx::Rect(0,
- 0,
- this->device_viewport_size_.width(),
- this->device_viewport_size_.height() / 2),
- SK_ColorBLUE,
- false);
+ blue->SetNew(shared_state.get(), blue_rect, blue_rect, SK_ColorBLUE, false);
+ gfx::Rect yellow_rect(0,
+ this->device_viewport_size_.height() / 2,
+ this->device_viewport_size_.width(),
+ this->device_viewport_size_.height() / 2);
scoped_ptr<SolidColorDrawQuad> yellow = SolidColorDrawQuad::Create();
- yellow->SetNew(shared_state.get(),
- gfx::Rect(0,
- this->device_viewport_size_.height() / 2,
- this->device_viewport_size_.width(),
- this->device_viewport_size_.height() / 2),
- SK_ColorYELLOW,
- false);
+ yellow->SetNew(
+ shared_state.get(), yellow_rect, yellow_rect, SK_ColorYELLOW, false);
scoped_ptr<SharedQuadState> blank_state =
CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
scoped_ptr<SolidColorDrawQuad> white = SolidColorDrawQuad::Create();
- white->SetNew(blank_state.get(),
- viewport_rect,
- SK_ColorWHITE,
- false);
+ white->SetNew(
+ blank_state.get(), viewport_rect, viewport_rect, SK_ColorWHITE, false);
child_pass->quad_list.push_back(blue.PassAs<DrawQuad>());
child_pass->quad_list.push_back(yellow.PassAs<DrawQuad>());
@@ -788,6 +785,7 @@
RenderPassDrawQuad::Create();
render_pass_quad->SetNew(pass_shared_state.get(),
pass_rect,
+ pass_rect,
child_pass_id,
false,
0,
@@ -827,31 +825,26 @@
CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
shared_state->opacity = 0.5f;
+ gfx::Rect blue_rect(0,
+ 0,
+ this->device_viewport_size_.width(),
+ this->device_viewport_size_.height() / 2);
scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
- blue->SetNew(shared_state.get(),
- gfx::Rect(0,
- 0,
- this->device_viewport_size_.width(),
- this->device_viewport_size_.height() / 2),
- SK_ColorBLUE,
- false);
+ blue->SetNew(shared_state.get(), blue_rect, blue_rect, SK_ColorBLUE, false);
+ gfx::Rect yellow_rect(0,
+ this->device_viewport_size_.height() / 2,
+ this->device_viewport_size_.width(),
+ this->device_viewport_size_.height() / 2);
scoped_ptr<SolidColorDrawQuad> yellow = SolidColorDrawQuad::Create();
- yellow->SetNew(shared_state.get(),
- gfx::Rect(0,
- this->device_viewport_size_.height() / 2,
- this->device_viewport_size_.width(),
- this->device_viewport_size_.height() / 2),
- SK_ColorYELLOW,
- false);
+ yellow->SetNew(
+ shared_state.get(), yellow_rect, yellow_rect, SK_ColorYELLOW, false);
scoped_ptr<SharedQuadState> blank_state =
CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
scoped_ptr<SolidColorDrawQuad> white = SolidColorDrawQuad::Create();
- white->SetNew(blank_state.get(),
- viewport_rect,
- SK_ColorWHITE,
- false);
+ white->SetNew(
+ blank_state.get(), viewport_rect, viewport_rect, SK_ColorWHITE, false);
child_pass->quad_list.push_back(blue.PassAs<DrawQuad>());
child_pass->quad_list.push_back(yellow.PassAs<DrawQuad>());
@@ -890,6 +883,7 @@
RenderPassDrawQuad::Create();
render_pass_quad->SetNew(pass_shared_state.get(),
pass_rect,
+ pass_rect,
child_pass_id,
false,
0,
@@ -930,22 +924,19 @@
scoped_ptr<SharedQuadState> shared_state =
CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
+ gfx::Rect blue_rect(0,
+ 0,
+ this->device_viewport_size_.width(),
+ this->device_viewport_size_.height() / 2);
scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
- blue->SetNew(shared_state.get(),
- gfx::Rect(0,
- 0,
- this->device_viewport_size_.width(),
- this->device_viewport_size_.height() / 2),
- SK_ColorBLUE,
- false);
+ blue->SetNew(shared_state.get(), blue_rect, blue_rect, SK_ColorBLUE, false);
+ gfx::Rect yellow_rect(0,
+ this->device_viewport_size_.height() / 2,
+ this->device_viewport_size_.width(),
+ this->device_viewport_size_.height() / 2);
scoped_ptr<SolidColorDrawQuad> yellow = SolidColorDrawQuad::Create();
- yellow->SetNew(shared_state.get(),
- gfx::Rect(0,
- this->device_viewport_size_.height() / 2,
- this->device_viewport_size_.width(),
- this->device_viewport_size_.height() / 2),
- SK_ColorYELLOW,
- false);
+ yellow->SetNew(
+ shared_state.get(), yellow_rect, yellow_rect, SK_ColorYELLOW, false);
child_pass->quad_list.push_back(blue.PassAs<DrawQuad>());
child_pass->quad_list.push_back(yellow.PassAs<DrawQuad>());
@@ -987,22 +978,19 @@
scoped_ptr<SharedQuadState> shared_state =
CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
+ gfx::Rect blue_rect(0,
+ 0,
+ this->device_viewport_size_.width(),
+ this->device_viewport_size_.height() / 2);
scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
- blue->SetNew(shared_state.get(),
- gfx::Rect(0,
- 0,
- this->device_viewport_size_.width(),
- this->device_viewport_size_.height() / 2),
- SK_ColorBLUE,
- false);
+ blue->SetNew(shared_state.get(), blue_rect, blue_rect, SK_ColorBLUE, false);
+ gfx::Rect yellow_rect(0,
+ this->device_viewport_size_.height() / 2,
+ this->device_viewport_size_.width(),
+ this->device_viewport_size_.height() / 2);
scoped_ptr<SolidColorDrawQuad> yellow = SolidColorDrawQuad::Create();
- yellow->SetNew(shared_state.get(),
- gfx::Rect(0,
- this->device_viewport_size_.height() / 2,
- this->device_viewport_size_.width(),
- this->device_viewport_size_.height() / 2),
- SK_ColorYELLOW,
- false);
+ yellow->SetNew(
+ shared_state.get(), yellow_rect, yellow_rect, SK_ColorYELLOW, false);
child_pass->quad_list.push_back(blue.PassAs<DrawQuad>());
child_pass->quad_list.push_back(yellow.PassAs<DrawQuad>());
@@ -1022,6 +1010,7 @@
scoped_ptr<SolidColorDrawQuad> background = SolidColorDrawQuad::Create();
background->SetNew(root_shared_state.get(),
gfx::Rect(this->device_viewport_size_),
+ gfx::Rect(this->device_viewport_size_),
SK_ColorWHITE,
false);
root_pass->quad_list.push_back(background.PassAs<DrawQuad>());
@@ -1060,7 +1049,11 @@
// The child render pass is just a green box.
static const SkColor kCSSGreen = 0xff008000;
scoped_ptr<SolidColorDrawQuad> green = SolidColorDrawQuad::Create();
- green->SetNew(child_pass_shared_state.get(), viewport_rect, kCSSGreen, false);
+ green->SetNew(child_pass_shared_state.get(),
+ viewport_rect,
+ viewport_rect,
+ kCSSGreen,
+ false);
child_pass->quad_list.push_back(green.PassAs<DrawQuad>());
// Make a mask.
@@ -1112,6 +1105,7 @@
scoped_ptr<RenderPassDrawQuad> mask_quad = RenderPassDrawQuad::Create();
mask_quad->SetNew(root_pass_shared_state.get(),
sub_rect,
+ sub_rect,
child_pass_id,
false, // is_replica
mask_resource_id,
@@ -1123,8 +1117,11 @@
// White background behind the masked render pass.
scoped_ptr<SolidColorDrawQuad> white = SolidColorDrawQuad::Create();
- white->SetNew(
- root_pass_shared_state.get(), viewport_rect, SK_ColorWHITE, false);
+ white->SetNew(root_pass_shared_state.get(),
+ viewport_rect,
+ viewport_rect,
+ SK_ColorWHITE,
+ false);
root_pass->quad_list.push_back(white.PassAs<DrawQuad>());
RenderPassList pass_list;
@@ -1167,6 +1164,7 @@
scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
color_quad->SetNew(shared_state.get(),
filter_pass_content_rect_,
+ filter_pass_content_rect_,
SK_ColorTRANSPARENT,
false);
filter_pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
@@ -1182,12 +1180,13 @@
filter_pass_quad->SetNew(
shared_state.get(),
filter_pass_content_rect_,
+ filter_pass_content_rect_,
filter_pass_id,
- false, // is_replica
- 0, // mask_resource_id
+ false, // is_replica
+ 0, // mask_resource_id
filter_pass_content_rect_, // contents_changed_since_last_frame
- gfx::RectF(), // mask_uv_rect
- FilterOperations(), // filters
+ gfx::RectF(), // mask_uv_rect
+ FilterOperations(), // filters
this->background_filters_);
root_pass->quad_list.push_back(filter_pass_quad.PassAs<DrawQuad>());
root_pass->shared_quad_state_list.push_back(shared_state.Pass());
@@ -1201,7 +1200,8 @@
CreateTestSharedQuadState(identity_content_to_target_transform,
left_rect);
scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_state.get(), left_rect, SK_ColorGREEN, false);
+ color_quad->SetNew(
+ shared_state.get(), left_rect, left_rect, SK_ColorGREEN, false);
root_pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
root_pass->shared_quad_state_list.push_back(shared_state.Pass());
left_rect += gfx::Vector2d(0, left_rect.height() + 1);
@@ -1213,7 +1213,8 @@
CreateTestSharedQuadState(identity_content_to_target_transform,
middle_rect);
scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_state.get(), middle_rect, SK_ColorRED, false);
+ color_quad->SetNew(
+ shared_state.get(), middle_rect, middle_rect, SK_ColorRED, false);
root_pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
root_pass->shared_quad_state_list.push_back(shared_state.Pass());
middle_rect += gfx::Vector2d(0, middle_rect.height() + 1);
@@ -1225,7 +1226,8 @@
CreateTestSharedQuadState(identity_content_to_target_transform,
right_rect);
scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(shared_state.get(), right_rect, SK_ColorBLUE, false);
+ color_quad->SetNew(
+ shared_state.get(), right_rect, right_rect, SK_ColorBLUE, false);
root_pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
root_pass->shared_quad_state_list.push_back(shared_state.Pass());
right_rect += gfx::Vector2d(0, right_rect.height() + 1);
@@ -1238,6 +1240,7 @@
SolidColorDrawQuad::Create();
background_quad->SetNew(shared_state.get(),
device_viewport_rect,
+ device_viewport_rect,
SK_ColorWHITE,
false);
root_pass->quad_list.push_back(background_quad.PassAs<DrawQuad>());
@@ -1322,7 +1325,7 @@
scoped_ptr<SharedQuadState> blue_shared_state =
CreateTestSharedQuadState(gfx::Transform(), rect);
scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
- blue->SetNew(blue_shared_state.get(), rect, SK_ColorBLUE, false);
+ blue->SetNew(blue_shared_state.get(), rect, rect, SK_ColorBLUE, false);
pass->quad_list.push_back(blue.PassAs<DrawQuad>());
pass->has_transparent_background = false;
RenderPassList pass_list;
@@ -1346,7 +1349,7 @@
scoped_ptr<SharedQuadState> green_shared_state =
CreateTestSharedQuadState(gfx::Transform(), rect);
scoped_ptr<SolidColorDrawQuad> green = SolidColorDrawQuad::Create();
- green->SetNew(green_shared_state.get(), rect, SK_ColorGREEN, false);
+ green->SetNew(green_shared_state.get(), rect, rect, SK_ColorGREEN, false);
pass->quad_list.push_back(green.PassAs<DrawQuad>());
RenderPassList pass_list;
pass_list.push_back(pass.Pass());
@@ -1381,14 +1384,12 @@
scoped_ptr<SharedQuadState> shared_state =
CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
+ gfx::Rect blue_rect(0,
+ 0,
+ this->device_viewport_size_.width(),
+ this->device_viewport_size_.height());
scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
- blue->SetNew(shared_state.get(),
- gfx::Rect(0,
- 0,
- this->device_viewport_size_.width(),
- this->device_viewport_size_.height()),
- SK_ColorBLUE,
- false);
+ blue->SetNew(shared_state.get(), blue_rect, blue_rect, SK_ColorBLUE, false);
child_pass->quad_list.push_back(blue.PassAs<DrawQuad>());
scoped_ptr<SharedQuadState> pass_shared_state =
@@ -1421,7 +1422,7 @@
scoped_ptr<SharedQuadState> blue_shared_state =
CreateTestSharedQuadState(gfx::Transform(), rect);
scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
- blue->SetNew(blue_shared_state.get(), rect, SK_ColorBLUE, false);
+ blue->SetNew(blue_shared_state.get(), rect, rect, SK_ColorBLUE, false);
pass->quad_list.push_back(blue.PassAs<DrawQuad>());
RenderPassList pass_list;
pass_list.push_back(pass.Pass());
@@ -1446,7 +1447,7 @@
CreateTestSharedQuadState(red_content_to_target_transform, rect);
scoped_ptr<SolidColorDrawQuad> red = SolidColorDrawQuad::Create();
- red->SetNew(red_shared_state.get(), rect, SK_ColorRED, false);
+ red->SetNew(red_shared_state.get(), rect, rect, SK_ColorRED, false);
pass->quad_list.push_back(red.PassAs<DrawQuad>());
@@ -1456,7 +1457,7 @@
CreateTestSharedQuadState(yellow_content_to_target_transform, rect);
scoped_ptr<SolidColorDrawQuad> yellow = SolidColorDrawQuad::Create();
- yellow->SetNew(yellow_shared_state.get(), rect, SK_ColorYELLOW, false);
+ yellow->SetNew(yellow_shared_state.get(), rect, rect, SK_ColorYELLOW, false);
pass->quad_list.push_back(yellow.PassAs<DrawQuad>());
@@ -1465,7 +1466,7 @@
CreateTestSharedQuadState(blue_content_to_target_transform, rect);
scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
- blue->SetNew(blue_shared_state.get(), rect, SK_ColorBLUE, false);
+ blue->SetNew(blue_shared_state.get(), rect, rect, SK_ColorBLUE, false);
pass->quad_list.push_back(blue.PassAs<DrawQuad>());
@@ -1498,7 +1499,7 @@
CreateTestSharedQuadState(red_content_to_target_transform, rect);
scoped_ptr<SolidColorDrawQuad> red = SolidColorDrawQuad::Create();
- red->SetNew(red_shared_state.get(), rect, SK_ColorRED, false);
+ red->SetNew(red_shared_state.get(), rect, rect, SK_ColorRED, false);
pass->quad_list.push_back(red.PassAs<DrawQuad>());
@@ -1509,7 +1510,7 @@
CreateTestSharedQuadState(yellow_content_to_target_transform, rect);
scoped_ptr<SolidColorDrawQuad> yellow = SolidColorDrawQuad::Create();
- yellow->SetNew(yellow_shared_state.get(), rect, SK_ColorYELLOW, false);
+ yellow->SetNew(yellow_shared_state.get(), rect, rect, SK_ColorYELLOW, false);
pass->quad_list.push_back(yellow.PassAs<DrawQuad>());
@@ -1518,7 +1519,7 @@
CreateTestSharedQuadState(blue_content_to_target_transform, rect);
scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
- blue->SetNew(blue_shared_state.get(), rect, SK_ColorBLUE, false);
+ blue->SetNew(blue_shared_state.get(), rect, rect, SK_ColorBLUE, false);
pass->quad_list.push_back(blue.PassAs<DrawQuad>());
@@ -1560,7 +1561,7 @@
CreateTestSharedQuadState(green_content_to_target_transform, rect);
scoped_ptr<SolidColorDrawQuad> green = SolidColorDrawQuad::Create();
- green->SetNew(green_shared_state.get(), rect, SK_ColorGREEN, false);
+ green->SetNew(green_shared_state.get(), rect, rect, SK_ColorGREEN, false);
pass->quad_list.push_back(green.PassAs<DrawQuad>());
@@ -1589,20 +1590,21 @@
scoped_ptr<SharedQuadState> red_shared_state =
CreateTestSharedQuadState(red_content_to_target_transform, red_rect);
scoped_ptr<SolidColorDrawQuad> red = SolidColorDrawQuad::Create();
- red->SetNew(red_shared_state.get(), red_rect, SK_ColorRED, false);
+ red->SetNew(red_shared_state.get(), red_rect, red_rect, SK_ColorRED, false);
pass->quad_list.push_back(red.PassAs<DrawQuad>());
gfx::Rect green_rect(19, 7, 180, 10);
scoped_ptr<SharedQuadState> green_shared_state =
CreateTestSharedQuadState(gfx::Transform(), green_rect);
scoped_ptr<SolidColorDrawQuad> green = SolidColorDrawQuad::Create();
- green->SetNew(green_shared_state.get(), green_rect, SK_ColorGREEN, false);
+ green->SetNew(
+ green_shared_state.get(), green_rect, green_rect, SK_ColorGREEN, false);
pass->quad_list.push_back(green.PassAs<DrawQuad>());
scoped_ptr<SharedQuadState> blue_shared_state =
CreateTestSharedQuadState(gfx::Transform(), rect);
scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
- blue->SetNew(blue_shared_state.get(), rect, SK_ColorBLUE, false);
+ blue->SetNew(blue_shared_state.get(), rect, rect, SK_ColorBLUE, false);
pass->quad_list.push_back(blue.PassAs<DrawQuad>());
RenderPassList pass_list;
@@ -1656,6 +1658,7 @@
viewport, // Intentionally bigger than clip.
gfx::Rect(),
viewport,
+ gfx::RectF(viewport),
viewport.size(),
texture_format,
viewport,
@@ -1679,6 +1682,7 @@
green_quad->SetNew(green_shared_state.get(),
viewport,
gfx::Rect(),
+ viewport,
gfx::RectF(0.f, 0.f, 1.f, 1.f),
viewport.size(),
texture_format,
@@ -1725,6 +1729,7 @@
green_quad->SetNew(green_shared_state.get(),
viewport,
gfx::Rect(),
+ viewport,
gfx::RectF(0, 0, 1, 1),
viewport.size(),
texture_format,
@@ -1749,6 +1754,7 @@
white_quad->SetNew(white_shared_state.get(),
viewport,
gfx::Rect(),
+ viewport,
gfx::RectF(0, 0, 1, 1),
viewport.size(),
texture_format,
@@ -1823,14 +1829,15 @@
scoped_ptr<PictureDrawQuad> quad = PictureDrawQuad::Create();
quad->SetNew(shared_state.get(),
- viewport,
- gfx::Rect(),
- gfx::RectF(0, 0, 2, 2),
- viewport.size(),
- texture_format,
- viewport,
- 1.f,
- pile);
+ viewport,
+ gfx::Rect(),
+ viewport,
+ gfx::RectF(0, 0, 2, 2),
+ viewport.size(),
+ texture_format,
+ viewport,
+ 1.f,
+ pile);
pass->quad_list.push_back(quad.PassAs<DrawQuad>());
RenderPassList pass_list;
@@ -1881,6 +1888,7 @@
green_quad1->SetNew(top_right_green_shared_quad_state.get(),
green_rect1,
gfx::Rect(),
+ green_rect1,
gfx::RectF(green_rect1.size()),
green_rect1.size(),
texture_format,
@@ -1893,6 +1901,7 @@
green_quad2->SetNew(top_right_green_shared_quad_state.get(),
green_rect2,
gfx::Rect(),
+ green_rect2,
gfx::RectF(green_rect2.size()),
green_rect2.size(),
texture_format,
@@ -1911,8 +1920,11 @@
green_content_to_target_transform, viewport, bottom_right_rect);
scoped_ptr<SolidColorDrawQuad> bottom_right_color_quad =
SolidColorDrawQuad::Create();
- bottom_right_color_quad->SetNew(
- bottom_right_green_shared_state.get(), viewport, SK_ColorGREEN, false);
+ bottom_right_color_quad->SetNew(bottom_right_green_shared_state.get(),
+ viewport,
+ viewport,
+ SK_ColorGREEN,
+ false);
pass->quad_list.push_back(bottom_right_color_quad.PassAs<DrawQuad>());
// Add two blue checkerboards taking up the bottom left and top right,
@@ -1965,6 +1977,7 @@
quad_content_rect,
gfx::Rect(),
quad_content_rect,
+ gfx::RectF(quad_content_rect),
content_union_rect.size(),
texture_format,
content_union_rect,
@@ -1979,8 +1992,11 @@
CreateTestSharedQuadState(half_green_content_to_target_transform,
half_green_rect);
scoped_ptr<SolidColorDrawQuad> half_color_quad = SolidColorDrawQuad::Create();
- half_color_quad->SetNew(
- half_green_shared_state.get(), half_green_rect, SK_ColorGREEN, false);
+ half_color_quad->SetNew(half_green_shared_state.get(),
+ half_green_rect,
+ half_green_rect,
+ SK_ColorGREEN,
+ false);
pass->quad_list.push_back(half_color_quad.PassAs<DrawQuad>());
RenderPassList pass_list;
@@ -2034,10 +2050,11 @@
shared_state.get(),
gfx::Rect(this->device_viewport_size_),
gfx::Rect(),
+ gfx::Rect(this->device_viewport_size_),
resource,
- true, // premultiplied_alpha
+ true, // premultiplied_alpha
gfx::PointF(0.0f, 0.0f), // uv_top_left
- gfx::PointF( // uv_bottom_right
+ gfx::PointF( // uv_bottom_right
this->device_viewport_size_.width() / texture_rect.width(),
this->device_viewport_size_.height() / texture_rect.height()),
SK_ColorWHITE,
diff --git a/cc/output/software_renderer_unittest.cc b/cc/output/software_renderer_unittest.cc
index c4ffdc2..3673314 100644
--- a/cc/output/software_renderer_unittest.cc
+++ b/cc/output/software_renderer_unittest.cc
@@ -78,9 +78,10 @@
root_render_pass_id, outer_rect, outer_rect, gfx::Transform());
scoped_ptr<SolidColorDrawQuad> outer_quad = SolidColorDrawQuad::Create();
outer_quad->SetNew(
- shared_quad_state.get(), outer_rect, SK_ColorYELLOW, false);
+ shared_quad_state.get(), outer_rect, outer_rect, SK_ColorYELLOW, false);
scoped_ptr<SolidColorDrawQuad> inner_quad = SolidColorDrawQuad::Create();
- inner_quad->SetNew(shared_quad_state.get(), inner_rect, SK_ColorCYAN, false);
+ inner_quad->SetNew(
+ shared_quad_state.get(), inner_rect, inner_rect, SK_ColorCYAN, false);
inner_quad->visible_rect = visible_rect;
root_render_pass->AppendQuad(inner_quad.PassAs<DrawQuad>());
root_render_pass->AppendQuad(outer_quad.PassAs<DrawQuad>());
@@ -173,6 +174,7 @@
outer_quad->SetNew(shared_quad_state.get(),
outer_rect,
outer_rect,
+ outer_rect,
resource_yellow,
gfx::RectF(outer_size),
outer_size,
@@ -181,6 +183,7 @@
inner_quad->SetNew(shared_quad_state.get(),
inner_rect,
inner_rect,
+ inner_rect,
resource_cyan,
gfx::RectF(inner_size),
inner_size,
@@ -262,6 +265,7 @@
quad->SetNew(shared_quad_state.get(),
tile_rect,
tile_rect,
+ tile_rect,
resource_cyan,
gfx::RectF(tile_size),
tile_size,
diff --git a/cc/quads/checkerboard_draw_quad.cc b/cc/quads/checkerboard_draw_quad.cc
index 57f776d..921a553 100644
--- a/cc/quads/checkerboard_draw_quad.cc
+++ b/cc/quads/checkerboard_draw_quad.cc
@@ -17,9 +17,9 @@
void CheckerboardDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
+ const gfx::Rect& visible_rect,
SkColor color) {
gfx::Rect opaque_rect = SkColorGetA(color) == 255 ? rect : gfx::Rect();
- gfx::Rect visible_rect = rect;
bool needs_blending = false;
DrawQuad::SetAll(shared_quad_state, DrawQuad::CHECKERBOARD, rect, opaque_rect,
visible_rect, needs_blending);
diff --git a/cc/quads/checkerboard_draw_quad.h b/cc/quads/checkerboard_draw_quad.h
index ffa016f3..d59e53f 100644
--- a/cc/quads/checkerboard_draw_quad.h
+++ b/cc/quads/checkerboard_draw_quad.h
@@ -18,6 +18,7 @@
void SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
+ const gfx::Rect& visible_rect,
SkColor color);
void SetAll(const SharedQuadState* shared_quad_state,
diff --git a/cc/quads/content_draw_quad_base.cc b/cc/quads/content_draw_quad_base.cc
index a802b195..18d3d10 100644
--- a/cc/quads/content_draw_quad_base.cc
+++ b/cc/quads/content_draw_quad_base.cc
@@ -21,10 +21,10 @@
DrawQuad::Material material,
const gfx::Rect& rect,
const gfx::Rect& opaque_rect,
+ const gfx::Rect& visible_rect,
const gfx::RectF& tex_coord_rect,
const gfx::Size& texture_size,
bool swizzle_contents) {
- gfx::Rect visible_rect = rect;
bool needs_blending = false;
DrawQuad::SetAll(shared_quad_state, material, rect, opaque_rect,
visible_rect, needs_blending);
diff --git a/cc/quads/content_draw_quad_base.h b/cc/quads/content_draw_quad_base.h
index 44f8bd0c..a286e100 100644
--- a/cc/quads/content_draw_quad_base.h
+++ b/cc/quads/content_draw_quad_base.h
@@ -20,6 +20,7 @@
DrawQuad::Material material,
const gfx::Rect& rect,
const gfx::Rect& opaque_rect,
+ const gfx::Rect& visible_rect,
const gfx::RectF& tex_coord_rect,
const gfx::Size& texture_size,
bool swizzle_contents);
diff --git a/cc/quads/debug_border_draw_quad.cc b/cc/quads/debug_border_draw_quad.cc
index dc79a22..9c575aa 100644
--- a/cc/quads/debug_border_draw_quad.cc
+++ b/cc/quads/debug_border_draw_quad.cc
@@ -20,10 +20,10 @@
void DebugBorderDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
+ const gfx::Rect& visible_rect,
SkColor color,
int width) {
gfx::Rect opaque_rect;
- gfx::Rect visible_rect = rect;
bool needs_blending = SkColorGetA(color) < 255;
DrawQuad::SetAll(shared_quad_state, DrawQuad::DEBUG_BORDER, rect, opaque_rect,
visible_rect, needs_blending);
diff --git a/cc/quads/debug_border_draw_quad.h b/cc/quads/debug_border_draw_quad.h
index bcdaff9..2bfccc4 100644
--- a/cc/quads/debug_border_draw_quad.h
+++ b/cc/quads/debug_border_draw_quad.h
@@ -18,6 +18,7 @@
void SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
+ const gfx::Rect& visible_rect,
SkColor color,
int width);
diff --git a/cc/quads/draw_quad_unittest.cc b/cc/quads/draw_quad_unittest.cc
index 316accd..1918a515 100644
--- a/cc/quads/draw_quad_unittest.cc
+++ b/cc/quads/draw_quad_unittest.cc
@@ -329,11 +329,13 @@
SETUP_AND_COPY_QUAD_ALL(Type, quad_all);
TEST(DrawQuadTest, CopyCheckerboardDrawQuad) {
+ gfx::Rect visible_rect(40, 50, 30, 20);
SkColor color = 0xfabb0011;
CREATE_SHARED_STATE();
- CREATE_QUAD_1_NEW(CheckerboardDrawQuad, color);
+ CREATE_QUAD_2_NEW(CheckerboardDrawQuad, visible_rect, color);
EXPECT_EQ(DrawQuad::CHECKERBOARD, copy_quad->material);
+ EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect);
EXPECT_EQ(color, copy_quad->color);
CREATE_QUAD_1_ALL(CheckerboardDrawQuad, color);
@@ -342,12 +344,14 @@
}
TEST(DrawQuadTest, CopyDebugBorderDrawQuad) {
+ gfx::Rect visible_rect(40, 50, 30, 20);
SkColor color = 0xfabb0011;
int width = 99;
CREATE_SHARED_STATE();
- CREATE_QUAD_2_NEW(DebugBorderDrawQuad, color, width);
+ CREATE_QUAD_3_NEW(DebugBorderDrawQuad, visible_rect, color, width);
EXPECT_EQ(DrawQuad::DEBUG_BORDER, copy_quad->material);
+ EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect);
EXPECT_EQ(color, copy_quad->color);
EXPECT_EQ(width, copy_quad->width);
@@ -359,14 +363,20 @@
TEST(DrawQuadTest, CopyIOSurfaceDrawQuad) {
gfx::Rect opaque_rect(33, 47, 10, 12);
+ gfx::Rect visible_rect(40, 50, 30, 20);
gfx::Size size(58, 95);
ResourceProvider::ResourceId resource_id = 72;
IOSurfaceDrawQuad::Orientation orientation = IOSurfaceDrawQuad::UNFLIPPED;
CREATE_SHARED_STATE();
- CREATE_QUAD_4_NEW(
- IOSurfaceDrawQuad, opaque_rect, size, resource_id, orientation);
+ CREATE_QUAD_5_NEW(IOSurfaceDrawQuad,
+ opaque_rect,
+ visible_rect,
+ size,
+ resource_id,
+ orientation);
EXPECT_EQ(DrawQuad::IO_SURFACE_CONTENT, copy_quad->material);
+ EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect);
EXPECT_RECT_EQ(opaque_rect, copy_quad->opaque_rect);
EXPECT_EQ(size, copy_quad->io_surface_size);
EXPECT_EQ(resource_id, copy_quad->io_surface_resource_id);
@@ -380,6 +390,7 @@
}
TEST(DrawQuadTest, CopyRenderPassDrawQuad) {
+ gfx::Rect visible_rect(40, 50, 30, 20);
RenderPass::Id render_pass_id(22, 64);
bool is_replica = true;
ResourceProvider::ResourceId mask_resource_id = 78;
@@ -394,7 +405,8 @@
RenderPass::Id copied_render_pass_id(235, 11);
CREATE_SHARED_STATE();
- CREATE_QUAD_7_NEW_1(RenderPassDrawQuad,
+ CREATE_QUAD_8_NEW_1(RenderPassDrawQuad,
+ visible_rect,
render_pass_id,
is_replica,
mask_resource_id,
@@ -404,6 +416,7 @@
background_filters,
copied_render_pass_id);
EXPECT_EQ(DrawQuad::RENDER_PASS, copy_quad->material);
+ EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect);
EXPECT_EQ(copied_render_pass_id, copy_quad->render_pass_id);
EXPECT_EQ(is_replica, copy_quad->is_replica);
EXPECT_EQ(mask_resource_id, copy_quad->mask_resource_id);
@@ -434,12 +447,15 @@
}
TEST(DrawQuadTest, CopySolidColorDrawQuad) {
+ gfx::Rect visible_rect(40, 50, 30, 20);
SkColor color = 0x49494949;
bool force_anti_aliasing_off = false;
CREATE_SHARED_STATE();
- CREATE_QUAD_2_NEW(SolidColorDrawQuad, color, force_anti_aliasing_off);
+ CREATE_QUAD_3_NEW(
+ SolidColorDrawQuad, visible_rect, color, force_anti_aliasing_off);
EXPECT_EQ(DrawQuad::SOLID_COLOR, copy_quad->material);
+ EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect);
EXPECT_EQ(color, copy_quad->color);
EXPECT_EQ(force_anti_aliasing_off, copy_quad->force_anti_aliasing_off);
@@ -451,12 +467,15 @@
TEST(DrawQuadTest, CopyStreamVideoDrawQuad) {
gfx::Rect opaque_rect(33, 47, 10, 12);
+ gfx::Rect visible_rect(40, 50, 30, 20);
ResourceProvider::ResourceId resource_id = 64;
gfx::Transform matrix = gfx::Transform(0.5, 0.25, 1, 0.75, 0, 1);
CREATE_SHARED_STATE();
- CREATE_QUAD_3_NEW(StreamVideoDrawQuad, opaque_rect, resource_id, matrix);
+ CREATE_QUAD_4_NEW(
+ StreamVideoDrawQuad, opaque_rect, visible_rect, resource_id, matrix);
EXPECT_EQ(DrawQuad::STREAM_VIDEO_CONTENT, copy_quad->material);
+ EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect);
EXPECT_RECT_EQ(opaque_rect, copy_quad->opaque_rect);
EXPECT_EQ(resource_id, copy_quad->resource_id);
EXPECT_EQ(matrix, copy_quad->matrix);
@@ -468,11 +487,13 @@
}
TEST(DrawQuadTest, CopySurfaceDrawQuad) {
+ gfx::Rect visible_rect(40, 50, 30, 20);
int surface_id = 1234;
CREATE_SHARED_STATE();
- CREATE_QUAD_1_NEW(SurfaceDrawQuad, surface_id);
+ CREATE_QUAD_2_NEW(SurfaceDrawQuad, visible_rect, surface_id);
EXPECT_EQ(DrawQuad::SURFACE_CONTENT, copy_quad->material);
+ EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect);
EXPECT_EQ(surface_id, copy_quad->surface_id);
CREATE_QUAD_1_ALL(SurfaceDrawQuad, surface_id);
@@ -483,6 +504,7 @@
TEST(DrawQuadTest, CopyTextureDrawQuad) {
gfx::Rect opaque_rect(33, 47, 10, 12);
+ gfx::Rect visible_rect(40, 50, 30, 20);
unsigned resource_id = 82;
bool premultiplied_alpha = true;
gfx::PointF uv_top_left(0.5f, 224.f);
@@ -491,8 +513,9 @@
bool flipped = true;
CREATE_SHARED_STATE();
- CREATE_QUAD_8_NEW(TextureDrawQuad,
+ CREATE_QUAD_9_NEW(TextureDrawQuad,
opaque_rect,
+ visible_rect,
resource_id,
premultiplied_alpha,
uv_top_left,
@@ -501,6 +524,7 @@
vertex_opacity,
flipped);
EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, copy_quad->material);
+ EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect);
EXPECT_RECT_EQ(opaque_rect, copy_quad->opaque_rect);
EXPECT_EQ(resource_id, copy_quad->resource_id);
EXPECT_EQ(premultiplied_alpha, copy_quad->premultiplied_alpha);
@@ -528,20 +552,23 @@
TEST(DrawQuadTest, CopyTileDrawQuad) {
gfx::Rect opaque_rect(33, 44, 22, 33);
+ gfx::Rect visible_rect(40, 50, 30, 20);
unsigned resource_id = 104;
gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f);
gfx::Size texture_size(85, 32);
bool swizzle_contents = true;
CREATE_SHARED_STATE();
- CREATE_QUAD_5_NEW(TileDrawQuad,
+ CREATE_QUAD_6_NEW(TileDrawQuad,
opaque_rect,
+ visible_rect,
resource_id,
tex_coord_rect,
texture_size,
swizzle_contents);
EXPECT_EQ(DrawQuad::TILED_CONTENT, copy_quad->material);
EXPECT_RECT_EQ(opaque_rect, copy_quad->opaque_rect);
+ EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect);
EXPECT_EQ(resource_id, copy_quad->resource_id);
EXPECT_EQ(tex_coord_rect, copy_quad->tex_coord_rect);
EXPECT_EQ(texture_size, copy_quad->texture_size);
@@ -561,6 +588,7 @@
TEST(DrawQuadTest, CopyYUVVideoDrawQuad) {
gfx::Rect opaque_rect(33, 47, 10, 12);
+ gfx::Rect visible_rect(40, 50, 30, 20);
gfx::SizeF tex_scale(0.75f, 0.5f);
ResourceProvider::ResourceId y_plane_resource_id = 45;
ResourceProvider::ResourceId u_plane_resource_id = 532;
@@ -568,8 +596,9 @@
ResourceProvider::ResourceId a_plane_resource_id = 63;
CREATE_SHARED_STATE();
- CREATE_QUAD_6_NEW(YUVVideoDrawQuad,
+ CREATE_QUAD_7_NEW(YUVVideoDrawQuad,
opaque_rect,
+ visible_rect,
tex_scale,
y_plane_resource_id,
u_plane_resource_id,
@@ -577,6 +606,7 @@
a_plane_resource_id);
EXPECT_EQ(DrawQuad::YUV_VIDEO_CONTENT, copy_quad->material);
EXPECT_RECT_EQ(opaque_rect, copy_quad->opaque_rect);
+ EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect);
EXPECT_EQ(tex_scale, copy_quad->tex_scale);
EXPECT_EQ(y_plane_resource_id, copy_quad->y_plane_resource_id);
EXPECT_EQ(u_plane_resource_id, copy_quad->u_plane_resource_id);
@@ -599,6 +629,7 @@
TEST(DrawQuadTest, CopyPictureDrawQuad) {
gfx::Rect opaque_rect(33, 44, 22, 33);
+ gfx::Rect visible_rect(40, 50, 30, 20);
gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f);
gfx::Size texture_size(85, 32);
ResourceFormat texture_format = RGBA_8888;
@@ -607,8 +638,9 @@
scoped_refptr<PicturePileImpl> picture_pile = PicturePileImpl::Create();
CREATE_SHARED_STATE();
- CREATE_QUAD_7_NEW(PictureDrawQuad,
+ CREATE_QUAD_8_NEW(PictureDrawQuad,
opaque_rect,
+ visible_rect,
tex_coord_rect,
texture_size,
texture_format,
@@ -617,6 +649,7 @@
picture_pile);
EXPECT_EQ(DrawQuad::PICTURE_CONTENT, copy_quad->material);
EXPECT_RECT_EQ(opaque_rect, copy_quad->opaque_rect);
+ EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect);
EXPECT_EQ(tex_coord_rect, copy_quad->tex_coord_rect);
EXPECT_EQ(texture_size, copy_quad->texture_size);
EXPECT_EQ(texture_format, copy_quad->texture_format);
@@ -660,37 +693,45 @@
};
TEST_F(DrawQuadIteratorTest, CheckerboardDrawQuad) {
+ gfx::Rect visible_rect(40, 50, 30, 20);
SkColor color = 0xfabb0011;
CREATE_SHARED_STATE();
- CREATE_QUAD_1_NEW(CheckerboardDrawQuad, color);
+ CREATE_QUAD_2_NEW(CheckerboardDrawQuad, visible_rect, color);
EXPECT_EQ(0, IterateAndCount(quad_new.get()));
}
TEST_F(DrawQuadIteratorTest, DebugBorderDrawQuad) {
+ gfx::Rect visible_rect(40, 50, 30, 20);
SkColor color = 0xfabb0011;
int width = 99;
CREATE_SHARED_STATE();
- CREATE_QUAD_2_NEW(DebugBorderDrawQuad, color, width);
+ CREATE_QUAD_3_NEW(DebugBorderDrawQuad, visible_rect, color, width);
EXPECT_EQ(0, IterateAndCount(quad_new.get()));
}
TEST_F(DrawQuadIteratorTest, IOSurfaceDrawQuad) {
gfx::Rect opaque_rect(33, 47, 10, 12);
+ gfx::Rect visible_rect(40, 50, 30, 20);
gfx::Size size(58, 95);
ResourceProvider::ResourceId resource_id = 72;
IOSurfaceDrawQuad::Orientation orientation = IOSurfaceDrawQuad::UNFLIPPED;
CREATE_SHARED_STATE();
- CREATE_QUAD_4_NEW(
- IOSurfaceDrawQuad, opaque_rect, size, resource_id, orientation);
+ CREATE_QUAD_5_NEW(IOSurfaceDrawQuad,
+ opaque_rect,
+ visible_rect,
+ size,
+ resource_id,
+ orientation);
EXPECT_EQ(resource_id, quad_new->io_surface_resource_id);
EXPECT_EQ(1, IterateAndCount(quad_new.get()));
EXPECT_EQ(resource_id + 1, quad_new->io_surface_resource_id);
}
TEST_F(DrawQuadIteratorTest, RenderPassDrawQuad) {
+ gfx::Rect visible_rect(40, 50, 30, 20);
RenderPass::Id render_pass_id(22, 64);
bool is_replica = true;
ResourceProvider::ResourceId mask_resource_id = 78;
@@ -705,7 +746,8 @@
RenderPass::Id copied_render_pass_id(235, 11);
CREATE_SHARED_STATE();
- CREATE_QUAD_7_NEW_1(RenderPassDrawQuad,
+ CREATE_QUAD_8_NEW_1(RenderPassDrawQuad,
+ visible_rect,
render_pass_id,
is_replica,
mask_resource_id,
@@ -723,36 +765,42 @@
}
TEST_F(DrawQuadIteratorTest, SolidColorDrawQuad) {
+ gfx::Rect visible_rect(40, 50, 30, 20);
SkColor color = 0x49494949;
bool force_anti_aliasing_off = false;
CREATE_SHARED_STATE();
- CREATE_QUAD_2_NEW(SolidColorDrawQuad, color, force_anti_aliasing_off);
+ CREATE_QUAD_3_NEW(
+ SolidColorDrawQuad, visible_rect, color, force_anti_aliasing_off);
EXPECT_EQ(0, IterateAndCount(quad_new.get()));
}
TEST_F(DrawQuadIteratorTest, StreamVideoDrawQuad) {
gfx::Rect opaque_rect(33, 47, 10, 12);
+ gfx::Rect visible_rect(40, 50, 30, 20);
ResourceProvider::ResourceId resource_id = 64;
gfx::Transform matrix = gfx::Transform(0.5, 0.25, 1, 0.75, 0, 1);
CREATE_SHARED_STATE();
- CREATE_QUAD_3_NEW(StreamVideoDrawQuad, opaque_rect, resource_id, matrix);
+ CREATE_QUAD_4_NEW(
+ StreamVideoDrawQuad, opaque_rect, visible_rect, resource_id, matrix);
EXPECT_EQ(resource_id, quad_new->resource_id);
EXPECT_EQ(1, IterateAndCount(quad_new.get()));
EXPECT_EQ(resource_id + 1, quad_new->resource_id);
}
TEST_F(DrawQuadIteratorTest, SurfaceDrawQuad) {
+ gfx::Rect visible_rect(40, 50, 30, 20);
int surface_id = 4321;
CREATE_SHARED_STATE();
- CREATE_QUAD_1_NEW(SurfaceDrawQuad, surface_id);
+ CREATE_QUAD_2_NEW(SurfaceDrawQuad, visible_rect, surface_id);
EXPECT_EQ(0, IterateAndCount(quad_new.get()));
}
TEST_F(DrawQuadIteratorTest, TextureDrawQuad) {
gfx::Rect opaque_rect(33, 47, 10, 12);
+ gfx::Rect visible_rect(40, 50, 30, 20);
unsigned resource_id = 82;
bool premultiplied_alpha = true;
gfx::PointF uv_top_left(0.5f, 224.f);
@@ -761,8 +809,9 @@
bool flipped = true;
CREATE_SHARED_STATE();
- CREATE_QUAD_8_NEW(TextureDrawQuad,
+ CREATE_QUAD_9_NEW(TextureDrawQuad,
opaque_rect,
+ visible_rect,
resource_id,
premultiplied_alpha,
uv_top_left,
@@ -777,14 +826,16 @@
TEST_F(DrawQuadIteratorTest, TileDrawQuad) {
gfx::Rect opaque_rect(33, 44, 22, 33);
+ gfx::Rect visible_rect(40, 50, 30, 20);
unsigned resource_id = 104;
gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f);
gfx::Size texture_size(85, 32);
bool swizzle_contents = true;
CREATE_SHARED_STATE();
- CREATE_QUAD_5_NEW(TileDrawQuad,
+ CREATE_QUAD_6_NEW(TileDrawQuad,
opaque_rect,
+ visible_rect,
resource_id,
tex_coord_rect,
texture_size,
@@ -796,6 +847,7 @@
TEST_F(DrawQuadIteratorTest, YUVVideoDrawQuad) {
gfx::Rect opaque_rect(33, 47, 10, 12);
+ gfx::Rect visible_rect(40, 50, 30, 20);
gfx::SizeF tex_scale(0.75f, 0.5f);
ResourceProvider::ResourceId y_plane_resource_id = 45;
ResourceProvider::ResourceId u_plane_resource_id = 532;
@@ -803,8 +855,9 @@
ResourceProvider::ResourceId a_plane_resource_id = 63;
CREATE_SHARED_STATE();
- CREATE_QUAD_6_NEW(YUVVideoDrawQuad,
+ CREATE_QUAD_7_NEW(YUVVideoDrawQuad,
opaque_rect,
+ visible_rect,
tex_scale,
y_plane_resource_id,
u_plane_resource_id,
@@ -825,6 +878,7 @@
// Disabled until picture draw quad is supported for ubercomp: crbug.com/231715
TEST_F(DrawQuadIteratorTest, DISABLED_PictureDrawQuad) {
gfx::Rect opaque_rect(33, 44, 22, 33);
+ gfx::Rect visible_rect(40, 50, 30, 20);
gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f);
gfx::Size texture_size(85, 32);
ResourceFormat texture_format = RGBA_8888;
@@ -833,8 +887,9 @@
scoped_refptr<PicturePileImpl> picture_pile = PicturePileImpl::Create();
CREATE_SHARED_STATE();
- CREATE_QUAD_7_NEW(PictureDrawQuad,
+ CREATE_QUAD_8_NEW(PictureDrawQuad,
opaque_rect,
+ visible_rect,
tex_coord_rect,
texture_size,
texture_format,
diff --git a/cc/quads/io_surface_draw_quad.cc b/cc/quads/io_surface_draw_quad.cc
index d19b2ad..a7a8f69 100644
--- a/cc/quads/io_surface_draw_quad.cc
+++ b/cc/quads/io_surface_draw_quad.cc
@@ -22,10 +22,10 @@
void IOSurfaceDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
const gfx::Rect& opaque_rect,
+ const gfx::Rect& visible_rect,
const gfx::Size& io_surface_size,
unsigned io_surface_resource_id,
Orientation orientation) {
- gfx::Rect visible_rect = rect;
bool needs_blending = false;
DrawQuad::SetAll(shared_quad_state, DrawQuad::IO_SURFACE_CONTENT, rect,
opaque_rect, visible_rect, needs_blending);
diff --git a/cc/quads/io_surface_draw_quad.h b/cc/quads/io_surface_draw_quad.h
index 39975c82a..a23e54c4 100644
--- a/cc/quads/io_surface_draw_quad.h
+++ b/cc/quads/io_surface_draw_quad.h
@@ -25,6 +25,7 @@
void SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
const gfx::Rect& opaque_rect,
+ const gfx::Rect& visible_rect,
const gfx::Size& io_surface_size,
unsigned io_surface_resource_id,
Orientation orientation);
diff --git a/cc/quads/picture_draw_quad.cc b/cc/quads/picture_draw_quad.cc
index a092c8d4..37bb07e 100644
--- a/cc/quads/picture_draw_quad.cc
+++ b/cc/quads/picture_draw_quad.cc
@@ -23,20 +23,22 @@
void PictureDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
const gfx::Rect& opaque_rect,
+ const gfx::Rect& visible_rect,
const gfx::RectF& tex_coord_rect,
const gfx::Size& texture_size,
ResourceFormat texture_format,
const gfx::Rect& content_rect,
float contents_scale,
scoped_refptr<PicturePileImpl> picture_pile) {
- ContentDrawQuadBase::SetNew(shared_quad_state,
- DrawQuad::PICTURE_CONTENT,
- rect,
- opaque_rect,
- tex_coord_rect,
- texture_size,
- !PlatformColor::SameComponentOrder(
- texture_format));
+ ContentDrawQuadBase::SetNew(
+ shared_quad_state,
+ DrawQuad::PICTURE_CONTENT,
+ rect,
+ opaque_rect,
+ visible_rect,
+ tex_coord_rect,
+ texture_size,
+ !PlatformColor::SameComponentOrder(texture_format));
this->content_rect = content_rect;
this->contents_scale = contents_scale;
this->picture_pile = picture_pile;
diff --git a/cc/quads/picture_draw_quad.h b/cc/quads/picture_draw_quad.h
index 76d64b0b..ea1735f 100644
--- a/cc/quads/picture_draw_quad.h
+++ b/cc/quads/picture_draw_quad.h
@@ -25,6 +25,7 @@
void SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
const gfx::Rect& opaque_rect,
+ const gfx::Rect& visible_rect,
const gfx::RectF& tex_coord_rect,
const gfx::Size& texture_size,
ResourceFormat texture_format,
diff --git a/cc/quads/render_pass_draw_quad.cc b/cc/quads/render_pass_draw_quad.cc
index b26eaf9..81b0da2 100644
--- a/cc/quads/render_pass_draw_quad.cc
+++ b/cc/quads/render_pass_draw_quad.cc
@@ -37,6 +37,7 @@
void RenderPassDrawQuad::SetNew(
const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
+ const gfx::Rect& visible_rect,
RenderPass::Id render_pass_id,
bool is_replica,
ResourceProvider::ResourceId mask_resource_id,
@@ -48,7 +49,6 @@
DCHECK_GE(render_pass_id.index, 0);
gfx::Rect opaque_rect;
- gfx::Rect visible_rect = rect;
bool needs_blending = false;
SetAll(shared_quad_state, rect, opaque_rect, visible_rect, needs_blending,
render_pass_id, is_replica, mask_resource_id,
diff --git a/cc/quads/render_pass_draw_quad.h b/cc/quads/render_pass_draw_quad.h
index 28b58dbf..1f6217dd 100644
--- a/cc/quads/render_pass_draw_quad.h
+++ b/cc/quads/render_pass_draw_quad.h
@@ -22,6 +22,7 @@
void SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
+ const gfx::Rect& visible_rect,
RenderPass::Id render_pass_id,
bool is_replica,
ResourceProvider::ResourceId mask_resource_id,
diff --git a/cc/quads/render_pass_unittest.cc b/cc/quads/render_pass_unittest.cc
index e70a33dd..fd58523 100644
--- a/cc/quads/render_pass_unittest.cc
+++ b/cc/quads/render_pass_unittest.cc
@@ -92,7 +92,7 @@
scoped_ptr<CheckerboardDrawQuad> checkerboard_quad =
CheckerboardDrawQuad::Create();
checkerboard_quad->SetNew(
- pass->shared_quad_state_list.back(), gfx::Rect(), SkColor());
+ pass->shared_quad_state_list.back(), gfx::Rect(), gfx::Rect(), SkColor());
pass->quad_list.push_back(checkerboard_quad.PassAs<DrawQuad>());
RenderPass::Id new_id(63, 4);
@@ -142,14 +142,18 @@
scoped_ptr<CheckerboardDrawQuad> checkerboard_quad1 =
CheckerboardDrawQuad::Create();
- checkerboard_quad1->SetNew(
- pass->shared_quad_state_list.back(), gfx::Rect(1, 1, 1, 1), SkColor());
+ checkerboard_quad1->SetNew(pass->shared_quad_state_list.back(),
+ gfx::Rect(1, 1, 1, 1),
+ gfx::Rect(1, 1, 1, 1),
+ SkColor());
pass->quad_list.push_back(checkerboard_quad1.PassAs<DrawQuad>());
scoped_ptr<CheckerboardDrawQuad> checkerboard_quad2 =
CheckerboardDrawQuad::Create();
- checkerboard_quad2->SetNew(
- pass->shared_quad_state_list.back(), gfx::Rect(2, 2, 2, 2), SkColor());
+ checkerboard_quad2->SetNew(pass->shared_quad_state_list.back(),
+ gfx::Rect(2, 2, 2, 2),
+ gfx::Rect(2, 2, 2, 2),
+ SkColor());
pass->quad_list.push_back(checkerboard_quad2.PassAs<DrawQuad>());
// And two quads using another shared state.
@@ -165,14 +169,18 @@
scoped_ptr<CheckerboardDrawQuad> checkerboard_quad3 =
CheckerboardDrawQuad::Create();
- checkerboard_quad3->SetNew(
- pass->shared_quad_state_list.back(), gfx::Rect(3, 3, 3, 3), SkColor());
+ checkerboard_quad3->SetNew(pass->shared_quad_state_list.back(),
+ gfx::Rect(3, 3, 3, 3),
+ gfx::Rect(3, 3, 3, 3),
+ SkColor());
pass->quad_list.push_back(checkerboard_quad3.PassAs<DrawQuad>());
scoped_ptr<CheckerboardDrawQuad> checkerboard_quad4 =
CheckerboardDrawQuad::Create();
- checkerboard_quad4->SetNew(
- pass->shared_quad_state_list.back(), gfx::Rect(4, 4, 4, 4), SkColor());
+ checkerboard_quad4->SetNew(pass->shared_quad_state_list.back(),
+ gfx::Rect(4, 4, 4, 4),
+ gfx::Rect(4, 4, 4, 4),
+ SkColor());
pass->quad_list.push_back(checkerboard_quad4.PassAs<DrawQuad>());
// A second render pass with a quad.
@@ -202,14 +210,17 @@
scoped_ptr<CheckerboardDrawQuad> contrib_quad =
CheckerboardDrawQuad::Create();
- contrib_quad->SetNew(
- contrib->shared_quad_state_list.back(), gfx::Rect(3, 3, 3, 3), SkColor());
+ contrib_quad->SetNew(contrib->shared_quad_state_list.back(),
+ gfx::Rect(3, 3, 3, 3),
+ gfx::Rect(3, 3, 3, 3),
+ SkColor());
contrib->quad_list.push_back(contrib_quad.PassAs<DrawQuad>());
// And a RenderPassDrawQuad for the contributing pass.
scoped_ptr<RenderPassDrawQuad> pass_quad = RenderPassDrawQuad::Create();
pass_quad->SetNew(pass->shared_quad_state_list.back(),
contrib_output_rect,
+ contrib_output_rect,
contrib_id,
false, // is_replica
0, // mask_resource_id
@@ -259,8 +270,10 @@
scoped_ptr<CheckerboardDrawQuad> checkerboard_quad1 =
CheckerboardDrawQuad::Create();
- checkerboard_quad1->SetNew(
- pass->shared_quad_state_list.back(), gfx::Rect(1, 1, 1, 1), SkColor());
+ checkerboard_quad1->SetNew(pass->shared_quad_state_list.back(),
+ gfx::Rect(1, 1, 1, 1),
+ gfx::Rect(1, 1, 1, 1),
+ SkColor());
pass->quad_list.push_back(checkerboard_quad1.PassAs<DrawQuad>());
// A shared state with no quads, they were culled.
@@ -298,8 +311,10 @@
scoped_ptr<CheckerboardDrawQuad> checkerboard_quad2 =
CheckerboardDrawQuad::Create();
- checkerboard_quad2->SetNew(
- pass->shared_quad_state_list.back(), gfx::Rect(3, 3, 3, 3), SkColor());
+ checkerboard_quad2->SetNew(pass->shared_quad_state_list.back(),
+ gfx::Rect(3, 3, 3, 3),
+ gfx::Rect(3, 3, 3, 3),
+ SkColor());
pass->quad_list.push_back(checkerboard_quad2.PassAs<DrawQuad>());
pass_list.push_back(pass.PassAs<RenderPass>());
diff --git a/cc/quads/solid_color_draw_quad.cc b/cc/quads/solid_color_draw_quad.cc
index d0b9ec84..7c0b554 100644
--- a/cc/quads/solid_color_draw_quad.cc
+++ b/cc/quads/solid_color_draw_quad.cc
@@ -18,10 +18,10 @@
void SolidColorDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
+ const gfx::Rect& visible_rect,
SkColor color,
bool force_anti_aliasing_off) {
gfx::Rect opaque_rect = SkColorGetA(color) == 255 ? rect : gfx::Rect();
- gfx::Rect visible_rect = rect;
bool needs_blending = false;
DrawQuad::SetAll(shared_quad_state, DrawQuad::SOLID_COLOR, rect, opaque_rect,
visible_rect, needs_blending);
diff --git a/cc/quads/solid_color_draw_quad.h b/cc/quads/solid_color_draw_quad.h
index a13e8ee8..4b8b9a3 100644
--- a/cc/quads/solid_color_draw_quad.h
+++ b/cc/quads/solid_color_draw_quad.h
@@ -18,6 +18,7 @@
void SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
+ const gfx::Rect& visible_rect,
SkColor color,
bool force_anti_aliasing_off);
diff --git a/cc/quads/stream_video_draw_quad.cc b/cc/quads/stream_video_draw_quad.cc
index 0ae3962..a9a75bcf 100644
--- a/cc/quads/stream_video_draw_quad.cc
+++ b/cc/quads/stream_video_draw_quad.cc
@@ -19,9 +19,9 @@
void StreamVideoDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
const gfx::Rect& opaque_rect,
+ const gfx::Rect& visible_rect,
unsigned resource_id,
const gfx::Transform& matrix) {
- gfx::Rect visible_rect = rect;
bool needs_blending = false;
DrawQuad::SetAll(shared_quad_state, DrawQuad::STREAM_VIDEO_CONTENT, rect,
opaque_rect, visible_rect, needs_blending);
diff --git a/cc/quads/stream_video_draw_quad.h b/cc/quads/stream_video_draw_quad.h
index 27a6765..bc85325 100644
--- a/cc/quads/stream_video_draw_quad.h
+++ b/cc/quads/stream_video_draw_quad.h
@@ -19,6 +19,7 @@
void SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
const gfx::Rect& opaque_rect,
+ const gfx::Rect& visible_rect,
unsigned resource_id,
const gfx::Transform& matrix);
diff --git a/cc/quads/surface_draw_quad.cc b/cc/quads/surface_draw_quad.cc
index e079108..e7d09d5e 100644
--- a/cc/quads/surface_draw_quad.cc
+++ b/cc/quads/surface_draw_quad.cc
@@ -16,21 +16,20 @@
}
void SurfaceDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
- gfx::Rect rect,
+ const gfx::Rect& rect,
+ const gfx::Rect& visible_rect,
int surface_id) {
gfx::Rect opaque_rect;
- gfx::Rect visible_rect = rect;
bool needs_blending = false;
DrawQuad::SetAll(shared_quad_state, DrawQuad::SURFACE_CONTENT, rect,
opaque_rect, visible_rect, needs_blending);
this->surface_id = surface_id;
}
-
void SurfaceDrawQuad::SetAll(const SharedQuadState* shared_quad_state,
- gfx::Rect rect,
- gfx::Rect opaque_rect,
- gfx::Rect visible_rect,
+ const gfx::Rect& rect,
+ const gfx::Rect& opaque_rect,
+ const gfx::Rect& visible_rect,
bool needs_blending,
int surface_id) {
DrawQuad::SetAll(shared_quad_state, DrawQuad::SURFACE_CONTENT, rect,
diff --git a/cc/quads/surface_draw_quad.h b/cc/quads/surface_draw_quad.h
index b1e614122..f3092114 100644
--- a/cc/quads/surface_draw_quad.h
+++ b/cc/quads/surface_draw_quad.h
@@ -16,13 +16,14 @@
static scoped_ptr<SurfaceDrawQuad> Create();
void SetNew(const SharedQuadState* shared_quad_state,
- gfx::Rect rect,
+ const gfx::Rect& rect,
+ const gfx::Rect& visible_rect,
int surface_id);
void SetAll(const SharedQuadState* shared_quad_state,
- gfx::Rect rect,
- gfx::Rect opaque_rect,
- gfx::Rect visible_rect,
+ const gfx::Rect& rect,
+ const gfx::Rect& opaque_rect,
+ const gfx::Rect& visible_rect,
bool needs_blending,
int surface_id);
diff --git a/cc/quads/texture_draw_quad.cc b/cc/quads/texture_draw_quad.cc
index 31fd07ad..fd57feb1 100644
--- a/cc/quads/texture_draw_quad.cc
+++ b/cc/quads/texture_draw_quad.cc
@@ -29,13 +29,14 @@
void TextureDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
const gfx::Rect& opaque_rect,
- unsigned resource_id, bool premultiplied_alpha,
+ const gfx::Rect& visible_rect,
+ unsigned resource_id,
+ bool premultiplied_alpha,
const gfx::PointF& uv_top_left,
const gfx::PointF& uv_bottom_right,
SkColor background_color,
const float vertex_opacity[4],
bool flipped) {
- gfx::Rect visible_rect = rect;
bool needs_blending = vertex_opacity[0] != 1.0f || vertex_opacity[1] != 1.0f
|| vertex_opacity[2] != 1.0f || vertex_opacity[3] != 1.0f;
DrawQuad::SetAll(shared_quad_state, DrawQuad::TEXTURE_CONTENT, rect,
diff --git a/cc/quads/texture_draw_quad.h b/cc/quads/texture_draw_quad.h
index 19b54834..7fba6349 100644
--- a/cc/quads/texture_draw_quad.h
+++ b/cc/quads/texture_draw_quad.h
@@ -19,6 +19,7 @@
void SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
const gfx::Rect& opaque_rect,
+ const gfx::Rect& visible_rect,
unsigned resource_id,
bool premultiplied_alpha,
const gfx::PointF& uv_top_left,
diff --git a/cc/quads/tile_draw_quad.cc b/cc/quads/tile_draw_quad.cc
index c17bb994..6e286077f 100644
--- a/cc/quads/tile_draw_quad.cc
+++ b/cc/quads/tile_draw_quad.cc
@@ -24,12 +24,18 @@
void TileDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
const gfx::Rect& opaque_rect,
+ const gfx::Rect& visible_rect,
unsigned resource_id,
const gfx::RectF& tex_coord_rect,
const gfx::Size& texture_size,
bool swizzle_contents) {
- ContentDrawQuadBase::SetNew(shared_quad_state, DrawQuad::TILED_CONTENT, rect,
- opaque_rect, tex_coord_rect, texture_size,
+ ContentDrawQuadBase::SetNew(shared_quad_state,
+ DrawQuad::TILED_CONTENT,
+ rect,
+ opaque_rect,
+ visible_rect,
+ tex_coord_rect,
+ texture_size,
swizzle_contents);
this->resource_id = resource_id;
}
diff --git a/cc/quads/tile_draw_quad.h b/cc/quads/tile_draw_quad.h
index 75eb4d48..71911ea 100644
--- a/cc/quads/tile_draw_quad.h
+++ b/cc/quads/tile_draw_quad.h
@@ -17,6 +17,7 @@
void SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
const gfx::Rect& opaque_rect,
+ const gfx::Rect& visible_rect,
unsigned resource_id,
const gfx::RectF& tex_coord_rect,
const gfx::Size& texture_size,
diff --git a/cc/quads/yuv_video_draw_quad.cc b/cc/quads/yuv_video_draw_quad.cc
index ea5363e..e410757c 100644
--- a/cc/quads/yuv_video_draw_quad.cc
+++ b/cc/quads/yuv_video_draw_quad.cc
@@ -24,12 +24,12 @@
void YUVVideoDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
const gfx::Rect& opaque_rect,
+ const gfx::Rect& visible_rect,
const gfx::SizeF& tex_scale,
unsigned y_plane_resource_id,
unsigned u_plane_resource_id,
unsigned v_plane_resource_id,
unsigned a_plane_resource_id) {
- gfx::Rect visible_rect = rect;
bool needs_blending = false;
DrawQuad::SetAll(shared_quad_state, DrawQuad::YUV_VIDEO_CONTENT, rect,
opaque_rect, visible_rect, needs_blending);
diff --git a/cc/quads/yuv_video_draw_quad.h b/cc/quads/yuv_video_draw_quad.h
index 175b41a..3ac2336 100644
--- a/cc/quads/yuv_video_draw_quad.h
+++ b/cc/quads/yuv_video_draw_quad.h
@@ -22,6 +22,7 @@
void SetNew(const SharedQuadState* shared_quad_state,
const gfx::Rect& rect,
const gfx::Rect& opaque_rect,
+ const gfx::Rect& visible_rect,
const gfx::SizeF& tex_scale,
unsigned y_plane_resource_id,
unsigned u_plane_resource_id,
diff --git a/cc/surfaces/surface_aggregator_test_helpers.cc b/cc/surfaces/surface_aggregator_test_helpers.cc
index a1bb0be94..d484d7e 100644
--- a/cc/surfaces/surface_aggregator_test_helpers.cc
+++ b/cc/surfaces/surface_aggregator_test_helpers.cc
@@ -46,8 +46,10 @@
scoped_ptr<SurfaceDrawQuad> surface_quad = SurfaceDrawQuad::Create();
gfx::Rect quad_rect = gfx::Rect(surface_size);
- surface_quad->SetNew(
- pass->shared_quad_state_list.back(), gfx::Rect(surface_size), surface_id);
+ surface_quad->SetNew(pass->shared_quad_state_list.back(),
+ gfx::Rect(surface_size),
+ gfx::Rect(surface_size),
+ surface_id);
pass->quad_list.push_back(surface_quad.PassAs<DrawQuad>());
}
void AddTestRenderPassQuad(TestRenderPass* pass,
@@ -67,6 +69,7 @@
scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create();
quad->SetNew(shared_state,
output_rect,
+ output_rect,
render_pass_id,
false,
0,
diff --git a/cc/surfaces/surface_aggregator_unittest.cc b/cc/surfaces/surface_aggregator_unittest.cc
index 83fddea..0e23389 100644
--- a/cc/surfaces/surface_aggregator_unittest.cc
+++ b/cc/surfaces/surface_aggregator_unittest.cc
@@ -431,6 +431,7 @@
scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
color_quad->SetNew(pass->shared_quad_state_list.back(),
visible_content_rect,
+ visible_content_rect,
SK_ColorGREEN,
force_anti_aliasing_off);
pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
@@ -498,6 +499,7 @@
SurfaceDrawQuad::Create();
grandchild_surface_quad->SetNew(child_one_pass->shared_quad_state_list.back(),
gfx::Rect(surface_size),
+ gfx::Rect(surface_size),
grandchild_surface.surface_id());
child_one_pass->quad_list.push_back(
grandchild_surface_quad.PassAs<DrawQuad>());
@@ -523,6 +525,7 @@
SurfaceDrawQuad::Create();
child_one_surface_quad->SetNew(root_pass->shared_quad_state_list.back(),
gfx::Rect(surface_size),
+ gfx::Rect(surface_size),
child_one_surface.surface_id());
root_pass->quad_list.push_back(child_one_surface_quad.PassAs<DrawQuad>());
AddSolidColorQuadWithBlendMode(surface_size, root_pass.get(), blend_modes[4]);
@@ -530,6 +533,7 @@
SurfaceDrawQuad::Create();
child_two_surface_quad->SetNew(root_pass->shared_quad_state_list.back(),
gfx::Rect(surface_size),
+ gfx::Rect(surface_size),
child_two_surface.surface_id());
root_pass->quad_list.push_back(child_two_surface_quad.PassAs<DrawQuad>());
AddSolidColorQuadWithBlendMode(surface_size, root_pass.get(), blend_modes[6]);
diff --git a/cc/surfaces/surfaces_pixeltest.cc b/cc/surfaces/surfaces_pixeltest.cc
index 54d40d7..fd5951c 100644
--- a/cc/surfaces/surfaces_pixeltest.cc
+++ b/cc/surfaces/surfaces_pixeltest.cc
@@ -57,6 +57,7 @@
bool force_anti_aliasing_off = false;
color_quad->SetNew(pass->shared_quad_state_list.back(),
rect,
+ rect,
SK_ColorGREEN,
force_anti_aliasing_off);
pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
@@ -102,6 +103,7 @@
scoped_ptr<SurfaceDrawQuad> surface_quad = SurfaceDrawQuad::Create();
surface_quad->SetNew(pass->shared_quad_state_list.back(),
gfx::Rect(child_size),
+ gfx::Rect(child_size),
child_surface.surface_id());
pass->quad_list.push_back(surface_quad.PassAs<DrawQuad>());
@@ -109,6 +111,7 @@
bool force_anti_aliasing_off = false;
color_quad->SetNew(pass->shared_quad_state_list.back(),
rect,
+ rect,
SK_ColorYELLOW,
force_anti_aliasing_off);
pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
@@ -135,6 +138,7 @@
bool force_anti_aliasing_off = false;
color_quad->SetNew(pass->shared_quad_state_list.back(),
rect,
+ rect,
SK_ColorBLUE,
force_anti_aliasing_off);
pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
@@ -190,6 +194,7 @@
scoped_ptr<SurfaceDrawQuad> left_surface_quad = SurfaceDrawQuad::Create();
left_surface_quad->SetNew(pass->shared_quad_state_list.back(),
gfx::Rect(child_size),
+ gfx::Rect(child_size),
left_child.surface_id());
pass->quad_list.push_back(left_surface_quad.PassAs<DrawQuad>());
@@ -200,6 +205,7 @@
scoped_ptr<SurfaceDrawQuad> right_surface_quad = SurfaceDrawQuad::Create();
right_surface_quad->SetNew(pass->shared_quad_state_list.back(),
gfx::Rect(child_size),
+ gfx::Rect(child_size),
right_child.surface_id());
pass->quad_list.push_back(right_surface_quad.PassAs<DrawQuad>());
@@ -226,6 +232,7 @@
bool force_anti_aliasing_off = false;
top_color_quad->SetNew(pass->shared_quad_state_list.back(),
gfx::Rect(quad_size),
+ gfx::Rect(quad_size),
SK_ColorGREEN,
force_anti_aliasing_off);
pass->quad_list.push_back(top_color_quad.PassAs<DrawQuad>());
@@ -234,6 +241,7 @@
SolidColorDrawQuad::Create();
bottom_color_quad->SetNew(pass->shared_quad_state_list.back(),
gfx::Rect(0, 100, 100, 100),
+ gfx::Rect(0, 100, 100, 100),
SK_ColorBLUE,
force_anti_aliasing_off);
pass->quad_list.push_back(bottom_color_quad.PassAs<DrawQuad>());
@@ -261,6 +269,7 @@
bool force_anti_aliasing_off = false;
top_color_quad->SetNew(pass->shared_quad_state_list.back(),
gfx::Rect(quad_size),
+ gfx::Rect(quad_size),
SK_ColorBLUE,
force_anti_aliasing_off);
pass->quad_list.push_back(top_color_quad.PassAs<DrawQuad>());
@@ -269,6 +278,7 @@
SolidColorDrawQuad::Create();
bottom_color_quad->SetNew(pass->shared_quad_state_list.back(),
gfx::Rect(0, 100, 100, 100),
+ gfx::Rect(0, 100, 100, 100),
SK_ColorGREEN,
force_anti_aliasing_off);
pass->quad_list.push_back(bottom_color_quad.PassAs<DrawQuad>());
diff --git a/cc/test/render_pass_test_common.cc b/cc/test/render_pass_test_common.cc
index 72467dd..70df149 100644
--- a/cc/test/render_pass_test_common.cc
+++ b/cc/test/render_pass_test_common.cc
@@ -32,6 +32,7 @@
RenderPass::Id child_pass) {
gfx::Rect rect(0, 0, 100, 100);
gfx::Rect opaque_rect(10, 10, 80, 80);
+ gfx::Rect visible_rect(0, 0, 100, 100);
const float vertex_opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
ResourceProvider::ResourceId resource1 = resource_provider->CreateResource(
gfx::Size(45, 5),
@@ -87,23 +88,21 @@
scoped_ptr<CheckerboardDrawQuad> checkerboard_quad =
CheckerboardDrawQuad::Create();
- checkerboard_quad->SetNew(shared_state.get(),
- rect,
- SK_ColorRED);
+ checkerboard_quad->SetNew(
+ shared_state.get(), rect, visible_rect, SK_ColorRED);
AppendQuad(checkerboard_quad.PassAs<DrawQuad>());
scoped_ptr<DebugBorderDrawQuad> debug_border_quad =
DebugBorderDrawQuad::Create();
- debug_border_quad->SetNew(shared_state.get(),
- rect,
- SK_ColorRED,
- 1);
+ debug_border_quad->SetNew(
+ shared_state.get(), rect, visible_rect, SK_ColorRED, 1);
AppendQuad(debug_border_quad.PassAs<DrawQuad>());
scoped_ptr<IOSurfaceDrawQuad> io_surface_quad = IOSurfaceDrawQuad::Create();
io_surface_quad->SetNew(shared_state.get(),
rect,
opaque_rect,
+ visible_rect,
gfx::Size(50, 50),
resource7,
IOSurfaceDrawQuad::FLIPPED);
@@ -114,6 +113,7 @@
RenderPassDrawQuad::Create();
render_pass_quad->SetNew(shared_state.get(),
rect,
+ visible_rect,
child_pass,
false,
resource5,
@@ -127,6 +127,7 @@
RenderPassDrawQuad::Create();
render_pass_replica_quad->SetNew(shared_state.get(),
rect,
+ visible_rect,
child_pass,
true,
resource5,
@@ -139,10 +140,8 @@
scoped_ptr<SolidColorDrawQuad> solid_color_quad =
SolidColorDrawQuad::Create();
- solid_color_quad->SetNew(shared_state.get(),
- rect,
- SK_ColorRED,
- false);
+ solid_color_quad->SetNew(
+ shared_state.get(), rect, visible_rect, SK_ColorRED, false);
AppendQuad(solid_color_quad.PassAs<DrawQuad>());
scoped_ptr<StreamVideoDrawQuad> stream_video_quad =
@@ -150,6 +149,7 @@
stream_video_quad->SetNew(shared_state.get(),
rect,
opaque_rect,
+ visible_rect,
resource6,
gfx::Transform());
AppendQuad(stream_video_quad.PassAs<DrawQuad>());
@@ -158,6 +158,7 @@
texture_quad->SetNew(shared_state.get(),
rect,
opaque_rect,
+ visible_rect,
resource1,
false,
gfx::PointF(0.f, 0.f),
@@ -171,6 +172,7 @@
scaled_tile_quad->SetNew(shared_state.get(),
rect,
opaque_rect,
+ visible_rect,
resource2,
gfx::RectF(0, 0, 50, 50),
gfx::Size(50, 50),
@@ -186,6 +188,7 @@
transformed_tile_quad->SetNew(transformed_state.get(),
rect,
opaque_rect,
+ visible_rect,
resource3,
gfx::RectF(0, 0, 100, 100),
gfx::Size(100, 100),
@@ -205,6 +208,7 @@
tile_quad->SetNew(shared_state2.get(),
rect,
opaque_rect,
+ visible_rect,
resource4,
gfx::RectF(0, 0, 100, 100),
gfx::Size(100, 100),
@@ -225,6 +229,7 @@
yuv_quad->SetNew(shared_state2.get(),
rect,
opaque_rect,
+ visible_rect,
gfx::Size(100, 100),
plane_resources[0],
plane_resources[1],
diff --git a/cc/test/render_pass_test_utils.cc b/cc/test/render_pass_test_utils.cc
index 8b018cf..5db6799 100644
--- a/cc/test/render_pass_test_utils.cc
+++ b/cc/test/render_pass_test_utils.cc
@@ -44,7 +44,7 @@
1,
SkXfermode::kSrcOver_Mode);
scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create();
- quad->SetNew(shared_state, rect, color, false);
+ quad->SetNew(shared_state, rect, rect, color, false);
SolidColorDrawQuad* quad_ptr = quad.get();
quad_sink.Append(quad.PassAs<DrawQuad>(), &data);
return quad_ptr;
@@ -65,7 +65,7 @@
1,
SkXfermode::kSrcOver_Mode);
scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create();
- quad->SetNew(shared_state, rect, color, false);
+ quad->SetNew(shared_state, rect, rect, color, false);
SolidColorDrawQuad* quad_ptr = quad.get();
quad_sink.Append(quad.PassAs<DrawQuad>(), &data);
return quad_ptr;
@@ -82,7 +82,7 @@
shared_state->SetAll(
transform, rect.size(), rect, rect, false, 1, SkXfermode::kSrcOver_Mode);
scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create();
- quad->SetNew(shared_state, rect, color, false);
+ quad->SetNew(shared_state, rect, rect, color, false);
SolidColorDrawQuad* quad_ptr = quad.get();
quad_sink.Append(quad.PassAs<DrawQuad>(), &data);
return quad_ptr;
@@ -104,8 +104,15 @@
1,
SkXfermode::kSrcOver_Mode);
scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create();
- quad->SetNew(shared_state, output_rect, contributing_pass->id, false, 0,
- output_rect, gfx::RectF(), FilterOperations(),
+ quad->SetNew(shared_state,
+ output_rect,
+ output_rect,
+ contributing_pass->id,
+ false,
+ 0,
+ output_rect,
+ gfx::RectF(),
+ FilterOperations(),
FilterOperations());
quad_sink.Append(quad.PassAs<DrawQuad>(), &data);
}
@@ -129,8 +136,15 @@
1,
SkXfermode::kSrcOver_Mode);
scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create();
- quad->SetNew(shared_state, output_rect, contributing_pass->id, false,
- mask_resource_id, output_rect, gfx::RectF(), filters,
+ quad->SetNew(shared_state,
+ output_rect,
+ output_rect,
+ contributing_pass->id,
+ false,
+ mask_resource_id,
+ output_rect,
+ gfx::RectF(),
+ filters,
FilterOperations());
quad_sink.Append(quad.PassAs<DrawQuad>(), &data);
}
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index 480fe3b..f34432f 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -662,11 +662,15 @@
fill_rects.has_rect();
fill_rects.next()) {
gfx::Rect screen_space_rect = fill_rects.rect();
+ gfx::Rect visible_screen_space_rect = screen_space_rect;
// Skip the quad culler and just append the quads directly to avoid
// occlusion checks.
scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create();
- quad->SetNew(
- shared_quad_state, screen_space_rect, screen_background_color, false);
+ quad->SetNew(shared_quad_state,
+ screen_space_rect,
+ visible_screen_space_rect,
+ screen_background_color,
+ false);
quad_culler.Append(quad.PassAs<DrawQuad>(), &append_quads_data);
}
for (Region::Iterator fill_rects(overhang_region);
@@ -674,12 +678,15 @@
fill_rects.next()) {
DCHECK(overhang_resource_id);
gfx::Rect screen_space_rect = fill_rects.rect();
+ gfx::Rect opaque_screen_space_rect = screen_space_rect;
+ gfx::Rect visible_screen_space_rect = screen_space_rect;
scoped_ptr<TextureDrawQuad> tex_quad = TextureDrawQuad::Create();
const float vertex_opacity[4] = {1.f, 1.f, 1.f, 1.f};
tex_quad->SetNew(
shared_quad_state,
screen_space_rect,
- screen_space_rect,
+ opaque_screen_space_rect,
+ visible_screen_space_rect,
overhang_resource_id,
false,
gfx::PointF(
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
index 006ac196..95018a72 100644
--- a/cc/trees/layer_tree_host_impl_unittest.cc
+++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -3171,6 +3171,7 @@
opaque_rect = quad_rect_;
else
opaque_rect = opaque_content_rect_;
+ gfx::Rect visible_quad_rect = quad_rect_;
SharedQuadState* shared_quad_state =
quad_sink->UseSharedQuadState(CreateSharedQuadState());
@@ -3178,6 +3179,7 @@
test_blending_draw_quad->SetNew(shared_quad_state,
quad_rect_,
opaque_rect,
+ visible_quad_rect,
resource_id_,
gfx::RectF(0.f, 0.f, 1.f, 1.f),
gfx::Size(1, 1),
@@ -3956,8 +3958,10 @@
SkColor gray = SkColorSetRGB(100, 100, 100);
gfx::Rect quad_rect(content_bounds());
+ gfx::Rect visible_quad_rect(quad_rect);
scoped_ptr<SolidColorDrawQuad> my_quad = SolidColorDrawQuad::Create();
- my_quad->SetNew(shared_quad_state, quad_rect, gray, false);
+ my_quad->SetNew(
+ shared_quad_state, quad_rect, visible_quad_rect, gray, false);
quad_sink->Append(my_quad.PassAs<DrawQuad>(), append_quads_data);
}
diff --git a/cc/trees/layer_tree_host_unittest_delegated.cc b/cc/trees/layer_tree_host_unittest_delegated.cc
index 7fe0ece..6ba1df4 100644
--- a/cc/trees/layer_tree_host_unittest_delegated.cc
+++ b/cc/trees/layer_tree_host_unittest_delegated.cc
@@ -103,6 +103,7 @@
gfx::Rect rect = root_output_rect;
gfx::Rect opaque_rect = root_output_rect;
+ gfx::Rect visible_rect = root_output_rect;
// An invalid resource id! The resource isn't part of the frame.
unsigned resource_id = 5;
bool premultiplied_alpha = false;
@@ -116,6 +117,7 @@
invalid_draw_quad->SetNew(shared_quad_state.get(),
rect,
opaque_rect,
+ visible_rect,
resource_id,
premultiplied_alpha,
uv_top_left,
@@ -152,6 +154,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),
@@ -184,9 +187,10 @@
quad->SetNew(sqs.get(),
output_rect,
+ output_rect,
id,
false, // is_replica
- 0, // mask_resource_id
+ 0, // mask_resource_id
damage_rect,
gfx::Rect(0, 0, 1, 1), // mask_uv_rect
filters,
diff --git a/cc/trees/quad_culler.cc b/cc/trees/quad_culler.cc
index f4a8e27..bbbca9ef 100644
--- a/cc/trees/quad_culler.cc
+++ b/cc/trees/quad_culler.cc
@@ -66,8 +66,11 @@
layer ? layer->layer_tree_impl() : NULL);
scoped_ptr<DebugBorderDrawQuad> debug_border_quad =
DebugBorderDrawQuad::Create();
- debug_border_quad->SetNew(
- draw_quad->shared_quad_state, draw_quad->visible_rect, color, width);
+ debug_border_quad->SetNew(draw_quad->shared_quad_state,
+ draw_quad->visible_rect,
+ draw_quad->visible_rect,
+ color,
+ width);
quad_list->push_back(debug_border_quad.PassAs<DrawQuad>());
}
diff --git a/cc/trees/quad_culler_unittest.cc b/cc/trees/quad_culler_unittest.cc
index 27e3de5..c716955 100644
--- a/cc/trees/quad_culler_unittest.cc
+++ b/cc/trees/quad_culler_unittest.cc
@@ -802,11 +802,13 @@
SharedQuadState* sqs = culler.UseSharedQuadState(SharedQuadState::Create());
scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(sqs, gfx::Rect(100, 100), SK_ColorRED, false);
+ color_quad->SetNew(
+ sqs, gfx::Rect(100, 100), gfx::Rect(100, 100), SK_ColorRED, false);
scoped_ptr<RenderPassDrawQuad> pass_quad = RenderPassDrawQuad::Create();
pass_quad->SetNew(sqs,
gfx::Rect(100, 100),
+ gfx::Rect(100, 100),
RenderPass::Id(10, 10),
false,
0,
@@ -818,6 +820,7 @@
scoped_ptr<RenderPassDrawQuad> replica_quad = RenderPassDrawQuad::Create();
replica_quad->SetNew(sqs,
gfx::Rect(100, 100),
+ gfx::Rect(100, 100),
RenderPass::Id(10, 10),
true,
0,
@@ -878,11 +881,13 @@
SharedQuadState* sqs = culler.UseSharedQuadState(SharedQuadState::Create());
scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
- color_quad->SetNew(sqs, gfx::Rect(100, 100), SK_ColorRED, false);
+ color_quad->SetNew(
+ sqs, gfx::Rect(100, 100), gfx::Rect(100, 100), SK_ColorRED, false);
scoped_ptr<RenderPassDrawQuad> pass_quad = RenderPassDrawQuad::Create();
pass_quad->SetNew(sqs,
gfx::Rect(100, 100),
+ gfx::Rect(100, 100),
RenderPass::Id(10, 10),
false,
0,
@@ -894,6 +899,7 @@
scoped_ptr<RenderPassDrawQuad> replica_quad = RenderPassDrawQuad::Create();
replica_quad->SetNew(sqs,
gfx::Rect(100, 100),
+ gfx::Rect(100, 100),
RenderPass::Id(10, 10),
true,
0,