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

Unified Diff: cc/layers/render_surface_impl.cc

Issue 2811013002: Revert: cc: RenderSurfaceImpl tile mask layer. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/layers/render_surface_impl.h ('k') | cc/layers/render_surface_impl_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layers/render_surface_impl.cc
diff --git a/cc/layers/render_surface_impl.cc b/cc/layers/render_surface_impl.cc
index 4a37f72ea6ca1f287094e617d248eb362e527688..4f49067fbbdfc3b0e5e660b542e768cdf0b131e1 100644
--- a/cc/layers/render_surface_impl.cc
+++ b/cc/layers/render_surface_impl.cc
@@ -13,14 +13,11 @@
#include "cc/base/filter_operations.h"
#include "cc/base/math_util.h"
#include "cc/debug/debug_colors.h"
-#include "cc/layers/append_quads_data.h"
#include "cc/layers/layer_impl.h"
-#include "cc/quads/content_draw_quad_base.h"
#include "cc/quads/debug_border_draw_quad.h"
#include "cc/quads/render_pass.h"
#include "cc/quads/render_pass_draw_quad.h"
#include "cc/quads/shared_quad_state.h"
-#include "cc/quads/solid_color_draw_quad.h"
#include "cc/trees/damage_tracker.h"
#include "cc/trees/draw_property_utils.h"
#include "cc/trees/effect_node.h"
@@ -399,10 +396,10 @@ void RenderSurfaceImpl::AppendQuads(RenderPass* render_pass,
ResourceId mask_resource_id = 0;
gfx::Size mask_texture_size;
- gfx::RectF mask_uv_rect;
+ gfx::Vector2dF mask_uv_scale;
gfx::Vector2dF surface_contents_scale =
OwningEffectNode()->surface_contents_scale;
- PictureLayerImpl* mask_layer = static_cast<PictureLayerImpl*>(MaskLayer());
+ LayerImpl* mask_layer = MaskLayer();
if (mask_layer && mask_layer->DrawsContent() &&
!mask_layer->bounds().IsEmpty()) {
// The software renderer applies mask layer and blending in the wrong
@@ -411,139 +408,22 @@ void RenderSurfaceImpl::AppendQuads(RenderPass* render_pass,
// mask layers.
DCHECK(BlendMode() != SkBlendMode::kDstIn)
<< "kDstIn blend mode with mask layer is unsupported.";
- if (mask_layer->mask_type() == Layer::LayerMaskType::MULTI_TEXTURE_MASK) {
- TileMaskLayer(render_pass, shared_quad_state, visible_layer_rect);
- return;
- }
mask_layer->GetContentsResourceId(&mask_resource_id, &mask_texture_size);
gfx::SizeF unclipped_mask_target_size = gfx::ScaleSize(
gfx::SizeF(OwningEffectNode()->unscaled_mask_target_size),
surface_contents_scale.x(), surface_contents_scale.y());
- // Convert content_rect from target space to normalized space.
- // Where unclipped_mask_target_size maps to gfx::Size(1, 1).
- mask_uv_rect = gfx::ScaleRect(gfx::RectF(content_rect()),
- 1.0f / unclipped_mask_target_size.width(),
- 1.0f / unclipped_mask_target_size.height());
+ mask_uv_scale = gfx::Vector2dF(1.0f / unclipped_mask_target_size.width(),
+ 1.0f / unclipped_mask_target_size.height());
}
- gfx::RectF tex_coord_rect(gfx::Rect(content_rect().size()));
RenderPassDrawQuad* quad =
render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
quad->SetNew(shared_quad_state, content_rect(), visible_layer_rect,
- GetRenderPassId(), mask_resource_id, mask_uv_rect,
+ GetRenderPassId(), mask_resource_id,
+ gfx::ScaleRect(gfx::RectF(content_rect()), mask_uv_scale.x(),
+ mask_uv_scale.y()),
mask_texture_size, surface_contents_scale, FiltersOrigin(),
- tex_coord_rect);
-}
-
-void RenderSurfaceImpl::TileMaskLayer(RenderPass* render_pass,
- SharedQuadState* shared_quad_state,
- const gfx::Rect& visible_layer_rect) {
- DCHECK(MaskLayer());
- DCHECK(Filters().IsEmpty());
-
- LayerImpl* mask_layer = MaskLayer();
- gfx::Vector2dF owning_layer_to_surface_contents_scale =
- OwningEffectNode()->surface_contents_scale;
- std::unique_ptr<RenderPass> temp_render_pass = RenderPass::Create();
- AppendQuadsData temp_append_quads_data;
- mask_layer->AppendQuads(temp_render_pass.get(), &temp_append_quads_data);
-
- auto* temp_quad = temp_render_pass->quad_list.front();
- if (!temp_quad)
- return;
- gfx::Transform mask_quad_to_surface_contents =
- temp_quad->shared_quad_state->quad_to_target_transform;
- // Draw transform of a mask layer should be a 2d scale.
- DCHECK(mask_quad_to_surface_contents.IsScale2d());
- gfx::Vector2dF mask_quad_to_surface_contents_scale =
- mask_quad_to_surface_contents.Scale2d();
- shared_quad_state->quad_to_target_transform.matrix().preScale(
- mask_quad_to_surface_contents_scale.x(),
- mask_quad_to_surface_contents_scale.y(), 1.f);
- shared_quad_state->quad_layer_bounds =
- gfx::ScaleToCeiledSize(shared_quad_state->quad_layer_bounds,
- 1.f / mask_quad_to_surface_contents_scale.x(),
- 1.f / mask_quad_to_surface_contents_scale.y());
- shared_quad_state->visible_quad_layer_rect =
- gfx::ScaleToEnclosedRect(shared_quad_state->visible_quad_layer_rect,
- mask_quad_to_surface_contents_scale.x(),
- mask_quad_to_surface_contents_scale.y());
- gfx::Rect content_rect_in_coverage_space = gfx::ScaleToEnclosedRect(
- content_rect(), 1.f / mask_quad_to_surface_contents_scale.x(),
- 1.f / mask_quad_to_surface_contents_scale.y());
- gfx::Rect visible_layer_rect_in_coverage_space = gfx::ScaleToEnclosedRect(
- visible_layer_rect, 1.f / mask_quad_to_surface_contents_scale.x(),
- 1.f / mask_quad_to_surface_contents_scale.y());
-
- for (auto* temp_quad : temp_render_pass->quad_list) {
- gfx::Rect quad_rect = temp_quad->rect;
- gfx::Rect render_quad_rect = quad_rect;
- if (!quad_rect.Intersects(content_rect_in_coverage_space))
- continue;
- render_quad_rect =
- gfx::IntersectRects(quad_rect, content_rect_in_coverage_space);
- gfx::RectF quad_rect_in_surface_contents_space = gfx::ScaleRect(
- gfx::RectF(render_quad_rect), mask_quad_to_surface_contents_scale.x(),
- mask_quad_to_surface_contents_scale.y());
- gfx::RectF quad_rect_in_non_normalized_texture_space =
- quad_rect_in_surface_contents_space;
- quad_rect_in_non_normalized_texture_space.Offset(
- -content_rect().OffsetFromOrigin());
-
- switch (temp_quad->material) {
- case DrawQuad::TILED_CONTENT: {
- DCHECK_EQ(1U, temp_quad->resources.count);
- RenderPassDrawQuad* quad =
- render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
-
- gfx::Size mask_texture_size =
- static_cast<ContentDrawQuadBase*>(temp_quad)->texture_size;
- gfx::RectF temp_tex_coord_rect =
- static_cast<ContentDrawQuadBase*>(temp_quad)->tex_coord_rect;
- gfx::Transform coverage_to_non_normalized_mask =
- gfx::Transform(SkMatrix44(SkMatrix::MakeRectToRect(
- RectToSkRect(quad_rect), RectFToSkRect(temp_tex_coord_rect),
- SkMatrix::kFill_ScaleToFit)));
- gfx::Transform coverage_to_normalized_mask =
- coverage_to_non_normalized_mask;
- coverage_to_normalized_mask.matrix().postScale(
- 1.f / mask_texture_size.width(), 1.f / mask_texture_size.height(),
- 1.f);
- gfx::RectF mask_uv_rect = gfx::RectF(render_quad_rect);
- coverage_to_normalized_mask.TransformRect(&mask_uv_rect);
-
- quad->SetNew(shared_quad_state, render_quad_rect,
- gfx::IntersectRects(temp_quad->visible_rect,
- visible_layer_rect_in_coverage_space),
- GetRenderPassId(), temp_quad->resources.ids[0],
- mask_uv_rect, mask_texture_size,
- owning_layer_to_surface_contents_scale, FiltersOrigin(),
- quad_rect_in_non_normalized_texture_space);
- } break;
- case DrawQuad::SOLID_COLOR: {
- if (!static_cast<SolidColorDrawQuad*>(temp_quad)->color)
- continue;
- SkAlpha solid = SK_AlphaOPAQUE;
- DCHECK_EQ(
- SkColorGetA(static_cast<SolidColorDrawQuad*>(temp_quad)->color),
- solid);
- RenderPassDrawQuad* quad =
- render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
- quad->SetNew(shared_quad_state, render_quad_rect,
- gfx::IntersectRects(temp_quad->visible_rect,
- visible_layer_rect_in_coverage_space),
- GetRenderPassId(), 0, gfx::RectF(), gfx::Size(),
- owning_layer_to_surface_contents_scale, FiltersOrigin(),
- quad_rect_in_non_normalized_texture_space);
- } break;
- case DrawQuad::DEBUG_BORDER:
- NOTIMPLEMENTED();
- break;
- default:
- NOTREACHED();
- break;
- }
- }
+ gfx::RectF());
}
} // namespace cc
« no previous file with comments | « cc/layers/render_surface_impl.h ('k') | cc/layers/render_surface_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698