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

Unified Diff: ui/gl/gl_surface_egl.cc

Issue 2491993002: ui/gl: Initialize the ANGLE Platform on all configurations (Closed)
Patch Set: Rebase on top of the renaming of ClearGLBindings Created 4 years 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/init/gl_initializer_android.cc » ('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 54ffb7ddacd95cf1ee0bf904cc5439994b0bec45..56032ca958d5140d8845a549c95f0ffa1e2e1ae9 100644
--- a/ui/gl/gl_surface_egl.cc
+++ b/ui/gl/gl_surface_egl.cc
@@ -12,6 +12,7 @@
#include <vector>
#include "base/command_line.h"
+#include "base/lazy_instance.h"
#include "base/logging.h"
#include "base/macros.h"
#include "base/message_loop/message_loop.h"
@@ -21,6 +22,7 @@
#include "base/trace_event/trace_event.h"
#include "build/build_config.h"
#include "ui/gfx/geometry/rect.h"
+#include "ui/gl/angle_platform_impl.h"
#include "ui/gl/egl_util.h"
#include "ui/gl/gl_context.h"
#include "ui/gl/gl_context_egl.h"
@@ -134,6 +136,10 @@ bool g_egl_surfaceless_context_supported = false;
bool g_egl_surface_orientation_supported = false;
bool g_use_direct_composition = false;
+base::LazyInstance<ANGLEPlatformImpl> g_angle_platform_impl =
+ LAZY_INSTANCE_INITIALIZER;
+ANGLEPlatformShutdownFunc g_angle_platform_shutdown = nullptr;
+
EGLDisplay GetPlatformANGLEDisplay(EGLNativeDisplayType native_display,
EGLenum platform_type,
bool warpDevice) {
@@ -533,7 +539,11 @@ bool GLSurfaceEGL::InitializeOneOff(EGLNativeDisplayType native_display) {
}
// static
-void GLSurfaceEGL::ResetForTesting() {
+void GLSurfaceEGL::ShutdownOneOff() {
+ if (g_angle_platform_shutdown) {
+ g_angle_platform_shutdown();
+ }
+
if (g_display != EGL_NO_DISPLAY)
eglTerminate(g_display);
g_display = EGL_NO_DISPLAY;
@@ -607,6 +617,17 @@ EGLDisplay GLSurfaceEGL::InitializeDisplay(
g_native_display = native_display;
+ // Init ANGLE platform here, before we call GetPlatformDisplay().
+ ANGLEPlatformInitializeFunc angle_platform_init =
+ reinterpret_cast<ANGLEPlatformInitializeFunc>(
+ eglGetProcAddress("ANGLEPlatformInitialize"));
+ if (angle_platform_init) {
+ angle_platform_init(&g_angle_platform_impl.Get());
+
+ g_angle_platform_shutdown = reinterpret_cast<ANGLEPlatformShutdownFunc>(
+ eglGetProcAddress("ANGLEPlatformShutdown"));
+ }
+
// If EGL_EXT_client_extensions not supported this call to eglQueryString
// will return NULL.
const char* client_extensions =
« no previous file with comments | « ui/gl/gl_surface_egl.h ('k') | ui/gl/init/gl_initializer_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698