summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolai Hähnle <nicolai.haehnle@amd.com>2017-01-24 13:58:00 +0100
committerNicolai Hähnle <nicolai.haehnle@amd.com>2017-07-13 13:27:35 +0200
commitb61822f013f3bc77a0ed7d9fc85713a646ed8613 (patch)
tree006698f49ecee354a6a507471cb9bee2dc8c9fac
parent00d25fc9be4e06beb2722156f8d5a870648ad0e7 (diff)
egl: add support for EGL_MESA_drm_image_formats
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
-rw-r--r--src/egl/drivers/dri2/egl_dri2.c21
-rw-r--r--src/egl/main/eglapi.c2
2 files changed, 22 insertions, 1 deletions
diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 2392bfbb2a..5393564be1 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -1929,7 +1929,15 @@ dri2_create_image_mesa_drm_buffer(_EGLDisplay *disp, _EGLContext *ctx,
switch (attrs.DRMBufferFormatMESA) {
case EGL_DRM_BUFFER_FORMAT_ARGB32_MESA:
format = __DRI_IMAGE_FORMAT_ARGB8888;
- pitch = attrs.DRMBufferStrideMESA;
+ break;
+ case EGL_DRM_BUFFER_FORMAT_ARGB2101010_MESA:
+ format = __DRI_IMAGE_FORMAT_ARGB2101010;
+ break;
+ case EGL_DRM_BUFFER_FORMAT_ARGB1555_MESA:
+ format = __DRI_IMAGE_FORMAT_ARGB1555;
+ break;
+ case EGL_DRM_BUFFER_FORMAT_RGB565_MESA:
+ format = __DRI_IMAGE_FORMAT_RGB565;
break;
default:
_eglError(EGL_BAD_PARAMETER,
@@ -1937,6 +1945,8 @@ dri2_create_image_mesa_drm_buffer(_EGLDisplay *disp, _EGLContext *ctx,
return NULL;
}
+ pitch = attrs.DRMBufferStrideMESA;
+
dri_image =
dri2_dpy->image->createImageFromName(dri2_dpy->dri_screen,
attrs.Width,
@@ -2321,6 +2331,15 @@ dri2_create_drm_image_mesa(_EGLDriver *drv, _EGLDisplay *disp,
case EGL_DRM_BUFFER_FORMAT_ARGB32_MESA:
format = __DRI_IMAGE_FORMAT_ARGB8888;
break;
+ case EGL_DRM_BUFFER_FORMAT_ARGB2101010_MESA:
+ format = __DRI_IMAGE_FORMAT_ARGB2101010;
+ break;
+ case EGL_DRM_BUFFER_FORMAT_ARGB1555_MESA:
+ format = __DRI_IMAGE_FORMAT_ARGB1555;
+ break;
+ case EGL_DRM_BUFFER_FORMAT_RGB565_MESA:
+ format = __DRI_IMAGE_FORMAT_RGB565;
+ break;
default:
_eglError(EGL_BAD_PARAMETER, __func__);
return EGL_NO_IMAGE_KHR;
diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
index 9b899d8524..cc715c4e77 100644
--- a/src/egl/main/eglapi.c
+++ b/src/egl/main/eglapi.c
@@ -516,6 +516,8 @@ _eglCreateExtensionsString(_EGLDisplay *dpy)
if (dpy->Extensions.KHR_no_config_context)
_eglAppendExtension(&exts, "EGL_MESA_configless_context");
_EGL_CHECK_EXTENSION(MESA_drm_image);
+ if (dpy->Extensions.MESA_drm_image)
+ _eglAppendExtension(&exts, "EGL_MESA_drm_image_formats");
_EGL_CHECK_EXTENSION(MESA_image_dma_buf_export);
_EGL_CHECK_EXTENSION(NOK_swap_region);