Commit a2b00295 authored by danakj's avatar danakj Committed by Commit Bot

Give Webview SynchronousLayerTreeFrameSink a ServerSharedBitmapManager

This removes its use of the ClientSharedBitmapManager in the renderer
process, freeing up one use toward removing it. This also means the
Display in the SynchronousLayerTreeFrameSink will not allocate shared
memory for RenderPass resources, as the ServerSharedBitmapManager will
use normal memory allocations.

R=boliu@chromium.org

Bug: 730660
Change-Id: Ibb05a8f1787a221351232907704412c5b682e85f
Reviewed-on: https://chromium-review.googlesource.com/826182Reviewed-by: default avatarBo <boliu@chromium.org>
Reviewed-by: default avatarAntoine Labour <piman@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#524202}
parent 95ba5b0d
include_rules = [ include_rules = [
"+components/viz/common/gpu", "+components/viz/common/gpu",
"+components/viz/service/display", "+components/viz/service/display",
"+components/viz/service/display_embedder",
"+components/viz/service/frame_sinks", "+components/viz/service/frame_sinks",
"+third_party/libphonenumber", # For phone number detection. "+third_party/libphonenumber", # For phone number detection.
] ]
...@@ -114,7 +114,6 @@ SynchronousLayerTreeFrameSink::SynchronousLayerTreeFrameSink( ...@@ -114,7 +114,6 @@ SynchronousLayerTreeFrameSink::SynchronousLayerTreeFrameSink(
scoped_refptr<viz::ContextProvider> worker_context_provider, scoped_refptr<viz::ContextProvider> worker_context_provider,
scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner, scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner,
gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
viz::SharedBitmapManager* shared_bitmap_manager,
int routing_id, int routing_id,
uint32_t layer_tree_frame_sink_id, uint32_t layer_tree_frame_sink_id,
std::unique_ptr<viz::BeginFrameSource> begin_frame_source, std::unique_ptr<viz::BeginFrameSource> begin_frame_source,
...@@ -128,7 +127,6 @@ SynchronousLayerTreeFrameSink::SynchronousLayerTreeFrameSink( ...@@ -128,7 +127,6 @@ SynchronousLayerTreeFrameSink::SynchronousLayerTreeFrameSink(
routing_id_(routing_id), routing_id_(routing_id),
layer_tree_frame_sink_id_(layer_tree_frame_sink_id), layer_tree_frame_sink_id_(layer_tree_frame_sink_id),
registry_(registry), registry_(registry),
shared_bitmap_manager_(shared_bitmap_manager),
sender_(RenderThreadImpl::current()->sync_compositor_message_filter()), sender_(RenderThreadImpl::current()->sync_compositor_message_filter()),
memory_policy_(0u), memory_policy_(0u),
frame_swap_message_queue_(frame_swap_message_queue), frame_swap_message_queue_(frame_swap_message_queue),
...@@ -205,7 +203,7 @@ bool SynchronousLayerTreeFrameSink::BindToClient( ...@@ -205,7 +203,7 @@ bool SynchronousLayerTreeFrameSink::BindToClient(
// TODO(crbug.com/692814): The Display never sends its resources out of // TODO(crbug.com/692814): The Display never sends its resources out of
// process so there is no reason for it to use a SharedBitmapManager. // process so there is no reason for it to use a SharedBitmapManager.
display_ = std::make_unique<viz::Display>( display_ = std::make_unique<viz::Display>(
shared_bitmap_manager_, nullptr /* gpu_memory_buffer_manager */, &shared_bitmap_manager_, nullptr /* gpu_memory_buffer_manager */,
software_renderer_settings, kRootFrameSinkId, std::move(output_surface), software_renderer_settings, kRootFrameSinkId, std::move(output_surface),
nullptr /* scheduler */, nullptr /* current_task_runner */); nullptr /* scheduler */, nullptr /* current_task_runner */);
display_->Initialize(&display_client_, display_->Initialize(&display_client_,
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include "cc/trees/managed_memory_policy.h" #include "cc/trees/managed_memory_policy.h"
#include "components/viz/common/quads/compositor_frame.h" #include "components/viz/common/quads/compositor_frame.h"
#include "components/viz/service/display/display_client.h" #include "components/viz/service/display/display_client.h"
#include "components/viz/service/display_embedder/server_shared_bitmap_manager.h"
#include "ipc/ipc_message.h" #include "ipc/ipc_message.h"
#include "services/viz/public/interfaces/compositing/compositor_frame_sink.mojom.h" #include "services/viz/public/interfaces/compositing/compositor_frame_sink.mojom.h"
#include "ui/gfx/transform.h" #include "ui/gfx/transform.h"
...@@ -72,7 +73,6 @@ class SynchronousLayerTreeFrameSink ...@@ -72,7 +73,6 @@ class SynchronousLayerTreeFrameSink
scoped_refptr<viz::ContextProvider> worker_context_provider, scoped_refptr<viz::ContextProvider> worker_context_provider,
scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner, scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner,
gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
viz::SharedBitmapManager* shared_bitmap_manager,
int routing_id, int routing_id,
uint32_t layer_tree_frame_sink_id, uint32_t layer_tree_frame_sink_id,
std::unique_ptr<viz::BeginFrameSource> begin_frame_source, std::unique_ptr<viz::BeginFrameSource> begin_frame_source,
...@@ -130,12 +130,16 @@ class SynchronousLayerTreeFrameSink ...@@ -130,12 +130,16 @@ class SynchronousLayerTreeFrameSink
const int routing_id_; const int routing_id_;
const uint32_t layer_tree_frame_sink_id_; const uint32_t layer_tree_frame_sink_id_;
SynchronousCompositorRegistry* const registry_; // Not owned. SynchronousCompositorRegistry* const registry_; // Not owned.
viz::SharedBitmapManager* const shared_bitmap_manager_; // Not owned.
IPC::Sender* const sender_; // Not owned. IPC::Sender* const sender_; // Not owned.
// Not owned. // Not owned.
SynchronousLayerTreeFrameSinkClient* sync_client_ = nullptr; SynchronousLayerTreeFrameSinkClient* sync_client_ = nullptr;
// Used to allocate bitmaps in the software Display.
// TODO(crbug.com/692814): The Display never sends its resources out of
// process so there is no reason for it to use a SharedBitmapManager.
viz::ServerSharedBitmapManager shared_bitmap_manager_;
// Only valid (non-NULL) during a DemandDrawSw() call. // Only valid (non-NULL) during a DemandDrawSw() call.
SkCanvas* current_sw_canvas_ = nullptr; SkCanvas* current_sw_canvas_ = nullptr;
......
...@@ -2155,9 +2155,9 @@ void RenderThreadImpl::RequestNewLayerTreeFrameSink( ...@@ -2155,9 +2155,9 @@ void RenderThreadImpl::RequestNewLayerTreeFrameSink(
: CreateExternalBeginFrameSource(routing_id); : CreateExternalBeginFrameSource(routing_id);
callback.Run(std::make_unique<SynchronousLayerTreeFrameSink>( callback.Run(std::make_unique<SynchronousLayerTreeFrameSink>(
std::move(context_provider), std::move(worker_context_provider), std::move(context_provider), std::move(worker_context_provider),
compositor_task_runner_, GetGpuMemoryBufferManager(), compositor_task_runner_, GetGpuMemoryBufferManager(), routing_id,
shared_bitmap_manager(), routing_id, g_next_layer_tree_frame_sink_id++, g_next_layer_tree_frame_sink_id++, std::move(begin_frame_source),
std::move(begin_frame_source), sync_compositor_message_filter_.get(), sync_compositor_message_filter_.get(),
std::move(frame_swap_message_queue))); std::move(frame_swap_message_queue)));
return; return;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment