viz: Make RenderPassId not convertible to int.
The primary amount of work this patch does is ensures that RenderPassId
is an explicit type that cannot be implicitly converted to other types
(using util::IdType from base).
Note that there is also a split between RenderPass and (new)
RenderPassInternal classes. This is in preparation for having a
CompositorRenderPass and AggregatedRenderPass which would differ at least
in the type of Id that they have (possibly with more differences if
there is something Compositor uses that Aggregator does not).
[email protected]
Bug: 1106418
Change-Id: Iaf6a5e4f654652d5dc724b20ba8908ddeeeec087
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2305189
Reviewed-by: weiliangc <[email protected]>
Reviewed-by: Bo <[email protected]>
Reviewed-by: Mitsuru Oshima <[email protected]>
Reviewed-by: Robert Sesek <[email protected]>
Reviewed-by: Chris Harrelson <[email protected]>
Commit-Queue: vmpstr <[email protected]>
Cr-Commit-Position: refs/heads/master@{#790088}
diff --git a/cc/layers/mirror_layer_impl.cc b/cc/layers/mirror_layer_impl.cc
index 5751ccb..a8c7d4f 100644
--- a/cc/layers/mirror_layer_impl.cc
+++ b/cc/layers/mirror_layer_impl.cc
@@ -54,7 +54,7 @@
auto* mirrored_effect_node = mirrored_render_surface->OwningEffectNode();
auto* quad = render_pass->CreateAndAppendDrawQuad<viz::RenderPassDrawQuad>();
quad->SetNew(shared_quad_state, content_rect, unoccluded_content_rect,
- mirrored_layer_id_, mask_resource_id, mask_uv_rect,
+ mirrored_layer_render_pass_id(), mask_resource_id, mask_uv_rect,
mask_texture_size, mirrored_effect_node->surface_contents_scale,
gfx::PointF(), gfx::RectF(gfx::Rect(content_rect.size())),
!layer_tree_impl()->settings().enable_edge_anti_aliasing, 0.f);
diff --git a/cc/layers/mirror_layer_impl.h b/cc/layers/mirror_layer_impl.h
index b2e6204..58c07eb 100644
--- a/cc/layers/mirror_layer_impl.h
+++ b/cc/layers/mirror_layer_impl.h
@@ -54,6 +54,9 @@
private:
const char* LayerTypeAsString() const override;
+ viz::RenderPassId mirrored_layer_render_pass_id() const {
+ return viz::RenderPassId{mirrored_layer_id()};
+ }
int mirrored_layer_id_ = 0;
};
diff --git a/cc/layers/render_surface_impl.cc b/cc/layers/render_surface_impl.cc
index f3cd766..48421224 100644
--- a/cc/layers/render_surface_impl.cc
+++ b/cc/layers/render_surface_impl.cc
@@ -370,7 +370,7 @@
viz::RenderPass::Create(num_contributors_);
gfx::Rect damage_rect = GetDamageRect();
damage_rect.Intersect(content_rect());
- pass->SetNew(id(), content_rect(), damage_rect,
+ pass->SetNew(render_pass_id(), content_rect(), damage_rect,
draw_properties_.screen_space_transform);
pass->filters = Filters();
pass->backdrop_filters = BackdropFilters();
@@ -451,9 +451,9 @@
gfx::RectF tex_coord_rect(gfx::Rect(content_rect().size()));
auto* quad = render_pass->CreateAndAppendDrawQuad<viz::RenderPassDrawQuad>();
quad->SetAll(shared_quad_state, content_rect(), unoccluded_content_rect,
- /*needs_blending=*/true, id(), mask_resource_id, mask_uv_rect,
- mask_texture_size, surface_contents_scale, gfx::PointF(),
- tex_coord_rect,
+ /*needs_blending=*/true, render_pass_id(), mask_resource_id,
+ mask_uv_rect, mask_texture_size, surface_contents_scale,
+ gfx::PointF(), tex_coord_rect,
!layer_tree_impl_->settings().enable_edge_anti_aliasing,
OwningEffectNode()->backdrop_filter_quality,
can_use_cached_backdrop_filtered_result_);
diff --git a/cc/layers/render_surface_impl.h b/cc/layers/render_surface_impl.h
index fac0274..9ce6bd5 100644
--- a/cc/layers/render_surface_impl.h
+++ b/cc/layers/render_surface_impl.h
@@ -161,6 +161,7 @@
}
uint64_t id() const { return stable_id_; }
+ viz::RenderPassId render_pass_id() const { return viz::RenderPassId{id()}; }
bool HasMaskingContributingSurface() const;
diff --git a/cc/layers/render_surface_unittest.cc b/cc/layers/render_surface_unittest.cc
index 30e41c9..ab56722 100644
--- a/cc/layers/render_surface_unittest.cc
+++ b/cc/layers/render_surface_unittest.cc
@@ -205,7 +205,7 @@
auto pass = render_surface->CreateRenderPass();
- EXPECT_EQ(2u, pass->id);
+ EXPECT_EQ(viz::RenderPassId{2}, pass->id);
EXPECT_EQ(content_rect, pass->output_rect);
EXPECT_EQ(origin, pass->transform_to_root_target);
}