| Index: ui/gl/init/gl_factory_ozone.cc
|
| diff --git a/ui/gl/init/gl_factory_ozone.cc b/ui/gl/init/gl_factory_ozone.cc
|
| index 7b8589e4c81c800d0a4150e0b22136cfd399e4f4..76c465da6a7bab9d796db818917c1a3158392f2b 100644
|
| --- a/ui/gl/init/gl_factory_ozone.cc
|
| +++ b/ui/gl/init/gl_factory_ozone.cc
|
| @@ -13,6 +13,13 @@
|
| #include "ui/gl/gl_implementation.h"
|
| #include "ui/gl/gl_share_group.h"
|
| #include "ui/gl/gl_surface.h"
|
| +#include "ui/gl/gl_surface_egl.h"
|
| +#include "ui/gl/gl_surface_osmesa.h"
|
| +#include "ui/gl/gl_surface_ozone.h"
|
| +#include "ui/gl/gl_surface_stub.h"
|
| +#include "ui/ozone/public/ozone_platform.h"
|
| +#include "ui/ozone/public/surface_factory_ozone.h"
|
| +#include "ui/ozone/public/surface_ozone_egl.h"
|
|
|
| namespace gl {
|
| namespace init {
|
| @@ -37,5 +44,59 @@ scoped_refptr<GLContext> CreateGLContext(GLShareGroup* share_group,
|
| }
|
| }
|
|
|
| +scoped_refptr<GLSurface> CreateViewGLSurface(gfx::AcceleratedWidget window) {
|
| + TRACE_EVENT0("gpu", "gl::init::CreateViewGLSurface");
|
| + switch (GetGLImplementation()) {
|
| + case kGLImplementationOSMesaGL:
|
| + return InitializeGLSurface(new GLSurfaceOSMesaHeadless());
|
| + case kGLImplementationEGLGLES2: {
|
| + DCHECK_NE(window, gfx::kNullAcceleratedWidget);
|
| + scoped_refptr<GLSurface> surface;
|
| + if (GLSurfaceEGL::IsEGLSurfacelessContextSupported())
|
| + surface = CreateViewGLSurfaceOzoneSurfacelessSurfaceImpl(window);
|
| + if (!surface)
|
| + surface = CreateViewGLSurfaceOzone(window);
|
| + return surface;
|
| + }
|
| + case kGLImplementationMockGL:
|
| + return InitializeGLSurface(new GLSurfaceStub());
|
| + default:
|
| + NOTREACHED();
|
| + return nullptr;
|
| + }
|
| +}
|
| +
|
| +scoped_refptr<GLSurface> CreateSurfacelessViewGLSurface(
|
| + gfx::AcceleratedWidget window) {
|
| + TRACE_EVENT0("gpu", "gl::init::CreateSurfacelessViewGLSurface");
|
| + if (GetGLImplementation() == kGLImplementationEGLGLES2 &&
|
| + window != gfx::kNullAcceleratedWidget &&
|
| + GLSurfaceEGL::IsEGLSurfacelessContextSupported()) {
|
| + return CreateViewGLSurfaceOzoneSurfaceless(window);
|
| + }
|
| + return nullptr;
|
| +}
|
| +
|
| +scoped_refptr<GLSurface> CreateOffscreenGLSurface(const gfx::Size& size) {
|
| + TRACE_EVENT0("gpu", "gl::init::CreateOffscreenGLSurface");
|
| + switch (GetGLImplementation()) {
|
| + case kGLImplementationOSMesaGL:
|
| + return InitializeGLSurface(
|
| + new GLSurfaceOSMesa(GLSurface::SURFACE_OSMESA_BGRA, size));
|
| + case kGLImplementationEGLGLES2:
|
| + if (GLSurfaceEGL::IsEGLSurfacelessContextSupported() &&
|
| + (size.width() == 0 && size.height() == 0)) {
|
| + return InitializeGLSurface(new SurfacelessEGL(size));
|
| + } else {
|
| + return InitializeGLSurface(new PbufferGLSurfaceEGL(size));
|
| + }
|
| + case kGLImplementationMockGL:
|
| + return new GLSurfaceStub;
|
| + default:
|
| + NOTREACHED();
|
| + return nullptr;
|
| + }
|
| +}
|
| +
|
| } // namespace init
|
| } // namespace gl
|
|
|