1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
From be72a2ae7d14e57c423ce0885b153abf56eefca4 Mon Sep 17 00:00:00 2001
From: Jorgen Lind <jorgen.lind@digia.com>
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
|