Commit f9427574 authored by danakj's avatar danakj Committed by Commit bot

cc: Some more cleanup and removing TODOs for validating resources.

This adds a LayerImpl::ValidateQuadResources() that each layer can
call on quads that it appends. This function is empty when DCHECKs are
off, which means it should be cheap/free in release builds.

R=piman@chromium.org
BUG=475894

Review URL: https://codereview.chromium.org/1096703006

Cr-Commit-Position: refs/heads/master@{#326903}
parent f5f397bd
......@@ -408,14 +408,6 @@ void DelegatedRendererLayerImpl::AppendRainbowDebugBorder(
}
}
// TODO(danakj): crbug.com/455931
static ResourceProvider::ResourceId ValidateResource(
ResourceProvider* provider,
ResourceProvider::ResourceId id) {
provider->ValidateResource(id);
return id;
}
void DelegatedRendererLayerImpl::AppendRenderPassQuads(
RenderPass* render_pass,
const RenderPass* delegated_render_pass,
......@@ -487,9 +479,7 @@ void DelegatedRendererLayerImpl::AppendRenderPassQuads(
DrawQuad* output_quad = render_pass->CopyFromAndAppendDrawQuad(
delegated_quad, output_shared_quad_state);
output_quad->visible_rect = quad_visible_rect;
// TODO(danakj): crbug.com/455931
output_quad->IterateResources(base::Bind(
&ValidateResource, layer_tree_impl()->resource_provider()));
ValidateQuadResources(output_quad);
} else {
RenderPassId delegated_contributing_render_pass_id =
RenderPassDrawQuad::MaterialCast(delegated_quad)->render_pass_id;
......@@ -507,9 +497,7 @@ void DelegatedRendererLayerImpl::AppendRenderPassQuads(
RenderPassDrawQuad::MaterialCast(delegated_quad),
output_shared_quad_state, output_contributing_render_pass_id);
output_quad->visible_rect = quad_visible_rect;
// TODO(danakj): crbug.com/455931
output_quad->IterateResources(base::Bind(
&ValidateResource, layer_tree_impl()->resource_provider()));
ValidateQuadResources(output_quad);
}
}
}
......
......@@ -159,9 +159,6 @@ void HeadsUpDisplayLayerImpl::AppendQuads(
bool nearest_neighbor = false;
TextureDrawQuad* quad =
render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
// TODO(danakj): crbug.com/455931
layer_tree_impl()->resource_provider()->ValidateResource(
resources_.back()->id());
quad->SetNew(shared_quad_state,
quad_rect,
opaque_rect,
......@@ -174,6 +171,7 @@ void HeadsUpDisplayLayerImpl::AppendQuads(
vertex_opacity,
flipped,
nearest_neighbor);
ValidateQuadResources(quad);
}
void HeadsUpDisplayLayerImpl::UpdateHudTexture(
......
......@@ -77,9 +77,6 @@ void IOSurfaceLayerImpl::AppendQuads(
if (visible_quad_rect.IsEmpty())
return;
// TODO(danakj): crbug.com/455931
layer_tree_impl()->resource_provider()->ValidateResource(
io_surface_resource_id_);
IOSurfaceDrawQuad* quad =
render_pass->CreateAndAppendDrawQuad<IOSurfaceDrawQuad>();
quad->SetNew(shared_quad_state,
......@@ -89,6 +86,7 @@ void IOSurfaceLayerImpl::AppendQuads(
io_surface_size_,
io_surface_resource_id_,
IOSurfaceDrawQuad::FLIPPED);
ValidateQuadResources(quad);
}
void IOSurfaceLayerImpl::ReleaseResources() {
......
......@@ -746,6 +746,23 @@ void LayerImpl::NoteLayerPropertyChangedForDescendants() {
SetNeedsPushProperties();
}
#if DCHECK_IS_ON()
// Verify that the resource id is valid.
static ResourceProvider::ResourceId ValidateResource(
const ResourceProvider* provider,
ResourceProvider::ResourceId id) {
provider->ValidateResource(id);
return id;
}
#endif
void LayerImpl::ValidateQuadResourcesInternal(DrawQuad* quad) const {
#if DCHECK_IS_ON()
quad->IterateResources(
base::Bind(&ValidateResource, layer_tree_impl_->resource_provider()));
#endif
}
const char* LayerImpl::LayerTypeAsString() const {
return "cc::LayerImpl";
}
......
......@@ -247,6 +247,13 @@ class CC_EXPORT LayerImpl : public LayerAnimationValueObserver,
AppendQuadsData* append_quads_data) {}
virtual void DidDraw(ResourceProvider* resource_provider);
// Verify that the resource ids in the quad are valid.
void ValidateQuadResources(DrawQuad* quad) const {
#if DCHECK_IS_ON()
ValidateQuadResourcesInternal(quad);
#endif
}
virtual void GetContentsResourceId(ResourceProvider::ResourceId* resource_id,
gfx::Size* resource_size) const;
......@@ -669,6 +676,8 @@ class CC_EXPORT LayerImpl : public LayerAnimationValueObserver,
gfx::Rect GetScaledEnclosingRectInTargetSpace(float scale) const;
private:
void ValidateQuadResourcesInternal(DrawQuad* quad) const;
void PushScrollOffset(const gfx::ScrollOffset* scroll_offset);
// If the new scroll offset is assigned from the root scroll offset delegate,
// LayerImpl won't inform the root scroll offset delegate about the scroll
......
......@@ -100,9 +100,6 @@ void NinePatchLayerImpl::AppendQuads(
if (!resource)
return;
// TODO(danakj): crbug.com/455931
layer_tree_impl()->resource_provider()->ValidateResource(resource);
static const bool flipped = false;
static const bool nearest_neighbor = false;
static const bool premultiplied_alpha = true;
......@@ -234,6 +231,7 @@ void NinePatchLayerImpl::AppendQuads(
vertex_opacity,
flipped,
nearest_neighbor);
ValidateQuadResources(quad);
}
visible_rect =
......@@ -255,6 +253,7 @@ void NinePatchLayerImpl::AppendQuads(
vertex_opacity,
flipped,
nearest_neighbor);
ValidateQuadResources(quad);
}
visible_rect =
......@@ -276,6 +275,7 @@ void NinePatchLayerImpl::AppendQuads(
vertex_opacity,
flipped,
nearest_neighbor);
ValidateQuadResources(quad);
}
visible_rect =
......@@ -297,6 +297,7 @@ void NinePatchLayerImpl::AppendQuads(
vertex_opacity,
flipped,
nearest_neighbor);
ValidateQuadResources(quad);
}
visible_rect =
......@@ -318,6 +319,7 @@ void NinePatchLayerImpl::AppendQuads(
vertex_opacity,
flipped,
nearest_neighbor);
ValidateQuadResources(quad);
}
visible_rect =
......@@ -339,6 +341,7 @@ void NinePatchLayerImpl::AppendQuads(
vertex_opacity,
flipped,
nearest_neighbor);
ValidateQuadResources(quad);
}
visible_rect =
......@@ -360,6 +363,7 @@ void NinePatchLayerImpl::AppendQuads(
vertex_opacity,
flipped,
nearest_neighbor);
ValidateQuadResources(quad);
}
visible_rect =
......@@ -381,6 +385,7 @@ void NinePatchLayerImpl::AppendQuads(
vertex_opacity,
flipped,
nearest_neighbor);
ValidateQuadResources(quad);
}
if (fill_center_) {
......@@ -403,6 +408,7 @@ void NinePatchLayerImpl::AppendQuads(
vertex_opacity,
flipped,
nearest_neighbor);
ValidateQuadResources(quad);
}
}
}
......
......@@ -103,14 +103,13 @@ void PaintedScrollbarLayerImpl::AppendQuads(
if (thumb_resource_id && !visible_thumb_quad_rect.IsEmpty()) {
gfx::Rect opaque_rect;
const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
// TODO(danakj): crbug.com/455931
layer_tree_impl()->resource_provider()->ValidateResource(thumb_resource_id);
TextureDrawQuad* quad =
render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
quad->SetNew(shared_quad_state, scaled_thumb_quad_rect, opaque_rect,
scaled_visible_thumb_quad_rect, thumb_resource_id,
premultipled_alpha, uv_top_left, uv_bottom_right,
SK_ColorTRANSPARENT, opacity, flipped, nearest_neighbor);
ValidateQuadResources(quad);
}
gfx::Rect track_quad_rect(bounds());
......@@ -124,14 +123,13 @@ void PaintedScrollbarLayerImpl::AppendQuads(
gfx::Rect opaque_rect(contents_opaque() ? scaled_track_quad_rect
: gfx::Rect());
const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
// TODO(danakj): crbug.com/455931
layer_tree_impl()->resource_provider()->ValidateResource(track_resource_id);
TextureDrawQuad* quad =
render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
quad->SetNew(shared_quad_state, scaled_track_quad_rect, opaque_rect,
scaled_visible_track_quad_rect, track_resource_id,
premultipled_alpha, uv_top_left, uv_bottom_right,
SK_ColorTRANSPARENT, opacity, flipped, nearest_neighbor);
ValidateQuadResources(quad);
}
}
......
......@@ -208,6 +208,7 @@ void PictureLayerImpl::AppendQuads(RenderPass* render_pass,
visible_geometry_rect, texture_rect, texture_size,
nearest_neighbor_, RGBA_8888, quad_content_rect,
max_contents_scale, raster_source_);
ValidateQuadResources(quad);
return;
}
......@@ -305,15 +306,13 @@ void PictureLayerImpl::AppendQuads(RenderPass* render_pass,
append_quads_data->num_incomplete_tiles++;
}
// TODO(danakj): crbug.com/455931
layer_tree_impl()->resource_provider()->ValidateResource(
draw_info.resource_id());
TileDrawQuad* quad =
render_pass->CreateAndAppendDrawQuad<TileDrawQuad>();
quad->SetNew(shared_quad_state, geometry_rect, opaque_rect,
visible_geometry_rect, draw_info.resource_id(),
texture_rect, draw_info.resource_size(),
draw_info.contents_swizzled(), nearest_neighbor_);
ValidateQuadResources(quad);
has_draw_quad = true;
break;
}
......@@ -322,6 +321,7 @@ void PictureLayerImpl::AppendQuads(RenderPass* render_pass,
render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
quad->SetNew(shared_quad_state, geometry_rect, visible_geometry_rect,
draw_info.solid_color(), false);
ValidateQuadResources(quad);
has_draw_quad = true;
break;
}
......@@ -346,6 +346,7 @@ void PictureLayerImpl::AppendQuads(RenderPass* render_pass,
visible_geometry_rect,
color,
false);
ValidateQuadResources(quad);
}
if (geometry_rect.Intersects(scaled_viewport_for_tile_priority)) {
......
......@@ -167,8 +167,6 @@ void TextureLayerImpl::AppendQuads(RenderPass* render_pass,
render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
ResourceProvider::ResourceId id =
valid_texture_copy_ ? texture_copy_->id() : external_texture_resource_;
// TODO(danakj): crbug.com/455931
layer_tree_impl()->resource_provider()->ValidateResource(id);
quad->SetNew(shared_quad_state,
quad_rect,
opaque_rect,
......@@ -181,6 +179,7 @@ void TextureLayerImpl::AppendQuads(RenderPass* render_pass,
vertex_opacity_,
flipped_,
nearest_neighbor_);
ValidateQuadResources(quad);
}
SimpleEnclosedRegion TextureLayerImpl::VisibleContentOpaqueRegion() const {
......
......@@ -260,9 +260,6 @@ void TiledLayerImpl::AppendQuads(RenderPass* render_pass,
float tile_height = static_cast<float>(tiler_->tile_size().height());
gfx::Size texture_size(tile_width, tile_height);
// TODO(danakj): crbug.com/455931
layer_tree_impl()->resource_provider()->ValidateResource(
tile->resource_id());
TileDrawQuad* quad = render_pass->CreateAndAppendDrawQuad<TileDrawQuad>();
quad->SetNew(shared_quad_state,
tile_rect,
......@@ -273,6 +270,7 @@ void TiledLayerImpl::AppendQuads(RenderPass* render_pass,
texture_size,
tile->contents_swizzled(),
false);
ValidateQuadResources(quad);
}
}
}
......
......@@ -110,9 +110,6 @@ void UIResourceLayerImpl::AppendQuads(
if (!resource)
return;
// TODO(danakj): crbug.com/455931
layer_tree_impl()->resource_provider()->ValidateResource(resource);
static const bool flipped = false;
static const bool nearest_neighbor = false;
static const bool premultiplied_alpha = true;
......@@ -144,6 +141,7 @@ void UIResourceLayerImpl::AppendQuads(
vertex_opacity_,
flipped,
nearest_neighbor);
ValidateQuadResources(quad);
}
const char* UIResourceLayerImpl::LayerTypeAsString() const {
......
......@@ -202,9 +202,6 @@ void VideoLayerImpl::AppendQuads(RenderPass* render_pass,
float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
bool flipped = false;
bool nearest_neighbor = false;
// TODO(danakj): crbug.com/455931
layer_tree_impl()->resource_provider()->ValidateResource(
software_resources_[0]);
TextureDrawQuad* texture_quad =
render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
texture_quad->SetNew(shared_quad_state,
......@@ -219,6 +216,7 @@ void VideoLayerImpl::AppendQuads(RenderPass* render_pass,
opacity,
flipped,
nearest_neighbor);
ValidateQuadResources(texture_quad);
break;
}
case VideoFrameExternalResources::YUV_RESOURCE: {
......@@ -244,17 +242,6 @@ void VideoLayerImpl::AppendQuads(RenderPass* render_pass,
frame_->format(), media::VideoFrame::kAPlane, coded_size));
}
// TODO(danakj): crbug.com/455931
layer_tree_impl()->resource_provider()->ValidateResource(
frame_resources_[0]);
layer_tree_impl()->resource_provider()->ValidateResource(
frame_resources_[1]);
layer_tree_impl()->resource_provider()->ValidateResource(
frame_resources_[2]);
if (frame_resources_.size() > 3) {
layer_tree_impl()->resource_provider()->ValidateResource(
frame_resources_[3]);
}
gfx::RectF tex_coord_rect(
tex_x_offset, tex_y_offset, tex_width_scale, tex_height_scale);
YUVVideoDrawQuad* yuv_video_quad =
......@@ -264,6 +251,7 @@ void VideoLayerImpl::AppendQuads(RenderPass* render_pass,
tex_coord_rect, ya_tex_size, uv_tex_size, frame_resources_[0],
frame_resources_[1], frame_resources_[2],
frame_resources_.size() > 3 ? frame_resources_[3] : 0, color_space);
ValidateQuadResources(yuv_video_quad);
break;
}
case VideoFrameExternalResources::RGB_RESOURCE: {
......@@ -276,9 +264,6 @@ void VideoLayerImpl::AppendQuads(RenderPass* render_pass,
float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
bool flipped = false;
bool nearest_neighbor = false;
// TODO(danakj): crbug.com/455931
layer_tree_impl()->resource_provider()->ValidateResource(
frame_resources_[0]);
TextureDrawQuad* texture_quad =
render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
texture_quad->SetNew(shared_quad_state,
......@@ -293,15 +278,13 @@ void VideoLayerImpl::AppendQuads(RenderPass* render_pass,
opacity,
flipped,
nearest_neighbor);
ValidateQuadResources(texture_quad);
break;
}
case VideoFrameExternalResources::STREAM_TEXTURE_RESOURCE: {
DCHECK_EQ(frame_resources_.size(), 1u);
if (frame_resources_.size() < 1u)
break;
// TODO(danakj): crbug.com/455931
layer_tree_impl()->resource_provider()->ValidateResource(
frame_resources_[0]);
gfx::Transform scale;
scale.Scale(tex_width_scale, tex_height_scale);
StreamVideoDrawQuad* stream_video_quad =
......@@ -310,15 +293,13 @@ void VideoLayerImpl::AppendQuads(RenderPass* render_pass,
shared_quad_state, quad_rect, opaque_rect, visible_quad_rect,
frame_resources_[0],
scale * provider_client_impl_->StreamTextureMatrix());
ValidateQuadResources(stream_video_quad);
break;
}
case VideoFrameExternalResources::IO_SURFACE: {
DCHECK_EQ(frame_resources_.size(), 1u);
if (frame_resources_.size() < 1u)
break;
// TODO(danakj): crbug.com/455931
layer_tree_impl()->resource_provider()->ValidateResource(
frame_resources_[0]);
IOSurfaceDrawQuad* io_surface_quad =
render_pass->CreateAndAppendDrawQuad<IOSurfaceDrawQuad>();
io_surface_quad->SetNew(shared_quad_state,
......@@ -328,6 +309,7 @@ void VideoLayerImpl::AppendQuads(RenderPass* render_pass,
visible_rect.size(),
frame_resources_[0],
IOSurfaceDrawQuad::UNFLIPPED);
ValidateQuadResources(io_surface_quad);
break;
}
#if defined(VIDEO_HOLE)
......
......@@ -863,10 +863,9 @@ ResourceProvider::Resource* ResourceProvider::InsertResource(
ResourceProvider::Resource* ResourceProvider::GetResource(ResourceId id) {
DCHECK(thread_checker_.CalledOnValidThread());
// TODO(danakj): crbug.com/455931
CHECK(id);
DCHECK(id);
ResourceMap::iterator it = resources_.find(id);
CHECK(it != resources_.end());
DCHECK(it != resources_.end());
return &it->second;
}
......@@ -2044,7 +2043,7 @@ GLint ResourceProvider::GetActiveTextureUnit(GLES2Interface* gl) {
return active_unit;
}
void ResourceProvider::ValidateResource(ResourceId id) {
void ResourceProvider::ValidateResource(ResourceId id) const {
DCHECK(thread_checker_.CalledOnValidThread());
DCHECK(id);
DCHECK(resources_.find(id) != resources_.end());
......
......@@ -434,7 +434,7 @@ class CC_EXPORT ResourceProvider {
OutputSurface* output_surface() { return output_surface_; }
void ValidateResource(ResourceId id);
void ValidateResource(ResourceId id) const;
private:
struct Resource {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment