diff options
| -rw-r--r-- | backend/drm/drm.c | 3 | ||||
| -rw-r--r-- | backend/wayland/backend.c | 3 | ||||
| -rw-r--r-- | include/wlr/egl.h | 2 | ||||
| -rw-r--r-- | render/egl.c | 23 | 
4 files changed, 12 insertions, 19 deletions
| diff --git a/backend/drm/drm.c b/backend/drm/drm.c index 8e70e528..1a656172 100644 --- a/backend/drm/drm.c +++ b/backend/drm/drm.c @@ -182,7 +182,8 @@ bool wlr_drm_renderer_init(struct wlr_drm_renderer *renderer, int fd) {  		return false;  	} -	if (!wlr_egl_init(&renderer->egl, EGL_PLATFORM_GBM_MESA, renderer->gbm)) { +	if (!wlr_egl_init(&renderer->egl, EGL_PLATFORM_GBM_MESA, +			GBM_FORMAT_ARGB8888, renderer->gbm)) {  		gbm_device_destroy(renderer->gbm);  		return false;  	} diff --git a/backend/wayland/backend.c b/backend/wayland/backend.c index 264ce338..e57f3583 100644 --- a/backend/wayland/backend.c +++ b/backend/wayland/backend.c @@ -42,6 +42,7 @@ static bool wlr_wl_backend_start(struct wlr_backend *_backend) {  	}  	backend->started = true; +  	for (size_t i = 0; i < backend->requested_outputs; ++i) {  		wlr_wl_output_create(&backend->backend);  	} @@ -145,7 +146,7 @@ struct wlr_backend *wlr_wl_backend_create(struct wl_display *display) {  		return false;  	} -	wlr_egl_init(&backend->egl, EGL_PLATFORM_WAYLAND_EXT, backend->remote_display); +	wlr_egl_init(&backend->egl, EGL_PLATFORM_WAYLAND_EXT, WL_SHM_FORMAT_ARGB8888, backend->remote_display);  	wlr_egl_bind_display(&backend->egl, backend->local_display);  	return &backend->backend; diff --git a/include/wlr/egl.h b/include/wlr/egl.h index b37317a5..25329175 100644 --- a/include/wlr/egl.h +++ b/include/wlr/egl.h @@ -30,7 +30,7 @@ struct wlr_egl {   *  Initializes an egl context for the given platform and remote display.   * Will attempt to load all possibly required api functions.   */ -bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform, void *display); +bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform, EGLint visual_id, void *display);  /**   * Frees all related egl resources, makes the context not-current and diff --git a/render/egl.c b/render/egl.c index 048626ba..82dea50c 100644 --- a/render/egl.c +++ b/render/egl.c @@ -1,7 +1,6 @@  #include <EGL/egl.h>  #include <EGL/eglext.h>  #include <GLES2/gl2.h> -#include <gbm.h> // GBM_FORMAT_XRGB8888  #include <stdlib.h>  #include <wlr/util/log.h>  #include <wlr/egl.h> @@ -68,7 +67,7 @@ static bool egl_exts(struct wlr_egl *egl) {  	return true;  } -static bool egl_get_config(EGLDisplay disp, EGLConfig *out, EGLenum platform) { +static bool egl_get_config(EGLDisplay disp, EGLConfig *out, EGLint visual_id) {  	EGLint count = 0, matched = 0, ret;  	ret = eglGetConfigs(disp, NULL, 0, &count); @@ -86,21 +85,13 @@ static bool egl_get_config(EGLDisplay disp, EGLConfig *out, EGLenum platform) {  	}  	for (int i = 0; i < matched; ++i) { -		EGLint gbm_format; - -		if (platform == EGL_PLATFORM_WAYLAND_EXT) { -			*out = configs[i]; -			return true; -		} - -		if (!eglGetConfigAttrib(disp, -					configs[i], -					EGL_NATIVE_VISUAL_ID, -					&gbm_format)) { +		EGLint visual; +		if (!eglGetConfigAttrib(disp, configs[i], +				EGL_NATIVE_VISUAL_ID, &visual)) {  			continue;  		} -		if (gbm_format == GBM_FORMAT_ARGB8888) { +		if (visual == visual_id) {  			*out = configs[i];  			return true;  		} @@ -110,7 +101,7 @@ static bool egl_get_config(EGLDisplay disp, EGLConfig *out, EGLenum platform) {  	return false;  } -bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform, +bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform, EGLint visual_id,  		void *remote_display) {  	if (!egl_exts(egl)) {  		return false; @@ -133,7 +124,7 @@ bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform,  		goto error;  	} -	if (!egl_get_config(egl->display, &egl->config, platform)) { +	if (!egl_get_config(egl->display, &egl->config, visual_id)) {  		wlr_log(L_ERROR, "Failed to get EGL config");  		goto error;  	} | 
