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;
|
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 *
|
static _EGLImage *
|
||||||
dri2_create_image_khr_pixmap(_EGLDisplay *disp, _EGLContext *ctx,
|
dri2_create_image_khr_pixmap(_EGLDisplay *disp, _EGLContext *ctx,
|
||||||
EGLClientBuffer buffer, const EGLint *attr_list)
|
EGLClientBuffer buffer, const EGLint *attr_list)
|
||||||
|
@ -1050,20 +1068,9 @@ dri2_create_image_khr_pixmap(_EGLDisplay *disp, _EGLContext *ctx,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (geometry_reply->depth) {
|
format = dri2_format_for_depth(geometry_reply->depth);
|
||||||
case 16:
|
|
||||||
format = __DRI_IMAGE_FORMAT_RGB565;
|
if (format == __DRI_IMAGE_FORMAT_NONE) {
|
||||||
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:
|
|
||||||
_eglError(EGL_BAD_PARAMETER,
|
_eglError(EGL_BAD_PARAMETER,
|
||||||
"dri2_create_image_khr: unsupported pixmap depth");
|
"dri2_create_image_khr: unsupported pixmap depth");
|
||||||
free(buffers_reply);
|
free(buffers_reply);
|
||||||
|
|
|
@ -39,23 +39,6 @@
|
||||||
#include "loader.h"
|
#include "loader.h"
|
||||||
#include "loader_dri3_helper.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 *
|
static struct dri3_egl_surface *
|
||||||
loader_drawable_to_egl_surface(struct loader_dri3_drawable *draw) {
|
loader_drawable_to_egl_surface(struct loader_dri3_drawable *draw) {
|
||||||
size_t offset = offsetof(struct dri3_egl_surface, loader_drawable);
|
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;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
format = dri3_format_for_depth(bp_reply->depth);
|
format = dri2_format_for_depth(bp_reply->depth);
|
||||||
if (format == __DRI_IMAGE_FORMAT_NONE) {
|
if (format == __DRI_IMAGE_FORMAT_NONE) {
|
||||||
_eglError(EGL_BAD_PARAMETER,
|
_eglError(EGL_BAD_PARAMETER,
|
||||||
"dri3_create_image_khr: unsupported pixmap depth");
|
"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;
|
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) {
|
if (format == __DRI_IMAGE_FORMAT_NONE) {
|
||||||
_eglError(EGL_BAD_PARAMETER,
|
_eglError(EGL_BAD_PARAMETER,
|
||||||
"dri3_create_image_khr: unsupported pixmap depth");
|
"dri3_create_image_khr: unsupported pixmap depth");
|
||||||
|
|
|
@ -38,4 +38,7 @@ extern struct dri2_egl_display_vtbl dri3_x11_display_vtbl;
|
||||||
EGLBoolean
|
EGLBoolean
|
||||||
dri3_x11_connect(struct dri2_egl_display *dri2_dpy);
|
dri3_x11_connect(struct dri2_egl_display *dri2_dpy);
|
||||||
|
|
||||||
|
uint32_t
|
||||||
|
dri2_format_for_depth(uint32_t depth);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue