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

Unified Diff: android_webview/browser/hardware_renderer.cc

Issue 2729523005: HardwareRenderer should use CompositorFrameSinkSupport (Closed)
Patch Set: c Created 3 years, 10 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 | « android_webview/browser/hardware_renderer.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: android_webview/browser/hardware_renderer.cc
diff --git a/android_webview/browser/hardware_renderer.cc b/android_webview/browser/hardware_renderer.cc
index af54706875572c2971b04d2c118e21d3b0ad4ad3..b4cc30fe769a9390e190ba1a674b6aa5acc8618f 100644
--- a/android_webview/browser/hardware_renderer.cc
+++ b/android_webview/browser/hardware_renderer.cc
@@ -15,8 +15,8 @@
#include "base/memory/ptr_util.h"
#include "base/trace_event/trace_event.h"
#include "cc/output/compositor_frame.h"
+#include "cc/surfaces/compositor_frame_sink_support.h"
#include "cc/surfaces/local_surface_id_allocator.h"
-#include "cc/surfaces/surface_factory.h"
#include "cc/surfaces/surface_manager.h"
#include "ui/gfx/transform.h"
#include "ui/gl/gl_bindings.h"
@@ -30,15 +30,11 @@ HardwareRenderer::HardwareRenderer(RenderThreadManager* state)
frame_sink_id_(surfaces_->AllocateFrameSinkId()),
local_surface_id_allocator_(
base::MakeUnique<cc::LocalSurfaceIdAllocator>()),
- surface_factory_(new cc::SurfaceFactory(frame_sink_id_,
- surfaces_->GetSurfaceManager(),
- this)),
last_committed_compositor_frame_sink_id_(0u),
last_submitted_compositor_frame_sink_id_(0u) {
DCHECK(last_egl_context_);
surfaces_->GetSurfaceManager()->RegisterFrameSinkId(frame_sink_id_);
- surfaces_->GetSurfaceManager()->RegisterSurfaceFactoryClient(frame_sink_id_,
- this);
+ CreateNewCompositorFrameSinkSupport();
}
HardwareRenderer::~HardwareRenderer() {
@@ -46,9 +42,7 @@ HardwareRenderer::~HardwareRenderer() {
// resources are returned before resetting.
if (child_id_.is_valid())
DestroySurface();
- surface_factory_.reset();
- surfaces_->GetSurfaceManager()->UnregisterSurfaceFactoryClient(
- frame_sink_id_);
+ support_.reset();
surfaces_->GetSurfaceManager()->InvalidateFrameSinkId(frame_sink_id_);
// Reset draw constraints.
@@ -115,8 +109,7 @@ void HardwareRenderer::DrawGL(AwDrawGLInfo* draw_info) {
if (child_id_.is_valid())
DestroySurface();
- // This will return all the resources to the previous compositor.
- surface_factory_->Reset();
+ CreateNewCompositorFrameSinkSupport();
compositor_id_ = child_frame_->compositor_id;
last_submitted_compositor_frame_sink_id_ =
child_frame_->compositor_frame_sink_id;
@@ -135,9 +128,8 @@ void HardwareRenderer::DrawGL(AwDrawGLInfo* draw_info) {
AllocateSurface();
}
- surface_factory_->SubmitCompositorFrame(child_id_,
- std::move(*child_compositor_frame),
- cc::SurfaceFactory::DrawCallback());
+ support_->SubmitCompositorFrame(child_id_,
+ std::move(*child_compositor_frame));
}
gfx::Transform transform(gfx::Transform::kSkipInitialization);
@@ -175,23 +167,27 @@ void HardwareRenderer::DestroySurface() {
DCHECK(child_id_.is_valid());
// Submit an empty frame to force any existing resources to be returned.
- surface_factory_->SubmitCompositorFrame(child_id_, cc::CompositorFrame(),
- cc::SurfaceFactory::DrawCallback());
+ support_->SubmitCompositorFrame(child_id_, cc::CompositorFrame());
surfaces_->RemoveChildId(cc::SurfaceId(frame_sink_id_, child_id_));
- surface_factory_->EvictSurface();
+ support_->EvictFrame();
child_id_ = cc::LocalSurfaceId();
}
-void HardwareRenderer::ReturnResources(
+void HardwareRenderer::DidReceiveCompositorFrameAck() {}
+
+void HardwareRenderer::OnBeginFrame(const cc::BeginFrameArgs& args) {
+ // TODO(tansell): Hook this up.
+}
+
+void HardwareRenderer::ReclaimResources(
const cc::ReturnedResourceArray& resources) {
ReturnResourcesToCompositor(resources, compositor_id_,
last_submitted_compositor_frame_sink_id_);
}
-void HardwareRenderer::SetBeginFrameSource(
- cc::BeginFrameSource* begin_frame_source) {
- // TODO(tansell): Hook this up.
-}
+void HardwareRenderer::WillDrawSurface(
+ const cc::LocalSurfaceId& local_surface_id,
+ const gfx::Rect& damage_rect) {}
// static
ChildFrameQueue HardwareRenderer::WaitAndPruneFrameQueue(
@@ -255,4 +251,12 @@ void HardwareRenderer::ReturnResourcesToCompositor(
compositor_frame_sink_id);
}
+void HardwareRenderer::CreateNewCompositorFrameSinkSupport() {
+ support_.reset();
+ support_ = base::MakeUnique<cc::CompositorFrameSinkSupport>(
+ this, surfaces_->GetSurfaceManager(), frame_sink_id_, false /* is_root */,
+ false /* handles_frame_sink_id_invalidation */,
+ true /* needs_sync_points */);
+}
+
} // namespace android_webview
« no previous file with comments | « android_webview/browser/hardware_renderer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698