Index: content/browser/compositor/gpu_process_transport_factory.cc |
diff --git a/content/browser/compositor/gpu_process_transport_factory.cc b/content/browser/compositor/gpu_process_transport_factory.cc |
index 834287cf8ab72d0ae04d03b0314dad9ad8cb7da8..b239a0fc56b285c27aae24db9943e73ccbe7d528 100644 |
--- a/content/browser/compositor/gpu_process_transport_factory.cc |
+++ b/content/browser/compositor/gpu_process_transport_factory.cc |
@@ -230,13 +230,27 @@ scoped_ptr<cc::OutputSurface> GpuProcessTransportFactory::CreateOutputSurface( |
return surface.PassAs<cc::OutputSurface>(); |
} |
- scoped_ptr<BrowserCompositorOutputSurface> surface( |
- new GpuBrowserCompositorOutputSurface( |
- context_provider, |
- per_compositor_data_[compositor]->surface_id, |
- &output_surface_map_, |
- compositor->vsync_manager(), |
- CreateOverlayCandidateValidator(compositor->widget()))); |
+ scoped_ptr<BrowserCompositorOutputSurface> surface; |
+#if defined(USE_OZONE) |
+ if (ui::SurfaceFactoryOzone::GetInstance()->CanShowPrimaryPlaneAsOverlay()) { |
+ surface.reset(new GpuSurfacelessBrowserCompositorOutputSurface( |
+ context_provider, |
+ per_compositor_data_[compositor]->surface_id, |
+ &output_surface_map_, |
+ compositor->vsync_manager(), |
+ CreateOverlayCandidateValidator(compositor->widget()), |
+ GL_RGB8_OES, |
+ 0)); |
+ } |
+#endif |
+ if (!surface) |
+ surface.reset(new GpuBrowserCompositorOutputSurface( |
+ context_provider, |
+ per_compositor_data_[compositor]->surface_id, |
+ &output_surface_map_, |
+ compositor->vsync_manager(), |
+ CreateOverlayCandidateValidator(compositor->widget()))); |
+ |
if (data->reflector.get()) |
data->reflector->ReattachToOutputSurfaceFromMainThread(surface.get()); |