Message ID | 1393428647-9217-1-git-send-email-valentin.popa@intel.com |
---|---|
State | New |
Headers | show |
diff --git a/meta/recipes-graphics/mesa/mesa/0003-EGL-Mutate-NativeDisplayType-depending-on-config.patch b/meta/recipes-graphics/mesa/mesa/0003-EGL-Mutate-NativeDisplayType-depending-on-config.patch deleted file mode 100644 index 8a83f4b..0000000 --- a/meta/recipes-graphics/mesa/mesa/0003-EGL-Mutate-NativeDisplayType-depending-on-config.patch +++ /dev/null @@ -1,359 +0,0 @@ -From 8d31ae23683394617c49301b039b3a069b9ea436 Mon Sep 17 00:00:00 2001 -From: Daniel Stone <daniel@fooishbar.org> -Date: Fri, 24 May 2013 17:20:27 +0100 -Subject: [PATCH 3/4] EGL: Mutate NativeDisplayType depending on config - -If we go through ./configure without enabling X11 anywhere, then set the -fallback types for EGL NativeDisplay and friends, rather than assuming -X11/Xlib. - -Upstream-Status: Backport (slightly different solution was applied in master -https://bugs.freedesktop.org/show_bug.cgi?id=64959) - -Signed-off-by: Daniel Stone <daniel@fooishbar.org> -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> ---- - configure.ac | 5 ++ - include/EGL/eglplatform.h | 146 ------------------------------------------- - include/EGL/eglplatform.h.in | 146 +++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 151 insertions(+), 146 deletions(-) - delete mode 100644 include/EGL/eglplatform.h - create mode 100644 include/EGL/eglplatform.h.in - -diff --git a/configure.ac b/configure.ac -index 67b8c40..afc3217 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1499,6 +1499,9 @@ EGL_PLATFORMS="$egl_platforms" - - if echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1; then - NEED_WINSYS_XLIB=yes -+ MESA_EGL_NO_X11_HEADERS=0 -+else -+ MESA_EGL_NO_X11_HEADERS=1 - fi - AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1) - AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1) -@@ -1512,6 +1515,7 @@ AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x") - AC_SUBST([EGL_NATIVE_PLATFORM]) - AC_SUBST([EGL_PLATFORMS]) - AC_SUBST([EGL_CFLAGS]) -+AC_SUBST([MESA_EGL_NO_X11_HEADERS]) - - AC_ARG_WITH([egl-driver-dir], - [AS_HELP_STRING([--with-egl-driver-dir=DIR], -@@ -1991,6 +1995,7 @@ CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS" - - dnl Substitute the config - AC_CONFIG_FILES([Makefile -+ include/EGL/eglplatform.h - src/Makefile - src/egl/Makefile - src/egl/drivers/Makefile -diff --git a/include/EGL/eglplatform.h b/include/EGL/eglplatform.h -deleted file mode 100644 -index 17fdc61..0000000 ---- a/include/EGL/eglplatform.h -+++ /dev/null -@@ -1,146 +0,0 @@ --#ifndef __eglplatform_h_ --#define __eglplatform_h_ -- --/* --** Copyright (c) 2007-2009 The Khronos Group Inc. --** --** Permission is hereby granted, free of charge, to any person obtaining a --** copy of this software and/or associated documentation files (the --** "Materials"), to deal in the Materials without restriction, including --** without limitation the rights to use, copy, modify, merge, publish, --** distribute, sublicense, and/or sell copies of the Materials, and to --** permit persons to whom the Materials are furnished to do so, subject to --** the following conditions: --** --** The above copyright notice and this permission notice shall be included --** in all copies or substantial portions of the Materials. --** --** THE MATERIALS ARE 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 --** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. --*/ -- --/* Platform-specific types and definitions for egl.h -- * $Revision: 12306 $ on $Date: 2010-08-25 09:51:28 -0700 (Wed, 25 Aug 2010) $ -- * -- * Adopters may modify khrplatform.h and this file to suit their platform. -- * You are encouraged to submit all modifications to the Khronos group so that -- * they can be included in future versions of this file. Please submit changes -- * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) -- * by filing a bug against product "EGL" component "Registry". -- */ -- --#include <KHR/khrplatform.h> -- --/* Macros used in EGL function prototype declarations. -- * -- * EGL functions should be prototyped as: -- * -- * EGLAPI return-type EGLAPIENTRY eglFunction(arguments); -- * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); -- * -- * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h -- */ -- --#ifndef EGLAPI --#define EGLAPI KHRONOS_APICALL --#endif -- --#ifndef EGLAPIENTRY --#define EGLAPIENTRY KHRONOS_APIENTRY --#endif --#define EGLAPIENTRYP EGLAPIENTRY* -- --/* The types NativeDisplayType, NativeWindowType, and NativePixmapType -- * are aliases of window-system-dependent types, such as X Display * or -- * Windows Device Context. They must be defined in platform-specific -- * code below. The EGL-prefixed versions of Native*Type are the same -- * types, renamed in EGL 1.3 so all types in the API start with "EGL". -- * -- * Khronos STRONGLY RECOMMENDS that you use the default definitions -- * provided below, since these changes affect both binary and source -- * portability of applications using EGL running on different EGL -- * implementations. -- */ -- --#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ --#ifndef WIN32_LEAN_AND_MEAN --#define WIN32_LEAN_AND_MEAN 1 --#endif --#include <windows.h> -- --typedef HDC EGLNativeDisplayType; --typedef HBITMAP EGLNativePixmapType; --typedef HWND EGLNativeWindowType; -- --#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ -- --typedef int EGLNativeDisplayType; --typedef void *EGLNativeWindowType; --typedef void *EGLNativePixmapType; -- --#elif defined(WL_EGL_PLATFORM) -- --typedef struct wl_display *EGLNativeDisplayType; --typedef struct wl_egl_pixmap *EGLNativePixmapType; --typedef struct wl_egl_window *EGLNativeWindowType; -- --#elif defined(__GBM__) -- --typedef struct gbm_device *EGLNativeDisplayType; --typedef struct gbm_bo *EGLNativePixmapType; --typedef void *EGLNativeWindowType; -- --#elif defined(ANDROID) /* Android */ -- --struct ANativeWindow; --struct egl_native_pixmap_t; -- --typedef struct ANativeWindow *EGLNativeWindowType; --typedef struct egl_native_pixmap_t *EGLNativePixmapType; --typedef void *EGLNativeDisplayType; -- --#elif defined(__unix__) -- --#ifdef MESA_EGL_NO_X11_HEADERS -- --typedef void *EGLNativeDisplayType; --typedef khronos_uint32_t EGLNativePixmapType; --typedef khronos_uint32_t EGLNativeWindowType; -- --#else -- --/* X11 (tentative) */ --#include <X11/Xlib.h> --#include <X11/Xutil.h> -- --typedef Display *EGLNativeDisplayType; --typedef Pixmap EGLNativePixmapType; --typedef Window EGLNativeWindowType; -- --#endif /* MESA_EGL_NO_X11_HEADERS */ -- --#else --#error "Platform not recognized" --#endif -- --/* EGL 1.2 types, renamed for consistency in EGL 1.3 */ --typedef EGLNativeDisplayType NativeDisplayType; --typedef EGLNativePixmapType NativePixmapType; --typedef EGLNativeWindowType NativeWindowType; -- -- --/* Define EGLint. This must be a signed integral type large enough to contain -- * all legal attribute names and values passed into and out of EGL, whether -- * their type is boolean, bitmask, enumerant (symbolic constant), integer, -- * handle, or other. While in general a 32-bit integer will suffice, if -- * handles are 64 bit types, then EGLint should be defined as a signed 64-bit -- * integer type. -- */ --typedef khronos_int32_t EGLint; -- --#endif /* __eglplatform_h */ -diff --git a/include/EGL/eglplatform.h.in b/include/EGL/eglplatform.h.in -new file mode 100644 -index 0000000..5126c92 ---- /dev/null -+++ b/include/EGL/eglplatform.h.in -@@ -0,0 +1,146 @@ -+#ifndef __eglplatform_h_ -+#define __eglplatform_h_ -+ -+/* -+** Copyright (c) 2007-2009 The Khronos Group Inc. -+** -+** Permission is hereby granted, free of charge, to any person obtaining a -+** copy of this software and/or associated documentation files (the -+** "Materials"), to deal in the Materials without restriction, including -+** without limitation the rights to use, copy, modify, merge, publish, -+** distribute, sublicense, and/or sell copies of the Materials, and to -+** permit persons to whom the Materials are furnished to do so, subject to -+** the following conditions: -+** -+** The above copyright notice and this permission notice shall be included -+** in all copies or substantial portions of the Materials. -+** -+** THE MATERIALS ARE 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 -+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -+*/ -+ -+/* Platform-specific types and definitions for egl.h -+ * $Revision: 12306 $ on $Date: 2010-08-25 09:51:28 -0700 (Wed, 25 Aug 2010) $ -+ * -+ * Adopters may modify khrplatform.h and this file to suit their platform. -+ * You are encouraged to submit all modifications to the Khronos group so that -+ * they can be included in future versions of this file. Please submit changes -+ * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) -+ * by filing a bug against product "EGL" component "Registry". -+ */ -+ -+#include <KHR/khrplatform.h> -+ -+/* Macros used in EGL function prototype declarations. -+ * -+ * EGL functions should be prototyped as: -+ * -+ * EGLAPI return-type EGLAPIENTRY eglFunction(arguments); -+ * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); -+ * -+ * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h -+ */ -+ -+#ifndef EGLAPI -+#define EGLAPI KHRONOS_APICALL -+#endif -+ -+#ifndef EGLAPIENTRY -+#define EGLAPIENTRY KHRONOS_APIENTRY -+#endif -+#define EGLAPIENTRYP EGLAPIENTRY* -+ -+/* The types NativeDisplayType, NativeWindowType, and NativePixmapType -+ * are aliases of window-system-dependent types, such as X Display * or -+ * Windows Device Context. They must be defined in platform-specific -+ * code below. The EGL-prefixed versions of Native*Type are the same -+ * types, renamed in EGL 1.3 so all types in the API start with "EGL". -+ * -+ * Khronos STRONGLY RECOMMENDS that you use the default definitions -+ * provided below, since these changes affect both binary and source -+ * portability of applications using EGL running on different EGL -+ * implementations. -+ */ -+ -+#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ -+#ifndef WIN32_LEAN_AND_MEAN -+#define WIN32_LEAN_AND_MEAN 1 -+#endif -+#include <windows.h> -+ -+typedef HDC EGLNativeDisplayType; -+typedef HBITMAP EGLNativePixmapType; -+typedef HWND EGLNativeWindowType; -+ -+#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ -+ -+typedef int EGLNativeDisplayType; -+typedef void *EGLNativeWindowType; -+typedef void *EGLNativePixmapType; -+ -+#elif defined(WL_EGL_PLATFORM) -+ -+typedef struct wl_display *EGLNativeDisplayType; -+typedef struct wl_egl_pixmap *EGLNativePixmapType; -+typedef struct wl_egl_window *EGLNativeWindowType; -+ -+#elif defined(__GBM__) -+ -+typedef struct gbm_device *EGLNativeDisplayType; -+typedef struct gbm_bo *EGLNativePixmapType; -+typedef void *EGLNativeWindowType; -+ -+#elif defined(ANDROID) /* Android */ -+ -+struct ANativeWindow; -+struct egl_native_pixmap_t; -+ -+typedef struct ANativeWindow *EGLNativeWindowType; -+typedef struct egl_native_pixmap_t *EGLNativePixmapType; -+typedef void *EGLNativeDisplayType; -+ -+#elif defined(__unix__) -+ -+#if @MESA_EGL_NO_X11_HEADERS@ -+ -+typedef void *EGLNativeDisplayType; -+typedef khronos_uint32_t EGLNativePixmapType; -+typedef khronos_uint32_t EGLNativeWindowType; -+ -+#else -+ -+/* X11 (tentative) */ -+#include <X11/Xlib.h> -+#include <X11/Xutil.h> -+ -+typedef Display *EGLNativeDisplayType; -+typedef Pixmap EGLNativePixmapType; -+typedef Window EGLNativeWindowType; -+ -+#endif /* MESA_EGL_NO_X11_HEADERS */ -+ -+#else -+#error "Platform not recognized" -+#endif -+ -+/* EGL 1.2 types, renamed for consistency in EGL 1.3 */ -+typedef EGLNativeDisplayType NativeDisplayType; -+typedef EGLNativePixmapType NativePixmapType; -+typedef EGLNativeWindowType NativeWindowType; -+ -+ -+/* Define EGLint. This must be a signed integral type large enough to contain -+ * all legal attribute names and values passed into and out of EGL, whether -+ * their type is boolean, bitmask, enumerant (symbolic constant), integer, -+ * handle, or other. While in general a 32-bit integer will suffice, if -+ * handles are 64 bit types, then EGLint should be defined as a signed 64-bit -+ * integer type. -+ */ -+typedef khronos_int32_t EGLint; -+ -+#endif /* __eglplatform_h */ --- -1.8.2.1 - diff --git a/meta/recipes-graphics/mesa/mesa_9.1.6.bb b/meta/recipes-graphics/mesa/mesa_9.1.6.bb index b55fa02..9a9d405 100644 --- a/meta/recipes-graphics/mesa/mesa_9.1.6.bb +++ b/meta/recipes-graphics/mesa/mesa_9.1.6.bb @@ -3,7 +3,6 @@ require ${BPN}.inc SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2 \ file://0001-configure-Avoid-use-of-AC_CHECK_FILE-for-cross-compi.patch \ file://0002-pipe_loader_sw-include-xlib_sw_winsys.h-only-when-HA.patch \ - file://0003-EGL-Mutate-NativeDisplayType-depending-on-config.patch \ file://0004-glsl-fix-builtin_compiler-cross-compilation.patch \ file://0005-llvmpipe-remove-the-power-of-two-sizeof-struct-cmd_b.patch \ file://0005-fix-out-of-tree-builds-gallium.patch \ @@ -14,3 +13,11 @@ SRC_URI[md5sum] = "443a2a352667294b53d56cb1a74114e9" SRC_URI[sha256sum] = "e632dff0acafad0a59dc208d16dedb37f7bd58f94c5d58c4b51912e41d005e3d" S = "${WORKDIR}/Mesa-${PV}" + +#because we cannot rely on the fact that all apps will use pkgconfig, +#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER +do_install_append() { + if ${@base_contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then + sed -i -e 's/^#ifdef MESA_EGL_NO_X11_HEADERS/#if ${@base_contains('DISTRO_FEATURES', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h + fi +} \ No newline at end of file diff --git a/meta/recipes-graphics/mesa/mesa_git.bb b/meta/recipes-graphics/mesa/mesa_git.bb index 6397ece..98cea2f 100644 --- a/meta/recipes-graphics/mesa/mesa_git.bb +++ b/meta/recipes-graphics/mesa/mesa_git.bb @@ -18,3 +18,11 @@ SRC_URI = "git://anongit.freedesktop.org/git/mesa/mesa \ " S = "${WORKDIR}/git" + +#because we cannot rely on the fact that all apps will use pkgconfig, +#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER +do_install_append() { + if ${@base_contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then + sed -i -e 's/^#ifdef MESA_EGL_NO_X11_HEADERS/#if ${@base_contains('DISTRO_FEATURES', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h + fi +}
On Wed, Feb 26, 2014 at 4:30 PM, Valentin Popa <valentin.popa@intel.com> wrote: > Avoid altering eglplatform.h from {top_srcdir}/include > using an alternative to > 0003-EGL-Mutate-NativeDisplayType-depending-on-config > patch. i don't think this is the right fix. i get the following build failures now: | i586-rdk-linux-libtool: compile: i586-rdk-linux-gcc -m32 -march=i586 --sysroot=/work/rdk-dora/build-qemux86/tmp/sysroots/qemux86 -DPACKAGE_NAME=\"Mesa\" -DPACKAGE_TARNAME=\"mesa\" -DPACKAGE_VERSION=\"9.1.6\" "-DPACKAGE_STRING=\"Mesa 9.1.6\"" "-DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\"" -DPACKAGE_URL=\"\" -DPACKAGE=\"mesa\" -DVERSION=\"9.1.6\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_CLOCK_GETTIME=1 -DHAVE_PTHREAD=1 -DHAVE_LIBEXPAT=1 -I. -I/work/rdk-dora/build-qemux86/tmp/work/i586-rdk-linux/mesa/2_9.1.6-r0/Mesa-9.1.6/src/egl/main -I/work/rdk-dora/build-qemux86/tmp/work/i586-rdk-linux/mesa/2_9.1.6-r0/Mesa-9.1.6/include -I../../../include -I/work/rdk-dora/build-qemux86/tmp/work/i586-rdk-linux/mesa/2_9.1.6-r0/Mesa-9.1.6/src/gbm/main -D_GNU_SOURCE -DHAVE_PTHREAD -DHAVE_DLOPEN -DHAVE_POSIX_MEMALIGN -DIN_DRI_DRIVER -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DHAVE_ALIAS -DHAVE_MINCORE -DHAVE_LIBUDEV -DHAVE_LLVM=0x0303 -D_EGL_NATIVE_PLATFORM=_EGL_PLATFORM_DRM -D_EGL_DRIVER_SEARCH_DIR=\"/usr/lib/egl\" -D_EGL_OS_UNIX=1 -DHAVE_DRM_PLATFORM -DHAVE_FBDEV_PLATFORM -D_EGL_BUILT_IN_DRIVER_DRI2 -DHAVE_XCB_DRI2 -O2 -pipe -g -feliminate-unused-debug-types -fno-omit-frame-pointer -Wall -std=c99 -Werror=implicit-function-declaration -Werror=missing-prototypes -fno-strict-aliasing -fno-builtin-memcmp -c /work/rdk-dora/build-qemux86/tmp/work/i586-rdk-linux/mesa/2_9.1.6-r0/Mesa-9.1.6/src/egl/main/eglconfig.c -fPIC -DPIC -o .libs/eglconfig.o | make[3]: *** [eglapi.lo] Error 1 | In file included from /work/rdk-dora/build-qemux86/tmp/work/i586-rdk-linux/mesa/2_9.1.6-r0/Mesa-9.1.6/include/EGL/egl.h:36:0, | from /work/rdk-dora/build-qemux86/tmp/work/i586-rdk-linux/mesa/2_9.1.6-r0/Mesa-9.1.6/src/egl/main/egltypedefs.h:36, | from /work/rdk-dora/build-qemux86/tmp/work/i586-rdk-linux/mesa/2_9.1.6-r0/Mesa-9.1.6/src/egl/main/egllog.h:34, | from /work/rdk-dora/build-qemux86/tmp/work/i586-rdk-linux/mesa/2_9.1.6-r0/Mesa-9.1.6/src/egl/main/eglarray.c:32: | /work/rdk-dora/build-qemux86/tmp/work/i586-rdk-linux/mesa/2_9.1.6-r0/Mesa-9.1.6/include/EGL/eglplatform.h:118:22: fatal error: X11/Xlib.h: No such file or directory | #include <X11/Xlib.h> I am building with x11 removed from DISTRO_FEATURES, btw.
On 02/26/2014 05:30 PM, Valentin Popa wrote: > Avoid altering eglplatform.h from {top_srcdir}/include > using an alternative to > 0003-EGL-Mutate-NativeDisplayType-depending-on-config > patch. > > [YOCTO #5882] > Signed-off-by: Valentin Popa <valentin.popa@intel.com> > --- > ...ate-NativeDisplayType-depending-on-config.patch | 359 --------------------- > meta/recipes-graphics/mesa/mesa_9.1.6.bb | 9 +- > meta/recipes-graphics/mesa/mesa_git.bb | 8 + > 3 files changed, 16 insertions(+), 360 deletions(-) > delete mode 100644 meta/recipes-graphics/mesa/mesa/0003-EGL-Mutate-NativeDisplayType-depending-on-config.patch > > diff --git a/meta/recipes-graphics/mesa/mesa/0003-EGL-Mutate-NativeDisplayType-depending-on-config.patch b/meta/recipes-graphics/mesa/mesa/0003-EGL-Mutate-NativeDisplayType-depending-on-config.patch > deleted file mode 100644 > index 8a83f4b..0000000 > --- a/meta/recipes-graphics/mesa/mesa/0003-EGL-Mutate-NativeDisplayType-depending-on-config.patch > +++ /dev/null > @@ -1,359 +0,0 @@ > -From 8d31ae23683394617c49301b039b3a069b9ea436 Mon Sep 17 00:00:00 2001 > -From: Daniel Stone <daniel@fooishbar.org> > -Date: Fri, 24 May 2013 17:20:27 +0100 > -Subject: [PATCH 3/4] EGL: Mutate NativeDisplayType depending on config > - > -If we go through ./configure without enabling X11 anywhere, then set the > -fallback types for EGL NativeDisplay and friends, rather than assuming > -X11/Xlib. > - > -Upstream-Status: Backport (slightly different solution was applied in master > -https://bugs.freedesktop.org/show_bug.cgi?id=64959) > - > -Signed-off-by: Daniel Stone <daniel@fooishbar.org> > -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> > ---- > - configure.ac | 5 ++ > - include/EGL/eglplatform.h | 146 ------------------------------------------- > - include/EGL/eglplatform.h.in | 146 +++++++++++++++++++++++++++++++++++++++++++ > - 3 files changed, 151 insertions(+), 146 deletions(-) > - delete mode 100644 include/EGL/eglplatform.h > - create mode 100644 include/EGL/eglplatform.h.in > - > -diff --git a/configure.ac b/configure.ac > -index 67b8c40..afc3217 100644 > ---- a/configure.ac > -+++ b/configure.ac > -@@ -1499,6 +1499,9 @@ EGL_PLATFORMS="$egl_platforms" > - > - if echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1; then > - NEED_WINSYS_XLIB=yes > -+ MESA_EGL_NO_X11_HEADERS=0 > -+else > -+ MESA_EGL_NO_X11_HEADERS=1 > - fi > - AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1) > - AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1) > -@@ -1512,6 +1515,7 @@ AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x") > - AC_SUBST([EGL_NATIVE_PLATFORM]) > - AC_SUBST([EGL_PLATFORMS]) > - AC_SUBST([EGL_CFLAGS]) > -+AC_SUBST([MESA_EGL_NO_X11_HEADERS]) > - > - AC_ARG_WITH([egl-driver-dir], > - [AS_HELP_STRING([--with-egl-driver-dir=DIR], > -@@ -1991,6 +1995,7 @@ CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS" > - > - dnl Substitute the config > - AC_CONFIG_FILES([Makefile > -+ include/EGL/eglplatform.h > - src/Makefile > - src/egl/Makefile > - src/egl/drivers/Makefile > -diff --git a/include/EGL/eglplatform.h b/include/EGL/eglplatform.h > -deleted file mode 100644 > -index 17fdc61..0000000 > ---- a/include/EGL/eglplatform.h > -+++ /dev/null > -@@ -1,146 +0,0 @@ > --#ifndef __eglplatform_h_ > --#define __eglplatform_h_ > -- > --/* > --** Copyright (c) 2007-2009 The Khronos Group Inc. > --** > --** Permission is hereby granted, free of charge, to any person obtaining a > --** copy of this software and/or associated documentation files (the > --** "Materials"), to deal in the Materials without restriction, including > --** without limitation the rights to use, copy, modify, merge, publish, > --** distribute, sublicense, and/or sell copies of the Materials, and to > --** permit persons to whom the Materials are furnished to do so, subject to > --** the following conditions: > --** > --** The above copyright notice and this permission notice shall be included > --** in all copies or substantial portions of the Materials. > --** > --** THE MATERIALS ARE 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 > --** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. > --*/ > -- > --/* Platform-specific types and definitions for egl.h > -- * $Revision: 12306 $ on $Date: 2010-08-25 09:51:28 -0700 (Wed, 25 Aug 2010) $ > -- * > -- * Adopters may modify khrplatform.h and this file to suit their platform. > -- * You are encouraged to submit all modifications to the Khronos group so that > -- * they can be included in future versions of this file. Please submit changes > -- * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) > -- * by filing a bug against product "EGL" component "Registry". > -- */ > -- > --#include <KHR/khrplatform.h> > -- > --/* Macros used in EGL function prototype declarations. > -- * > -- * EGL functions should be prototyped as: > -- * > -- * EGLAPI return-type EGLAPIENTRY eglFunction(arguments); > -- * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); > -- * > -- * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h > -- */ > -- > --#ifndef EGLAPI > --#define EGLAPI KHRONOS_APICALL > --#endif > -- > --#ifndef EGLAPIENTRY > --#define EGLAPIENTRY KHRONOS_APIENTRY > --#endif > --#define EGLAPIENTRYP EGLAPIENTRY* > -- > --/* The types NativeDisplayType, NativeWindowType, and NativePixmapType > -- * are aliases of window-system-dependent types, such as X Display * or > -- * Windows Device Context. They must be defined in platform-specific > -- * code below. The EGL-prefixed versions of Native*Type are the same > -- * types, renamed in EGL 1.3 so all types in the API start with "EGL". > -- * > -- * Khronos STRONGLY RECOMMENDS that you use the default definitions > -- * provided below, since these changes affect both binary and source > -- * portability of applications using EGL running on different EGL > -- * implementations. > -- */ > -- > --#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ > --#ifndef WIN32_LEAN_AND_MEAN > --#define WIN32_LEAN_AND_MEAN 1 > --#endif > --#include <windows.h> > -- > --typedef HDC EGLNativeDisplayType; > --typedef HBITMAP EGLNativePixmapType; > --typedef HWND EGLNativeWindowType; > -- > --#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ > -- > --typedef int EGLNativeDisplayType; > --typedef void *EGLNativeWindowType; > --typedef void *EGLNativePixmapType; > -- > --#elif defined(WL_EGL_PLATFORM) > -- > --typedef struct wl_display *EGLNativeDisplayType; > --typedef struct wl_egl_pixmap *EGLNativePixmapType; > --typedef struct wl_egl_window *EGLNativeWindowType; > -- > --#elif defined(__GBM__) > -- > --typedef struct gbm_device *EGLNativeDisplayType; > --typedef struct gbm_bo *EGLNativePixmapType; > --typedef void *EGLNativeWindowType; > -- > --#elif defined(ANDROID) /* Android */ > -- > --struct ANativeWindow; > --struct egl_native_pixmap_t; > -- > --typedef struct ANativeWindow *EGLNativeWindowType; > --typedef struct egl_native_pixmap_t *EGLNativePixmapType; > --typedef void *EGLNativeDisplayType; > -- > --#elif defined(__unix__) > -- > --#ifdef MESA_EGL_NO_X11_HEADERS > -- > --typedef void *EGLNativeDisplayType; > --typedef khronos_uint32_t EGLNativePixmapType; > --typedef khronos_uint32_t EGLNativeWindowType; > -- > --#else > -- > --/* X11 (tentative) */ > --#include <X11/Xlib.h> > --#include <X11/Xutil.h> > -- > --typedef Display *EGLNativeDisplayType; > --typedef Pixmap EGLNativePixmapType; > --typedef Window EGLNativeWindowType; > -- > --#endif /* MESA_EGL_NO_X11_HEADERS */ > -- > --#else > --#error "Platform not recognized" > --#endif > -- > --/* EGL 1.2 types, renamed for consistency in EGL 1.3 */ > --typedef EGLNativeDisplayType NativeDisplayType; > --typedef EGLNativePixmapType NativePixmapType; > --typedef EGLNativeWindowType NativeWindowType; > -- > -- > --/* Define EGLint. This must be a signed integral type large enough to contain > -- * all legal attribute names and values passed into and out of EGL, whether > -- * their type is boolean, bitmask, enumerant (symbolic constant), integer, > -- * handle, or other. While in general a 32-bit integer will suffice, if > -- * handles are 64 bit types, then EGLint should be defined as a signed 64-bit > -- * integer type. > -- */ > --typedef khronos_int32_t EGLint; > -- > --#endif /* __eglplatform_h */ > -diff --git a/include/EGL/eglplatform.h.in b/include/EGL/eglplatform.h.in > -new file mode 100644 > -index 0000000..5126c92 > ---- /dev/null > -+++ b/include/EGL/eglplatform.h.in > -@@ -0,0 +1,146 @@ > -+#ifndef __eglplatform_h_ > -+#define __eglplatform_h_ > -+ > -+/* > -+** Copyright (c) 2007-2009 The Khronos Group Inc. > -+** > -+** Permission is hereby granted, free of charge, to any person obtaining a > -+** copy of this software and/or associated documentation files (the > -+** "Materials"), to deal in the Materials without restriction, including > -+** without limitation the rights to use, copy, modify, merge, publish, > -+** distribute, sublicense, and/or sell copies of the Materials, and to > -+** permit persons to whom the Materials are furnished to do so, subject to > -+** the following conditions: > -+** > -+** The above copyright notice and this permission notice shall be included > -+** in all copies or substantial portions of the Materials. > -+** > -+** THE MATERIALS ARE 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 > -+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. > -+*/ > -+ > -+/* Platform-specific types and definitions for egl.h > -+ * $Revision: 12306 $ on $Date: 2010-08-25 09:51:28 -0700 (Wed, 25 Aug 2010) $ > -+ * > -+ * Adopters may modify khrplatform.h and this file to suit their platform. > -+ * You are encouraged to submit all modifications to the Khronos group so that > -+ * they can be included in future versions of this file. Please submit changes > -+ * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) > -+ * by filing a bug against product "EGL" component "Registry". > -+ */ > -+ > -+#include <KHR/khrplatform.h> > -+ > -+/* Macros used in EGL function prototype declarations. > -+ * > -+ * EGL functions should be prototyped as: > -+ * > -+ * EGLAPI return-type EGLAPIENTRY eglFunction(arguments); > -+ * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); > -+ * > -+ * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h > -+ */ > -+ > -+#ifndef EGLAPI > -+#define EGLAPI KHRONOS_APICALL > -+#endif > -+ > -+#ifndef EGLAPIENTRY > -+#define EGLAPIENTRY KHRONOS_APIENTRY > -+#endif > -+#define EGLAPIENTRYP EGLAPIENTRY* > -+ > -+/* The types NativeDisplayType, NativeWindowType, and NativePixmapType > -+ * are aliases of window-system-dependent types, such as X Display * or > -+ * Windows Device Context. They must be defined in platform-specific > -+ * code below. The EGL-prefixed versions of Native*Type are the same > -+ * types, renamed in EGL 1.3 so all types in the API start with "EGL". > -+ * > -+ * Khronos STRONGLY RECOMMENDS that you use the default definitions > -+ * provided below, since these changes affect both binary and source > -+ * portability of applications using EGL running on different EGL > -+ * implementations. > -+ */ > -+ > -+#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ > -+#ifndef WIN32_LEAN_AND_MEAN > -+#define WIN32_LEAN_AND_MEAN 1 > -+#endif > -+#include <windows.h> > -+ > -+typedef HDC EGLNativeDisplayType; > -+typedef HBITMAP EGLNativePixmapType; > -+typedef HWND EGLNativeWindowType; > -+ > -+#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ > -+ > -+typedef int EGLNativeDisplayType; > -+typedef void *EGLNativeWindowType; > -+typedef void *EGLNativePixmapType; > -+ > -+#elif defined(WL_EGL_PLATFORM) > -+ > -+typedef struct wl_display *EGLNativeDisplayType; > -+typedef struct wl_egl_pixmap *EGLNativePixmapType; > -+typedef struct wl_egl_window *EGLNativeWindowType; > -+ > -+#elif defined(__GBM__) > -+ > -+typedef struct gbm_device *EGLNativeDisplayType; > -+typedef struct gbm_bo *EGLNativePixmapType; > -+typedef void *EGLNativeWindowType; > -+ > -+#elif defined(ANDROID) /* Android */ > -+ > -+struct ANativeWindow; > -+struct egl_native_pixmap_t; > -+ > -+typedef struct ANativeWindow *EGLNativeWindowType; > -+typedef struct egl_native_pixmap_t *EGLNativePixmapType; > -+typedef void *EGLNativeDisplayType; > -+ > -+#elif defined(__unix__) > -+ > -+#if @MESA_EGL_NO_X11_HEADERS@ > -+ > -+typedef void *EGLNativeDisplayType; > -+typedef khronos_uint32_t EGLNativePixmapType; > -+typedef khronos_uint32_t EGLNativeWindowType; > -+ > -+#else > -+ > -+/* X11 (tentative) */ > -+#include <X11/Xlib.h> > -+#include <X11/Xutil.h> > -+ > -+typedef Display *EGLNativeDisplayType; > -+typedef Pixmap EGLNativePixmapType; > -+typedef Window EGLNativeWindowType; > -+ > -+#endif /* MESA_EGL_NO_X11_HEADERS */ > -+ > -+#else > -+#error "Platform not recognized" > -+#endif > -+ > -+/* EGL 1.2 types, renamed for consistency in EGL 1.3 */ > -+typedef EGLNativeDisplayType NativeDisplayType; > -+typedef EGLNativePixmapType NativePixmapType; > -+typedef EGLNativeWindowType NativeWindowType; > -+ > -+ > -+/* Define EGLint. This must be a signed integral type large enough to contain > -+ * all legal attribute names and values passed into and out of EGL, whether > -+ * their type is boolean, bitmask, enumerant (symbolic constant), integer, > -+ * handle, or other. While in general a 32-bit integer will suffice, if > -+ * handles are 64 bit types, then EGLint should be defined as a signed 64-bit > -+ * integer type. > -+ */ > -+typedef khronos_int32_t EGLint; > -+ > -+#endif /* __eglplatform_h */ > --- > -1.8.2.1 > - > diff --git a/meta/recipes-graphics/mesa/mesa_9.1.6.bb b/meta/recipes-graphics/mesa/mesa_9.1.6.bb > index b55fa02..9a9d405 100644 > --- a/meta/recipes-graphics/mesa/mesa_9.1.6.bb > +++ b/meta/recipes-graphics/mesa/mesa_9.1.6.bb > @@ -3,7 +3,6 @@ require ${BPN}.inc > SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2 \ > file://0001-configure-Avoid-use-of-AC_CHECK_FILE-for-cross-compi.patch \ > file://0002-pipe_loader_sw-include-xlib_sw_winsys.h-only-when-HA.patch \ > - file://0003-EGL-Mutate-NativeDisplayType-depending-on-config.patch \ > file://0004-glsl-fix-builtin_compiler-cross-compilation.patch \ > file://0005-llvmpipe-remove-the-power-of-two-sizeof-struct-cmd_b.patch \ > file://0005-fix-out-of-tree-builds-gallium.patch \ > @@ -14,3 +13,11 @@ SRC_URI[md5sum] = "443a2a352667294b53d56cb1a74114e9" > SRC_URI[sha256sum] = "e632dff0acafad0a59dc208d16dedb37f7bd58f94c5d58c4b51912e41d005e3d" > > S = "${WORKDIR}/Mesa-${PV}" > + > +#because we cannot rely on the fact that all apps will use pkgconfig, > +#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER > +do_install_append() { > + if ${@base_contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then > + sed -i -e 's/^#ifdef MESA_EGL_NO_X11_HEADERS/#if ${@base_contains('DISTRO_FEATURES', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h > + fi > +} > \ No newline at end of file > diff --git a/meta/recipes-graphics/mesa/mesa_git.bb b/meta/recipes-graphics/mesa/mesa_git.bb > index 6397ece..98cea2f 100644 > --- a/meta/recipes-graphics/mesa/mesa_git.bb > +++ b/meta/recipes-graphics/mesa/mesa_git.bb > @@ -18,3 +18,11 @@ SRC_URI = "git://anongit.freedesktop.org/git/mesa/mesa \ > " > > S = "${WORKDIR}/git" > + > +#because we cannot rely on the fact that all apps will use pkgconfig, > +#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER > +do_install_append() { > + if ${@base_contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then > + sed -i -e 's/^#ifdef MESA_EGL_NO_X11_HEADERS/#if ${@base_contains('DISTRO_FEATURES', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h > + fi > +} Ignore this please, I need also to delete the reference to the removed patch in mesa_git.bb .
Avoid altering eglplatform.h from {top_srcdir}/include using an alternative to 0003-EGL-Mutate-NativeDisplayType-depending-on-config patch. [YOCTO #5882] Signed-off-by: Valentin Popa <valentin.popa@intel.com> --- ...ate-NativeDisplayType-depending-on-config.patch | 359 --------------------- meta/recipes-graphics/mesa/mesa_9.1.6.bb | 9 +- meta/recipes-graphics/mesa/mesa_git.bb | 8 + 3 files changed, 16 insertions(+), 360 deletions(-) delete mode 100644 meta/recipes-graphics/mesa/mesa/0003-EGL-Mutate-NativeDisplayType-depending-on-config.patch