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 fe90a7c50fcdb613433eca2ee65401bf75b6e231..0df436a79421b0d7fab664f0e4975556a1a0b016 100644 |
--- a/content/browser/compositor/gpu_process_transport_factory.cc |
+++ b/content/browser/compositor/gpu_process_transport_factory.cc |
@@ -18,6 +18,7 @@ |
#include "content/browser/compositor/browser_compositor_output_surface.h" |
#include "content/browser/compositor/browser_compositor_output_surface_proxy.h" |
#include "content/browser/compositor/gpu_browser_compositor_output_surface.h" |
+#include "content/browser/compositor/gpu_surfaceless_browser_compositor_output_surface.h" |
#include "content/browser/compositor/onscreen_display_client.h" |
#include "content/browser/compositor/reflector_impl.h" |
#include "content/browser/compositor/software_browser_compositor_output_surface.h" |
@@ -232,13 +233,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()); |