summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdk/wayland/gdkdisplay-wayland.h1
-rw-r--r--gdk/wayland/gdkglcontext-wayland.c20
-rw-r--r--gdk/wayland/gdkprivate-wayland.h3
-rw-r--r--gdk/wayland/gdksurface-wayland.c37
-rw-r--r--gdk/x11/gdkdisplay-x11.h1
-rw-r--r--gdk/x11/gdkglcontext-egl.c25
6 files changed, 23 insertions, 64 deletions
diff --git a/gdk/wayland/gdkdisplay-wayland.h b/gdk/wayland/gdkdisplay-wayland.h
index d431405570..66e8020b28 100644
--- a/gdk/wayland/gdkdisplay-wayland.h
+++ b/gdk/wayland/gdkdisplay-wayland.h
@@ -159,7 +159,6 @@ struct _GdkWaylandDisplay
guint have_egl_buffer_age : 1;
guint have_egl_swap_buffers_with_damage : 1;
- guint have_egl_surfaceless_context : 1;
};
struct _GdkWaylandDisplayClass
diff --git a/gdk/wayland/gdkglcontext-wayland.c b/gdk/wayland/gdkglcontext-wayland.c
index 2e83d501f1..de60ebc820 100644
--- a/gdk/wayland/gdkglcontext-wayland.c
+++ b/gdk/wayland/gdkglcontext-wayland.c
@@ -469,6 +469,15 @@ gdk_wayland_display_init_gl (GdkDisplay *display,
return NULL;
}
+ if (!epoxy_has_egl_extension (dpy, "EGL_KHR_surfaceless_context"))
+ {
+ eglTerminate (dpy);
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_UNSUPPORTED_PROFILE,
+ _("Surfaceless contexts are not supported on this EGL implementation"));
+ return NULL;
+ }
+
display_wayland->egl_config = get_eglconfig (dpy);
if (!display_wayland->egl_config)
{
@@ -489,9 +498,6 @@ gdk_wayland_display_init_gl (GdkDisplay *display,
display_wayland->have_egl_swap_buffers_with_damage =
epoxy_has_egl_extension (dpy, "EGL_EXT_swap_buffers_with_damage");
- display_wayland->have_egl_surfaceless_context =
- epoxy_has_egl_extension (dpy, "EGL_KHR_surfaceless_context");
-
GDK_DISPLAY_NOTE (display, OPENGL,
g_message ("EGL API version %d.%d found\n"
" - Vendor: %s\n"
@@ -572,13 +578,7 @@ gdk_wayland_display_make_gl_context_current (GdkDisplay *display,
if (gdk_draw_context_is_in_frame (GDK_DRAW_CONTEXT (context)))
egl_surface = gdk_wayland_surface_get_egl_surface (surface);
else
- {
- if (display_wayland->have_egl_surfaceless_context)
- egl_surface = EGL_NO_SURFACE;
- else
- egl_surface = gdk_wayland_surface_get_dummy_egl_surface (surface,
- display_wayland->egl_config);
- }
+ egl_surface = EGL_NO_SURFACE;
if (!eglMakeCurrent (display_wayland->egl_display, egl_surface,
egl_surface, context_wayland->egl_context))
diff --git a/gdk/wayland/gdkprivate-wayland.h b/gdk/wayland/gdkprivate-wayland.h
index 2177cef90d..09f41606f3 100644
--- a/gdk/wayland/gdkprivate-wayland.h
+++ b/gdk/wayland/gdkprivate-wayland.h
@@ -182,9 +182,6 @@ cairo_surface_t * _gdk_wayland_display_create_shm_surface (GdkWaylandDisplay *di
struct wl_buffer *_gdk_wayland_shm_surface_get_wl_buffer (cairo_surface_t *surface);
gboolean _gdk_wayland_is_shm_surface (cairo_surface_t *surface);
-EGLSurface gdk_wayland_surface_get_dummy_egl_surface (GdkSurface *surface,
- EGLConfig config);
-
struct gtk_surface1 * gdk_wayland_surface_get_gtk_surface (GdkSurface *surface);
void gdk_wayland_seat_set_global_cursor (GdkSeat *seat,
diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c
index 124b810394..404b10b226 100644
--- a/gdk/wayland/gdksurface-wayland.c
+++ b/gdk/wayland/gdksurface-wayland.c
@@ -103,7 +103,6 @@ struct _GdkWaylandSurface
struct gtk_surface1 *gtk_surface;
struct wl_egl_window *egl_window;
- struct wl_egl_window *dummy_egl_window;
struct zxdg_exported_v1 *xdg_exported;
struct org_kde_kwin_server_decoration *server_decoration;
} display_server;
@@ -111,7 +110,6 @@ struct _GdkWaylandSurface
struct wl_event_queue *event_queue;
EGLSurface egl_surface;
- EGLSurface dummy_egl_surface;
uint32_t reposition_token;
uint32_t received_reposition_token;
@@ -2901,18 +2899,6 @@ gdk_wayland_surface_hide_surface (GdkSurface *surface)
if (impl->display_server.wl_surface)
{
- if (impl->dummy_egl_surface)
- {
- eglDestroySurface (display_wayland->egl_display, impl->dummy_egl_surface);
- impl->dummy_egl_surface = NULL;
- }
-
- if (impl->display_server.dummy_egl_window)
- {
- wl_egl_window_destroy (impl->display_server.dummy_egl_window);
- impl->display_server.dummy_egl_window = NULL;
- }
-
if (impl->egl_surface)
{
eglDestroySurface (display_wayland->egl_display, impl->egl_surface);
@@ -4325,29 +4311,6 @@ gdk_wayland_surface_get_egl_surface (GdkSurface *surface)
return impl->egl_surface;
}
-EGLSurface
-gdk_wayland_surface_get_dummy_egl_surface (GdkSurface *surface,
- EGLConfig config)
-{
- GdkWaylandDisplay *display = GDK_WAYLAND_DISPLAY (gdk_surface_get_display (surface));
- GdkWaylandSurface *impl;
-
- g_return_val_if_fail (GDK_IS_WAYLAND_SURFACE (surface), NULL);
-
- impl = GDK_WAYLAND_SURFACE (surface);
-
- if (impl->dummy_egl_surface == NULL)
- {
- impl->display_server.dummy_egl_window =
- wl_egl_window_create (impl->display_server.wl_surface, 1, 1);
-
- impl->dummy_egl_surface =
- eglCreateWindowSurface (display->egl_display, config, impl->display_server.dummy_egl_window, NULL);
- }
-
- return impl->dummy_egl_surface;
-}
-
struct gtk_surface1 *
gdk_wayland_surface_get_gtk_surface (GdkSurface *surface)
{
diff --git a/gdk/x11/gdkdisplay-x11.h b/gdk/x11/gdkdisplay-x11.h
index 0bdc4488f0..2a7356f752 100644
--- a/gdk/x11/gdkdisplay-x11.h
+++ b/gdk/x11/gdkdisplay-x11.h
@@ -164,7 +164,6 @@ struct _GdkX11Display
guint has_egl_khr_create_context : 1;
guint has_egl_buffer_age : 1;
guint has_egl_swap_buffers_with_damage : 1;
- guint has_egl_surfaceless_context : 1;
};
struct _GdkX11DisplayClass
diff --git a/gdk/x11/gdkglcontext-egl.c b/gdk/x11/gdkglcontext-egl.c
index 280df54b7b..632209a43f 100644
--- a/gdk/x11/gdkglcontext-egl.c
+++ b/gdk/x11/gdkglcontext-egl.c
@@ -631,6 +631,16 @@ gdk_x11_display_init_egl (GdkX11Display *self,
return FALSE;
}
+ if (!epoxy_has_egl_extension (self->egl_display, "EGL_KHR_surfaceless_context"))
+ {
+ eglTerminate (dpy);
+ self->egl_display = NULL;
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_UNSUPPORTED_PROFILE,
+ _("Surfaceless contexts are not supported on this EGL implementation"));
+ return FALSE;
+ }
+
if (!gdk_x11_display_create_egl_config (self, force, out_visual, out_depth, error))
{
eglTerminate (self->egl_display);
@@ -646,8 +656,6 @@ gdk_x11_display_init_egl (GdkX11Display *self,
epoxy_has_egl_extension (self->egl_display, "EGL_EXT_buffer_age");
self->has_egl_swap_buffers_with_damage =
epoxy_has_egl_extension (self->egl_display, "EGL_EXT_swap_buffers_with_damage");
- self->has_egl_surfaceless_context =
- epoxy_has_egl_extension (self->egl_display, "EGL_KHR_surfaceless_context");
GDK_DISPLAY_NOTE (display, OPENGL,
g_message ("EGL found\n"
@@ -657,15 +665,13 @@ gdk_x11_display_init_egl (GdkX11Display *self,
" - Checked extensions:\n"
"\t* EGL_KHR_create_context: %s\n"
"\t* EGL_EXT_buffer_age: %s\n"
- "\t* EGL_EXT_swap_buffers_with_damage: %s\n"
- "\t* EGL_KHR_surfaceless_context: %s\n",
+ "\t* EGL_EXT_swap_buffers_with_damage: %s\n",
eglQueryString (self->egl_display, EGL_VERSION),
eglQueryString (self->egl_display, EGL_VENDOR),
eglQueryString (self->egl_display, EGL_CLIENT_APIS),
self->has_egl_khr_create_context ? "yes" : "no",
self->has_egl_buffer_age ? "yes" : "no",
- self->has_egl_swap_buffers_with_damage ? "yes" : "no",
- self->has_egl_surfaceless_context ? "yes" : "no"));
+ self->has_egl_swap_buffers_with_damage ? "yes" : "no"));
return TRUE;
}
@@ -711,12 +717,7 @@ gdk_x11_gl_context_egl_make_current (GdkDisplay *display,
if (gdk_draw_context_is_in_frame (GDK_DRAW_CONTEXT (context)))
egl_surface = gdk_x11_surface_get_egl_surface (surface);
else
- {
- if (display_x11->has_egl_surfaceless_context)
- egl_surface = EGL_NO_SURFACE;
- else
- egl_surface = gdk_x11_surface_get_egl_surface (display_x11->leader_gdk_surface);
- }
+ egl_surface = EGL_NO_SURFACE;
GDK_DISPLAY_NOTE (display, OPENGL,
g_message ("Making EGL context %p current to surface %p",