1 // Copyright 2012 Intel Corporation 2 // 3 // All rights reserved. 4 // 5 // Redistribution and use in source and binary forms, with or without 6 // modification, are permitted provided that the following conditions are met: 7 // 8 // - Redistributions of source code must retain the above copyright notice, this 9 // list of conditions and the following disclaimer. 10 // 11 // - Redistributions in binary form must reproduce the above copyright notice, 12 // this list of conditions and the following disclaimer in the documentation 13 // and/or other materials provided with the distribution. 14 // 15 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 19 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 21 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 22 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 23 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 24 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 26 #pragma once 27 28 #include <stdbool.h> 29 #include <stdint.h> 30 31 #include <EGL/egl.h> 32 33 #include "wcore_display.h" 34 35 struct wcore_display; 36 37 enum wegl_supported_api { 38 WEGL_OPENGL_API = 1 << 0, 39 WEGL_OPENGL_ES_API = 1 << 1, 40 }; 41 42 struct wegl_display { 43 struct wcore_display wcore; 44 EGLDisplay egl; 45 enum wegl_supported_api api_mask; 46 bool EXT_create_context_robustness; 47 bool KHR_create_context; 48 bool EXT_image_dma_buf_import_modifiers; 49 EGLint major_version; 50 EGLint minor_version; 51 }; 52 53 DEFINE_CONTAINER_CAST_FUNC(wegl_display, 54 struct wegl_display, 55 struct wcore_display, 56 wcore) 57 58 bool 59 wegl_display_init(struct wegl_display *dpy, 60 struct wcore_platform *wc_plat, 61 void *native_display); 62 63 bool 64 wegl_display_teardown(struct wegl_display *dpy); 65 66 bool 67 wegl_display_supports_context_api(struct wcore_display *wc_dpy, 68 int32_t waffle_context_api); 69