From 616ee21367fbc80d5839ac2441dba41be0f53f35 Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Wed, 3 Jul 2013 12:27:18 +0300 Subject: mesa: recipe for mesa 9.1.3 This is based on recipes on upstream oe-core, but modified to build only egl/fbdev platform with gallium llvmpipe driver. Change-Id: I5105fb8ca7cc3c3fc2c007c5f058cdaf67da4302 Reviewed-by: Samuli Piippo --- ...void-use-of-AC_CHECK_FILE-for-cross-compi.patch | 65 ++++ ...0001-fix-xlib-dependency-from-pipe-loader.patch | 26 ++ ...move-the-power-of-two-sizeof-struct-cmd_b.patch | 42 +++ ...ate-NativeDisplayType-depending-on-config.patch | 358 +++++++++++++++++++++ recipes/mesa/mesa/fix-glsl-cross.patch | 43 +++ recipes/mesa/mesa/glapi.patch | 109 +++++++ recipes/mesa/mesa_9.1.3.bb | 117 +++++++ 7 files changed, 760 insertions(+) create mode 100644 recipes/mesa/mesa/0001-configure-Avoid-use-of-AC_CHECK_FILE-for-cross-compi.patch create mode 100644 recipes/mesa/mesa/0001-fix-xlib-dependency-from-pipe-loader.patch create mode 100644 recipes/mesa/mesa/0001-llvmpipe-remove-the-power-of-two-sizeof-struct-cmd_b.patch create mode 100644 recipes/mesa/mesa/EGL-Mutate-NativeDisplayType-depending-on-config.patch create mode 100644 recipes/mesa/mesa/fix-glsl-cross.patch create mode 100644 recipes/mesa/mesa/glapi.patch create mode 100644 recipes/mesa/mesa_9.1.3.bb diff --git a/recipes/mesa/mesa/0001-configure-Avoid-use-of-AC_CHECK_FILE-for-cross-compi.patch b/recipes/mesa/mesa/0001-configure-Avoid-use-of-AC_CHECK_FILE-for-cross-compi.patch new file mode 100644 index 0000000..9f7002a --- /dev/null +++ b/recipes/mesa/mesa/0001-configure-Avoid-use-of-AC_CHECK_FILE-for-cross-compi.patch @@ -0,0 +1,65 @@ +From 877b8ea9a79d1d51f8e6b032801731538590d39e Mon Sep 17 00:00:00 2001 +From: Jonathan Liu +Date: Tue, 4 Jun 2013 06:04:44 -0700 +Subject: [PATCH] configure: Avoid use of AC_CHECK_FILE for cross compiling + +The AC_CHECK_FILE macro can't be used for cross compiling as it will +result in "error: cannot check for file existence when cross compiling". +Replace it with the AS_IF macro. + +Upstream-Status: Submitted +http://lists.freedesktop.org/archives/mesa-dev/2013-June/040168.html + +Signed-off-by: Jonathan Liu +Signed-off-by: Martin Jansa +--- + configure.ac | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 36065f1..2b4a374 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1694,8 +1694,8 @@ if test "x$enable_gallium_llvm" = xyes; then + CLANG_LIBDIR=${LLVM_LIBDIR} + fi + CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION} +- AC_CHECK_FILE("$CLANG_RESOURCE_DIR/include/stddef.h",, +- AC_MSG_ERROR([Could not find clang internal header stddef.h in $CLANG_RESOURCE_DIR Use --with-clang-libdir to specify the correct path to the clang libraries.])) ++ AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"], ++ [AC_MSG_ERROR([Could not find clang internal header stddef.h in $CLANG_RESOURCE_DIR Use --with-clang-libdir to specify the correct path to the clang libraries.])]) + fi + else + MESA_LLVM=0 +@@ -1912,7 +1912,7 @@ if test "x$MESA_LLVM" != x0; then + if test "x$with_llvm_shared_libs" = xyes; then + dnl We can't use $LLVM_VERSION because it has 'svn' stripped out, + LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version` +- AC_CHECK_FILE("$LLVM_LIBDIR/lib$LLVM_SO_NAME.so", llvm_have_one_so=yes,) ++ AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.so"], [llvm_have_one_so=yes]) + + if test "x$llvm_have_one_so" = xyes; then + dnl LLVM was built using auto*, so there is only one shared object. +@@ -1920,8 +1920,8 @@ if test "x$MESA_LLVM" != x0; then + else + dnl If LLVM was built with CMake, there will be one shared object per + dnl component. +- AC_CHECK_FILE("$LLVM_LIBDIR/libLLVMTarget.so",, +- AC_MSG_ERROR([Could not find llvm shared libraries: ++ AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.so"], ++ [AC_MSG_ERROR([Could not find llvm shared libraries: + Please make sure you have built llvm with the --enable-shared option + and that your llvm libraries are installed in $LLVM_LIBDIR + If you have installed your llvm libraries to a different directory you +@@ -1932,7 +1932,7 @@ if test "x$MESA_LLVM" != x0; then + --enable-opencl + If you do not want to build with llvm shared libraries and instead want to + use llvm static libraries then remove these options from your configure +- invocation and reconfigure.])) ++ invocation and reconfigure.])]) + + dnl We don't need to update LLVM_LIBS in this case because the LLVM + dnl install uses a shared object for each compoenent and we have +-- +1.8.2.1 + diff --git a/recipes/mesa/mesa/0001-fix-xlib-dependency-from-pipe-loader.patch b/recipes/mesa/mesa/0001-fix-xlib-dependency-from-pipe-loader.patch new file mode 100644 index 0000000..a9f2394 --- /dev/null +++ b/recipes/mesa/mesa/0001-fix-xlib-dependency-from-pipe-loader.patch @@ -0,0 +1,26 @@ +From 17d94fa96f095571651f0260378785c2a801ff16 Mon Sep 17 00:00:00 2001 +From: Samuli Piippo +Date: Thu, 27 Jun 2013 14:49:54 +0300 +Subject: [PATCH] fix xlib dependency from pipe-loader + +--- + src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c +index c2b78c6..8c59c83 100644 +--- a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c ++++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c +@@ -31,7 +31,9 @@ + #include "util/u_dl.h" + #include "sw/null/null_sw_winsys.h" + #include "target-helpers/inline_sw_helper.h" ++#ifdef X11 + #include "state_tracker/xlib_sw_winsys.h" ++#endif + + struct pipe_loader_sw_device { + struct pipe_loader_device base; +-- +1.7.10.4 + diff --git a/recipes/mesa/mesa/0001-llvmpipe-remove-the-power-of-two-sizeof-struct-cmd_b.patch b/recipes/mesa/mesa/0001-llvmpipe-remove-the-power-of-two-sizeof-struct-cmd_b.patch new file mode 100644 index 0000000..b74fddc --- /dev/null +++ b/recipes/mesa/mesa/0001-llvmpipe-remove-the-power-of-two-sizeof-struct-cmd_b.patch @@ -0,0 +1,42 @@ +From 9915636fb8afe75ee2e8e013e4f495a4cb937afb Mon Sep 17 00:00:00 2001 +From: Brian Paul +Date: Wed, 6 Mar 2013 16:57:20 -0700 +Subject: [PATCH] llvmpipe: remove the power of two sizeof(struct cmd_block) + assertion +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It fails on 32-bit systems (I only tested on 64-bit). Power of two +size isn't required, so just remove the assertion. + +Reviewed-by: José Fonseca + +Upstream-Status: Backport +http://cgit.freedesktop.org/mesa/mesa/commit/?id=9915636fb8afe75ee2e8e013e4f495a4cb937afb + +--- + src/gallium/drivers/llvmpipe/lp_scene.c | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/src/gallium/drivers/llvmpipe/lp_scene.c b/src/gallium/drivers/llvmpipe/lp_scene.c +index dd0943e..a0912eb 100644 +--- a/src/gallium/drivers/llvmpipe/lp_scene.c ++++ b/src/gallium/drivers/llvmpipe/lp_scene.c +@@ -76,13 +76,6 @@ lp_scene_create( struct pipe_context *pipe ) + assert(maxCommandBytes < LP_SCENE_MAX_SIZE); + /* We'll also need space for at least one other data block */ + assert(maxCommandPlusData <= LP_SCENE_MAX_SIZE); +- +- /* Ideally, the size of a cmd_block object will be a power of two +- * in order to avoid wasting space when we allocation them from +- * data blocks (which are power of two also). +- */ +- assert(sizeof(struct cmd_block) == +- util_next_power_of_two(sizeof(struct cmd_block))); + } + #endif + +-- +1.8.3 + diff --git a/recipes/mesa/mesa/EGL-Mutate-NativeDisplayType-depending-on-config.patch b/recipes/mesa/mesa/EGL-Mutate-NativeDisplayType-depending-on-config.patch new file mode 100644 index 0000000..47ba167 --- /dev/null +++ b/recipes/mesa/mesa/EGL-Mutate-NativeDisplayType-depending-on-config.patch @@ -0,0 +1,358 @@ +From d52a7ec5dcdf3936bd727b854831efb90acfd2ba Mon Sep 17 00:00:00 2001 +From: Daniel Stone +Date: Fri, 24 May 2013 17:20:27 +0100 +Subject: [PATCH] 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. + +Signed-off-by: Daniel Stone +--- + configure.ac | 9 +++ + include/EGL/eglplatform.h | 146 ------------------------------------------ + include/EGL/eglplatform.h.in | 146 ++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 155 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 4a98996..6fa77da 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1576,12 +1576,20 @@ fi + + EGL_PLATFORMS="$egl_platforms" + ++if echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1; then ++ 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) + AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1) + AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1) + AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1) + ++AC_SUBST([MESA_EGL_NO_X11_HEADERS]) ++ + AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x") + AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x") + +@@ -2053,6 +2061,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 +- +-/* 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 +- +-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 +-#include +- +-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 ++ ++/* 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 ++ ++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 ++#include ++ ++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.7.10.4 + diff --git a/recipes/mesa/mesa/fix-glsl-cross.patch b/recipes/mesa/mesa/fix-glsl-cross.patch new file mode 100644 index 0000000..34226ea --- /dev/null +++ b/recipes/mesa/mesa/fix-glsl-cross.patch @@ -0,0 +1,43 @@ +The target libtool is used when building host binaries, which predictably +doesn't work. + +Upstream-Status: Submitted (https://bugs.freedesktop.org/show_bug.cgi?id=44618) +Signed-off-by: Jonathan Liu +Signed-off-by: Ross Burton + +diff --git a/src/glsl/builtin_compiler/Makefile.am b/src/glsl/builtin_compiler/Makefile.am +index e11a17f..8ebe0a2 100644 +--- a/src/glsl/builtin_compiler/Makefile.am ++++ b/src/glsl/builtin_compiler/Makefile.am +@@ -64,6 +64,8 @@ AM_CXXFLAGS = $(AM_CFLAGS) + include ../Makefile.sources + + noinst_PROGRAMS = builtin_compiler ++ ++if !CROSS_COMPILING + noinst_LTLIBRARIES = libglslcore.la libglcpp.la + + libglcpp_la_SOURCES = \ +@@ -73,6 +75,7 @@ libglcpp_la_SOURCES = \ + libglslcore_la_SOURCES = \ + $(BUILTIN_COMPILER_GENERATED_CXX_FILES) \ + $(LIBGLSL_FILES) ++endif + + builtin_compiler_SOURCES = \ + $(top_srcdir)/src/mesa/main/hash_table.c \ +@@ -81,4 +84,14 @@ builtin_compiler_SOURCES = \ + $(top_srcdir)/src/mesa/program/symbol_table.c \ + $(BUILTIN_COMPILER_CXX_FILES) \ + $(GLSL_COMPILER_CXX_FILES) ++ ++if CROSS_COMPILING ++builtin_compiler_SOURCES += \ ++ $(LIBGLCPP_GENERATED_FILES) \ ++ $(LIBGLCPP_FILES) \ ++ $(BUILTIN_COMPILER_GENERATED_CXX_FILES) \ ++ $(LIBGLSL_FILES) ++builtin_compiler_CPPFLAGS = $(AM_CPPFLAGS) ++else + builtin_compiler_LDADD = libglslcore.la libglcpp.la ++endif diff --git a/recipes/mesa/mesa/glapi.patch b/recipes/mesa/mesa/glapi.patch new file mode 100644 index 0000000..74cac0b --- /dev/null +++ b/recipes/mesa/mesa/glapi.patch @@ -0,0 +1,109 @@ +From 5ea43e65498505fc5d11d63668cda165146eb55b Mon Sep 17 00:00:00 2001 +From: Andreas Boll +Date: Thu, 30 May 2013 11:32:43 +0000 +Subject: glapi: Add some missing static_dispatch="false" annotations to es_EXT.xml + +This fixes the following build errors on powerpc: + + CC glapi_dispatch.lo + In file included from glapi_dispatch.c:90:0: + ../../../../../src/mapi/glapi/glapitemp.h:1640:1: error: no previous + prototype for 'glReadBufferNV' [-Werror=missing-prototypes] + ../../../../../src/mapi/glapi/glapitemp.h:4198:1: error: no previous + prototype for 'glDrawBuffersNV' [-Werror=missing-prototypes] + ../../../../../src/mapi/glapi/glapitemp.h:6377:1: error: no previous + prototype for 'glFlushMappedBufferRangeEXT' + [-Werror=missing-prototypes] + ../../../../../src/mapi/glapi/glapitemp.h:6389:1: error: no previous + prototype for 'glMapBufferRangeEXT' [-Werror=missing-prototypes] + ../../../../../src/mapi/glapi/glapitemp.h:6401:1: error: no previous + prototype for 'glBindVertexArrayOES' [-Werror=missing-prototypes] + ../../../../../src/mapi/glapi/glapitemp.h:6413:1: error: no previous + prototype for 'glDeleteVertexArraysOES' [-Werror=missing-prototypes] + ../../../../../src/mapi/glapi/glapitemp.h:6433:1: error: no previous + prototype for 'glGenVertexArraysOES' [-Werror=missing-prototypes] + ../../../../../src/mapi/glapi/glapitemp.h:6445:1: error: no previous + prototype for 'glIsVertexArrayOES' [-Werror=missing-prototypes] + +NOTE: This is a candidate for the 9.0 and 9.1 branches. + +Reviewed-by: Maarten Lankhorst +Reviewed-by: Brian Paul +--- +diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml +index ff378ac..f412333 100644 +--- a/src/mapi/glapi/gen/es_EXT.xml ++++ b/src/mapi/glapi/gen/es_EXT.xml +@@ -689,22 +689,25 @@ + + + +- ++ + + + + ++ static_dispatch="false" es2="2.0"> + + + + +- ++ + + + + +- ++ + + + +@@ -779,7 +782,8 @@ + + + +- ++ + + + +@@ -787,7 +791,8 @@ + + + +- ++ + + + +@@ -815,8 +820,8 @@ + + + +- ++ + + + +@@ -825,7 +830,7 @@ + + + ++ static_dispatch="false" es1="1.0" es2="2.0"> + + + +-- +cgit v0.9.0.2-2-gbebe + diff --git a/recipes/mesa/mesa_9.1.3.bb b/recipes/mesa/mesa_9.1.3.bb new file mode 100644 index 0000000..26a2154 --- /dev/null +++ b/recipes/mesa/mesa_9.1.3.bb @@ -0,0 +1,117 @@ +SUMMARY = "A free implementation of the OpenGL API" +DESCRIPTION = "Mesa is an open-source implementation of the OpenGL specification - \ +a system for rendering interactive 3D graphics. \ +A variety of device drivers allows Mesa to be used in many different environments \ +ranging from software emulation to complete hardware acceleration for modern GPUs. \ +Mesa is used as part of the overall Direct Rendering Infrastructure and X.org \ +environment." + +HOMEPAGE = "http://mesa3d.org" +BUGTRACKER = "https://bugs.freedesktop.org" +SECTION = "x11" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://docs/license.html;md5=42d77d95cba529a3637129be87d6555d" + +INC_PR = "r9" +PE = "2" + +export WANT_LLVM_RELEASE = "3.2" + +DEPENDS = "expat makedepend-native flex-native bison-native llvm${WANT_LLVM_RELEASE}" + +PROVIDES = "virtual/libgl virtual/libgles1 virtual/libgles2 virtual/egl" + +inherit autotools pkgconfig pythonnative + +SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2 \ + file://EGL-Mutate-NativeDisplayType-depending-on-config.patch \ + file://fix-glsl-cross.patch \ + file://0001-configure-Avoid-use-of-AC_CHECK_FILE-for-cross-compi.patch \ + file://0001-llvmpipe-remove-the-power-of-two-sizeof-struct-cmd_b.patch \ + file://0001-fix-xlib-dependency-from-pipe-loader.patch \ + file://glapi.patch \ + " + +SRC_URI[md5sum] = "952ccd03547ed72333b64e1746cf8ada" +SRC_URI[sha256sum] = "8d5dac2202d0355bff5cfd183582ec8167d1d1227b7bb7a669acecbeaa52d766" + +S = "${WORKDIR}/Mesa-${PV}" + +EXTRA_OECONF = " \ + --enable-opengl \ + --enable-gles2 \ + --enable-egl --with-egl-platforms=fbdev \ + --enable-gallium --enable-gallium-llvm --enable-gallium-egl --with-llvm-shared-libs --with-gallium-drivers="swrast" \ + --enable-shared-glapi \ + --disable-glx \ + --enable-dri --with-dri-drivers="" \ + --disable-gles1 \ + --disable-gles3 \ + --disable-openvg \ + " + +# llvmpipe is slow if compiled with -fomit-frame-pointer (e.g. -O2) +FULL_OPTIMIZATION_append = " -fno-omit-frame-pointer" + +# Multiple virtual/gl providers being built breaks staging +EXCLUDE_FROM_WORLD = "1" + +# Remove the mesa dependency on mesa-dev, as mesa is empty +RDEPENDS_${PN}-dev = "" + +PACKAGES =+ "libegl-mesa libegl-mesa-dev \ + libglapi libglapi-dev \ + libgles2-mesa libgles2-mesa-dev \ + libegl-gallium \ + " + +do_install_append () { + # Drivers never need libtool .la files + rm -f ${D}${libdir}/egl/*.la + rm -f ${D}${libdir}/gallium-pipe/*.la +} + +# For the packages that make up the OpenGL interfaces, inject variables so that +# they don't get Debian-renamed (which would remove the -mesa suffix), and +# RPROVIDEs/RCONFLICTs on the generic libgl name. +python __anonymous() { + for p in (("libegl", "libegl1"), ("libgl", "libgl1"), + ("libgles1", "libglesv1-cm1"), ("libgles2", "libglesv2-2"), + ("libgles3",)): + fullp = p[0] + "-mesa" + pkgs = " ".join(p) + d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1") + d.appendVar("RREPLACES_" + fullp, pkgs) + d.appendVar("RPROVIDES_" + fullp, pkgs) + d.appendVar("RCONFLICTS_" + fullp, pkgs) + + # For -dev, the first element is both the Debian and original name + fullp += "-dev" + pkgs = p[0] + "-dev" + d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1") + d.appendVar("RREPLACES_" + fullp, pkgs) + d.appendVar("RPROVIDES_" + fullp, pkgs) + d.appendVar("RCONFLICTS_" + fullp, pkgs) +} + +python mesa_populate_packages() { + pipe_drivers_root = os.path.join(d.getVar('libdir', True), "gallium-pipe") + do_split_packages(d, pipe_drivers_root, '^pipe_(.*)\.so$', 'mesa-driver-pipe-%s', 'Mesa %s pipe driver', extra_depends='') +} + +PACKAGESPLITFUNCS_prepend = "mesa_populate_packages " + +PACKAGES_DYNAMIC += "^mesa-driver-.*" + +FILES_libegl-mesa = "${libdir}/libEGL.so.*" +FILES_libgles2-mesa = "${libdir}/libGLESv2.so.*" +FILES_libglapi = "${libdir}/libglapi.so.*" +FILES_libegl-gallium = "${libdir}/egl/egl_gallium.so* ${libdir}/egl/st_GL.so*" + +FILES_libegl-mesa-dev = "${libdir}/libEGL.* ${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc" +FILES_libglapi-dev = "${libdir}/libglapi.*" +FILES_libgles2-mesa-dev = "${libdir}/libGLESv2.* ${includedir}/GLES2 ${libdir}/pkgconfig/glesv2.pc" + +FILES_${PN}-dbg += "${libdir}/egl/.debug/* ${libdir}/gallium-pipe/.debug" + + -- cgit v1.2.3-54-g00ecf