diff options
author | Daniel Stone <[email protected]> | 2017-02-13 14:06:10 +0000 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2017-03-01 18:36:55 +0000 |
commit | a1727aa75ed252cd19c296ccf83cb595be971744 (patch) | |
tree | 390590876d4b5cdf227983307712b5ffb468e1d7 | |
parent | c0e9e61c9a1eaaee9ca4dfc2f05da85a791c4c5d (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: [email protected]
Signed-off-by: Daniel Stone <[email protected]> (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 <[email protected]>
Reviewed-by: Daniel Stone <[email protected]> (IRC)
-rw-r--r-- | src/egl/drivers/dri2/platform_wayland.c | 21 |
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"); |