Commit 473af0b5 authored by Eric Engestrom's avatar Eric Engestrom
Browse files

egl/x11: deduplicate depth-to-format logic


Suggested-by: default avatarEmil Velikov <emil.l.velikov@gmail.com>
Signed-off-by: default avatarEric Engestrom <eric.engestrom@intel.com>
Reviewed-by: default avatarTapani Pälli <tapani.palli@intel.com>
parent 7b54404c
......@@ -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);
......
......@@ -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");
......
......@@ -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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment