egl/x11: deduplicate depth-to-format logic
Suggested-by: Emil Velikov <emil.l.velikov@gmail.com> Signed-off-by: Eric Engestrom <eric.engestrom@intel.com> Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
This commit is contained in:
parent
7b54404c9d
commit
473af0b541
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue