| /* |
| * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. |
| * All Rights Reserved. |
| * |
| * Permission is hereby granted, free of charge, to any person obtaining |
| * a copy of this software and associated documentation files (the |
| * "Software"), to deal in the Software without restriction, including |
| * without limitation the rights to use, copy, modify, merge, publish, |
| * distribute, sublicense, and/or sell copies of the Software, and to |
| * permit persons to whom the Software is furnished to do so, subject to |
| * the following conditions: |
| * |
| * The above copyright notice and this permission notice (including the |
| * next paragraph) shall be included in all copies or substantial |
| * portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
| * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
| * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| * SOFTWARE. |
| */ |
| /* Extensions used by Weston, copied from Mesa's eglmesaext.h, */ |
| |
| #ifndef WESTON_EGL_EXT_H |
| #define WESTON_EGL_EXT_H |
| |
| #ifdef ENABLE_EGL |
| |
| #ifndef EGL_WL_bind_wayland_display |
| #define EGL_WL_bind_wayland_display 1 |
| |
| struct wl_display; |
| |
| #ifdef EGL_EGLEXT_PROTOTYPES |
| EGLAPI EGLBoolean EGLAPIENTRY eglBindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display); |
| EGLAPI EGLBoolean EGLAPIENTRY eglUnbindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display); |
| #endif |
| typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display); |
| typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display); |
| #endif |
| |
| /* |
| * This is a little different to the tests shipped with EGL implementations, |
| * which wrap the entire thing in #ifndef EGL_WL_bind_wayland_display, then go |
| * on to define both BindWaylandDisplay and QueryWaylandBuffer. |
| * |
| * Unfortunately, some implementations (particularly the version of Mesa shipped |
| * in Ubuntu 12.04) define EGL_WL_bind_wayland_display, but then only provide |
| * prototypes for (Un)BindWaylandDisplay, completely omitting |
| * QueryWaylandBuffer. |
| * |
| * Detect this, and provide our own definitions if necessary. |
| */ |
| #ifndef EGL_WAYLAND_BUFFER_WL |
| #define EGL_WAYLAND_BUFFER_WL 0x31D5 /* eglCreateImageKHR target */ |
| #define EGL_WAYLAND_PLANE_WL 0x31D6 /* eglCreateImageKHR target */ |
| |
| #define EGL_TEXTURE_Y_U_V_WL 0x31D7 |
| #define EGL_TEXTURE_Y_UV_WL 0x31D8 |
| #define EGL_TEXTURE_Y_XUXV_WL 0x31D9 |
| #define EGL_TEXTURE_EXTERNAL_WL 0x31DA |
| |
| struct wl_resource; |
| #ifdef EGL_EGLEXT_PROTOTYPES |
| EGLAPI EGLBoolean EGLAPIENTRY eglQueryWaylandBufferWL(EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value); |
| #endif |
| typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWL) (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value); |
| #endif |
| |
| #ifndef EGL_WL_create_wayland_buffer_from_image |
| #define EGL_WL_create_wayland_buffer_from_image 1 |
| |
| #ifdef EGL_EGLEXT_PROTOTYPES |
| EGLAPI struct wl_buffer * EGLAPIENTRY eglCreateWaylandBufferFromImageWL(EGLDisplay dpy, EGLImageKHR image); |
| #endif |
| typedef struct wl_buffer * (EGLAPIENTRYP PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL) (EGLDisplay dpy, EGLImageKHR image); |
| #endif |
| |
| #ifndef EGL_TEXTURE_EXTERNAL_WL |
| #define EGL_TEXTURE_EXTERNAL_WL 0x31DA |
| #endif |
| |
| #ifndef EGL_BUFFER_AGE_EXT |
| #define EGL_BUFFER_AGE_EXT 0x313D |
| #endif |
| |
| #ifndef EGL_WAYLAND_Y_INVERTED_WL |
| #define EGL_WAYLAND_Y_INVERTED_WL 0x31DB /* eglQueryWaylandBufferWL attribute */ |
| #endif |
| |
| #ifndef GL_EXT_unpack_subimage |
| #define GL_EXT_unpack_subimage 1 |
| #define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 |
| #define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 |
| #define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 |
| #endif /* GL_EXT_unpack_subimage */ |
| |
| /* Mesas gl2ext.h and probably Khronos upstream defined |
| * GL_EXT_unpack_subimage with non _EXT suffixed GL_UNPACK_* tokens. |
| * In case we're using that mess, manually define the _EXT versions |
| * of the tokens here.*/ |
| #if defined(GL_EXT_unpack_subimage) && !defined(GL_UNPACK_ROW_LENGTH_EXT) |
| #define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 |
| #define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 |
| #define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 |
| #endif |
| |
| /* Define needed tokens from EGL_EXT_image_dma_buf_import extension |
| * here to avoid having to add ifdefs everywhere.*/ |
| #ifndef EGL_EXT_image_dma_buf_import |
| #define EGL_LINUX_DMA_BUF_EXT 0x3270 |
| #define EGL_LINUX_DRM_FOURCC_EXT 0x3271 |
| #define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272 |
| #define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273 |
| #define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274 |
| #define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275 |
| #define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276 |
| #define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277 |
| #define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278 |
| #define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279 |
| #define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A |
| #endif |
| |
| /* Define tokens from EGL_EXT_image_dma_buf_import_modifiers */ |
| #ifndef EGL_EXT_image_dma_buf_import_modifiers |
| #define EGL_EXT_image_dma_buf_import_modifiers 1 |
| #define EGL_DMA_BUF_PLANE3_FD_EXT 0x3440 |
| #define EGL_DMA_BUF_PLANE3_OFFSET_EXT 0x3441 |
| #define EGL_DMA_BUF_PLANE3_PITCH_EXT 0x3442 |
| #define EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443 |
| #define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444 |
| #define EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445 |
| #define EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446 |
| #define EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447 |
| #define EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448 |
| #define EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449 |
| #define EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A |
| typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFFORMATSEXTPROC) (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats); |
| typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFMODIFIERSEXTPROC) (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers); |
| #endif |
| |
| #ifndef EGL_EXT_swap_buffers_with_damage |
| #define EGL_EXT_swap_buffers_with_damage 1 |
| typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects); |
| #endif /* EGL_EXT_swap_buffers_with_damage */ |
| |
| #ifndef EGL_MESA_configless_context |
| #define EGL_MESA_configless_context 1 |
| #define EGL_NO_CONFIG_MESA ((EGLConfig)0) |
| #endif |
| |
| #ifndef EGL_NO_CONFIG_KHR |
| #define EGL_NO_CONFIG_KHR ((EGLConfig)0) |
| #endif |
| |
| #ifndef EGL_EXT_platform_base |
| #define EGL_EXT_platform_base 1 |
| typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list); |
| typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list); |
| typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list); |
| #endif /* EGL_EXT_platform_base */ |
| |
| #ifndef EGL_PLATFORM_GBM_KHR |
| #define EGL_PLATFORM_GBM_KHR 0x31D7 |
| #endif |
| |
| #ifndef EGL_PLATFORM_WAYLAND_KHR |
| #define EGL_PLATFORM_WAYLAND_KHR 0x31D8 |
| #endif |
| |
| #ifndef EGL_PLATFORM_X11_KHR |
| #define EGL_PLATFORM_X11_KHR 0x31D5 |
| #endif |
| |
| #ifndef EGL_KHR_cl_event2 |
| #define EGL_KHR_cl_event2 1 |
| typedef void *EGLSyncKHR; |
| #endif /* EGL_KHR_cl_event2 */ |
| |
| #ifndef EGL_NO_SYNC_KHR |
| #define EGL_NO_SYNC_KHR ((EGLSyncKHR)0) |
| #endif |
| |
| #ifndef EGL_KHR_fence_sync |
| #define EGL_KHR_fence_sync 1 |
| typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); |
| typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync); |
| #endif /* EGL_KHR_fence_sync */ |
| |
| #ifndef EGL_ANDROID_native_fence_sync |
| #define EGL_ANDROID_native_fence_sync 1 |
| typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync); |
| #endif /* EGL_ANDROID_native_fence_sync */ |
| |
| #ifndef EGL_SYNC_NATIVE_FENCE_ANDROID |
| #define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144 |
| #endif |
| |
| #ifndef EGL_NO_NATIVE_FENCE_FD_ANDROID |
| #define EGL_NO_NATIVE_FENCE_FD_ANDROID -1 |
| #endif |
| |
| #else /* ENABLE_EGL */ |
| |
| /* EGL platform definition are keept to allow compositor-xx.c to build */ |
| #define EGL_PLATFORM_GBM_KHR 0x31D7 |
| #define EGL_PLATFORM_WAYLAND_KHR 0x31D8 |
| #define EGL_PLATFORM_X11_KHR 0x31D5 |
| |
| #endif /* ENABLE_EGL */ |
| |
| #endif |