From be72a2ae7d14e57c423ce0885b153abf56eefca4 Mon Sep 17 00:00:00 2001 From: Jorgen Lind Date: Thu, 2 Jan 2014 12:28:54 +0100 Subject: [PATCH] Add a EGL_DRM_BUFFER_FORMAT_A8_MESA This is to allow us to share A8 DRM buffers between processes --- include/EGL/eglext.h | 1 + include/GL/internal/dri_interface.h | 1 + src/egl/drivers/dri2/egl_dri2.c | 7 +++++++ src/mesa/drivers/dri/common/dri_util.c | 4 ++++ 4 files changed, 13 insertions(+) diff --git a/include/EGL/eglext.h b/include/EGL/eglext.h index 1d68178..6c4fb7e 100644 --- a/include/EGL/eglext.h +++ b/include/EGL/eglext.h @@ -271,6 +271,7 @@ typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dp #define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 /* CreateDRMImageMESA attribute */ #define EGL_DRM_BUFFER_USE_MESA 0x31D1 /* CreateDRMImageMESA attribute */ #define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2 /* EGL_IMAGE_FORMAT_MESA attribute value */ +#define EGL_DRM_BUFFER_FORMAT_A8_MESA 0x31D5 /* EGL_IMAGE_FORMAT_MESA attribute value */ #define EGL_DRM_BUFFER_MESA 0x31D3 /* eglCreateImageKHR target */ #define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4 #define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001 /* EGL_DRM_BUFFER_USE_MESA bits */ diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h index b012570..c0ba605 100644 --- a/include/GL/internal/dri_interface.h +++ b/include/GL/internal/dri_interface.h @@ -1015,6 +1015,7 @@ struct __DRIdri2ExtensionRec { #define __DRI_IMAGE_FORMAT_XRGB2101010 0x1009 #define __DRI_IMAGE_FORMAT_ARGB2101010 0x100a #define __DRI_IMAGE_FORMAT_SARGB8 0x100b +#define __DRI_IMAGE_FORMAT_A8 0x100c #define __DRI_IMAGE_USE_SHARE 0x0001 #define __DRI_IMAGE_USE_SCANOUT 0x0002 diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index a64f4e8..a8253e1 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -1185,6 +1185,10 @@ dri2_create_image_mesa_drm_buffer(_EGLDisplay *disp, _EGLContext *ctx, format = __DRI_IMAGE_FORMAT_ARGB8888; pitch = attrs.DRMBufferStrideMESA; break; + case EGL_DRM_BUFFER_FORMAT_A8_MESA: + format = __DRI_IMAGE_FORMAT_A8; + pitch = attrs.DRMBufferStrideMESA; + break; default: _eglError(EGL_BAD_PARAMETER, "dri2_create_image_khr: unsupported pixmap depth"); @@ -1719,6 +1723,9 @@ 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_A8_MESA: + format = __DRI_IMAGE_FORMAT_A8; + break; default: _eglLog(_EGL_WARNING, "bad image format value 0x%04x", attrs.DRMBufferFormatMESA); diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c index 9134a94..5fb55a2 100644 --- a/src/mesa/drivers/dri/common/dri_util.c +++ b/src/mesa/drivers/dri/common/dri_util.c @@ -831,6 +831,8 @@ driGLFormatToImageFormat(gl_format format) return __DRI_IMAGE_FORMAT_NONE; case MESA_FORMAT_SARGB8: return __DRI_IMAGE_FORMAT_SARGB8; + case MESA_FORMAT_A8: + return __DRI_IMAGE_FORMAT_A8; default: return 0; } @@ -860,6 +862,8 @@ driImageFormatToGLFormat(uint32_t image_format) return MESA_FORMAT_GR88; case __DRI_IMAGE_FORMAT_SARGB8: return MESA_FORMAT_SARGB8; + case __DRI_IMAGE_FORMAT_A8: + return MESA_FORMAT_A8; case __DRI_IMAGE_FORMAT_NONE: return MESA_FORMAT_NONE; default: -- 1.8.5.2