44 if (GDK_IS_WAYLAND_DISPLAY(display)) {
45 self->display = eglGetPlatformDisplayEXT(
46 EGL_PLATFORM_WAYLAND_EXT, gdk_wayland_display_get_wl_display(display),
48#ifdef GDK_WINDOWING_X11
49 }
else if (GDK_IS_X11_DISPLAY(display)) {
50 self->display = eglGetPlatformDisplayEXT(
51 EGL_PLATFORM_X11_EXT, gdk_x11_display_get_xdisplay(display), NULL);
54 g_critical(
"Unsupported GDK backend, unable to get EGL display");
57 eglInitialize(
self->display,
nullptr,
nullptr);
59 const EGLint config_attributes[] = {EGL_RED_SIZE, 8, EGL_GREEN_SIZE, 8,
60 EGL_BLUE_SIZE, 8, EGL_ALPHA_SIZE, 8,
61 EGL_DEPTH_SIZE, 8, EGL_STENCIL_SIZE, 8,
63 EGLConfig config =
nullptr;
64 EGLint num_config = 0;
65 eglChooseConfig(
self->display, config_attributes, &config, 1, &num_config);
67 const EGLint context_attributes[] = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE};
68 self->render_context = eglCreateContext(
self->display, config, EGL_NO_CONTEXT,
70 self->resource_context = eglCreateContext(
71 self->display, config,
self->render_context, context_attributes);