backend/drm: fix GBM format mismatch

We create the EGL config with GBM_FORMAT_ARGB8888, but then initialize GBM BOs
with GBM_FORMAT_XRGB8888. This mismatch confuses Mesa.

Instead, we can always use GBM_FORMAT_ARGB8888, and use DRM_FORMAT_XRGB8888
when calling drmModeAddFB2.

Fixes https://github.com/swaywm/wlroots/issues/1438
This commit is contained in:
emersion 2019-01-29 12:04:12 +01:00
parent 018727b1fc
commit ee293fab58
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
7 changed files with 46 additions and 15 deletions

View file

@ -38,10 +38,10 @@ bool init_drm_renderer(struct wlr_drm_backend *drm,
EGL_NONE,
};
renderer->gbm_format = GBM_FORMAT_ARGB8888;
renderer->wlr_rend = create_renderer_func(&renderer->egl,
EGL_PLATFORM_GBM_MESA, renderer->gbm,
config_attribs, GBM_FORMAT_ARGB8888);
config_attribs, renderer->gbm_format);
if (!renderer->wlr_rend) {
wlr_log(WLR_ERROR, "Failed to create EGL/WLR renderer");
goto error_gbm;