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

Unified Diff: content/browser/renderer_host/compositor_impl_android.cc

Issue 2029323004: Get rid of virtual Display::CreateScheduler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@onscreendisplayclient
Patch Set: displaytest: unusedvar Created 4 years, 6 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 b308c52d9b2e8ac868e2f64741ce35177e80be29..a2065343d99d81f758a04410dbfacf859c399e80 100644
--- a/content/browser/renderer_host/compositor_impl_android.cc
+++ b/content/browser/renderer_host/compositor_impl_android.cc
@@ -36,10 +36,12 @@
#include "cc/output/context_provider.h"
#include "cc/output/output_surface.h"
#include "cc/output/output_surface_client.h"
+#include "cc/output/texture_mailbox_deleter.h"
#include "cc/output/vulkan_in_process_context_provider.h"
#include "cc/raster/single_thread_task_graph_runner.h"
#include "cc/scheduler/begin_frame_source.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/surfaces/surface_manager.h"
@@ -152,30 +154,25 @@ void ExternalBeginFrameSource::OnVSync(base::TimeTicks frame_time,
}
// Used to override capabilities_.adjust_deadline_for_parent to false
-class OutputSurfaceWithoutParent : public cc::OutputSurface,
- public CompositorImpl::VSyncObserver {
+class OutputSurfaceWithoutParent : public cc::OutputSurface {
public:
OutputSurfaceWithoutParent(
- CompositorImpl* compositor,
scoped_refptr<ContextProviderCommandBuffer> context_provider,
const base::Callback<void(gpu::Capabilities)>&
- populate_gpu_capabilities_callback,
- std::unique_ptr<ExternalBeginFrameSource> begin_frame_source)
+ populate_gpu_capabilities_callback)
: cc::OutputSurface(std::move(context_provider), nullptr, nullptr),
- compositor_(compositor),
populate_gpu_capabilities_callback_(populate_gpu_capabilities_callback),
swap_buffers_completion_callback_(
base::Bind(&OutputSurfaceWithoutParent::OnSwapBuffersCompleted,
base::Unretained(this))),
overlay_candidate_validator_(
new display_compositor::
- CompositorOverlayCandidateValidatorAndroid()),
- begin_frame_source_(std::move(begin_frame_source)) {
+ CompositorOverlayCandidateValidatorAndroid()) {
capabilities_.adjust_deadline_for_parent = false;
capabilities_.max_frames_pending = kMaxDisplaySwapBuffers;
}
- ~OutputSurfaceWithoutParent() override { compositor_->RemoveObserver(this); }
+ ~OutputSurfaceWithoutParent() override = default;
void SwapBuffers(cc::CompositorFrame* frame) override {
GetCommandBufferProxy()->SetLatencyInfo(frame->metadata.latency_info);
@@ -198,18 +195,9 @@ class OutputSurfaceWithoutParent : public cc::OutputSurface,
populate_gpu_capabilities_callback_.Run(
context_provider_->ContextCapabilities());
- compositor_->AddObserver(this);
-
- client->SetBeginFrameSource(begin_frame_source_.get());
-
return true;
}
- void DetachFromClient() override {
- client_->SetBeginFrameSource(nullptr);
- OutputSurface::DetachFromClient();
- }
-
cc::OverlayCandidateValidator* GetOverlayCandidateValidator() const override {
return overlay_candidate_validator_.get();
}
@@ -233,12 +221,7 @@ class OutputSurfaceWithoutParent : public cc::OutputSurface,
OutputSurface::OnSwapBuffersComplete();
}
- void OnVSync(base::TimeTicks timebase, base::TimeDelta interval) override {
- client_->CommitVSyncParameters(timebase, interval);
- }
-
private:
- CompositorImpl* compositor_;
base::Callback<void(gpu::Capabilities)> populate_gpu_capabilities_callback_;
base::CancelableCallback<void(
const std::vector<ui::LatencyInfo>&,
@@ -246,17 +229,14 @@ class OutputSurfaceWithoutParent : public cc::OutputSurface,
const gpu::GpuProcessHostedCALayerTreeParamsMac* params_mac)>
swap_buffers_completion_callback_;
std::unique_ptr<cc::OverlayCandidateValidator> overlay_candidate_validator_;
- std::unique_ptr<ExternalBeginFrameSource> begin_frame_source_;
};
#if defined(ENABLE_VULKAN)
class VulkanOutputSurface : public cc::OutputSurface {
public:
- VulkanOutputSurface(
- scoped_refptr<cc::VulkanContextProvider> vulkan_context_provider,
- std::unique_ptr<ExternalBeginFrameSource> begin_frame_source)
- : OutputSurface(std::move(vulkan_context_provider)),
- begin_frame_source_(std::move(begin_frame_source)) {}
+ explicit VulkanOutputSurface(
+ scoped_refptr<cc::VulkanContextProvider> vulkan_context_provider)
+ : OutputSurface(std::move(vulkan_context_provider)) {}
~VulkanOutputSurface() override { Destroy(); }
@@ -276,7 +256,6 @@ class VulkanOutputSurface : public cc::OutputSurface {
bool BindToClient(cc::OutputSurfaceClient* client) override {
if (!OutputSurface::BindToClient(client))
return false;
- client->SetBeginFrameSource(begin_frame_source_.get());
return true;
}
@@ -301,7 +280,6 @@ class VulkanOutputSurface : public cc::OutputSurface {
private:
std::unique_ptr<gpu::VulkanSurface> surface_;
- std::unique_ptr<ExternalBeginFrameSource> begin_frame_source_;
DISALLOW_COPY_AND_ASSIGN(VulkanOutputSurface);
};
@@ -618,9 +596,8 @@ void CompositorImpl::CreateOutputSurface() {
#if defined(ENABLE_VULKAN)
std::unique_ptr<VulkanOutputSurface> vulkan_surface;
if (vulkan_context_provider) {
- vulkan_surface.reset(new VulkanOutputSurface(
- std::move(vulkan_context_provider),
- base::WrapUnique(new ExternalBeginFrameSource(this))));
+ vulkan_surface.reset(
+ new VulkanOutputSurface(std::move(vulkan_context_provider)));
if (!vulkan_surface->Initialize(window_)) {
vulkan_surface->Destroy();
vulkan_surface.reset();
@@ -709,19 +686,25 @@ void CompositorImpl::CreateOutputSurface() {
DCHECK(context_provider.get());
display_output_surface = base::WrapUnique(new OutputSurfaceWithoutParent(
- this, context_provider,
- base::Bind(&CompositorImpl::PopulateGpuCapabilities,
- base::Unretained(this)),
- base::WrapUnique(new ExternalBeginFrameSource(this))));
+ context_provider, base::Bind(&CompositorImpl::PopulateGpuCapabilities,
+ base::Unretained(this))));
}
cc::SurfaceManager* manager = GetSurfaceManager();
- display_.reset(new cc::Display(manager, HostSharedBitmapManager::current(),
- BrowserGpuMemoryBufferManager::current(),
- host_->settings().renderer_settings,
- surface_id_allocator_->id_namespace(),
- base::ThreadTaskRunnerHandle::Get().get(),
- std::move(display_output_surface)));
+ auto* task_runner = base::ThreadTaskRunnerHandle::Get().get();
+ std::unique_ptr<ExternalBeginFrameSource> begin_frame_source(
+ new ExternalBeginFrameSource(this));
+ std::unique_ptr<cc::DisplayScheduler> scheduler(new cc::DisplayScheduler(
+ begin_frame_source.get(), task_runner,
+ display_output_surface->capabilities().max_frames_pending));
+
+ display_.reset(new cc::Display(
+ manager, HostSharedBitmapManager::current(),
+ BrowserGpuMemoryBufferManager::current(),
+ host_->settings().renderer_settings,
+ surface_id_allocator_->id_namespace(), std::move(begin_frame_source),
+ 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

Powered by Google App Engine
This is Rietveld 408576698