Module: Mesa Branch: master Commit: 473af0b541b2583f4c72ffe885cff5ec2660a45f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=473af0b541b2583f4c72ffe885cff5ec2660a45f
Author: Eric Engestrom <eric.engest...@intel.com> Date: Thu May 17 16:16:34 2018 +0100 egl/x11: deduplicate depth-to-format logic Suggested-by: Emil Velikov <emil.l.veli...@gmail.com> Signed-off-by: Eric Engestrom <eric.engest...@intel.com> Reviewed-by: Tapani Pälli <tapani.pa...@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 7aca0a9020..b2a3000b25 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 5cb6d65c0a..0d5a9d037f 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 96e7ee972d..e6fd013669 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 _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit