diff options
55 files changed, 600 insertions, 314 deletions
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 @@ class DelegatedFrameProviderTest 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..31b5292 100644 --- a/cc/layers/delegated_renderer_layer_impl.cc +++ b/cc/layers/delegated_renderer_layer_impl.cc @@ -364,12 +364,14 @@ void DelegatedRendererLayerImpl::AppendRainbowDebugBorder( 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 @@ void DelegatedRendererLayerImpl::AppendRainbowDebugBorder( 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 5b6a890..f398894 100644 --- a/cc/layers/delegated_renderer_layer_impl_unittest.cc +++ b/cc/layers/delegated_renderer_layer_impl_unittest.cc @@ -552,11 +552,19 @@ class DelegatedRendererLayerImplTestTransform 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 @@ class DelegatedRendererLayerImplTestTransform 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 @@ class DelegatedRendererLayerImplTestClip 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 @@ class DelegatedRendererLayerImplTestClip 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 @@ void HeadsUpDisplayLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void HeadsUpDisplayLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void IOSurfaceLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void LayerImpl::AppendDebugBorderQuad(QuadSink* quad_sink, 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..4d36446 100644 --- a/cc/layers/nine_patch_layer_impl.cc +++ b/cc/layers/nine_patch_layer_impl.cc @@ -224,6 +224,7 @@ void NinePatchLayerImpl::AppendQuads(QuadSink* quad_sink, quad->SetNew(shared_quad_state, layer_top_left, opaque_rect, + layer_top_left, resource, premultiplied_alpha, uv_top_left.origin(), @@ -237,6 +238,7 @@ void NinePatchLayerImpl::AppendQuads(QuadSink* quad_sink, quad->SetNew(shared_quad_state, layer_top_right, opaque_rect, + layer_top_right, resource, premultiplied_alpha, uv_top_right.origin(), @@ -250,6 +252,7 @@ void NinePatchLayerImpl::AppendQuads(QuadSink* quad_sink, quad->SetNew(shared_quad_state, layer_bottom_left, opaque_rect, + layer_bottom_left, resource, premultiplied_alpha, uv_bottom_left.origin(), @@ -263,6 +266,7 @@ void NinePatchLayerImpl::AppendQuads(QuadSink* quad_sink, quad->SetNew(shared_quad_state, layer_bottom_right, opaque_rect, + layer_bottom_right, resource, premultiplied_alpha, uv_bottom_right.origin(), @@ -276,6 +280,7 @@ void NinePatchLayerImpl::AppendQuads(QuadSink* quad_sink, quad->SetNew(shared_quad_state, layer_top, opaque_rect, + layer_top, resource, premultiplied_alpha, uv_top.origin(), @@ -289,6 +294,7 @@ void NinePatchLayerImpl::AppendQuads(QuadSink* quad_sink, quad->SetNew(shared_quad_state, layer_left, opaque_rect, + layer_left, resource, premultiplied_alpha, uv_left.origin(), @@ -302,6 +308,7 @@ void NinePatchLayerImpl::AppendQuads(QuadSink* quad_sink, quad->SetNew(shared_quad_state, layer_right, opaque_rect, + layer_right, resource, premultiplied_alpha, uv_right.origin(), @@ -315,6 +322,7 @@ void NinePatchLayerImpl::AppendQuads(QuadSink* quad_sink, quad->SetNew(shared_quad_state, layer_bottom, opaque_rect, + layer_bottom, resource, premultiplied_alpha, uv_bottom.origin(), @@ -329,6 +337,7 @@ void NinePatchLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void PaintedScrollbarLayerImpl::AppendQuads( 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 @@ void PaintedScrollbarLayerImpl::AppendQuads( 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 @@ void PaintedScrollbarLayerImpl::AppendQuads( } 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 @@ void PaintedScrollbarLayerImpl::AppendQuads( 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 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, quad->SetNew(shared_quad_state, geometry_rect, opaque_rect, + visible_geometry_rect, texture_rect, texture_size, RGBA_8888, @@ -198,7 +200,12 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, quad->SetNew(shared_quad_state, geometry_rect, opaque_rect, + visible_geometry_rect, texture_rect, iter.texture_size(), format, @@ -282,6 +297,7 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void RenderSurfaceImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void RenderSurfaceImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void RenderSurfaceImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void RenderSurfaceImpl::AppendQuads(QuadSink* quad_sink, 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 faa967b..b5514e7 100644 --- a/cc/layers/solid_color_layer_impl.cc +++ b/cc/layers/solid_color_layer_impl.cc @@ -34,13 +34,17 @@ void SolidColorLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ bool SolidColorScrollbarLayerImpl::IsThumbResizable() const { 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 @@ void SurfaceLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void TextureLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void TiledLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void TiledLayerImpl::AppendQuads(QuadSink* quad_sink, } 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 @@ void TiledLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void TiledLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void TiledLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void UIResourceLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void VideoLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void VideoLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void VideoLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void VideoLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void VideoLayerImpl::AppendQuads(QuadSink* quad_sink, 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 @@ void VideoLayerImpl::AppendQuads(QuadSink* quad_sink, 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<DrawQuad> CreateTestRenderPassDrawQuad( 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 @@ scoped_ptr<TextureDrawQuad> CreateTestTextureDrawQuad( quad->SetNew(shared_state, rect, gfx::Rect(), + rect, resource, premultiplied_alpha, gfx::PointF(0.0f, 0.0f), // uv_top_left @@ -205,7 +207,7 @@ TYPED_TEST(RendererPixelTest, SimpleGreenRect) { 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 @@ TYPED_TEST(RendererPixelTest, SimpleGreenRect_NonRootRenderPass) { 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 @@ TYPED_TEST(RendererPixelTest, PremultipliedTextureWithoutBackground) { 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 @@ TYPED_TEST(RendererPixelTest, PremultipliedTextureWithBackground) { 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 @@ TEST_F(GLRendererPixelTest, NonPremultipliedTextureWithoutBackground) { 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 @@ TEST_F(GLRendererPixelTest, NonPremultipliedTextureWithBackground) { 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 @@ class VideoGLRendererPixelTest : public GLRendererPixelTest { } 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 @@ TEST_F(VideoGLRendererPixelTest, SimpleYUVARect) { 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 @@ TEST_F(VideoGLRendererPixelTest, FullyTransparentYUVARect) { 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 @@ TYPED_TEST(RendererPixelTest, FastPassColorFilterAlpha) { 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 @@ TYPED_TEST(RendererPixelTest, FastPassColorFilterAlpha) { RenderPassDrawQuad::Create(); render_pass_quad->SetNew(pass_shared_state.get(), pass_rect, + pass_rect, child_pass_id, false, 0, @@ -668,31 +674,26 @@ TYPED_TEST(RendererPixelTest, FastPassSaturateFilter) { 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 @@ TYPED_TEST(RendererPixelTest, FastPassSaturateFilter) { RenderPassDrawQuad::Create(); render_pass_quad->SetNew(pass_shared_state.get(), pass_rect, + pass_rect, child_pass_id, false, 0, @@ -747,31 +749,26 @@ TYPED_TEST(RendererPixelTest, FastPassFilterChain) { 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 @@ TYPED_TEST(RendererPixelTest, FastPassFilterChain) { RenderPassDrawQuad::Create(); render_pass_quad->SetNew(pass_shared_state.get(), pass_rect, + pass_rect, child_pass_id, false, 0, @@ -827,31 +825,26 @@ TYPED_TEST(RendererPixelTest, FastPassColorFilterAlphaTranslation) { 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 @@ TYPED_TEST(RendererPixelTest, FastPassColorFilterAlphaTranslation) { RenderPassDrawQuad::Create(); render_pass_quad->SetNew(pass_shared_state.get(), pass_rect, + pass_rect, child_pass_id, false, 0, @@ -930,22 +924,19 @@ TYPED_TEST(RendererPixelTest, EnlargedRenderPassTexture) { 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 @@ TYPED_TEST(RendererPixelTest, EnlargedRenderPassTextureWithAntiAliasing) { 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 @@ TYPED_TEST(RendererPixelTest, EnlargedRenderPassTextureWithAntiAliasing) { 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 @@ TYPED_TEST(RendererPixelTest, RenderPassAndMaskWithPartialQuad) { // 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 @@ TYPED_TEST(RendererPixelTest, RenderPassAndMaskWithPartialQuad) { 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 @@ TYPED_TEST(RendererPixelTest, RenderPassAndMaskWithPartialQuad) { // 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 @@ class RendererPixelTestWithBackgroundFilter 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 @@ class RendererPixelTestWithBackgroundFilter 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 @@ class RendererPixelTestWithBackgroundFilter 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 @@ class RendererPixelTestWithBackgroundFilter 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 @@ class RendererPixelTestWithBackgroundFilter 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 @@ class RendererPixelTestWithBackgroundFilter 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 @@ TEST_F(ExternalStencilPixelTest, StencilTestEnabled) { 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 @@ TEST_F(ExternalStencilPixelTest, StencilTestDisabled) { 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 @@ TEST_F(ExternalStencilPixelTest, RenderSurfacesIgnoreStencil) { 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 @@ TEST_F(ExternalStencilPixelTest, DeviceClip) { 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 @@ TEST_F(GLRendererPixelTest, AntiAliasing) { 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 @@ TEST_F(GLRendererPixelTest, AntiAliasing) { 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 @@ TEST_F(GLRendererPixelTest, AntiAliasing) { 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 @@ TEST_F(GLRendererPixelTest, AxisAligned) { 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 @@ TEST_F(GLRendererPixelTest, AxisAligned) { 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 @@ TEST_F(GLRendererPixelTest, AxisAligned) { 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 @@ TEST_F(GLRendererPixelTest, ForceAntiAliasingOff) { 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 @@ TEST_F(GLRendererPixelTest, AntiAliasingPerspective) { 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 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadIdentityScale) { viewport, // Intentionally bigger than clip. gfx::Rect(), viewport, + gfx::RectF(viewport), viewport.size(), texture_format, viewport, @@ -1679,6 +1682,7 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadIdentityScale) { 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 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadOpacity) { 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 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadOpacity) { 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 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadDisableImageFiltering) { 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 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadNonIdentityScale) { 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 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadNonIdentityScale) { 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 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadNonIdentityScale) { 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 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadNonIdentityScale) { 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 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadNonIdentityScale) { 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 @@ TYPED_TEST(RendererPixelTest, WrapModeRepeat) { 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 @@ TEST_F(SoftwareRendererTest, SolidColorQuad) { 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 @@ TEST_F(SoftwareRendererTest, TileQuad) { 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 @@ TEST_F(SoftwareRendererTest, TileQuad) { 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 @@ TEST_F(SoftwareRendererTest, TileQuadVisibleRect) { 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 @@ scoped_ptr<CheckerboardDrawQuad> CheckerboardDrawQuad::Create() { 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 ffa016f..d59e53f 100644 --- a/cc/quads/checkerboard_draw_quad.h +++ b/cc/quads/checkerboard_draw_quad.h @@ -18,6 +18,7 @@ class CC_EXPORT CheckerboardDrawQuad : public DrawQuad { 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 a802b19..18d3d10 100644 --- a/cc/quads/content_draw_quad_base.cc +++ b/cc/quads/content_draw_quad_base.cc @@ -21,10 +21,10 @@ void ContentDrawQuadBase::SetNew(const SharedQuadState* shared_quad_state, 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 44f8bd0..a286e10 100644 --- a/cc/quads/content_draw_quad_base.h +++ b/cc/quads/content_draw_quad_base.h @@ -20,6 +20,7 @@ class CC_EXPORT ContentDrawQuadBase : public DrawQuad { 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 @@ scoped_ptr<DebugBorderDrawQuad> DebugBorderDrawQuad::Create() { 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 @@ class CC_EXPORT DebugBorderDrawQuad : public DrawQuad { 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 @@ void CompareDrawQuad(DrawQuad* quad, 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, CopyCheckerboardDrawQuad) { } 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, CopyDebugBorderDrawQuad) { 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, CopyIOSurfaceDrawQuad) { } 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 @@ TEST(DrawQuadTest, CopyRenderPassDrawQuad) { 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 @@ TEST(DrawQuadTest, CopyRenderPassDrawQuad) { 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, CopyRenderPassDrawQuad) { } 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, CopySolidColorDrawQuad) { 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, CopyStreamVideoDrawQuad) { } 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, CopySurfaceDrawQuad) { 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 @@ TEST(DrawQuadTest, CopyTextureDrawQuad) { 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 @@ TEST(DrawQuadTest, CopyTextureDrawQuad) { 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, CopyTextureDrawQuad) { 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, CopyTileDrawQuad) { 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 @@ TEST(DrawQuadTest, CopyYUVVideoDrawQuad) { 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 @@ TEST(DrawQuadTest, CopyYUVVideoDrawQuad) { 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, CopyYUVVideoDrawQuad) { 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 @@ TEST(DrawQuadTest, CopyPictureDrawQuad) { 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 @@ TEST(DrawQuadTest, CopyPictureDrawQuad) { 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 @@ class DrawQuadIteratorTest : public testing::Test { }; 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 @@ TEST_F(DrawQuadIteratorTest, RenderPassDrawQuad) { 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, RenderPassDrawQuad) { } 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 @@ TEST_F(DrawQuadIteratorTest, TextureDrawQuad) { 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, TextureDrawQuad) { 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, TileDrawQuad) { 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 @@ TEST_F(DrawQuadIteratorTest, YUVVideoDrawQuad) { 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 @@ TEST_F(DrawQuadIteratorTest, YUVVideoDrawQuad) { // 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 @@ TEST_F(DrawQuadIteratorTest, DISABLED_PictureDrawQuad) { 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 @@ scoped_ptr<IOSurfaceDrawQuad> IOSurfaceDrawQuad::Create() { 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 39975c8..a23e54c 100644 --- a/cc/quads/io_surface_draw_quad.h +++ b/cc/quads/io_surface_draw_quad.h @@ -25,6 +25,7 @@ class CC_EXPORT IOSurfaceDrawQuad : public DrawQuad { 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 a092c8d..37bb07e 100644 --- a/cc/quads/picture_draw_quad.cc +++ b/cc/quads/picture_draw_quad.cc @@ -23,20 +23,22 @@ scoped_ptr<PictureDrawQuad> PictureDrawQuad::Create() { 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 @@ class CC_EXPORT PictureDrawQuad : public ContentDrawQuadBase { 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 @@ scoped_ptr<RenderPassDrawQuad> RenderPassDrawQuad::Copy( 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 @@ void RenderPassDrawQuad::SetNew( 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 28b58db..1f6217dd 100644 --- a/cc/quads/render_pass_draw_quad.h +++ b/cc/quads/render_pass_draw_quad.h @@ -22,6 +22,7 @@ class CC_EXPORT RenderPassDrawQuad : public DrawQuad { 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 @@ TEST(RenderPassTest, CopyShouldBeIdenticalExceptIdAndQuads) { 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 @@ TEST(RenderPassTest, CopyAllShouldBeIdentical) { 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 @@ TEST(RenderPassTest, CopyAllShouldBeIdentical) { 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 @@ TEST(RenderPassTest, CopyAllShouldBeIdentical) { 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 @@ TEST(RenderPassTest, CopyAllWithCulledQuads) { 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 @@ TEST(RenderPassTest, CopyAllWithCulledQuads) { 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 d0b9ec8..7c0b554 100644 --- a/cc/quads/solid_color_draw_quad.cc +++ b/cc/quads/solid_color_draw_quad.cc @@ -18,10 +18,10 @@ scoped_ptr<SolidColorDrawQuad> SolidColorDrawQuad::Create() { 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 a13e8ee..4b8b9a3 100644 --- a/cc/quads/solid_color_draw_quad.h +++ b/cc/quads/solid_color_draw_quad.h @@ -18,6 +18,7 @@ class CC_EXPORT SolidColorDrawQuad : public DrawQuad { 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..a9a75bc 100644 --- a/cc/quads/stream_video_draw_quad.cc +++ b/cc/quads/stream_video_draw_quad.cc @@ -19,9 +19,9 @@ scoped_ptr<StreamVideoDrawQuad> StreamVideoDrawQuad::Create() { 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 @@ class CC_EXPORT StreamVideoDrawQuad : public DrawQuad { 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..e7d09d5 100644 --- a/cc/quads/surface_draw_quad.cc +++ b/cc/quads/surface_draw_quad.cc @@ -16,21 +16,20 @@ scoped_ptr<SurfaceDrawQuad> SurfaceDrawQuad::Create() { } 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..f309211 100644 --- a/cc/quads/surface_draw_quad.h +++ b/cc/quads/surface_draw_quad.h @@ -16,13 +16,14 @@ class CC_EXPORT SurfaceDrawQuad : public DrawQuad { 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 31fd07a..fd57feb 100644 --- a/cc/quads/texture_draw_quad.cc +++ b/cc/quads/texture_draw_quad.cc @@ -29,13 +29,14 @@ scoped_ptr<TextureDrawQuad> TextureDrawQuad::Create() { 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 19b5483..7fba634 100644 --- a/cc/quads/texture_draw_quad.h +++ b/cc/quads/texture_draw_quad.h @@ -19,6 +19,7 @@ class CC_EXPORT TextureDrawQuad : public DrawQuad { 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 c17bb99..6e28607 100644 --- a/cc/quads/tile_draw_quad.cc +++ b/cc/quads/tile_draw_quad.cc @@ -24,12 +24,18 @@ scoped_ptr<TileDrawQuad> TileDrawQuad::Create() { 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 75eb4d4..71911ea 100644 --- a/cc/quads/tile_draw_quad.h +++ b/cc/quads/tile_draw_quad.h @@ -17,6 +17,7 @@ class CC_EXPORT TileDrawQuad : public ContentDrawQuadBase { 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..e410757 100644 --- a/cc/quads/yuv_video_draw_quad.cc +++ b/cc/quads/yuv_video_draw_quad.cc @@ -24,12 +24,12 @@ scoped_ptr<YUVVideoDrawQuad> YUVVideoDrawQuad::Create() { 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 @@ class CC_EXPORT YUVVideoDrawQuad : public DrawQuad { 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 a1bb0be..d484d7e 100644 --- a/cc/surfaces/surface_aggregator_test_helpers.cc +++ b/cc/surfaces/surface_aggregator_test_helpers.cc @@ -46,8 +46,10 @@ void AddTestSurfaceQuad(TestRenderPass* pass, 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 @@ void AddTestRenderPassQuad(TestRenderPass* pass, 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 @@ void AddSolidColorQuadWithBlendMode(const gfx::Size& size, 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 @@ TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateSharedQuadStateProperties) { 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 @@ TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateSharedQuadStateProperties) { 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 @@ TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateSharedQuadStateProperties) { 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 @@ TEST_F(SurfacesPixelTest, DrawSimpleFrame) { 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 @@ TEST_F(SurfacesPixelTest, DrawSimpleAggregatedFrame) { 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 @@ TEST_F(SurfacesPixelTest, DrawSimpleAggregatedFrame) { 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 @@ TEST_F(SurfacesPixelTest, DrawSimpleAggregatedFrame) { 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 @@ TEST_F(SurfacesPixelTest, DrawAggregatedFrameWithSurfaceTransforms) { 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 @@ TEST_F(SurfacesPixelTest, DrawAggregatedFrameWithSurfaceTransforms) { 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 @@ TEST_F(SurfacesPixelTest, DrawAggregatedFrameWithSurfaceTransforms) { 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 @@ TEST_F(SurfacesPixelTest, DrawAggregatedFrameWithSurfaceTransforms) { 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 @@ TEST_F(SurfacesPixelTest, DrawAggregatedFrameWithSurfaceTransforms) { 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 @@ TEST_F(SurfacesPixelTest, DrawAggregatedFrameWithSurfaceTransforms) { 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 @@ void TestRenderPass::AppendOneOfEveryQuadType( 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 @@ void TestRenderPass::AppendOneOfEveryQuadType( 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 @@ void TestRenderPass::AppendOneOfEveryQuadType( RenderPassDrawQuad::Create(); render_pass_quad->SetNew(shared_state.get(), rect, + visible_rect, child_pass, false, resource5, @@ -127,6 +127,7 @@ void TestRenderPass::AppendOneOfEveryQuadType( RenderPassDrawQuad::Create(); render_pass_replica_quad->SetNew(shared_state.get(), rect, + visible_rect, child_pass, true, resource5, @@ -139,10 +140,8 @@ void TestRenderPass::AppendOneOfEveryQuadType( 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 @@ void TestRenderPass::AppendOneOfEveryQuadType( 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 @@ void TestRenderPass::AppendOneOfEveryQuadType( texture_quad->SetNew(shared_state.get(), rect, opaque_rect, + visible_rect, resource1, false, gfx::PointF(0.f, 0.f), @@ -171,6 +172,7 @@ void TestRenderPass::AppendOneOfEveryQuadType( 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 @@ void TestRenderPass::AppendOneOfEveryQuadType( 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 @@ void TestRenderPass::AppendOneOfEveryQuadType( 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 @@ void TestRenderPass::AppendOneOfEveryQuadType( 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 @@ SolidColorDrawQuad* AddQuad(TestRenderPass* pass, 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 @@ SolidColorDrawQuad* AddClippedQuad(TestRenderPass* pass, 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 @@ SolidColorDrawQuad* AddTransformedQuad(TestRenderPass* pass, 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 @@ void AddRenderPassQuad(TestRenderPass* to_pass, 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 @@ void AddRenderPassQuad(TestRenderPass* to_pass, 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 @@ static void AppendQuadsToFillScreen( 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 @@ static void AppendQuadsToFillScreen( 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..95018a7 100644 --- a/cc/trees/layer_tree_host_impl_unittest.cc +++ b/cc/trees/layer_tree_host_impl_unittest.cc @@ -3171,6 +3171,7 @@ class BlendStateCheckLayer : public LayerImpl { 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 @@ class BlendStateCheckLayer : public LayerImpl { 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 @@ class FakeLayerWithQuads : public LayerImpl { 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 @@ class LayerTreeHostDelegatedTest : public LayerTreeTest { 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 @@ class LayerTreeHostDelegatedTest : public LayerTreeTest { invalid_draw_quad->SetNew(shared_quad_state.get(), rect, opaque_rect, + visible_rect, resource_id, premultiplied_alpha, uv_top_left, @@ -152,6 +154,7 @@ class LayerTreeHostDelegatedTest : public LayerTreeTest { 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 @@ class LayerTreeHostDelegatedTest : public LayerTreeTest { 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..bbbca9e 100644 --- a/cc/trees/quad_culler.cc +++ b/cc/trees/quad_culler.cc @@ -66,8 +66,11 @@ static inline bool AppendQuadInternal( 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 @@ TEST_F(QuadCullerTest, PartialCullingNotDestroyed) { 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 @@ TEST_F(QuadCullerTest, PartialCullingNotDestroyed) { 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 @@ TEST_F(QuadCullerTest, PartialCullingWithOcclusionNotDestroyed) { 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 @@ TEST_F(QuadCullerTest, PartialCullingWithOcclusionNotDestroyed) { 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, |