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

Unified Diff: content/browser/renderer_host/compositor_impl_android.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: content/browser/renderer_host/compositor_impl_android.cc
diff --git a/content/browser/renderer_host/compositor_impl_android.cc b/content/browser/renderer_host/compositor_impl_android.cc
index 1c21e9e2042350c21e11aaddaf839d92d36bb2eb..211aca4a63a316afb7467d079963f387bca6368c 100644
--- a/content/browser/renderer_host/compositor_impl_android.cc
+++ b/content/browser/renderer_host/compositor_impl_android.cc
@@ -41,9 +41,9 @@
#include "cc/raster/single_thread_task_graph_runner.h"
#include "cc/resources/ui_resource_manager.h"
#include "cc/scheduler/begin_frame_source.h"
+#include "cc/surfaces/direct_compositor_frame_sink.h"
#include "cc/surfaces/display.h"
#include "cc/surfaces/display_scheduler.h"
-#include "cc/surfaces/surface_display_output_surface.h"
#include "cc/surfaces/surface_id_allocator.h"
#include "cc/trees/layer_tree_host.h"
#include "cc/trees/layer_tree_settings.h"
@@ -212,16 +212,16 @@ void ExternalBeginFrameSource::OnVSync(base::TimeTicks frame_time,
}
// Used to override capabilities_.adjust_deadline_for_parent to false
-class OutputSurfaceWithoutParent : public cc::OutputSurface {
+class AndroidOutputSurface : public cc::OutputSurface {
public:
- OutputSurfaceWithoutParent(
+ AndroidOutputSurface(
scoped_refptr<ContextProviderCommandBuffer> context_provider,
const base::Callback<void(gpu::Capabilities)>&
populate_gpu_capabilities_callback)
: cc::OutputSurface(std::move(context_provider), nullptr, nullptr),
populate_gpu_capabilities_callback_(populate_gpu_capabilities_callback),
swap_buffers_completion_callback_(
- base::Bind(&OutputSurfaceWithoutParent::OnSwapBuffersCompleted,
+ base::Bind(&AndroidOutputSurface::OnSwapBuffersCompleted,
base::Unretained(this))),
overlay_candidate_validator_(
new display_compositor::
@@ -230,7 +230,7 @@ class OutputSurfaceWithoutParent : public cc::OutputSurface {
capabilities_.max_frames_pending = kMaxDisplaySwapBuffers;
}
- ~OutputSurfaceWithoutParent() override = default;
+ ~AndroidOutputSurface() override = default;
void SwapBuffers(cc::CompositorFrame frame) override {
GetCommandBufferProxy()->SetLatencyInfo(frame.metadata.latency_info);
@@ -294,11 +294,11 @@ class OutputSurfaceWithoutParent : public cc::OutputSurface {
};
#if defined(ENABLE_VULKAN)
-class VulkanOutputSurface : public cc::OutputSurface {
+class VulkanOutputSurface : public cc::CompositorFrameSink {
public:
explicit VulkanOutputSurface(
scoped_refptr<cc::VulkanContextProvider> vulkan_context_provider)
- : OutputSurface(std::move(vulkan_context_provider)) {}
+ : CompositorFrameSink(std::move(vulkan_context_provider)) {}
~VulkanOutputSurface() override { Destroy(); }
@@ -315,8 +315,8 @@ class VulkanOutputSurface : public cc::OutputSurface {
return true;
}
- bool BindToClient(cc::OutputSurfaceClient* client) override {
- if (!OutputSurface::BindToClient(client))
+ bool BindToClient(cc::CompositorFrameSinkClient* client) override {
+ if (!CompositorFrameSink::BindToClient(client))
return false;
return true;
}
@@ -336,7 +336,7 @@ class VulkanOutputSurface : public cc::OutputSurface {
void OnSwapBuffersCompleted(const std::vector<ui::LatencyInfo>& latency_info,
gfx::SwapResult result) {
RenderWidgetHostImpl::CompositorFrameDrawn(latency_info);
- OutputSurface::OnSwapBuffersComplete();
+ CompositorFrameSink::OnSwapBuffersComplete();
}
private:
@@ -396,7 +396,7 @@ CompositorImpl::CompositorImpl(CompositorClient* client,
needs_animate_(false),
pending_swapbuffers_(0U),
num_successive_context_creation_failures_(0),
- output_surface_request_pending_(false),
+ compositor_frame_sink_request_pending_(false),
needs_begin_frames_(false),
weak_factory_(this) {
ui::ContextProviderFactory::GetInstance()
@@ -472,7 +472,7 @@ void CompositorImpl::SetSurface(jobject surface) {
window_ = window;
ANativeWindow_acquire(window);
surface_handle_ = tracker->AddSurfaceForNativeWidget(window);
- // Register first, SetVisible() might create an OutputSurface.
+ // Register first, SetVisible() might create an CompositorFrameSink.
RegisterViewSurface(surface_handle_, j_surface);
SetVisible(true);
ANativeWindow_release(window);
@@ -529,13 +529,13 @@ void CompositorImpl::SetVisible(bool visible) {
display_->ForceImmediateDrawAndSwapIfPossible();
host_->SetVisible(false);
- host_->ReleaseOutputSurface();
+ host_->ReleaseCompositorFrameSink();
pending_swapbuffers_ = 0;
display_.reset();
} else {
host_->SetVisible(true);
- if (output_surface_request_pending_)
- HandlePendingOutputSurfaceRequest();
+ if (compositor_frame_sink_request_pending_)
+ HandlePendingCompositorFrameSinkRequest();
}
}
@@ -578,28 +578,28 @@ void CompositorImpl::UpdateLayerTreeHost() {
}
}
-void CompositorImpl::RequestNewOutputSurface() {
- DCHECK(!output_surface_request_pending_)
+void CompositorImpl::RequestNewCompositorFrameSink() {
+ DCHECK(!compositor_frame_sink_request_pending_)
<< "Output Surface Request is already pending?";
- output_surface_request_pending_ = true;
- HandlePendingOutputSurfaceRequest();
+ compositor_frame_sink_request_pending_ = true;
+ HandlePendingCompositorFrameSinkRequest();
}
-void CompositorImpl::DidInitializeOutputSurface() {
+void CompositorImpl::DidInitializeCompositorFrameSink() {
num_successive_context_creation_failures_ = 0;
- output_surface_request_pending_ = false;
+ compositor_frame_sink_request_pending_ = false;
}
-void CompositorImpl::DidFailToInitializeOutputSurface() {
- LOG(ERROR) << "Failed to init OutputSurface for compositor.";
+void CompositorImpl::DidFailToInitializeCompositorFrameSink() {
+ LOG(ERROR) << "Failed to init CompositorFrameSink for compositor.";
LOG_IF(FATAL, ++num_successive_context_creation_failures_ >= 2)
<< "Too many context creation failures. Giving up... ";
- HandlePendingOutputSurfaceRequest();
+ HandlePendingCompositorFrameSinkRequest();
}
-void CompositorImpl::HandlePendingOutputSurfaceRequest() {
- DCHECK(output_surface_request_pending_);
+void CompositorImpl::HandlePendingCompositorFrameSinkRequest() {
+ DCHECK(compositor_frame_sink_request_pending_);
// We might have been made invisible now.
if (!host_->IsVisible())
@@ -622,25 +622,18 @@ void CompositorImpl::CreateVulkanOutputSurface() {
switches::kEnableVulkan))
return;
- std::unique_ptr<cc::OutputSurface> display_output_surface;
scoped_refptr<cc::VulkanContextProvider> vulkan_context_provider =
ui::ContextProviderFactory::GetInstance()
->GetSharedVulkanContextProvider();
- if (vulkan_context_provider) {
- std::unique_ptr<VulkanOutputSurface> vulkan_surface(
- new VulkanOutputSurface(std::move(vulkan_context_provider)));
- if (!vulkan_surface->Initialize(window_)) {
- vulkan_surface->Destroy();
- vulkan_surface.reset();
- } else {
- display_output_surface = std::move(vulkan_surface);
- }
- }
+ if (!vulkan_context_provider)
+ return;
- if (!display_output_surface)
+ auto vulkan_surface =
+ base::MakeUnique<VulkanOutputSurface>(vulkan_context_provider);
+ if (!vulkan_surface->Initialize(window_))
return;
- InitializeDisplay(std::move(display_output_surface),
+ InitializeDisplay(std::move(vulkan_surface),
std::move(vulkan_context_provider), nullptr);
}
#endif
@@ -649,9 +642,10 @@ void CompositorImpl::OnGpuChannelEstablished(
scoped_refptr<gpu::GpuChannelHost> gpu_channel_host,
ui::ContextProviderFactory::GpuChannelHostResult result) {
// We might end up queing multiple GpuChannel requests for the same
- // OutputSurface request as the visibility of the compositor changes, so the
- // OutputSurface request could have been handled already.
- if (!output_surface_request_pending_)
+ // CompositorFrameSink request as the visibility of the compositor changes, so
+ // the
enne (OOO) 2016/09/14 00:35:45 @_@
+ // CompositorFrameSink request could have been handled already.
+ if (!compositor_frame_sink_request_pending_)
return;
switch (result) {
@@ -683,11 +677,10 @@ void CompositorImpl::OnGpuChannelEstablished(
context_provider_command_buffer =
static_cast<ContextProviderCommandBuffer*>(
context_provider.get());
- std::unique_ptr<cc::OutputSurface> display_output_surface(
- new OutputSurfaceWithoutParent(
- context_provider_command_buffer,
- base::Bind(&CompositorImpl::PopulateGpuCapabilities,
- base::Unretained(this))));
+ auto display_output_surface = base::MakeUnique<AndroidOutputSurface>(
+ context_provider_command_buffer,
+ base::Bind(&CompositorImpl::PopulateGpuCapabilities,
+ base::Unretained(this)));
InitializeDisplay(std::move(display_output_surface), nullptr,
std::move(context_provider));
break;
@@ -698,7 +691,7 @@ void CompositorImpl::InitializeDisplay(
std::unique_ptr<cc::OutputSurface> display_output_surface,
scoped_refptr<cc::VulkanContextProvider> vulkan_context_provider,
scoped_refptr<cc::ContextProvider> context_provider) {
- DCHECK(output_surface_request_pending_);
+ DCHECK(compositor_frame_sink_request_pending_);
pending_swapbuffers_ = 0;
@@ -718,17 +711,17 @@ void CompositorImpl::InitializeDisplay(
std::move(display_output_surface), std::move(scheduler),
base::MakeUnique<cc::TextureMailboxDeleter>(task_runner)));
- std::unique_ptr<cc::SurfaceDisplayOutputSurface> delegated_output_surface(
- vulkan_context_provider ? new cc::SurfaceDisplayOutputSurface(
+ auto compositor_frame_sink =
+ vulkan_context_provider ? base::MakeUnique<cc::DirectCompositorFrameSink>(
manager, surface_id_allocator_.get(),
display_.get(), vulkan_context_provider)
- : new cc::SurfaceDisplayOutputSurface(
+ : base::MakeUnique<cc::DirectCompositorFrameSink>(
manager, surface_id_allocator_.get(),
- display_.get(), context_provider, nullptr));
+ display_.get(), context_provider, nullptr);
display_->SetVisible(true);
display_->Resize(size_);
- host_->SetOutputSurface(std::move(delegated_output_surface));
+ host_->SetCompositorFrameSink(std::move(compositor_frame_sink));
}
void CompositorImpl::PopulateGpuCapabilities(
@@ -774,7 +767,7 @@ void CompositorImpl::DidCompleteSwapBuffers() {
void CompositorImpl::DidAbortSwapBuffers() {
TRACE_EVENT0("compositor", "CompositorImpl::DidAbortSwapBuffers");
// This really gets called only once from
- // SingleThreadProxy::DidLoseOutputSurfaceOnImplThread() when the
+ // SingleThreadProxy::DidLoseCompositorFrameSinkOnImplThread() when the
// context was lost.
if (host_->IsVisible())
host_->SetNeedsCommit();

Powered by Google App Engine
This is Rietveld 408576698