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