[Mesa-dev] [PATCH mesa] egl/x11: deduplicate depth-to-format logic

Tapani Pälli tapani.palli at intel.com
Mon May 21 06:37:24 UTC 2018


Reviewed-by: Tapani Pälli <tapani.palli at intel.com>

On 05/18/2018 06:14 PM, Eric Engestrom wrote:
> Suggested-by: Emil Velikov <emil.l.velikov at gmail.com>
> Signed-off-by: Eric Engestrom <eric.engestrom at intel.com>
> ---
>   src/egl/drivers/dri2/platform_x11.c      | 35 ++++++++++++++----------
>   src/egl/drivers/dri2/platform_x11_dri3.c | 21 ++------------
>   src/egl/drivers/dri2/platform_x11_dri3.h |  3 ++
>   3 files changed, 26 insertions(+), 33 deletions(-)
> 
> diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c
> index 7aca0a90203f3e9180e6..b2a3000b252ec0ddb12f 100644
> --- a/src/egl/drivers/dri2/platform_x11.c
> +++ b/src/egl/drivers/dri2/platform_x11.c
> @@ -1006,6 +1006,24 @@ dri2_x11_copy_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf,
>      return EGL_TRUE;
>   }
>   
> +uint32_t
> +dri2_format_for_depth(uint32_t depth)
> +{
> +   switch (depth) {
> +   case 16:
> +      return __DRI_IMAGE_FORMAT_RGB565;
> +   case 24:
> +      return __DRI_IMAGE_FORMAT_XRGB8888;
> +   case 30:
> +      return __DRI_IMAGE_FORMAT_XRGB2101010;
> +   case 32:
> +      return __DRI_IMAGE_FORMAT_ARGB8888;
> +   default:
> +      return __DRI_IMAGE_FORMAT_NONE;
> +   }
> +}
> +
> +
>   static _EGLImage *
>   dri2_create_image_khr_pixmap(_EGLDisplay *disp, _EGLContext *ctx,
>   			     EGLClientBuffer buffer, const EGLint *attr_list)
> @@ -1050,20 +1068,9 @@ dri2_create_image_khr_pixmap(_EGLDisplay *disp, _EGLContext *ctx,
>         return NULL;
>      }
>   
> -   switch (geometry_reply->depth) {
> -   case 16:
> -      format = __DRI_IMAGE_FORMAT_RGB565;
> -      break;
> -   case 24:
> -      format = __DRI_IMAGE_FORMAT_XRGB8888;
> -      break;
> -   case 30:
> -      format = __DRI_IMAGE_FORMAT_XRGB2101010;
> -      break;
> -   case 32:
> -      format = __DRI_IMAGE_FORMAT_ARGB8888;
> -      break;
> -   default:
> +   format = dri2_format_for_depth(geometry_reply->depth);
> +
> +   if (format == __DRI_IMAGE_FORMAT_NONE) {
>         _eglError(EGL_BAD_PARAMETER,
>   		"dri2_create_image_khr: unsupported pixmap depth");
>         free(buffers_reply);
> diff --git a/src/egl/drivers/dri2/platform_x11_dri3.c b/src/egl/drivers/dri2/platform_x11_dri3.c
> index 5cb6d65c0a3a89d8d2b9..0d5a9d037f5b5895f23a 100644
> --- a/src/egl/drivers/dri2/platform_x11_dri3.c
> +++ b/src/egl/drivers/dri2/platform_x11_dri3.c
> @@ -39,23 +39,6 @@
>   #include "loader.h"
>   #include "loader_dri3_helper.h"
>   
> -static uint32_t
> -dri3_format_for_depth(uint32_t depth)
> -{
> -   switch (depth) {
> -   case 16:
> -      return __DRI_IMAGE_FORMAT_RGB565;
> -   case 24:
> -      return __DRI_IMAGE_FORMAT_XRGB8888;
> -   case 30:
> -      return __DRI_IMAGE_FORMAT_XRGB2101010;
> -   case 32:
> -      return __DRI_IMAGE_FORMAT_ARGB8888;
> -   default:
> -      return __DRI_IMAGE_FORMAT_NONE;
> -   }
> -}
> -
>   static struct dri3_egl_surface *
>   loader_drawable_to_egl_surface(struct loader_dri3_drawable *draw) {
>      size_t offset = offsetof(struct dri3_egl_surface, loader_drawable);
> @@ -298,7 +281,7 @@ dri3_create_image_khr_pixmap(_EGLDisplay *disp, _EGLContext *ctx,
>         return NULL;
>      }
>   
> -   format = dri3_format_for_depth(bp_reply->depth);
> +   format = dri2_format_for_depth(bp_reply->depth);
>      if (format == __DRI_IMAGE_FORMAT_NONE) {
>         _eglError(EGL_BAD_PARAMETER,
>                   "dri3_create_image_khr: unsupported pixmap depth");
> @@ -350,7 +333,7 @@ dri3_create_image_khr_pixmap_from_buffers(_EGLDisplay *disp, _EGLContext *ctx,
>         return EGL_NO_IMAGE_KHR;
>      }
>   
> -   format = dri3_format_for_depth(bp_reply->depth);
> +   format = dri2_format_for_depth(bp_reply->depth);
>      if (format == __DRI_IMAGE_FORMAT_NONE) {
>         _eglError(EGL_BAD_PARAMETER,
>                   "dri3_create_image_khr: unsupported pixmap depth");
> diff --git a/src/egl/drivers/dri2/platform_x11_dri3.h b/src/egl/drivers/dri2/platform_x11_dri3.h
> index 96e7ee972d9f76afb061..e6fd0136697833db9708 100644
> --- a/src/egl/drivers/dri2/platform_x11_dri3.h
> +++ b/src/egl/drivers/dri2/platform_x11_dri3.h
> @@ -38,4 +38,7 @@ extern struct dri2_egl_display_vtbl dri3_x11_display_vtbl;
>   EGLBoolean
>   dri3_x11_connect(struct dri2_egl_display *dri2_dpy);
>   
> +uint32_t
> +dri2_format_for_depth(uint32_t depth);
> +
>   #endif
> 


More information about the mesa-dev mailing list