egl/wayland: Add Wayland shm swrast support for RGB10 winsys buffers.
authorMario Kleiner <mario.kleiner.de@gmail.com>
Fri, 15 Dec 2017 22:05:02 +0000 (23:05 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 3 Jan 2018 21:57:56 +0000 (22:57 +0100)
Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
src/egl/drivers/dri2/platform_wayland.c

index da46449c439bd2939c3c6026ed6b339c75704511..d221728ff2c303202d534b1933eea230081cfa53 100644 (file)
@@ -162,10 +162,14 @@ dri2_wl_create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
       assert(dri2_dpy->wl_shm);
       if (conf->RedSize == 5)
          dri2_surf->format = WL_SHM_FORMAT_RGB565;
-      else if (conf->AlphaSize == 0)
+      else if (conf->RedSize == 8 && conf->AlphaSize == 0)
          dri2_surf->format = WL_SHM_FORMAT_XRGB8888;
-      else
+      else if (conf->RedSize == 8)
          dri2_surf->format = WL_SHM_FORMAT_ARGB8888;
+      else if (conf->RedSize == 10 && conf->AlphaSize == 0)
+         dri2_surf->format = WL_SHM_FORMAT_XRGB2101010;
+      else if (conf->RedSize == 10)
+         dri2_surf->format = WL_SHM_FORMAT_ARGB2101010;
    }
 
    dri2_surf->wl_queue = wl_display_create_queue(dri2_dpy->wl_dpy);
@@ -1469,7 +1473,7 @@ dri2_wl_swrast_get_stride_for_format(int format, int w)
 {
    if (format == WL_SHM_FORMAT_RGB565)
       return 2 * w;
-   else /* ARGB8888 || XRGB8888 */
+   else /* ARGB8888 || XRGB8888 || ARGB2101010 || XRGB2101010 */
       return 4 * w;
 }
 
@@ -1894,6 +1898,12 @@ shm_handle_format(void *data, struct wl_shm *shm, uint32_t format)
    struct dri2_egl_display *dri2_dpy = data;
 
    switch (format) {
+   case WL_SHM_FORMAT_ARGB2101010:
+      dri2_dpy->formats |= HAS_ARGB2101010;
+      break;
+   case WL_SHM_FORMAT_XRGB2101010:
+      dri2_dpy->formats |= HAS_XRGB2101010;
+      break;
    case WL_SHM_FORMAT_ARGB8888:
       dri2_dpy->formats |= HAS_ARGB8888;
       break;