launcher-logind: only get a VT on seat0, as only seat0 supports VTs
[platform/upstream/weston.git] / shared / weston-egl-ext.h
1 /*
2  * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
3  * All Rights Reserved.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining
6  * a copy of this software and associated documentation files (the
7  * "Software"), to deal in the Software without restriction, including
8  * without limitation the rights to use, copy, modify, merge, publish,
9  * distribute, sublicense, and/or sell copies of the Software, and to
10  * permit persons to whom the Software is furnished to do so, subject to
11  * the following conditions:
12  *
13  * The above copyright notice and this permission notice (including the
14  * next paragraph) shall be included in all copies or substantial
15  * portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20  * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
21  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24  * SOFTWARE.
25  */
26 /* Extensions used by Weston, copied from Mesa's eglmesaext.h, */
27
28 #ifndef WESTON_EGL_EXT_H
29 #define WESTON_EGL_EXT_H
30
31 #ifdef ENABLE_EGL
32
33 #ifndef EGL_WL_bind_wayland_display
34 #define EGL_WL_bind_wayland_display 1
35
36 struct wl_display;
37
38 #ifdef EGL_EGLEXT_PROTOTYPES
39 EGLAPI EGLBoolean EGLAPIENTRY eglBindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display);
40 EGLAPI EGLBoolean EGLAPIENTRY eglUnbindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display);
41 #endif
42 typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display);
43 typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display);
44 #endif
45
46 /*
47  * This is a little different to the tests shipped with EGL implementations,
48  * which wrap the entire thing in #ifndef EGL_WL_bind_wayland_display, then go
49  * on to define both BindWaylandDisplay and QueryWaylandBuffer.
50  *
51  * Unfortunately, some implementations (particularly the version of Mesa shipped
52  * in Ubuntu 12.04) define EGL_WL_bind_wayland_display, but then only provide
53  * prototypes for (Un)BindWaylandDisplay, completely omitting
54  * QueryWaylandBuffer.
55  *
56  * Detect this, and provide our own definitions if necessary.
57  */
58 #ifndef EGL_WAYLAND_BUFFER_WL
59 #define EGL_WAYLAND_BUFFER_WL           0x31D5 /* eglCreateImageKHR target */
60 #define EGL_WAYLAND_PLANE_WL            0x31D6 /* eglCreateImageKHR target */
61
62 #define EGL_TEXTURE_Y_U_V_WL            0x31D7
63 #define EGL_TEXTURE_Y_UV_WL             0x31D8
64 #define EGL_TEXTURE_Y_XUXV_WL           0x31D9
65 #define EGL_TEXTURE_EXTERNAL_WL         0x31DA
66
67 struct wl_resource;
68 #ifdef EGL_EGLEXT_PROTOTYPES
69 EGLAPI EGLBoolean EGLAPIENTRY eglQueryWaylandBufferWL(EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
70 #endif
71 typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWL) (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
72 #endif
73
74 #ifndef EGL_WL_create_wayland_buffer_from_image
75 #define EGL_WL_create_wayland_buffer_from_image 1
76
77 #ifdef EGL_EGLEXT_PROTOTYPES
78 EGLAPI struct wl_buffer * EGLAPIENTRY eglCreateWaylandBufferFromImageWL(EGLDisplay dpy, EGLImageKHR image);
79 #endif
80 typedef struct wl_buffer * (EGLAPIENTRYP PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL) (EGLDisplay dpy, EGLImageKHR image);
81 #endif
82
83 #ifndef EGL_TEXTURE_EXTERNAL_WL
84 #define EGL_TEXTURE_EXTERNAL_WL         0x31DA
85 #endif
86
87 #ifndef EGL_BUFFER_AGE_EXT
88 #define EGL_BUFFER_AGE_EXT              0x313D
89 #endif
90
91 #ifndef EGL_WAYLAND_Y_INVERTED_WL
92 #define EGL_WAYLAND_Y_INVERTED_WL               0x31DB /* eglQueryWaylandBufferWL attribute */
93 #endif
94
95 #ifndef GL_EXT_unpack_subimage
96 #define GL_EXT_unpack_subimage 1
97 #define GL_UNPACK_ROW_LENGTH_EXT          0x0CF2
98 #define GL_UNPACK_SKIP_ROWS_EXT           0x0CF3
99 #define GL_UNPACK_SKIP_PIXELS_EXT         0x0CF4
100 #endif /* GL_EXT_unpack_subimage */
101
102 /* Mesas gl2ext.h and probably Khronos upstream defined
103  * GL_EXT_unpack_subimage with non _EXT suffixed GL_UNPACK_* tokens.
104  * In case we're using that mess, manually define the _EXT versions
105  * of the tokens here.*/
106 #if defined(GL_EXT_unpack_subimage) && !defined(GL_UNPACK_ROW_LENGTH_EXT)
107 #define GL_UNPACK_ROW_LENGTH_EXT                                0x0CF2
108 #define GL_UNPACK_SKIP_ROWS_EXT                                 0x0CF3
109 #define GL_UNPACK_SKIP_PIXELS_EXT                               0x0CF4
110 #endif
111
112 /* Define needed tokens from EGL_EXT_image_dma_buf_import extension
113  * here to avoid having to add ifdefs everywhere.*/
114 #ifndef EGL_EXT_image_dma_buf_import
115 #define EGL_LINUX_DMA_BUF_EXT                                   0x3270
116 #define EGL_LINUX_DRM_FOURCC_EXT                                0x3271
117 #define EGL_DMA_BUF_PLANE0_FD_EXT                               0x3272
118 #define EGL_DMA_BUF_PLANE0_OFFSET_EXT                           0x3273
119 #define EGL_DMA_BUF_PLANE0_PITCH_EXT                            0x3274
120 #define EGL_DMA_BUF_PLANE1_FD_EXT                               0x3275
121 #define EGL_DMA_BUF_PLANE1_OFFSET_EXT                           0x3276
122 #define EGL_DMA_BUF_PLANE1_PITCH_EXT                            0x3277
123 #define EGL_DMA_BUF_PLANE2_FD_EXT                               0x3278
124 #define EGL_DMA_BUF_PLANE2_OFFSET_EXT                           0x3279
125 #define EGL_DMA_BUF_PLANE2_PITCH_EXT                            0x327A
126 #endif
127
128 /* Define tokens from EGL_EXT_image_dma_buf_import_modifiers */
129 #ifndef EGL_EXT_image_dma_buf_import_modifiers
130 #define EGL_EXT_image_dma_buf_import_modifiers 1
131 #define EGL_DMA_BUF_PLANE3_FD_EXT         0x3440
132 #define EGL_DMA_BUF_PLANE3_OFFSET_EXT     0x3441
133 #define EGL_DMA_BUF_PLANE3_PITCH_EXT      0x3442
134 #define EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443
135 #define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444
136 #define EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445
137 #define EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446
138 #define EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447
139 #define EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448
140 #define EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449
141 #define EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A
142 typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFFORMATSEXTPROC) (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats);
143 typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFMODIFIERSEXTPROC) (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers);
144 #endif
145
146 #ifndef EGL_EXT_swap_buffers_with_damage
147 #define EGL_EXT_swap_buffers_with_damage 1
148 typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
149 #endif /* EGL_EXT_swap_buffers_with_damage */
150
151 #ifndef EGL_MESA_configless_context
152 #define EGL_MESA_configless_context 1
153 #define EGL_NO_CONFIG_MESA                      ((EGLConfig)0)
154 #endif
155
156 #ifndef EGL_NO_CONFIG_KHR
157 #define EGL_NO_CONFIG_KHR ((EGLConfig)0)
158 #endif
159
160 #ifndef EGL_EXT_platform_base
161 #define EGL_EXT_platform_base 1
162 typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list);
163 typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
164 typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
165 #endif /* EGL_EXT_platform_base */
166
167 #ifndef EGL_PLATFORM_GBM_KHR
168 #define EGL_PLATFORM_GBM_KHR 0x31D7
169 #endif
170
171 #ifndef EGL_PLATFORM_WAYLAND_KHR
172 #define EGL_PLATFORM_WAYLAND_KHR 0x31D8
173 #endif
174
175 #ifndef EGL_PLATFORM_X11_KHR
176 #define EGL_PLATFORM_X11_KHR 0x31D5
177 #endif
178
179 #ifndef EGL_KHR_cl_event2
180 #define EGL_KHR_cl_event2 1
181 typedef void *EGLSyncKHR;
182 #endif /* EGL_KHR_cl_event2 */
183
184 #ifndef EGL_NO_SYNC_KHR
185 #define EGL_NO_SYNC_KHR ((EGLSyncKHR)0)
186 #endif
187
188 #ifndef EGL_KHR_fence_sync
189 #define EGL_KHR_fence_sync 1
190 typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
191 typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
192 #endif /* EGL_KHR_fence_sync */
193
194 #ifndef EGL_ANDROID_native_fence_sync
195 #define EGL_ANDROID_native_fence_sync 1
196 typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync);
197 #endif /* EGL_ANDROID_native_fence_sync */
198
199 #ifndef EGL_SYNC_NATIVE_FENCE_ANDROID
200 #define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144
201 #endif
202
203 #ifndef EGL_NO_NATIVE_FENCE_FD_ANDROID
204 #define EGL_NO_NATIVE_FENCE_FD_ANDROID -1
205 #endif
206
207 #else /* ENABLE_EGL */
208
209 /* EGL platform definition are keept to allow compositor-xx.c to build */
210 #define EGL_PLATFORM_GBM_KHR     0x31D7
211 #define EGL_PLATFORM_WAYLAND_KHR 0x31D8
212 #define EGL_PLATFORM_X11_KHR     0x31D5
213
214 #endif /* ENABLE_EGL */
215
216 #endif