Index: gpu/ipc/service/image_transport_surface_win.cc |
diff --git a/gpu/ipc/service/image_transport_surface_win.cc b/gpu/ipc/service/image_transport_surface_win.cc |
index 5fcaf7f59d3efe036931163335c1ef2761872620..236c42c38bc18fbac8f92adeda8fff848f121478 100644 |
--- a/gpu/ipc/service/image_transport_surface_win.cc |
+++ b/gpu/ipc/service/image_transport_surface_win.cc |
@@ -40,8 +40,7 @@ scoped_refptr<gl::GLSurface> ImageTransportSurface::CreateNativeSurface( |
DCHECK_NE(surface_handle, kNullSurfaceHandle); |
scoped_refptr<gl::GLSurface> surface; |
- if (gl::GetGLImplementation() == gl::kGLImplementationEGLGLES2 && |
- gl::GLSurfaceEGL::IsDirectCompositionSupported()) { |
+ if (gl::GetGLImplementation() == gl::kGLImplementationEGLGLES2) { |
std::unique_ptr<gfx::VSyncProvider> vsync_provider; |
if (IsGpuVSyncSignalSupported()) |
@@ -49,19 +48,26 @@ scoped_refptr<gl::GLSurface> ImageTransportSurface::CreateNativeSurface( |
else |
vsync_provider.reset(new gl::VSyncProviderWin(surface_handle)); |
- if (base::FeatureList::IsEnabled(switches::kDirectCompositionOverlays)) { |
- scoped_refptr<DirectCompositionSurfaceWin> egl_surface = |
- make_scoped_refptr( |
- new DirectCompositionSurfaceWin(delegate, surface_handle)); |
- if (!egl_surface->Initialize(std::move(vsync_provider))) |
- return nullptr; |
- surface = egl_surface; |
+ if (gl::GLSurfaceEGL::IsDirectCompositionSupported()) { |
+ if (base::FeatureList::IsEnabled(switches::kDirectCompositionOverlays)) { |
+ scoped_refptr<DirectCompositionSurfaceWin> egl_surface = |
+ make_scoped_refptr( |
+ new DirectCompositionSurfaceWin(delegate, surface_handle)); |
+ if (!egl_surface->Initialize(std::move(vsync_provider))) |
+ return nullptr; |
+ surface = egl_surface; |
+ } else { |
+ scoped_refptr<ChildWindowSurfaceWin> egl_surface = make_scoped_refptr( |
+ new ChildWindowSurfaceWin(delegate, surface_handle)); |
+ if (!egl_surface->Initialize(std::move(vsync_provider))) |
+ return nullptr; |
+ surface = egl_surface; |
+ } |
} else { |
- scoped_refptr<ChildWindowSurfaceWin> egl_surface = make_scoped_refptr( |
- new ChildWindowSurfaceWin(delegate, surface_handle)); |
- if (!egl_surface->Initialize(std::move(vsync_provider))) |
+ surface = gl::init::CreateNativeViewGLSurfaceEGL( |
+ surface_handle, std::move(vsync_provider)); |
+ if (!surface) |
return nullptr; |
- surface = egl_surface; |
} |
} else { |
surface = gl::init::CreateViewGLSurface(surface_handle); |