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

Unified Diff: blimp/client/app/compositor/browser_compositor.cc

Issue 2337913003: Fork cc::OutputSurface into cc::CompositorFrameSink. (Closed)
Patch Set: cfsfork: rebase 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
Index: blimp/client/app/compositor/browser_compositor.cc
diff --git a/blimp/client/app/compositor/browser_compositor.cc b/blimp/client/app/compositor/browser_compositor.cc
index 81e278eb340cf6a64b55f072c62ca3d3497b5538..d6134624f53d5c545108a674c9b844b994629318 100644
--- a/blimp/client/app/compositor/browser_compositor.cc
+++ b/blimp/client/app/compositor/browser_compositor.cc
@@ -12,10 +12,11 @@
#include "cc/animation/animation_host.h"
#include "cc/layers/layer.h"
#include "cc/output/compositor_frame.h"
+#include "cc/output/output_surface.h"
#include "cc/output/texture_mailbox_deleter.h"
#include "cc/raster/single_thread_task_graph_runner.h"
+#include "cc/surfaces/direct_compositor_frame_sink.h"
#include "cc/surfaces/display.h"
-#include "cc/surfaces/surface_display_output_surface.h"
#include "cc/surfaces/surface_id_allocator.h"
#include "cc/surfaces/surface_manager.h"
#include "cc/trees/layer_tree_host.h"
@@ -73,7 +74,7 @@ BrowserCompositor::BrowserCompositor(
surface_id_allocator_(base::MakeUnique<cc::SurfaceIdAllocator>(
compositor_dependencies->AllocateSurfaceClientId())),
widget_(gfx::kNullAcceleratedWidget),
- output_surface_request_pending_(false),
+ compositor_frame_sink_request_pending_(false),
root_layer_(cc::Layer::Create()) {
compositor_dependencies_->GetSurfaceManager()->RegisterSurfaceClientId(
surface_id_allocator_->client_id());
@@ -124,7 +125,7 @@ void BrowserCompositor::SetAcceleratedWidget(gfx::AcceleratedWidget widget) {
// We are always visible if we have a widget.
DCHECK(host_->IsVisible());
host_->SetVisible(false);
- host_->ReleaseOutputSurface();
+ host_->ReleaseCompositorFrameSink();
display_.reset();
}
@@ -133,25 +134,25 @@ void BrowserCompositor::SetAcceleratedWidget(gfx::AcceleratedWidget widget) {
if (widget != gfx::kNullAcceleratedWidget) {
widget_ = widget;
host_->SetVisible(true);
- if (output_surface_request_pending_) {
- HandlePendingOutputSurfaceRequest();
+ if (compositor_frame_sink_request_pending_) {
+ HandlePendingCompositorFrameSinkRequest();
}
}
}
-void BrowserCompositor::RequestNewOutputSurface() {
- DCHECK(!output_surface_request_pending_)
+void BrowserCompositor::RequestNewCompositorFrameSink() {
+ DCHECK(!compositor_frame_sink_request_pending_)
<< "We already have a pending request?";
- output_surface_request_pending_ = true;
- HandlePendingOutputSurfaceRequest();
+ compositor_frame_sink_request_pending_ = true;
+ HandlePendingCompositorFrameSinkRequest();
}
-void BrowserCompositor::DidInitializeOutputSurface() {
- output_surface_request_pending_ = false;
+void BrowserCompositor::DidInitializeCompositorFrameSink() {
+ compositor_frame_sink_request_pending_ = false;
}
-void BrowserCompositor::DidFailToInitializeOutputSurface() {
- NOTREACHED() << "Can't fail to initialize the OutputSurface here";
+void BrowserCompositor::DidFailToInitializeCompositorFrameSink() {
+ NOTREACHED() << "Can't fail to initialize the CompositorFrameSink here";
}
void BrowserCompositor::DidCompleteSwapBuffers() {
@@ -160,8 +161,8 @@ void BrowserCompositor::DidCompleteSwapBuffers() {
}
}
-void BrowserCompositor::HandlePendingOutputSurfaceRequest() {
- DCHECK(output_surface_request_pending_);
+void BrowserCompositor::HandlePendingCompositorFrameSinkRequest() {
+ DCHECK(compositor_frame_sink_request_pending_);
// Can't handle the request right now since we don't have a widget.
if (!host_->IsVisible())
@@ -175,7 +176,7 @@ void BrowserCompositor::HandlePendingOutputSurfaceRequest() {
scoped_refptr<cc::ContextProvider> context_provider =
BlimpContextProvider::Create(widget_, gpu_memory_buffer_manager);
- std::unique_ptr<cc::OutputSurface> display_output_surface =
+ std::unique_ptr<cc::OutputSurface> output_surface =
base::MakeUnique<DisplayOutputSurface>(context_provider);
auto* task_runner = base::ThreadTaskRunnerHandle::Get().get();
@@ -184,24 +185,23 @@ void BrowserCompositor::HandlePendingOutputSurfaceRequest() {
base::MakeUnique<cc::DelayBasedTimeSource>(task_runner)));
std::unique_ptr<cc::DisplayScheduler> scheduler(new cc::DisplayScheduler(
begin_frame_source.get(), task_runner,
- display_output_surface->capabilities().max_frames_pending));
+ output_surface->capabilities().max_frames_pending));
display_ = base::MakeUnique<cc::Display>(
nullptr /*shared_bitmap_manager*/, gpu_memory_buffer_manager,
host_->GetSettings().renderer_settings, std::move(begin_frame_source),
- std::move(display_output_surface), std::move(scheduler),
+ std::move(output_surface), std::move(scheduler),
base::MakeUnique<cc::TextureMailboxDeleter>(task_runner));
display_->SetVisible(true);
display_->Resize(viewport_size_in_px_);
- // The Browser compositor and display share the same context provider.
- std::unique_ptr<cc::OutputSurface> delegated_output_surface =
- base::MakeUnique<cc::SurfaceDisplayOutputSurface>(
- compositor_dependencies_->GetSurfaceManager(),
- surface_id_allocator_.get(), display_.get(), context_provider,
- nullptr);
+ // The browser's layer tree and display compositors share the same context
+ // provider.
+ auto compositor_frame_sink = base::MakeUnique<cc::DirectCompositorFrameSink>(
+ compositor_dependencies_->GetSurfaceManager(),
+ surface_id_allocator_.get(), display_.get(), context_provider, nullptr);
- host_->SetOutputSurface(std::move(delegated_output_surface));
+ host_->SetCompositorFrameSink(std::move(compositor_frame_sink));
}
} // namespace client

Powered by Google App Engine
This is Rietveld 408576698