summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stone <daniels@collabora.com>2017-02-13 14:06:10 +0000
committerEmil Velikov <emil.l.velikov@gmail.com>2017-03-01 18:36:55 +0000
commita1727aa75ed252cd19c296ccf83cb595be971744 (patch)
tree390590876d4b5cdf227983307712b5ffb468e1d7
parentc0e9e61c9a1eaaee9ca4dfc2f05da85a791c4c5d (diff)
egl/wayland: Don't use DRM format codes for SHM
The wl_drm interface (akin to X11's DRI2) uses the standard set of DRM FourCC format codes. wl_shm copies this, except for ARGB8888/XRGB8888, which use their own definitions. Make sure we only use wl_shm format codes when we're working with wl_shm. Otherwise, using swrast with 32bpp formats would fail with an error. Cc: mesa-stable@lists.freedesktop.org Signed-off-by: Daniel Stone <daniels@collabora.com> (v1) Fixes: cb5e799448 ("egl/wayland: unify dri2_wl_create_surface implementations") v2: [Emil Velikov: move to dri2_wl_create_window_surface] Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Daniel Stone <daniels@collabora.com> (IRC)
-rw-r--r--src/egl/drivers/dri2/platform_wayland.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c
index 37360c7f7eb..a3380f298d3 100644
--- a/src/egl/drivers/dri2/platform_wayland.c
+++ b/src/egl/drivers/dri2/platform_wayland.c
@@ -148,12 +148,21 @@ dri2_wl_create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
if (!_eglInitSurface(&dri2_surf->base, disp, EGL_WINDOW_BIT, conf, attrib_list))
goto cleanup_surf;
- if (conf->RedSize == 5)
- dri2_surf->format = WL_DRM_FORMAT_RGB565;
- else if (conf->AlphaSize == 0)
- dri2_surf->format = WL_DRM_FORMAT_XRGB8888;
- else
- dri2_surf->format = WL_DRM_FORMAT_ARGB8888;
+ if (dri2_dpy->dri2) {
+ if (conf->RedSize == 5)
+ dri2_surf->format = WL_DRM_FORMAT_RGB565;
+ else if (conf->AlphaSize == 0)
+ dri2_surf->format = WL_DRM_FORMAT_XRGB8888;
+ else
+ dri2_surf->format = WL_DRM_FORMAT_ARGB8888;
+ } else {
+ if (conf->RedSize == 5)
+ dri2_surf->format = WL_SHM_FORMAT_RGB565;
+ else if (conf->AlphaSize == 0)
+ dri2_surf->format = WL_SHM_FORMAT_XRGB8888;
+ else
+ dri2_surf->format = WL_SHM_FORMAT_ARGB8888;
+ }
if (!window) {
_eglError(EGL_BAD_NATIVE_WINDOW, "dri2_create_surface");