mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-26 14:45:58 +01:00
a2419eb4ea
The wlr_egl functions are mostly used internally by the GLES2 renderer. Let's reduce our API surface a bit by hiding them. If there are good use-cases for one of these, we can always make them public again. The functions mutating the current EGL context are not made private because e.g. Wayfire uses them.
81 lines
2.1 KiB
C
81 lines
2.1 KiB
C
/*
|
|
* This an unstable interface of wlroots. No guarantees are made regarding the
|
|
* future consistency of this API.
|
|
*/
|
|
#ifndef WLR_USE_UNSTABLE
|
|
#error "Add -DWLR_USE_UNSTABLE to enable unstable wlroots features"
|
|
#endif
|
|
|
|
#ifndef WLR_RENDER_EGL_H
|
|
#define WLR_RENDER_EGL_H
|
|
|
|
#ifndef MESA_EGL_NO_X11_HEADERS
|
|
#define MESA_EGL_NO_X11_HEADERS
|
|
#endif
|
|
#ifndef EGL_NO_X11
|
|
#define EGL_NO_X11
|
|
#endif
|
|
#ifndef EGL_NO_PLATFORM_SPECIFIC_TYPES
|
|
#define EGL_NO_PLATFORM_SPECIFIC_TYPES
|
|
#endif
|
|
|
|
#include <wlr/config.h>
|
|
|
|
#include <EGL/egl.h>
|
|
#include <EGL/eglext.h>
|
|
#include <pixman.h>
|
|
#include <stdbool.h>
|
|
#include <wayland-server-core.h>
|
|
#include <wlr/render/dmabuf.h>
|
|
#include <wlr/render/drm_format_set.h>
|
|
|
|
struct wlr_egl {
|
|
EGLDisplay display;
|
|
EGLContext context;
|
|
EGLDeviceEXT device; // may be EGL_NO_DEVICE_EXT
|
|
struct gbm_device *gbm_device;
|
|
|
|
struct {
|
|
// Display extensions
|
|
bool bind_wayland_display_wl;
|
|
bool image_base_khr;
|
|
bool image_dmabuf_import_ext;
|
|
bool image_dmabuf_import_modifiers_ext;
|
|
|
|
// Device extensions
|
|
bool device_drm_ext;
|
|
} exts;
|
|
|
|
struct {
|
|
PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT;
|
|
PFNEGLCREATEIMAGEKHRPROC eglCreateImageKHR;
|
|
PFNEGLDESTROYIMAGEKHRPROC eglDestroyImageKHR;
|
|
PFNEGLQUERYWAYLANDBUFFERWL eglQueryWaylandBufferWL;
|
|
PFNEGLBINDWAYLANDDISPLAYWL eglBindWaylandDisplayWL;
|
|
PFNEGLUNBINDWAYLANDDISPLAYWL eglUnbindWaylandDisplayWL;
|
|
PFNEGLQUERYDMABUFFORMATSEXTPROC eglQueryDmaBufFormatsEXT;
|
|
PFNEGLQUERYDMABUFMODIFIERSEXTPROC eglQueryDmaBufModifiersEXT;
|
|
PFNEGLDEBUGMESSAGECONTROLKHRPROC eglDebugMessageControlKHR;
|
|
PFNEGLQUERYDISPLAYATTRIBEXTPROC eglQueryDisplayAttribEXT;
|
|
PFNEGLQUERYDEVICESTRINGEXTPROC eglQueryDeviceStringEXT;
|
|
} procs;
|
|
|
|
struct wl_display *wl_display;
|
|
|
|
struct wlr_drm_format_set dmabuf_texture_formats;
|
|
struct wlr_drm_format_set dmabuf_render_formats;
|
|
};
|
|
|
|
/**
|
|
* Make the EGL context current.
|
|
*
|
|
* Callers are expected to clear the current context when they are done by
|
|
* calling wlr_egl_unset_current.
|
|
*/
|
|
bool wlr_egl_make_current(struct wlr_egl *egl);
|
|
|
|
bool wlr_egl_unset_current(struct wlr_egl *egl);
|
|
|
|
bool wlr_egl_is_current(struct wlr_egl *egl);
|
|
|
|
#endif
|