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>tags/18.2-branchpoint
@@ -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 |