x11: Use EGL instead of GLX when drawing using GLES

When running as a X11 CM we shouldn't use the GLX winsys when the
driver doesn't support it, i.e. OpenGL ES drivers.

https://bugzilla.gnome.org/show_bug.cgi?id=771636
This commit is contained in:
Jonas Ådahl
2016-09-23 11:49:10 +08:00
parent 5d3e7d6ffd
commit ac813d5285
5 changed files with 26 additions and 11 deletions

View File

@ -1563,7 +1563,7 @@ meta_renderer_native_set_legacy_view_size (MetaRendererNative *renderer_native,
}
static const CoglWinsysVtable *
get_native_cogl_winsys_vtable (void)
get_native_cogl_winsys_vtable (CoglRenderer *cogl_renderer)
{
static gboolean vtable_inited = FALSE;
static CoglWinsysVtable vtable;

View File

@ -48,12 +48,25 @@ struct _MetaRendererX11
G_DEFINE_TYPE (MetaRendererX11, meta_renderer_x11, META_TYPE_RENDERER)
static const CoglWinsysVtable *
get_x11_cogl_winsys_vtable (void)
get_x11_cogl_winsys_vtable (CoglRenderer *renderer)
{
if (meta_is_wayland_compositor ())
return _cogl_winsys_egl_xlib_get_vtable ();
else
return _cogl_winsys_glx_get_vtable ();
switch (renderer->driver)
{
case COGL_DRIVER_GLES1:
case COGL_DRIVER_GLES2:
return _cogl_winsys_egl_xlib_get_vtable ();
case COGL_DRIVER_GL:
case COGL_DRIVER_GL3:
return _cogl_winsys_glx_get_vtable ();
case COGL_DRIVER_ANY:
case COGL_DRIVER_NOP:
case COGL_DRIVER_WEBGL:
break;
}
g_assert_not_reached ();
}
static CoglRenderer *