Commit 9a9327ca authored by jbauman's avatar jbauman Committed by Commit bot

Use GpuBrowserCompositorOutputSurface with Surfaces.

This is needed for vsync message filtering and latencyinfo

BUG=

Review URL: https://codereview.chromium.org/511423002

Cr-Commit-Position: refs/heads/master@{#293313}
parent fd3e9370
......@@ -181,23 +181,25 @@ scoped_ptr<cc::OutputSurface> GpuProcessTransportFactory::CreateOutputSurface(
// associated with this context, then return a SurfaceDisplayOutputSurface
// set up to draw to the display's surface.
cc::SurfaceManager* manager = surface_manager_.get();
scoped_ptr<cc::OutputSurface> software_surface;
scoped_ptr<cc::OutputSurface> display_surface;
if (!context_provider.get()) {
software_surface =
display_surface =
make_scoped_ptr(new SoftwareBrowserCompositorOutputSurface(
output_surface_proxy_,
CreateSoftwareOutputDevice(compositor),
per_compositor_data_[compositor]->surface_id,
&output_surface_map_,
compositor->vsync_manager()));
} else {
display_surface = make_scoped_ptr(new GpuBrowserCompositorOutputSurface(
context_provider,
per_compositor_data_[compositor]->surface_id,
&output_surface_map_,
compositor->vsync_manager(),
CreateOverlayCandidateValidator(compositor->widget())));
}
scoped_ptr<OnscreenDisplayClient> display_client(
new OnscreenDisplayClient(context_provider,
software_surface.Pass(),
manager,
compositor->task_runner()));
// TODO(jamesr): Need to set up filtering for the
// GpuHostMsg_UpdateVSyncParameters message.
scoped_ptr<OnscreenDisplayClient> display_client(new OnscreenDisplayClient(
display_surface.Pass(), manager, compositor->task_runner()));
scoped_refptr<cc::ContextProvider> offscreen_context_provider;
if (context_provider.get()) {
......
......@@ -13,12 +13,10 @@
namespace content {
OnscreenDisplayClient::OnscreenDisplayClient(
const scoped_refptr<cc::ContextProvider>& onscreen_context_provider,
scoped_ptr<cc::OutputSurface> software_surface,
scoped_ptr<cc::OutputSurface> output_surface,
cc::SurfaceManager* manager,
scoped_refptr<base::SingleThreadTaskRunner> task_runner)
: onscreen_context_provider_(onscreen_context_provider),
software_surface_(software_surface.Pass()),
: output_surface_(output_surface.Pass()),
display_(
new cc::Display(this, manager, HostSharedBitmapManager::current())),
task_runner_(task_runner),
......@@ -30,10 +28,8 @@ OnscreenDisplayClient::~OnscreenDisplayClient() {
}
scoped_ptr<cc::OutputSurface> OnscreenDisplayClient::CreateOutputSurface() {
if (!onscreen_context_provider_.get())
return software_surface_.Pass();
return make_scoped_ptr(new cc::OutputSurface(onscreen_context_provider_))
.Pass();
DCHECK(output_surface_.get());
return output_surface_.Pass();
}
void OnscreenDisplayClient::DisplayDamaged() {
......
......@@ -24,8 +24,7 @@ namespace content {
class OnscreenDisplayClient : cc::DisplayClient {
public:
OnscreenDisplayClient(
const scoped_refptr<cc::ContextProvider>& onscreen_context_provider,
scoped_ptr<cc::OutputSurface> software_surface,
scoped_ptr<cc::OutputSurface> output_surface,
cc::SurfaceManager* manager,
scoped_refptr<base::SingleThreadTaskRunner> task_runner);
virtual ~OnscreenDisplayClient();
......@@ -39,8 +38,7 @@ class OnscreenDisplayClient : cc::DisplayClient {
private:
void Draw();
scoped_refptr<cc::ContextProvider> onscreen_context_provider_;
scoped_ptr<cc::OutputSurface> software_surface_;
scoped_ptr<cc::OutputSurface> output_surface_;
scoped_ptr<cc::Display> display_;
scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
bool scheduled_draw_;
......
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