Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(747)

Unified Diff: ui/gl/gl_surface_egl.cc

Issue 196403008: gl: Move platform-specific EGL code into separate files (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase again, ARGH Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gl/gl_surface_egl.h ('k') | ui/gl/gl_surface_osmesa.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gl/gl_surface_egl.cc
diff --git a/ui/gl/gl_surface_egl.cc b/ui/gl/gl_surface_egl.cc
index 7b2a9d1976cb8f3d93f671c4d2d3b8321a9551e6..e8e301a957f6dd096a222b27a21f651b594d2612 100644
--- a/ui/gl/gl_surface_egl.cc
+++ b/ui/gl/gl_surface_egl.cc
@@ -13,7 +13,6 @@
#include "base/android/sys_utils.h"
#endif
-#include "base/command_line.h"
#include "base/debug/trace_event.h"
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
@@ -38,11 +37,6 @@ extern "C" {
#include "ui/gfx/ozone/surface_factory_ozone.h"
#endif
-// From ANGLE's egl/eglext.h.
-#if !defined(EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE)
-#define EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE \
- reinterpret_cast<EGLNativeDisplayType>(-2)
-#endif
#if !defined(EGL_FIXED_SIZE_ANGLE)
#define EGL_FIXED_SIZE_ANGLE 0x3201
#endif
@@ -127,25 +121,7 @@ bool GLSurfaceEGL::InitializeOneOff() {
if (initialized)
return true;
-#if defined(USE_X11)
- g_native_display = base::MessagePumpForUI::GetDefaultXDisplay();
-#elif defined(OS_WIN)
- g_native_display = EGL_DEFAULT_DISPLAY;
- if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableD3D11)) {
- g_native_display = EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE;
- }
-#elif defined(USE_OZONE)
- gfx::SurfaceFactoryOzone* surface_factory =
- gfx::SurfaceFactoryOzone::GetInstance();
- if (surface_factory->InitializeHardware() !=
- gfx::SurfaceFactoryOzone::INITIALIZED) {
- LOG(ERROR) << "OZONE failed to initialize hardware";
- return false;
- }
- g_native_display = surface_factory->GetNativeDisplay();
-#else
- g_native_display = EGL_DEFAULT_DISPLAY;
-#endif
+ g_native_display = GetPlatformDefaultEGLNativeDisplay();
g_display = eglGetDisplay(g_native_display);
if (!g_display) {
LOG(ERROR) << "eglGetDisplay failed with error " << GetLastEGLErrorString();
@@ -191,7 +167,8 @@ bool GLSurfaceEGL::InitializeOneOff() {
#if defined(USE_OZONE)
const EGLint* config_attribs =
- surface_factory->GetEGLSurfaceProperties(choose_attributes);
+ SurfaceFactoryOzone::GetInstance()->GetEGLSurfaceProperties(
+ choose_attributes);
#else
const EGLint* config_attribs = choose_attributes;
#endif
@@ -327,6 +304,10 @@ bool GLSurfaceEGL::IsCreateContextRobustnessSupported() {
return g_egl_create_context_robustness_supported;
}
+bool GLSurfaceEGL::IsEGLSurfacelessContextSupported() {
+ return g_egl_surfaceless_context_supported;
+}
+
GLSurfaceEGL::~GLSurfaceEGL() {}
NativeViewGLSurfaceEGL::NativeViewGLSurfaceEGL(EGLNativeWindowType window)
@@ -755,114 +736,4 @@ void* SurfacelessEGL::GetShareHandle() {
SurfacelessEGL::~SurfacelessEGL() {
}
-#if defined(ANDROID) || defined(USE_OZONE)
-
-// A thin subclass of |GLSurfaceOSMesa| that can be used in place
-// of a native hardware-provided surface when a native surface
-// provider is not available.
-class GLSurfaceOSMesaHeadless : public GLSurfaceOSMesa {
- public:
- explicit GLSurfaceOSMesaHeadless();
-
- virtual bool IsOffscreen() OVERRIDE;
- virtual bool SwapBuffers() OVERRIDE;
-
- protected:
- virtual ~GLSurfaceOSMesaHeadless();
-
- private:
-
- DISALLOW_COPY_AND_ASSIGN(GLSurfaceOSMesaHeadless);
-};
-
-bool GLSurfaceOSMesaHeadless::IsOffscreen() { return false; }
-
-bool GLSurfaceOSMesaHeadless::SwapBuffers() { return true; }
-
-GLSurfaceOSMesaHeadless::GLSurfaceOSMesaHeadless()
- : GLSurfaceOSMesa(OSMESA_BGRA, gfx::Size(1, 1)) {}
-
-GLSurfaceOSMesaHeadless::~GLSurfaceOSMesaHeadless() { Destroy(); }
-
-// static
-bool GLSurface::InitializeOneOffInternal() {
- switch (GetGLImplementation()) {
- case kGLImplementationEGLGLES2:
- if (!GLSurfaceEGL::InitializeOneOff()) {
- LOG(ERROR) << "GLSurfaceEGL::InitializeOneOff failed.";
- return false;
- }
- default:
- break;
- }
- return true;
-}
-
-// static
-scoped_refptr<GLSurface>
-GLSurface::CreateViewGLSurface(gfx::AcceleratedWidget window) {
-
- if (GetGLImplementation() == kGLImplementationOSMesaGL) {
- scoped_refptr<GLSurface> surface(new GLSurfaceOSMesaHeadless());
- if (!surface->Initialize())
- return NULL;
- return surface;
- }
- DCHECK(GetGLImplementation() == kGLImplementationEGLGLES2);
- if (window != kNullAcceleratedWidget) {
- EGLNativeWindowType egl_window;
- scoped_refptr<NativeViewGLSurfaceEGL> surface;
- scoped_ptr<VSyncProvider> sync_provider;
-#if defined(USE_OZONE)
- egl_window =
- gfx::SurfaceFactoryOzone::GetInstance()->RealizeAcceleratedWidget(
- window);
- sync_provider =
- gfx::SurfaceFactoryOzone::GetInstance()->CreateVSyncProvider(
- egl_window);
-#else
- egl_window = window;
-#endif
- surface = new NativeViewGLSurfaceEGL(egl_window);
- if(surface->Initialize(sync_provider.Pass()))
- return surface;
- } else {
- scoped_refptr<GLSurface> surface = new GLSurfaceStub();
- if (surface->Initialize())
- return surface;
- }
- return NULL;
-}
-
-// static
-scoped_refptr<GLSurface>
-GLSurface::CreateOffscreenGLSurface(const gfx::Size& size) {
- switch (GetGLImplementation()) {
- case kGLImplementationOSMesaGL: {
- scoped_refptr<GLSurface> surface(new GLSurfaceOSMesa(1, size));
- if (!surface->Initialize())
- return NULL;
-
- return surface;
- }
- case kGLImplementationEGLGLES2: {
- scoped_refptr<GLSurface> surface;
- if (g_egl_surfaceless_context_supported &&
- (size.width() == 0 && size.height() == 0)) {
- surface = new SurfacelessEGL(size);
- } else
- surface = new PbufferGLSurfaceEGL(size);
-
- if (!surface->Initialize())
- return NULL;
- return surface;
- }
- default:
- NOTREACHED();
- return NULL;
- }
-}
-
-#endif
-
} // namespace gfx
« no previous file with comments | « ui/gl/gl_surface_egl.h ('k') | ui/gl/gl_surface_osmesa.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698