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

Unified Diff: cc/trees/layer_tree_host_impl.cc

Issue 2337913003: Fork cc::OutputSurface into cc::CompositorFrameSink. (Closed)
Patch Set: cfsfork: android-vulkan Created 4 years, 3 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/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_host_impl.cc
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index 0e31b017acc720fb306c494da04c478a7a7d1358..95c84c3aaf383f2c68435a1744b4c707f04ea707 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -197,7 +197,7 @@ LayerTreeHostImpl::LayerTreeHostImpl(
: client_(client),
task_runner_provider_(task_runner_provider),
current_begin_frame_tracker_(BEGINFRAMETRACKER_FROM_HERE),
- output_surface_(nullptr),
+ compositor_frame_sink_(nullptr),
need_update_gpu_rasterization_status_(false),
content_is_suitable_for_gpu_rasterization_(true),
has_gpu_rasterization_trigger_(false),
@@ -272,7 +272,7 @@ LayerTreeHostImpl::~LayerTreeHostImpl() {
"cc::LayerTreeHostImpl", id_);
// It is released before shutdown.
- DCHECK(!output_surface_);
+ DCHECK(!compositor_frame_sink_);
DCHECK(!resource_provider_);
DCHECK(!resource_pool_);
@@ -329,8 +329,8 @@ void LayerTreeHostImpl::BeginCommit() {
// Impl-side-painting as it doesn't upload during commits. However,
// Display::Draw currently relies on resource being reclaimed to block drawing
// between BeginCommit / Swap. See crbug.com/489515.
- if (output_surface_)
- output_surface_->ForceReclaimResources();
+ if (compositor_frame_sink_)
+ compositor_frame_sink_->ForceReclaimResources();
if (!CommitToActiveTree())
CreatePendingTree();
@@ -390,8 +390,9 @@ bool LayerTreeHostImpl::CanDraw() const {
// client_->OnCanDrawStateChanged in the proper places and update the
// NotifyIfCanDrawChanged test.
- if (!output_surface_) {
- TRACE_EVENT_INSTANT0("cc", "LayerTreeHostImpl::CanDraw no output surface",
+ if (!compositor_frame_sink_) {
+ TRACE_EVENT_INSTANT0("cc",
+ "LayerTreeHostImpl::CanDraw no CompositorFrameSink",
TRACE_EVENT_SCOPE_THREAD);
return false;
}
@@ -696,7 +697,7 @@ void LayerTreeHostImpl::FrameData::AppendRenderPass(
DrawMode LayerTreeHostImpl::GetDrawMode() const {
if (resourceless_software_draw_) {
return DRAW_MODE_RESOURCELESS_SOFTWARE;
- } else if (output_surface_->context_provider()) {
+ } else if (compositor_frame_sink_->context_provider()) {
return DRAW_MODE_HARDWARE;
} else {
return DRAW_MODE_SOFTWARE;
@@ -807,7 +808,7 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
bool hud_wants_to_draw_ = active_tree_->hud_layer() &&
active_tree_->hud_layer()->IsAnimatingHUDContents();
bool resources_must_be_resent =
- output_surface_->capabilities().can_force_reclaim_resources;
+ compositor_frame_sink_->capabilities().can_force_reclaim_resources;
if (root_surface_has_contributing_layers &&
root_surface_has_no_visible_damage &&
!active_tree_->property_trees()->effect_tree.HasCopyRequests() &&
@@ -1041,7 +1042,7 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
// would be animating checkerboards, because failing under those conditions
// triggers a new main frame, which may cause the copy request layer to be
// destroyed.
- // TODO(weiliangc): Test copy request w/ output surface recreation. Would
+ // TODO(weiliangc): Test copy request w/ CompositorFrameSink recreation. Would
// trigger this DCHECK.
DCHECK(!have_copy_request || draw_result == DRAW_SUCCESS);
@@ -1458,8 +1459,8 @@ void LayerTreeHostImpl::SetExternalTilePriorityConstraints(
if (pending_tree_)
pending_tree_->set_needs_update_draw_properties();
- // Compositor, not OutputSurface, is responsible for setting damage and
- // triggering redraw for constraint changes.
+ // Compositor, not CompositorFrameSink, is responsible for setting damage
+ // and triggering redraw for constraint changes.
SetFullViewportDamage();
SetNeedsRedraw();
}
@@ -1509,8 +1510,10 @@ void LayerTreeHostImpl::ReclaimResources(
// If we're not visible, we likely released resources, so we want to
// aggressively flush here to make sure those DeleteTextures make it to the
// GPU process to free up the memory.
- if (output_surface_->context_provider() && !visible_) {
- output_surface_->context_provider()->ContextGL()->ShallowFlushCHROMIUM();
+ if (compositor_frame_sink_->context_provider() && !visible_) {
+ compositor_frame_sink_->context_provider()
+ ->ContextGL()
+ ->ShallowFlushCHROMIUM();
}
}
@@ -1541,7 +1544,7 @@ void LayerTreeHostImpl::OnDraw(const gfx::Transform& transform,
client_->OnCanDrawStateChanged(CanDraw());
}
- client_->OnDrawForOutputSurface(resourceless_software_draw_);
+ client_->OnDrawForCompositorFrameSink(resourceless_software_draw_);
}
if (resourceless_software_draw) {
@@ -1627,7 +1630,7 @@ bool LayerTreeHostImpl::DrawLayers(FrameData* frame) {
}
fps_counter_->SaveTimeStamp(CurrentBeginFrameArgs().frame_time,
- !output_surface_->context_provider());
+ !compositor_frame_sink_->context_provider());
rendering_stats_instrumentation_->IncrementFrameCount(1);
memory_history_->SaveEntry(tile_manager_.memory_stats_from_last_assign());
@@ -1700,7 +1703,7 @@ bool LayerTreeHostImpl::DrawLayers(FrameData* frame) {
CompositorFrame compositor_frame;
compositor_frame.metadata = std::move(metadata);
compositor_frame.delegated_frame_data = std::move(data);
- output_surface_->SwapBuffers(std::move(compositor_frame));
+ compositor_frame_sink_->SwapBuffers(std::move(compositor_frame));
// The next frame should start by assuming nothing has changed, and changes
// are noted as they occur.
@@ -1755,12 +1758,12 @@ void LayerTreeHostImpl::SetContentIsSuitableForGpuRasterization(bool flag) {
}
bool LayerTreeHostImpl::CanUseGpuRasterization() {
- if (!(output_surface_ && output_surface_->context_provider() &&
- output_surface_->worker_context_provider()))
+ if (!(compositor_frame_sink_ && compositor_frame_sink_->context_provider() &&
+ compositor_frame_sink_->worker_context_provider()))
return false;
ContextProvider* context_provider =
- output_surface_->worker_context_provider();
+ compositor_frame_sink_->worker_context_provider();
ContextProvider::ScopedContextLock scoped_context(context_provider);
if (!context_provider->GrContext())
return false;
@@ -1769,16 +1772,17 @@ bool LayerTreeHostImpl::CanUseGpuRasterization() {
}
bool LayerTreeHostImpl::UpdateGpuRasterizationStatus() {
- // TODO(danakj): Can we avoid having this run when there's no output surface?
+ // TODO(danakj): Can we avoid having this run when there's no
+ // CompositorFrameSink?
// For now just early out and leave things unchanged, we'll come back here
- // when we get an output surface.
- if (!output_surface_)
+ // when we get an CompositorFrameSink.
+ if (!compositor_frame_sink_)
return false;
int requested_msaa_samples = RequestedMSAASampleCount();
int max_msaa_samples = 0;
ContextProvider* compositor_context_provider =
- output_surface_->context_provider();
+ compositor_frame_sink_->context_provider();
if (compositor_context_provider) {
const auto& caps = compositor_context_provider->ContextCapabilities();
if (!caps.msaa_is_slow)
@@ -1924,10 +1928,10 @@ void LayerTreeHostImpl::SynchronouslyInitializeAllTiles() {
single_thread_synchronous_task_graph_runner_->RunUntilIdle();
}
-void LayerTreeHostImpl::DidLoseOutputSurface() {
+void LayerTreeHostImpl::DidLoseCompositorFrameSink() {
if (resource_provider_)
- resource_provider_->DidLoseOutputSurface();
- client_->DidLoseOutputSurfaceOnImplThread();
+ resource_provider_->DidLoseContextProvider();
+ client_->DidLoseCompositorFrameSinkOnImplThread();
}
bool LayerTreeHostImpl::HaveRootScrollLayer() const {
@@ -2129,7 +2133,7 @@ void LayerTreeHostImpl::CreateTileManagerResources() {
if (use_gpu_rasterization_) {
image_decode_controller_ = base::MakeUnique<GpuImageDecodeController>(
- output_surface_->worker_context_provider(),
+ compositor_frame_sink_->worker_context_provider(),
settings_.renderer_settings.preferred_tile_format,
settings_.gpu_decoded_image_budget_bytes);
} else {
@@ -2169,7 +2173,7 @@ void LayerTreeHostImpl::CreateResourceAndRasterBufferProvider(
CHECK(resource_provider_);
ContextProvider* compositor_context_provider =
- output_surface_->context_provider();
+ compositor_frame_sink_->context_provider();
if (!compositor_context_provider) {
*resource_pool =
ResourcePool::Create(resource_provider_.get(), GetTaskRunner(),
@@ -2181,7 +2185,7 @@ void LayerTreeHostImpl::CreateResourceAndRasterBufferProvider(
}
ContextProvider* worker_context_provider =
- output_surface_->worker_context_provider();
+ compositor_frame_sink_->worker_context_provider();
if (use_gpu_rasterization_) {
DCHECK(worker_context_provider);
@@ -2256,10 +2260,10 @@ void LayerTreeHostImpl::CleanUpTileManagerAndUIResources() {
image_decode_controller_ = nullptr;
}
-void LayerTreeHostImpl::ReleaseOutputSurface() {
- TRACE_EVENT0("cc", "LayerTreeHostImpl::ReleaseOutputSurface");
+void LayerTreeHostImpl::ReleaseCompositorFrameSink() {
+ TRACE_EVENT0("cc", "LayerTreeHostImpl::ReleaseCompositorFrameSink");
- if (!output_surface_)
+ if (!compositor_frame_sink_)
return;
// Since we will create a new resource provider, we cannot continue to use
@@ -2271,7 +2275,7 @@ void LayerTreeHostImpl::ReleaseOutputSurface() {
CleanUpTileManagerAndUIResources();
resource_provider_ = nullptr;
- // Release any context visibility before we destroy the OutputSurface.
+ // Release any context visibility before we destroy the CompositorFrameSink.
if (visible_)
SetCompositorContextVisibility(false);
// Worker context visibility is based on both LTHI visibility as well as
@@ -2280,23 +2284,25 @@ void LayerTreeHostImpl::ReleaseOutputSurface() {
if (worker_context_visibility_)
SetWorkerContextVisibility(false);
- // Detach from the old output surface and reset |output_surface_| pointer
- // as this surface is going to be destroyed independent of if binding the
- // new output surface succeeds or not.
- output_surface_->DetachFromClient();
- output_surface_ = nullptr;
+ // Detach from the old CompositorFrameSink and reset |compositor_frame_sink_|
+ // pointer as this surface is going to be destroyed independent of if binding
+ // the new CompositorFrameSink succeeds or not.
+ compositor_frame_sink_->DetachFromClient();
+ compositor_frame_sink_ = nullptr;
- // We don't know if the next OutputSurface will support GPU rasterization.
- // Make sure to clear the flag so that we force a re-computation.
+ // We don't know if the next CompositorFrameSink will support GPU
+ // rasterization. Make sure to clear the flag so that we force a
+ // re-computation.
use_gpu_rasterization_ = false;
}
-bool LayerTreeHostImpl::InitializeRenderer(OutputSurface* output_surface) {
- DCHECK(output_surface->capabilities().delegated_rendering);
+bool LayerTreeHostImpl::InitializeRenderer(
+ CompositorFrameSink* compositor_frame_sink) {
+ DCHECK(compositor_frame_sink->capabilities().delegated_rendering);
TRACE_EVENT0("cc", "LayerTreeHostImpl::InitializeRenderer");
- ReleaseOutputSurface();
- if (!output_surface->BindToClient(this)) {
+ ReleaseCompositorFrameSink();
+ if (!compositor_frame_sink->BindToClient(this)) {
// Avoid recreating tree resources because we might not have enough
// information to do this yet (eg. we don't have a TileManager at this
// point).
@@ -2306,17 +2312,17 @@ bool LayerTreeHostImpl::InitializeRenderer(OutputSurface* output_surface) {
// When using software compositing, change to the limits specified for it.
// Since this is a one way trip, we don't need to worry about going back to
// GPU compositing.
- if (!output_surface->context_provider())
+ if (!compositor_frame_sink->context_provider())
SetMemoryPolicy(settings_.software_memory_policy);
- output_surface_ = output_surface;
+ compositor_frame_sink_ = compositor_frame_sink;
resource_provider_ = base::MakeUnique<ResourceProvider>(
- output_surface_->context_provider(), shared_bitmap_manager_,
+ compositor_frame_sink_->context_provider(), shared_bitmap_manager_,
gpu_memory_buffer_manager_,
task_runner_provider_->blocking_main_thread_task_runner(),
settings_.renderer_settings.highp_threshold_min,
settings_.renderer_settings.texture_id_allocation_chunk_size,
- output_surface_->capabilities().delegated_sync_points_required,
+ compositor_frame_sink_->capabilities().delegated_sync_points_required,
settings_.renderer_settings.use_gpu_memory_buffer_resources, false,
settings_.renderer_settings.buffer_to_texture_target_map);
@@ -2331,9 +2337,9 @@ bool LayerTreeHostImpl::InitializeRenderer(OutputSurface* output_surface) {
// already.
UpdateGpuRasterizationStatus();
- // See note in LayerTreeImpl::UpdateDrawProperties, new OutputSurface means a
- // new max texture size which affects draw properties. Also, if the draw
- // properties were up to date, layers still lost resources and we need to
+ // See note in LayerTreeImpl::UpdateDrawProperties, new CompositorFrameSink
+ // means a new max texture size which affects draw properties. Also, if the
+ // draw properties were up to date, layers still lost resources and we need to
// UpdateDrawProperties() after calling RecreateTreeResources().
active_tree_->set_needs_update_draw_properties();
if (pending_tree_)
@@ -2345,12 +2351,12 @@ bool LayerTreeHostImpl::InitializeRenderer(OutputSurface* output_surface) {
// TODO(brianderson): Don't use a hard-coded parent draw time.
base::TimeDelta parent_draw_time =
(!settings_.use_external_begin_frame_source &&
- output_surface_->capabilities().adjust_deadline_for_parent)
+ compositor_frame_sink_->capabilities().adjust_deadline_for_parent)
? BeginFrameArgs::DefaultEstimatedParentDrawTime()
: base::TimeDelta();
client_->SetEstimatedParentDrawTime(parent_draw_time);
- DCHECK_EQ(1, output_surface_->capabilities().max_frames_pending);
+ DCHECK_EQ(1, compositor_frame_sink_->capabilities().max_frames_pending);
client_->OnCanDrawStateChanged(CanDraw());
SetFullViewportDamage();
@@ -4159,10 +4165,10 @@ bool LayerTreeHostImpl::CommitToActiveTree() const {
}
void LayerTreeHostImpl::SetCompositorContextVisibility(bool is_visible) {
- if (!output_surface_)
+ if (!compositor_frame_sink_)
return;
- auto* compositor_context = output_surface_->context_provider();
+ auto* compositor_context = compositor_frame_sink_->context_provider();
if (!compositor_context)
return;
@@ -4178,10 +4184,10 @@ void LayerTreeHostImpl::SetCompositorContextVisibility(bool is_visible) {
}
void LayerTreeHostImpl::SetWorkerContextVisibility(bool is_visible) {
- if (!output_surface_)
+ if (!compositor_frame_sink_)
return;
- auto* worker_context = output_surface_->worker_context_provider();
+ auto* worker_context = compositor_frame_sink_->worker_context_provider();
if (!worker_context)
return;
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698