Mesa (master): egl/x11: deduplicate depth-to-format logic
Eric Engeström
eric_engestrom at kemper.freedesktop.org
Thu May 24 17:02:14 UTC 2018
Module: Mesa
Branch: master
Commit: 473af0b541b2583f4c72ffe885cff5ec2660a45f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=473af0b541b2583f4c72ffe885cff5ec2660a45f
Author: Eric Engestrom <eric.engestrom at intel.com>
Date: Thu May 17 16:16:34 2018 +0100
egl/x11: deduplicate depth-to-format logic
Suggested-by: Emil Velikov <emil.l.velikov at gmail.com>
Signed-off-by: Eric Engestrom <eric.engestrom at intel.com>
Reviewed-by: Tapani Pälli <tapani.palli 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 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
More information about the mesa-commit
mailing list