mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-22 12:55:58 +01:00
egl: add WLR_EGL_NO_MODIFIERS
Same as WLR_DRM_NO_MODIFIERS but for EGL. For debugging purposes mostly. References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3451
This commit is contained in:
parent
ccf4e04036
commit
6d90518c97
2 changed files with 15 additions and 4 deletions
|
@ -12,6 +12,8 @@ wlroots reads these environment variables
|
||||||
renderers: gles2, pixman, vulkan)
|
renderers: gles2, pixman, vulkan)
|
||||||
* *WLR_RENDER_DRM_DEVICE*: specifies the DRM node to use for
|
* *WLR_RENDER_DRM_DEVICE*: specifies the DRM node to use for
|
||||||
hardware-accelerated renderers.
|
hardware-accelerated renderers.
|
||||||
|
* *WLR_EGL_NO_MODIFIERS*: set to 1 to disable format modifiers in EGL, this can
|
||||||
|
be used to understand and work around driver bugs.
|
||||||
|
|
||||||
## DRM backend
|
## DRM backend
|
||||||
|
|
||||||
|
|
13
render/egl.c
13
render/egl.c
|
@ -107,6 +107,11 @@ static void log_modifier(uint64_t modifier, bool external_only) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void init_dmabuf_formats(struct wlr_egl *egl) {
|
static void init_dmabuf_formats(struct wlr_egl *egl) {
|
||||||
|
bool no_modifiers = env_parse_bool("WLR_EGL_NO_MODIFIERS");
|
||||||
|
if (no_modifiers) {
|
||||||
|
wlr_log(WLR_INFO, "WLR_EGL_NO_MODIFIERS set, disabling modifiers for EGL");
|
||||||
|
}
|
||||||
|
|
||||||
int *formats;
|
int *formats;
|
||||||
int formats_len = get_egl_dmabuf_formats(egl, &formats);
|
int formats_len = get_egl_dmabuf_formats(egl, &formats);
|
||||||
if (formats_len < 0) {
|
if (formats_len < 0) {
|
||||||
|
@ -121,8 +126,10 @@ static void init_dmabuf_formats(struct wlr_egl *egl) {
|
||||||
|
|
||||||
uint64_t *modifiers;
|
uint64_t *modifiers;
|
||||||
EGLBoolean *external_only;
|
EGLBoolean *external_only;
|
||||||
int modifiers_len =
|
int modifiers_len = 0;
|
||||||
get_egl_dmabuf_modifiers(egl, fmt, &modifiers, &external_only);
|
if (!no_modifiers) {
|
||||||
|
modifiers_len = get_egl_dmabuf_modifiers(egl, fmt, &modifiers, &external_only);
|
||||||
|
}
|
||||||
if (modifiers_len < 0) {
|
if (modifiers_len < 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -174,9 +181,11 @@ static void init_dmabuf_formats(struct wlr_egl *egl) {
|
||||||
free(formats);
|
free(formats);
|
||||||
|
|
||||||
egl->has_modifiers = has_modifiers;
|
egl->has_modifiers = has_modifiers;
|
||||||
|
if (!no_modifiers) {
|
||||||
wlr_log(WLR_DEBUG, "EGL DMA-BUF format modifiers %s",
|
wlr_log(WLR_DEBUG, "EGL DMA-BUF format modifiers %s",
|
||||||
has_modifiers ? "supported" : "unsupported");
|
has_modifiers ? "supported" : "unsupported");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static struct wlr_egl *egl_create(void) {
|
static struct wlr_egl *egl_create(void) {
|
||||||
const char *client_exts_str = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
|
const char *client_exts_str = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
|
||||||
|
|
Loading…
Reference in a new issue