* [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes
@ 2016-02-27 15:26 Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 01/23] userland: Upgrade to latest git master Khem Raj
` (23 more replies)
0 siblings, 24 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
This patchset has been growing for a while, Adds recipes for kenrel 4.4 and switches
to use kernel 4.4
Fixes userland to compile with clang
Upgrade userland to latest
Add option to support GPU_MEM_1024
Upgrade firmware to latest
Khem Raj (23):
userland: Upgrade to latest git master
userland: Fix build with clang compiler
userland: Add wayland support
weston: Enable rpi compositor backend
rpi-gpio: Upgrade to 0.6.1 and fix build with clang
eglinfo-x11,eglinfo-fb: Add EGLINFO_DEVICE via bbappends
python-rtimu: Fix build with musl
wiringPi: Fix build with musl
Delete rpc flushing of thread in glEGLImageTargetTexture2DOES
rpio: Include sys/types.h for caddr_t
userland: Define PROJECT_APIVER and rprovide libgles2 libgl
userland: Add wayland to deps if in DISTRO_FEATURES
userland: Fix build race with wayland support
gstreamer1.0-omx: Add raspberry pi optimization patches and config
options
weston: Specify egl and compositor options for rpi
gstreamer1.0-omx: Backports and fixes for smooth video playback
linux-raspberrypi: Upgrade 4.1 kernel to 4.1.17
firmware: Upgrade to latest stable 20160209
rpi-config: Upgrade to tip of tree to get GPU_MEM_1024
linux-raspberrypi: Add recipe for 4.4 release
userland: Upgrade to latest
linux-raspberrypi: Upgrade 4.4.1 -> 4.4.2
userland: Drop extern inline patches
README | 2 +
conf/machine/include/rpi-default-versions.inc | 2 +-
recipes-bsp/bootfiles/bcm2835-bootfiles.bb | 2 +-
recipes-bsp/bootfiles/rpi-config_git.bb | 5 +-
recipes-bsp/common/firmware.inc | 4 +-
...0001-include-asm-ioctl.h-for-ioctl-define.patch | 33 +
recipes-devtools/python/python-rtimu_git.bb | 4 +-
.../rpi-gpio/0001-Remove-nested-functions.patch | 294 +++
.../{rpi-gpio_0.5.11.bb => rpi-gpio_0.6.1.bb} | 6 +-
...-types.h-explicitly-for-getting-caddr_t-d.patch | 30 +
recipes-devtools/python/rpio_0.10.0.bb | 6 +-
...de-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch | 58 +
recipes-devtools/wiringPi/wiringpi_git.bb | 8 +-
recipes-graphics/eglinfo/eglinfo-fb_%.bbappend | 1 +
recipes-graphics/eglinfo/eglinfo-x11_%.bbappend | 1 +
.../userland/0001-fix-gcc-5.x-inlines.patch | 26 -
.../userland/userland/0002-fix-musl-build.patch | 22 -
.../0002-set-VMCS_INSTALL_PREFIX-to-usr.patch | 7 +-
...make-generate-and-install-pkgconfig-files.patch | 24 +-
.../0003-fix-alloc-size-uninitialized.patch | 13 -
...-applications-to-set-next-resource-handle.patch | 208 +++
...ayland-Add-support-for-the-Wayland-winsys.patch | 1880 ++++++++++++++++++++
.../0007-wayland-Add-Wayland-example.patch | 866 +++++++++
...-wayland-egl-Add-bcm_host-to-dependencies.patch | 28 +
...emove-faulty-assert-to-make-weston-happy-.patch | 29 +
...0-zero-out-wl-buffers-in-egl_surface_free.patch | 33 +
...011-initialize-front-back-wayland-buffers.patch | 34 +
.../userland/userland/0012-Remove-RPC_FLUSH.patch | 27 +
.../userland/0013-fix-cmake-dependency-race.patch | 78 +
.../0014-Fix-enum-conversion-warnings.patch | 99 ++
recipes-graphics/userland/userland_git.bb | 33 +-
recipes-graphics/wayland/weston_%.bbappend | 4 +
recipes-graphics/weston/weston_%.bbappend | 7 +
recipes-kernel/linux/linux-raspberrypi_4.1.bb | 4 +-
...raspberrypi_4.1.bb => linux-raspberrypi_4.4.bb} | 6 +-
.../gstreamer1.0-omx/0001-config-files-path.patch | 137 ++
...o-acquire-buffer-when-src-pad-isn-t-activ.patch | 47 +
.../0003-fix-decoder-flushing.patch | 15 +
.../0003-no-timeout-on-get-state.patch | 16 +
...erly-handle-drain-requests-while-flushing.patch | 69 +
...-gst_omx_video_dec_set_format-if-there-s-.patch | 30 +
.../gstreamer/gstreamer1.0-omx_%.bbappend | 22 +
42 files changed, 4114 insertions(+), 106 deletions(-)
create mode 100644 recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch
create mode 100644 recipes-devtools/python/rpi-gpio/0001-Remove-nested-functions.patch
rename recipes-devtools/python/{rpi-gpio_0.5.11.bb => rpi-gpio_0.6.1.bb} (70%)
create mode 100644 recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch
create mode 100644 recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch
create mode 100644 recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
create mode 100644 recipes-graphics/eglinfo/eglinfo-x11_%.bbappend
delete mode 100644 recipes-graphics/userland/userland/0001-fix-gcc-5.x-inlines.patch
delete mode 100644 recipes-graphics/userland/userland/0002-fix-musl-build.patch
delete mode 100644 recipes-graphics/userland/userland/0003-fix-alloc-size-uninitialized.patch
create mode 100644 recipes-graphics/userland/userland/0005-Allow-applications-to-set-next-resource-handle.patch
create mode 100644 recipes-graphics/userland/userland/0006-wayland-Add-support-for-the-Wayland-winsys.patch
create mode 100644 recipes-graphics/userland/userland/0007-wayland-Add-Wayland-example.patch
create mode 100644 recipes-graphics/userland/userland/0008-wayland-egl-Add-bcm_host-to-dependencies.patch
create mode 100644 recipes-graphics/userland/userland/0009-interface-remove-faulty-assert-to-make-weston-happy-.patch
create mode 100644 recipes-graphics/userland/userland/0010-zero-out-wl-buffers-in-egl_surface_free.patch
create mode 100644 recipes-graphics/userland/userland/0011-initialize-front-back-wayland-buffers.patch
create mode 100644 recipes-graphics/userland/userland/0012-Remove-RPC_FLUSH.patch
create mode 100644 recipes-graphics/userland/userland/0013-fix-cmake-dependency-race.patch
create mode 100644 recipes-graphics/userland/userland/0014-Fix-enum-conversion-warnings.patch
create mode 100644 recipes-graphics/wayland/weston_%.bbappend
create mode 100644 recipes-graphics/weston/weston_%.bbappend
copy recipes-kernel/linux/{linux-raspberrypi_4.1.bb => linux-raspberrypi_4.4.bb} (50%)
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0001-config-files-path.patch
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-fix-decoder-flushing.patch
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-no-timeout-on-get-state.patch
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0004-Properly-handle-drain-requests-while-flushing.patch
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend
--
1.9.1
^ permalink raw reply [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 01/23] userland: Upgrade to latest git master
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 02/23] userland: Fix build with clang compiler Khem Raj
` (22 subsequent siblings)
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
Drop upstreamed patches
0002-fix-musl-build.patch was partially upstreamed
git'ify the remaining patches
Change license field to BSD 3 clause, since thats what
the licence it with BCM and RPI Copyrights
Licence changed from Broadcom to Raspberry Pi Ltd
see commit 0863709b9fb90ee1204b7fe52f69535830d3c111
Author: popcornmix <popcornmix@gmail.com>
Date: Mon Feb 1 21:07:02 2016 +0000
Update copyright
diff --git a/LICENCE b/LICENCE
index 2582681..dea4c26 100644
--- a/LICENCE
+++ b/LICENCE
@@ -1,4 +1,5 @@
Copyright (c) 2012, Broadcom Europe Ltd
+Copyright (c) 2015, Raspberry Pi (Trading) Ltd
All rights reserved.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
...LINE_DECL-to-not-use-extern-inlines-in-de.patch | 45 ++++++++++++++++++++++
.../userland/0001-fix-gcc-5.x-inlines.patch | 26 -------------
.../userland/userland/0002-fix-musl-build.patch | 22 -----------
.../userland/0002-musl-inspired-fixed.patch | 29 ++++++++++++++
.../0003-fix-alloc-size-uninitialized.patch | 13 -------
...h => 0003-set-VMCS_INSTALL_PREFIX-to-usr.patch} | 7 ++--
...ake-generate-and-install-pkgconfig-files.patch} | 20 +++++-----
recipes-graphics/userland/userland_git.bb | 15 ++++----
8 files changed, 94 insertions(+), 83 deletions(-)
create mode 100644 recipes-graphics/userland/userland/0001-Fix-VCOS_INLINE_DECL-to-not-use-extern-inlines-in-de.patch
delete mode 100644 recipes-graphics/userland/userland/0001-fix-gcc-5.x-inlines.patch
delete mode 100644 recipes-graphics/userland/userland/0002-fix-musl-build.patch
create mode 100644 recipes-graphics/userland/userland/0002-musl-inspired-fixed.patch
delete mode 100644 recipes-graphics/userland/userland/0003-fix-alloc-size-uninitialized.patch
rename recipes-graphics/userland/userland/{0002-set-VMCS_INSTALL_PREFIX-to-usr.patch => 0003-set-VMCS_INSTALL_PREFIX-to-usr.patch} (85%)
rename recipes-graphics/userland/userland/{0003-cmake-generate-and-install-pkgconfig-files.patch => 0004-cmake-generate-and-install-pkgconfig-files.patch} (87%)
diff --git a/recipes-graphics/userland/userland/0001-Fix-VCOS_INLINE_DECL-to-not-use-extern-inlines-in-de.patch b/recipes-graphics/userland/userland/0001-Fix-VCOS_INLINE_DECL-to-not-use-extern-inlines-in-de.patch
new file mode 100644
index 0000000..4824d1a
--- /dev/null
+++ b/recipes-graphics/userland/userland/0001-Fix-VCOS_INLINE_DECL-to-not-use-extern-inlines-in-de.patch
@@ -0,0 +1,45 @@
+From d0b146e6571585989e7149a512533fcd6532545a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Feb 2016 11:00:25 -0800
+Subject: [PATCH 01/16] Fix VCOS_INLINE_DECL to not use extern inlines in
+ declarations
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/vcos/pthreads/vcos_platform_types.h | 2 +-
+ interface/vcos/vcos_types.h | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/interface/vcos/pthreads/vcos_platform_types.h b/interface/vcos/pthreads/vcos_platform_types.h
+index 17b422d..64fb381 100644
+--- a/interface/vcos/pthreads/vcos_platform_types.h
++++ b/interface/vcos/pthreads/vcos_platform_types.h
+@@ -61,7 +61,7 @@ vcos_pthreads_logging_assert(const char *file, const char *func, unsigned int li
+ #define VCOS_ASSERT_MSG(...) ((VCOS_ASSERT_LOGGING && !VCOS_ASSERT_LOGGING_DISABLE) ? vcos_pthreads_logging_assert(__FILE__, __func__, __LINE__, __VA_ARGS__) : (void)0)
+
+ #define VCOS_INLINE_BODIES
+-#define VCOS_INLINE_DECL extern __inline__
++#define VCOS_INLINE_DECL extern
+ #define VCOS_INLINE_IMPL static __inline__
+
+ #ifdef __cplusplus
+diff --git a/interface/vcos/vcos_types.h b/interface/vcos/vcos_types.h
+index 6feb4d2..e64fd99 100644
+--- a/interface/vcos/vcos_types.h
++++ b/interface/vcos/vcos_types.h
+@@ -121,10 +121,10 @@ typedef enum
+ #if defined(NDEBUG)
+
+ #ifdef __GNUC__
+-# define VCOS_INLINE_DECL extern __inline__
++# define VCOS_INLINE_DECL extern
+ # define VCOS_INLINE_IMPL static __inline__
+ #else
+-# define VCOS_INLINE_DECL static _VCOS_INLINE /* declare a func */
++# define VCOS_INLINE_DECL extern
+ # define VCOS_INLINE_IMPL static _VCOS_INLINE /* implement a func inline */
+ #endif
+
+--
+2.7.0
+
diff --git a/recipes-graphics/userland/userland/0001-fix-gcc-5.x-inlines.patch b/recipes-graphics/userland/userland/0001-fix-gcc-5.x-inlines.patch
deleted file mode 100644
index 57f3518..0000000
--- a/recipes-graphics/userland/userland/0001-fix-gcc-5.x-inlines.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- userland-fb11b39d97371c076eef7c85bbcab5733883a41e.orig/interface/vcos/vcos_types.h
-+++ userland-fb11b39d97371c076eef7c85bbcab5733883a41e/interface/vcos/vcos_types.h
-@@ -121,10 +121,10 @@
- #if defined(NDEBUG)
-
- #ifdef __GNUC__
--# define VCOS_INLINE_DECL extern __inline__
-+# define VCOS_INLINE_DECL extern
- # define VCOS_INLINE_IMPL static __inline__
- #else
--# define VCOS_INLINE_DECL static _VCOS_INLINE /* declare a func */
-+# define VCOS_INLINE_DECL extern
- # define VCOS_INLINE_IMPL static _VCOS_INLINE /* implement a func inline */
- #endif
-
---- userland-fb11b39d97371c076eef7c85bbcab5733883a41e.orig/interface/vcos/pthreads/vcos_platform_types.h
-+++ userland-fb11b39d97371c076eef7c85bbcab5733883a41e/interface/vcos/pthreads/vcos_platform_types.h
-@@ -61,7 +61,7 @@
- #define VCOS_ASSERT_MSG(...) ((VCOS_ASSERT_LOGGING && !VCOS_ASSERT_LOGGING_DISABLE) ? vcos_pthreads_logging_assert(__FILE__, __func__, __LINE__, __VA_ARGS__) : (void)0)
-
- #define VCOS_INLINE_BODIES
--#define VCOS_INLINE_DECL extern __inline__
-+#define VCOS_INLINE_DECL extern
- #define VCOS_INLINE_IMPL static __inline__
-
- #ifdef __cplusplus
diff --git a/recipes-graphics/userland/userland/0002-fix-musl-build.patch b/recipes-graphics/userland/userland/0002-fix-musl-build.patch
deleted file mode 100644
index 2fb11e7..0000000
--- a/recipes-graphics/userland/userland/0002-fix-musl-build.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- userland-d4aa617de3b196399bb8e2ce32e181768cb52179.orig/host_applications/linux/apps/raspicam/RaspiVidYUV.c
-+++ userland-d4aa617de3b196399bb8e2ce32e181768cb52179/host_applications/linux/apps/raspicam/RaspiVidYUV.c
-@@ -106,8 +106,6 @@
- /// Run/record forever
- #define WAIT_METHOD_FOREVER 4
-
--extern FILE *stderr, *stdout;
--
- int mmal_status_to_int(MMAL_STATUS_T status);
- static void signal_handler(int signal_number);
-
---- userland-d4aa617de3b196399bb8e2ce32e181768cb52179.orig/host_applications/linux/libs/debug_sym/debug_sym.c
-+++ userland-d4aa617de3b196399bb8e2ce32e181768cb52179/host_applications/linux/libs/debug_sym/debug_sym.c
-@@ -67,6 +67,8 @@
- # else
- # define PAGE_SIZE 4096
- # endif
-+#endif
-+#ifndef PAGE_MASK
- #define PAGE_MASK (~(PAGE_SIZE - 1))
- #endif
-
diff --git a/recipes-graphics/userland/userland/0002-musl-inspired-fixed.patch b/recipes-graphics/userland/userland/0002-musl-inspired-fixed.patch
new file mode 100644
index 0000000..bbb670d
--- /dev/null
+++ b/recipes-graphics/userland/userland/0002-musl-inspired-fixed.patch
@@ -0,0 +1,29 @@
+From 9856330f54c181e388df6f261c705e01500cf0bb Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Feb 2016 11:03:10 -0800
+Subject: [PATCH 02/16] musl inspired fixed
+
+stderr and stdout are not FILE pointers as per standards
+define PAGE_MASK if its not defined already
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ host_applications/linux/libs/debug_sym/debug_sym.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/host_applications/linux/libs/debug_sym/debug_sym.c b/host_applications/linux/libs/debug_sym/debug_sym.c
+index 8886f99..c7ace37 100755
+--- a/host_applications/linux/libs/debug_sym/debug_sym.c
++++ b/host_applications/linux/libs/debug_sym/debug_sym.c
+@@ -67,6 +67,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ # else
+ # define PAGE_SIZE 4096
+ # endif
++#endif
++#ifndef PAGE_MASK
+ #define PAGE_MASK (~(PAGE_SIZE - 1))
+ #endif
+
+--
+2.7.0
+
diff --git a/recipes-graphics/userland/userland/0003-fix-alloc-size-uninitialized.patch b/recipes-graphics/userland/userland/0003-fix-alloc-size-uninitialized.patch
deleted file mode 100644
index 7dd6436..0000000
--- a/recipes-graphics/userland/userland/0003-fix-alloc-size-uninitialized.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/host_applications/linux/apps/smem/smem.c b/host_applications/linux/apps/smem/smem.c
-index f780b79..618580e 100644
---- a/host_applications/linux/apps/smem/smem.c
-+++ b/host_applications/linux/apps/smem/smem.c
-@@ -192,7 +192,7 @@ int main( int argc, char **argv )
- int opt;
- int opt_alloc = 0;
- int opt_status = 0;
-- uint32_t alloc_size;
-+ uint32_t alloc_size = 0;
- int opt_pid = -1;
- VCSM_STATUS_T status_mode = VCSM_STATUS_NONE;
-
diff --git a/recipes-graphics/userland/userland/0002-set-VMCS_INSTALL_PREFIX-to-usr.patch b/recipes-graphics/userland/userland/0003-set-VMCS_INSTALL_PREFIX-to-usr.patch
similarity index 85%
rename from recipes-graphics/userland/userland/0002-set-VMCS_INSTALL_PREFIX-to-usr.patch
rename to recipes-graphics/userland/userland/0003-set-VMCS_INSTALL_PREFIX-to-usr.patch
index 1c981af..2829196 100644
--- a/recipes-graphics/userland/userland/0002-set-VMCS_INSTALL_PREFIX-to-usr.patch
+++ b/recipes-graphics/userland/userland/0003-set-VMCS_INSTALL_PREFIX-to-usr.patch
@@ -1,13 +1,12 @@
-From 05554d8486050546efc3c0605015786c8b267d19 Mon Sep 17 00:00:00 2001
+From 8792a3645822c3ee2cea74def2a48e3e7f247ee1 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 9 Aug 2015 23:58:17 -0700
-Subject: [PATCH 1/2] set VMCS_INSTALL_PREFIX to /usr
+Subject: [PATCH 03/16] set VMCS_INSTALL_PREFIX to /usr
in OE we dont use /opt/vc but standard prefix
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
-Upstream-Status: Submitted
makefiles/cmake/vmcs.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
@@ -25,5 +24,5 @@ index 0f8641b..e9d576d 100644
SET(CMAKE_INSTALL_PREFIX "${VMCS_INSTALL_PREFIX}" CACHE INTERNAL "Prefix
--
-2.1.4
+2.7.0
diff --git a/recipes-graphics/userland/userland/0003-cmake-generate-and-install-pkgconfig-files.patch b/recipes-graphics/userland/userland/0004-cmake-generate-and-install-pkgconfig-files.patch
similarity index 87%
rename from recipes-graphics/userland/userland/0003-cmake-generate-and-install-pkgconfig-files.patch
rename to recipes-graphics/userland/userland/0004-cmake-generate-and-install-pkgconfig-files.patch
index c644d52..aa209b2 100644
--- a/recipes-graphics/userland/userland/0003-cmake-generate-and-install-pkgconfig-files.patch
+++ b/recipes-graphics/userland/userland/0004-cmake-generate-and-install-pkgconfig-files.patch
@@ -1,20 +1,19 @@
-From ef43e09c2d13b88c2e92cffc94b68003afcb1f13 Mon Sep 17 00:00:00 2001
+From 59fd98d2ee9076c08d020167e5176e2e3e669917 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 9 Aug 2015 23:59:32 -0700
-Subject: [PATCH 2/2] cmake: generate and install pkgconfig files
+Subject: [PATCH 04/17] cmake: generate and install pkgconfig files
many packages expect packageconfig support especially for detecting EGL
libraries. This patch helps in compiling those packages on RPi
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
-Upstream-Status: Submitted
CMakeLists.txt | 10 +++++++++-
pkgconfig/bcm_host.pc.in | 10 ++++++++++
- pkgconfig/egl.pc.in | 12 ++++++++++++
+ pkgconfig/egl.pc.in | 13 +++++++++++++
pkgconfig/glesv2.pc.in | 12 ++++++++++++
pkgconfig/vg.pc.in | 11 +++++++++++
- 5 files changed, 54 insertions(+), 1 deletion(-)
+ 5 files changed, 55 insertions(+), 1 deletion(-)
create mode 100644 pkgconfig/bcm_host.pc.in
create mode 100644 pkgconfig/egl.pc.in
create mode 100644 pkgconfig/glesv2.pc.in
@@ -58,10 +57,10 @@ index 0000000..c7237c5
+Cflags: -I${includedir} -I${includedir}/interface/vmcs_host/linux -I${includedir}/interface/vcos/pthreads -DUSE_VCHIQ_ARM
diff --git a/pkgconfig/egl.pc.in b/pkgconfig/egl.pc.in
new file mode 100644
-index 0000000..4e3d6ac
+index 0000000..27a6236
--- /dev/null
+++ b/pkgconfig/egl.pc.in
-@@ -0,0 +1,12 @@
+@@ -0,0 +1,13 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
@@ -71,8 +70,9 @@ index 0000000..4e3d6ac
+Description: Fake EGL package for RPi
+Version: 10
+Requires: bcm_host
-+Libs: -L${libdir} -lEGL
-+Cflags: -I${includedir}
++Libs: -L${libdir} -lEGL -lGLESv2 -lbcm_host -lvchostif
++Cflags: -I${includedir} -I${includedir}/interface/vmcs_host/linux \
++ -I${includedir}/interface/vcos/pthreads
+
diff --git a/pkgconfig/glesv2.pc.in b/pkgconfig/glesv2.pc.in
new file mode 100644
@@ -110,5 +110,5 @@ index 0000000..8c39c98
+Libs: -L${libdir} -lOpenVG
+Cflags: -I${includedir}
--
-2.1.4
+2.7.1
diff --git a/recipes-graphics/userland/userland_git.bb b/recipes-graphics/userland/userland_git.bb
index 5bf4dda..4323228 100644
--- a/recipes-graphics/userland/userland_git.bb
+++ b/recipes-graphics/userland/userland_git.bb
@@ -2,8 +2,8 @@ DESCRIPTION = "This repository contains the source code for the ARM side \
libraries used on Raspberry Pi. These typically are installed in /opt/vc/lib \
and includes source for the ARM side code to interface to: EGL, mmal, GLESv2,\
vcos, openmaxil, vchiq_arm, bcm_host, WFC, OpenVG."
-LICENSE = "Broadcom"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=957f6640d5e2d2acfce73a36a56cb32f"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=0448d6488ef8cc380632b1569ee6d196"
PR = "r5"
@@ -14,15 +14,14 @@ COMPATIBLE_MACHINE = "raspberrypi"
SRCBRANCH = "master"
SRCFORK = "raspberrypi"
-SRCREV = "40e377862410371a9962db79b81fd4f0f266430a"
+SRCREV = "2a4af2192c0e161555fdb2a12e902b587166c4a6"
SRC_URI = "\
git://github.com/${SRCFORK}/userland.git;protocol=git;branch=${SRCBRANCH} \
- file://0001-fix-gcc-5.x-inlines.patch \
- file://0002-fix-musl-build.patch \
- file://0003-fix-alloc-size-uninitialized.patch \
- file://0002-set-VMCS_INSTALL_PREFIX-to-usr.patch \
- file://0003-cmake-generate-and-install-pkgconfig-files.patch \
+ file://0001-Fix-VCOS_INLINE_DECL-to-not-use-extern-inlines-in-de.patch \
+ file://0002-musl-inspired-fixed.patch \
+ file://0003-set-VMCS_INSTALL_PREFIX-to-usr.patch \
+ file://0004-cmake-generate-and-install-pkgconfig-files.patch \
"
S = "${WORKDIR}/git"
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 02/23] userland: Fix build with clang compiler
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 01/23] userland: Upgrade to latest git master Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 03/23] userland: Add wayland support Khem Raj
` (21 subsequent siblings)
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
ends up with some warning cleanups and extern inline semantics changes
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
.../0005-user-vcsm-Fix-build-with-clang.patch | 44 ++++++
.../0006-Fix-enum-type-conversion-warnings.patch | 166 +++++++++++++++++++++
...rm_types-Dont-use-extern-inline-with-clan.patch | 84 +++++++++++
recipes-graphics/userland/userland_git.bb | 6 +-
4 files changed, 298 insertions(+), 2 deletions(-)
create mode 100644 recipes-graphics/userland/userland/0005-user-vcsm-Fix-build-with-clang.patch
create mode 100644 recipes-graphics/userland/userland/0006-Fix-enum-type-conversion-warnings.patch
create mode 100644 recipes-graphics/userland/userland/0007-vcos_platform_types-Dont-use-extern-inline-with-clan.patch
diff --git a/recipes-graphics/userland/userland/0005-user-vcsm-Fix-build-with-clang.patch b/recipes-graphics/userland/userland/0005-user-vcsm-Fix-build-with-clang.patch
new file mode 100644
index 0000000..dd07798
--- /dev/null
+++ b/recipes-graphics/userland/userland/0005-user-vcsm-Fix-build-with-clang.patch
@@ -0,0 +1,44 @@
+From 5cfb274f036726a85bb45fd82652d55f50208954 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 23 Aug 2015 13:17:33 -0700
+Subject: [PATCH 05/16] user-vcsm: Fix build with clang
+
+/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/host_applications/linux/libs/sm/user-vcsm.c:316:36: error: implicit conversion from enumeration
+ type 'enum vmcs_sm_cache_e' to different enumeration type 'VCSM_CACHE_TYPE_T' [-Werror,-Wenum-conversion]
+ return vcsm_malloc_cache( size, VMCS_SM_CACHE_NONE, name );
+ ~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~
+/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/host_applications/linux/libs/sm/user-vcsm.c:339:22: error: equality comparison with extraneous
+ parentheses [-Werror,-Wparentheses-equality]
+ if ( (vcsm_handle == VCSM_INVALID_HANDLE) )
+ ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ host_applications/linux/libs/sm/user-vcsm.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/host_applications/linux/libs/sm/user-vcsm.c b/host_applications/linux/libs/sm/user-vcsm.c
+index 4e78dc4..5298f25 100644
+--- a/host_applications/linux/libs/sm/user-vcsm.c
++++ b/host_applications/linux/libs/sm/user-vcsm.c
+@@ -313,7 +313,7 @@ unsigned int vcsm_malloc_cache( unsigned int size, VCSM_CACHE_TYPE_T cache, char
+ */
+ unsigned int vcsm_malloc( unsigned int size, char *name )
+ {
+- return vcsm_malloc_cache( size, VMCS_SM_CACHE_NONE, name );
++ return vcsm_malloc_cache( size, (VCSM_CACHE_TYPE_T)VMCS_SM_CACHE_NONE, name );
+ }
+
+ /* Shares an allocated block of memory.
+@@ -336,7 +336,7 @@ unsigned int vcsm_malloc_share( unsigned int handle )
+ void *usr_ptr = NULL;
+ int rc;
+
+- if ( (vcsm_handle == VCSM_INVALID_HANDLE) )
++ if ( vcsm_handle == VCSM_INVALID_HANDLE )
+ {
+ vcos_log_error( "[%s]: [%d]: NULL size or invalid device!",
+ __func__,
+--
+2.7.0
+
diff --git a/recipes-graphics/userland/userland/0006-Fix-enum-type-conversion-warnings.patch b/recipes-graphics/userland/userland/0006-Fix-enum-type-conversion-warnings.patch
new file mode 100644
index 0000000..cabaf97
--- /dev/null
+++ b/recipes-graphics/userland/userland/0006-Fix-enum-type-conversion-warnings.patch
@@ -0,0 +1,166 @@
+From ecfa07e3b8019983f3c0f3317d27785666b35f04 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 23 Aug 2015 10:43:37 -0700
+Subject: [PATCH 06/16] Fix enum type conversion warnings
+
+/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_util_params_video.c:59:30: error: implicit conversion from enumeration type 'OMX_DISPLAYTRANSFORMTYPE' (aka 'enum OMX_DISPLAYTRANSFORMTYPE') to different enumeration type 'MMAL_DISPLAYTRANSFORM_T' (aka 'enum MMAL_DISPLAYTRANSFORM_T') [-Werror,-Wenum-conversion]
+ mmal->transform = omx->transform;
+ ~ ~~~~~^~~~~~~~~
+/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_util_params_video.c:63:25: error: implicit conversion from enumeration type 'OMX_DISPLAYMODETYPE' (aka 'enum OMX_DISPLAYMODETYPE') to different enumeration type 'MMAL_DISPLAYMODE_T' (aka 'enum MMAL_DISPLAYMODE_T') [-Werror,-Wenum-conversion]
+ mmal->mode = omx->mode;
+ ~ ~~~~~^~~~
+/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_util_params_video.c:75:31: error: implicit conversion from enumeration type 'MMAL_DISPLAYTRANSFORM_T' (aka 'enum MMAL_DISPLAYTRANSFORM_T') to different enumeration type 'OMX_DISPLAYTRANSFORMTYPE' (aka 'enum OMX_DISPLAYTRANSFORMTYPE') [-Werror,-Wenum-conversion]
+ omx->transform = mmal->transform;
+ ~ ~~~~~~^~~~~~~~~
+/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_util_params_video.c:79:31: error: implicit conversion from enumeration type 'MMAL_DISPLAYMODE_T' (aka 'enum MMAL_DISPLAYMODE_T') to different enumeration type 'OMX_DISPLAYMODETYPE' (aka 'enum OMX_DISPLAYMODETYPE') [-Werror,-Wenum-conversion]
+ omx->mode = mmal->mode;
+ ~ ~~~~~~^~~~
+
+/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/vc/mmal_vc_client.c:102:13: error: implicit conversion from enumeration type
+ 'VCOS_STATUS_T' to different enumeration type 'MMAL_STATUS_T' [-Werror,-Wenum-conversion]
+ status = vcos_semaphore_create(&waitpool->sem, VCOS_FUNCTION,
+ ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/vc/mmal_vc_client.c:110:16: error: implicit conversion from enumeration type
+ 'VCOS_STATUS_T' to different enumeration type 'MMAL_STATUS_T' [-Werror,-Wenum-conversion]
+ status = vcos_semaphore_create(&waitpool->waiters[i].sem,
+ ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_core.c:284:17: error: implicit conversion from enumeration
+ type 'MMAL_STATUS_T' to different enumeration type 'OMX_ERRORTYPE' (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
+ return mmalomx_get_port_settings(port, param);
+ ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_core.c:478:17: error: implicit conversion from enumeration
+ type 'MMAL_STATUS_T' to different enumeration type 'OMX_ERRORTYPE' (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
+ return mmalomx_set_port_settings(port, param);
+ ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_parameters.c:173:14: error: implicit conversion from
+ enumeration type 'MMAL_STATUS_T' to different enumeration type 'OMX_ERRORTYPE' (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
+ return xlat->fn.custom(MMALOMX_PARAM_MAPPING_TO_OMX, xlat, mmal_header,
+ ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_parameters.c:557:17: error: implicit conversion from
+ enumeration type 'MMAL_STATUS_T' to different enumeration type 'OMX_ERRORTYPE' (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
+ return mmal_port_format_commit(port->mmal);
+ ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_parameters.c:564:17: error: implicit conversion from
+ enumeration type 'MMAL_STATUS_T' to different enumeration type 'OMX_ERRORTYPE' (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
+ return mmal_port_format_commit(port->mmal);
+ ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/mmal/openmaxil/mmalomx_core.c | 4 ++--
+ interface/mmal/openmaxil/mmalomx_parameters.c | 6 +++---
+ interface/mmal/openmaxil/mmalomx_util_params_video.c | 8 ++++----
+ interface/mmal/vc/mmal_vc_client.c | 4 ++--
+ 4 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/interface/mmal/openmaxil/mmalomx_core.c b/interface/mmal/openmaxil/mmalomx_core.c
+index da66b0b..3a72a2e 100644
+--- a/interface/mmal/openmaxil/mmalomx_core.c
++++ b/interface/mmal/openmaxil/mmalomx_core.c
+@@ -281,7 +281,7 @@ static OMX_ERRORTYPE mmalomx_ComponentGetParameter(
+ {
+ OMX_PARAM_PORTDEFINITIONTYPE *param = (OMX_PARAM_PORTDEFINITIONTYPE *)pParam;
+ PARAM_GET_PORT(port, component, param->nPortIndex);
+- return mmalomx_get_port_settings(port, param);
++ return (OMX_ERRORTYPE)mmalomx_get_port_settings(port, param);
+ }
+ return OMX_ErrorNone;
+ break;
+@@ -475,7 +475,7 @@ static OMX_ERRORTYPE mmalomx_ComponentSetParameter(
+ {
+ OMX_PARAM_PORTDEFINITIONTYPE *param = (OMX_PARAM_PORTDEFINITIONTYPE *)pParam;
+ PARAM_GET_PORT(port, component, param->nPortIndex);
+- return mmalomx_set_port_settings(port, param);
++ return (OMX_ERRORTYPE)mmalomx_set_port_settings(port, param);
+ }
+ return OMX_ErrorNone;
+ break;
+diff --git a/interface/mmal/openmaxil/mmalomx_parameters.c b/interface/mmal/openmaxil/mmalomx_parameters.c
+index a91b68c..f0bd17f 100644
+--- a/interface/mmal/openmaxil/mmalomx_parameters.c
++++ b/interface/mmal/openmaxil/mmalomx_parameters.c
+@@ -170,7 +170,7 @@ static OMX_ERRORTYPE mmalomx_parameter_get_xlat(MMALOMX_COMPONENT_T *component,
+
+ if (xlat->fn.custom)
+ {
+- return xlat->fn.custom(MMALOMX_PARAM_MAPPING_TO_OMX, xlat, mmal_header,
++ return (OMX_ERRORTYPE)xlat->fn.custom(MMALOMX_PARAM_MAPPING_TO_OMX, xlat, mmal_header,
+ pParam, mmal_port);
+ }
+
+@@ -554,14 +554,14 @@ OMX_ERRORTYPE mmalomx_parameter_set(MMALOMX_COMPONENT_T *component,
+ port->mmal->format->es->video.par.num = param->nX;
+ port->mmal->format->es->video.par.den = param->nY;
+ mmal_rational_simplify(&port->mmal->format->es->video.par);
+- return mmal_port_format_commit(port->mmal);
++ return (OMX_ERRORTYPE)mmal_port_format_commit(port->mmal);
+ }
+ case OMX_IndexParamColorSpace:
+ {
+ OMX_PARAM_COLORSPACETYPE *param = (OMX_PARAM_COLORSPACETYPE *)pParam;
+ PARAM_GET_PORT(port, component, param->nPortIndex);
+ port->mmal->format->es->video.color_space = mmalil_omx_color_space_to_mmal(param->eColorSpace);
+- return mmal_port_format_commit(port->mmal);
++ return (OMX_ERRORTYPE)mmal_port_format_commit(port->mmal);
+ }
+ case OMX_IndexParamBrcmVideoCroppingDisable:
+ {
+diff --git a/interface/mmal/openmaxil/mmalomx_util_params_video.c b/interface/mmal/openmaxil/mmalomx_util_params_video.c
+index f088296..83e3724 100644
+--- a/interface/mmal/openmaxil/mmalomx_util_params_video.c
++++ b/interface/mmal/openmaxil/mmalomx_util_params_video.c
+@@ -56,11 +56,11 @@ static MMAL_STATUS_T mmalomx_param_mapping_displayregion(MMALOMX_PARAM_MAPPING_D
+ mmal->set = omx->set;
+ mmal->display_num = omx->num;
+ mmal->fullscreen = omx->fullscreen;
+- mmal->transform = omx->transform;
++ mmal->transform = (MMAL_DISPLAYTRANSFORM_T)omx->transform;
+ rect_to_mmal(&mmal->dest_rect, &omx->dest_rect);
+ rect_to_mmal(&mmal->src_rect, &omx->src_rect);
+ mmal->noaspect = omx->noaspect;
+- mmal->mode = omx->mode;
++ mmal->mode = (MMAL_DISPLAYMODE_T)omx->mode;
+ mmal->pixel_x = omx->pixel_x;
+ mmal->pixel_y = omx->pixel_y;
+ mmal->layer = omx->layer;
+@@ -72,11 +72,11 @@ static MMAL_STATUS_T mmalomx_param_mapping_displayregion(MMALOMX_PARAM_MAPPING_D
+ omx->set = mmal->set;
+ omx->num = mmal->display_num;
+ omx->fullscreen = mmal->fullscreen;
+- omx->transform = mmal->transform;
++ omx->transform = (OMX_DISPLAYTRANSFORMTYPE)mmal->transform;
+ rect_to_omx(&omx->dest_rect, &mmal->dest_rect);
+ rect_to_omx(&omx->src_rect, &mmal->src_rect);
+ omx->noaspect = mmal->noaspect;
+- omx->mode = mmal->mode;
++ omx->mode = (OMX_DISPLAYMODETYPE)mmal->mode;
+ omx->pixel_x = mmal->pixel_x;
+ omx->pixel_y = mmal->pixel_y;
+ omx->layer = mmal->layer;
+diff --git a/interface/mmal/vc/mmal_vc_client.c b/interface/mmal/vc/mmal_vc_client.c
+index b60544b..bd27fc5 100644
+--- a/interface/mmal/vc/mmal_vc_client.c
++++ b/interface/mmal/vc/mmal_vc_client.c
+@@ -99,7 +99,7 @@ static MMAL_STATUS_T create_waitpool(MMAL_WAITPOOL_T *waitpool)
+ MMAL_STATUS_T status;
+ int i;
+
+- status = vcos_semaphore_create(&waitpool->sem, VCOS_FUNCTION,
++ status = (MMAL_STATUS_T)vcos_semaphore_create(&waitpool->sem, VCOS_FUNCTION,
+ MAX_WAITERS);
+ if (status != MMAL_SUCCESS)
+ return status;
+@@ -107,7 +107,7 @@ static MMAL_STATUS_T create_waitpool(MMAL_WAITPOOL_T *waitpool)
+ for (i=0; i<MAX_WAITERS; i++)
+ {
+ waitpool->waiters[i].inuse = 0;
+- status = vcos_semaphore_create(&waitpool->waiters[i].sem,
++ status = (MMAL_STATUS_T)vcos_semaphore_create(&waitpool->waiters[i].sem,
+ "mmal waiter", 0);
+ if (status != MMAL_SUCCESS)
+ break;
+--
+2.7.0
+
diff --git a/recipes-graphics/userland/userland/0007-vcos_platform_types-Dont-use-extern-inline-with-clan.patch b/recipes-graphics/userland/userland/0007-vcos_platform_types-Dont-use-extern-inline-with-clan.patch
new file mode 100644
index 0000000..53a2a26
--- /dev/null
+++ b/recipes-graphics/userland/userland/0007-vcos_platform_types-Dont-use-extern-inline-with-clan.patch
@@ -0,0 +1,84 @@
+From e60f708bef880542fbe45df7dba982c886852dd4 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 23 Aug 2015 13:41:33 -0700
+Subject: [PATCH 07/16] vcos_platform_types: Dont use extern inline with clang
+
+Its very gcc specific implementation here in this code, we cant use
+it with clang as such, so we will use static inline instead which is
+common across gcc and clang starting c99 std onwards
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/vcos/pthreads/vcos_platform_types.h | 4 ----
+ interface/vcos/vcos_timer.h | 5 -----
+ interface/vcos/vcos_types.h | 2 +-
+ 3 files changed, 1 insertion(+), 10 deletions(-)
+
+diff --git a/interface/vcos/pthreads/vcos_platform_types.h b/interface/vcos/pthreads/vcos_platform_types.h
+index 64fb381..6ebcaad 100644
+--- a/interface/vcos/pthreads/vcos_platform_types.h
++++ b/interface/vcos/pthreads/vcos_platform_types.h
+@@ -60,10 +60,6 @@ vcos_pthreads_logging_assert(const char *file, const char *func, unsigned int li
+
+ #define VCOS_ASSERT_MSG(...) ((VCOS_ASSERT_LOGGING && !VCOS_ASSERT_LOGGING_DISABLE) ? vcos_pthreads_logging_assert(__FILE__, __func__, __LINE__, __VA_ARGS__) : (void)0)
+
+-#define VCOS_INLINE_BODIES
+-#define VCOS_INLINE_DECL extern
+-#define VCOS_INLINE_IMPL static __inline__
+-
+ #ifdef __cplusplus
+ }
+ #endif
+diff --git a/interface/vcos/vcos_timer.h b/interface/vcos/vcos_timer.h
+index bdfa657..1de2d46 100644
+--- a/interface/vcos/vcos_timer.h
++++ b/interface/vcos/vcos_timer.h
+@@ -76,7 +76,6 @@ VCOSPRE_ VCOS_STATUS_T VCOSPOST_ vcos_timer_init(void);
+ * @param context context passed to expiration routine
+ *
+ */
+-VCOS_INLINE_DECL
+ VCOS_STATUS_T vcos_timer_create(VCOS_TIMER_T *timer,
+ const char *name,
+ void (*expiration_routine)(void *context),
+@@ -91,24 +90,20 @@ VCOS_STATUS_T vcos_timer_create(VCOS_TIMER_T *timer,
+ * @param timer timer handle
+ * @param delay Delay to wait for, in ms
+ */
+-VCOS_INLINE_DECL
+ void vcos_timer_set(VCOS_TIMER_T *timer, VCOS_UNSIGNED delay);
+
+ /** Stop an already running timer.
+ *
+ * @param timer timer handle
+ */
+-VCOS_INLINE_DECL
+ void vcos_timer_cancel(VCOS_TIMER_T *timer);
+
+ /** Stop a timer and restart it.
+ * @param timer timer handle
+ * @param delay delay in ms
+ */
+-VCOS_INLINE_DECL
+ void vcos_timer_reset(VCOS_TIMER_T *timer, VCOS_UNSIGNED delay);
+
+-VCOS_INLINE_DECL
+ void vcos_timer_delete(VCOS_TIMER_T *timer);
+
+ #ifdef __cplusplus
+diff --git a/interface/vcos/vcos_types.h b/interface/vcos/vcos_types.h
+index e64fd99..7d86742 100644
+--- a/interface/vcos/vcos_types.h
++++ b/interface/vcos/vcos_types.h
+@@ -120,7 +120,7 @@ typedef enum
+
+ #if defined(NDEBUG)
+
+-#ifdef __GNUC__
++#if defined(__GNUC__) && !defined(__clang__)
+ # define VCOS_INLINE_DECL extern
+ # define VCOS_INLINE_IMPL static __inline__
+ #else
+--
+2.7.0
+
diff --git a/recipes-graphics/userland/userland_git.bb b/recipes-graphics/userland/userland_git.bb
index 4323228..bbba080 100644
--- a/recipes-graphics/userland/userland_git.bb
+++ b/recipes-graphics/userland/userland_git.bb
@@ -22,8 +22,10 @@ SRC_URI = "\
file://0002-musl-inspired-fixed.patch \
file://0003-set-VMCS_INSTALL_PREFIX-to-usr.patch \
file://0004-cmake-generate-and-install-pkgconfig-files.patch \
- "
-
+ file://0005-user-vcsm-Fix-build-with-clang.patch \
+ file://0006-Fix-enum-type-conversion-warnings.patch \
+ file://0007-vcos_platform_types-Dont-use-extern-inline-with-clan.patch \
+"
S = "${WORKDIR}/git"
inherit cmake pkgconfig
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 03/23] userland: Add wayland support
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 01/23] userland: Upgrade to latest git master Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 02/23] userland: Fix build with clang compiler Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 04/23] weston: Enable rpi compositor backend Khem Raj
` (20 subsequent siblings)
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=UTF-8, Size: 173140 bytes --]
backport and fix needed patches for supporting wayland-egl
use PACKAGECONFIG for wayland so we can add proper DEPENDS on wayland
Fix QA warnings about dev-so
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
...-applications-to-set-next-resource-handle.patch | 208 +++
...ayland-Add-support-for-the-Wayland-winsys.patch | 1880 ++++++++++++++++++++
.../0010-wayland-Add-Wayland-example.patch | 866 +++++++++
...-wayland-egl-Add-bcm_host-to-dependencies.patch | 28 +
...emove-faulty-assert-to-make-weston-happy-.patch | 29 +
...3-zero-out-wl-buffers-in-egl_surface_free.patch | 33 +
...014-initialize-front-back-wayland-buffers.patch | 34 +
recipes-graphics/userland/userland_git.bb | 16 +-
8 files changed, 3093 insertions(+), 1 deletion(-)
create mode 100644 recipes-graphics/userland/userland/0008-Allow-applications-to-set-next-resource-handle.patch
create mode 100644 recipes-graphics/userland/userland/0009-wayland-Add-support-for-the-Wayland-winsys.patch
create mode 100644 recipes-graphics/userland/userland/0010-wayland-Add-Wayland-example.patch
create mode 100644 recipes-graphics/userland/userland/0011-wayland-egl-Add-bcm_host-to-dependencies.patch
create mode 100644 recipes-graphics/userland/userland/0012-interface-remove-faulty-assert-to-make-weston-happy-.patch
create mode 100644 recipes-graphics/userland/userland/0013-zero-out-wl-buffers-in-egl_surface_free.patch
create mode 100644 recipes-graphics/userland/userland/0014-initialize-front-back-wayland-buffers.patch
diff --git a/recipes-graphics/userland/userland/0008-Allow-applications-to-set-next-resource-handle.patch b/recipes-graphics/userland/userland/0008-Allow-applications-to-set-next-resource-handle.patch
new file mode 100644
index 0000000..bf6511d
--- /dev/null
+++ b/recipes-graphics/userland/userland/0008-Allow-applications-to-set-next-resource-handle.patch
@@ -0,0 +1,208 @@
+From b5295cb247dfb062843f4a4c9996186e865d0cc2 Mon Sep 17 00:00:00 2001
+From: Dom Cobley <dc4@broadcom.com>
+Date: Tue, 9 Jul 2013 09:26:26 -0400
+Subject: [PATCH 08/16] Allow applications to set next resource handle
+
+This patch adds provisions in userland to
+let apps callers set the next rendereing dispmanx resource.
+It's useful for implementing, say, a buffer carousel.
+---
+ interface/khronos/common/khrn_client_rpc.h | 2 ++
+ interface/khronos/common/khrn_int_ids.h | 2 ++
+ interface/khronos/egl/egl_client.c | 30 +++++++++++++++++++++++++++---
+ interface/khronos/egl/egl_client_surface.c | 24 +++++++++++++++++++++++-
+ interface/khronos/egl/egl_client_surface.h | 3 ++-
+ interface/khronos/egl/egl_int_impl.h | 5 +++--
+ 6 files changed, 59 insertions(+), 7 deletions(-)
+
+diff --git a/interface/khronos/common/khrn_client_rpc.h b/interface/khronos/common/khrn_client_rpc.h
+index 418aa67..a7557a8 100644
+--- a/interface/khronos/common/khrn_client_rpc.h
++++ b/interface/khronos/common/khrn_client_rpc.h
+@@ -683,6 +683,7 @@ static INLINE void rpc_call12_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id
+ static INLINE void rpc_call13_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id, uint32_t p0, uint32_t p1, uint32_t p2, uint32_t p3, uint32_t p4, uint32_t p5, uint32_t p6, uint32_t p7, uint32_t p8, uint32_t p9, uint32_t p10, uint32_t p11, void *out) { rpc_begin(thread); RPC_CALL(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); rpc_recv(thread, out, NULL, (RPC_RECV_FLAG_T)(RPC_RECV_FLAG_CTRL | RPC_RECV_FLAG_LEN)); rpc_end(thread); }
+ static INLINE void rpc_call14_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id, uint32_t p0, uint32_t p1, uint32_t p2, uint32_t p3, uint32_t p4, uint32_t p5, uint32_t p6, uint32_t p7, uint32_t p8, uint32_t p9, uint32_t p10, uint32_t p11, uint32_t p12, void *out) { rpc_begin(thread); RPC_CALL(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); rpc_recv(thread, out, NULL, (RPC_RECV_FLAG_T)(RPC_RECV_FLAG_CTRL | RPC_RECV_FLAG_LEN)); rpc_end(thread); }
+ static INLINE void rpc_call15_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id, uint32_t p0, uint32_t p1, uint32_t p2, uint32_t p3, uint32_t p4, uint32_t p5, uint32_t p6, uint32_t p7, uint32_t p8, uint32_t p9, uint32_t p10, uint32_t p11, uint32_t p12, uint32_t p13, void *out) { rpc_begin(thread); RPC_CALL(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); rpc_recv(thread, out, NULL, (RPC_RECV_FLAG_T)(RPC_RECV_FLAG_CTRL | RPC_RECV_FLAG_LEN)); rpc_end(thread); }
++static INLINE void rpc_call16_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id, uint32_t p0, uint32_t p1, uint32_t p2, uint32_t p3, uint32_t p4, uint32_t p5, uint32_t p6, uint32_t p7, uint32_t p8, uint32_t p9, uint32_t p10, uint32_t p11, uint32_t p12, uint32_t p13, uint32_t p14, void *out) { rpc_begin(thread); RPC_CALL(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14); rpc_recv(thread, out, NULL, (RPC_RECV_FLAG_T)(RPC_RECV_FLAG_CTRL | RPC_RECV_FLAG_LEN)); rpc_end(thread); }
+ #endif
+
+ #define RPC_CALL1_OUT_CTRL(fn, thread, id, out) rpc_call1_out_ctrl(thread, id, out)
+@@ -700,6 +701,7 @@ static INLINE void rpc_call15_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id
+ #define RPC_CALL13_OUT_CTRL(fn, thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, out) rpc_call13_out_ctrl(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, out)
+ #define RPC_CALL14_OUT_CTRL(fn, thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, out) rpc_call14_out_ctrl(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, out)
+ #define RPC_CALL15_OUT_CTRL(fn, thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, out) rpc_call15_out_ctrl(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, out)
++#define RPC_CALL16_OUT_CTRL(fn, thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, out) rpc_call16_out_ctrl(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, out)
+
+ # if !defined(__SYMBIAN32__) //use functions defined in khrpc.cpp
+ static INLINE uint32_t rpc_call1_out_ctrl_res(CLIENT_THREAD_STATE_T *thread,uint32_t id, void *out) { uint32_t res; rpc_begin(thread); RPC_CALL(thread, id); res = rpc_recv(thread, out, NULL, (RPC_RECV_FLAG_T)(RPC_RECV_FLAG_RES | RPC_RECV_FLAG_CTRL | RPC_RECV_FLAG_LEN)); rpc_end(thread); return res; }
+diff --git a/interface/khronos/common/khrn_int_ids.h b/interface/khronos/common/khrn_int_ids.h
+index 8378f4a..ec961e0 100644
+--- a/interface/khronos/common/khrn_int_ids.h
++++ b/interface/khronos/common/khrn_int_ids.h
+@@ -367,6 +367,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+ #define EGLINTCREATESURFACE_ID 0x4000
++#define EGLINTCREATESURFACE_ID_V2 0x4100
+ #define EGLINTCREATEGLES11_ID 0x4001
+ #define EGLINTCREATEGLES20_ID 0x4002
+ #define EGLINTCREATEVG_ID 0x4003
+@@ -377,6 +378,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #define EGLINTMAKECURRENT_ID 0x4008
+ #define EGLINTFLUSHANDWAIT_ID 0x4009
+ #define EGLINTSWAPBUFFERS_ID 0x400a
++#define EGLINTSWAPBUFFERS_ID_V2 0x410a
+ #define EGLINTSELECTMIPMAP_ID 0x400b
+ #define EGLINTFLUSH_ID 0x400c
+ #define EGLINTGETCOLORDATA_ID 0x400d
+diff --git a/interface/khronos/egl/egl_client.c b/interface/khronos/egl/egl_client.c
+index 472ef0c..234da65 100644
+--- a/interface/khronos/egl/egl_client.c
++++ b/interface/khronos/egl/egl_client.c
+@@ -162,6 +162,17 @@ static void egl_current_release(CLIENT_PROCESS_STATE_T *process, EGL_CURRENT_T *
+ void egl_gl_flush_callback(bool wait);
+ void egl_vg_flush_callback(bool wait);
+
++#include "interface/vmcs_host/vc_dispmanx_types.h"
++/**HACKHACK - give us the ability to inject a DispmanX
++ * resource handle into the CreateWindowSurface and
++ * SwapBuffers calls */
++static DISPMANX_RESOURCE_HANDLE_T next_resource_handle;
++
++EGLAPI EGLBoolean EGLAPIENTRY eglSetNextResourceHandle(DISPMANX_RESOURCE_HANDLE_T handle)
++{
++ next_resource_handle = handle;
++}
++
+ /*
+ TODO: do an RPC call to make sure the Khronos vll is loaded (and that it stays loaded until eglTerminate)
+ Also affects global image (and possibly others?)
+@@ -644,7 +655,8 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig c
+ false,
+ EGL_NO_TEXTURE,
+ EGL_NO_TEXTURE,
+- 0, 0);
++ 0, 0,
++ next_resource_handle);
+
+ if (surface) {
+ if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
+@@ -889,7 +901,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig
+ mipmap_texture,
+ texture_format,
+ texture_target,
+- 0, 0);
++ 0, 0, 0);
+
+ if (surface) {
+ if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
+@@ -1031,7 +1043,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig c
+ false,
+ EGL_NO_TEXTURE,
+ EGL_NO_TEXTURE,
+- pixmap, ((server_handle[0] == 0) && (server_handle[1] == (uint32_t)(-1))) ? NULL : server_handle);
++ pixmap, ((server_handle[0] == 0) && (server_handle[1] == (uint32_t)(-1))) ? NULL : server_handle, 0);
+
+ if (surface) {
+ if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
+@@ -2303,6 +2315,18 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
+
+ vcos_log_trace("eglSwapBuffers server call");
+
++ if (next_resource_handle)
++ RPC_CALL7(eglIntSwapBuffers_impl,
++ thread,
++ EGLINTSWAPBUFFERS_ID_V2,
++ RPC_UINT(surface->serverbuffer),
++ RPC_UINT(surface->width),
++ RPC_UINT(surface->height),
++ RPC_UINT(surface->internal_handle),
++ RPC_UINT(surface->swap_behavior == EGL_BUFFER_PRESERVED ? 1 : 0),
++ RPC_UINT(khrn_platform_get_window_position(surface->win)),
++ RPC_INT(next_resource_handle));
++ else
+ RPC_CALL6(eglIntSwapBuffers_impl,
+ thread,
+ EGLINTSWAPBUFFERS_ID,
+diff --git a/interface/khronos/egl/egl_client_surface.c b/interface/khronos/egl/egl_client_surface.c
+index 0fa1fd1..0dc10e2 100644
+--- a/interface/khronos/egl/egl_client_surface.c
++++ b/interface/khronos/egl/egl_client_surface.c
+@@ -314,7 +314,8 @@ EGL_SURFACE_T *egl_surface_create(
+ EGLenum texture_format,
+ EGLenum texture_target,
+ EGLNativePixmapType pixmap,
+- const uint32_t *pixmap_server_handle)
++ const uint32_t *pixmap_server_handle,
++ DISPMANX_RESOURCE_HANDLE_T next_resource_handle)
+ {
+ KHRN_IMAGE_FORMAT_T color;
+ KHRN_IMAGE_FORMAT_T depth;
+@@ -473,6 +474,27 @@ EGL_SURFACE_T *egl_surface_create(
+ #endif
+ uint32_t results[3];
+
++ if (next_resource_handle)
++ RPC_CALL16_OUT_CTRL(eglIntCreateSurface_impl,
++ thread,
++ EGLINTCREATESURFACE_ID_V2,
++ RPC_UINT(serverwin),
++ RPC_UINT(buffers),
++ RPC_UINT(width),
++ RPC_UINT(height),
++ RPC_UINT(color),
++ RPC_UINT(depth),
++ RPC_UINT(mask),
++ RPC_UINT(multi),
++ RPC_UINT(largest_pbuffer),
++ RPC_UINT(mipmap_texture),
++ RPC_UINT(config_depth_bits),
++ RPC_UINT(config_stencil_bits),
++ RPC_UINT(sem_name),
++ RPC_UINT(type),
++ RPC_INT(next_resource_handle),
++ results);
++ else
+ RPC_CALL15_OUT_CTRL(eglIntCreateSurface_impl,
+ thread,
+ EGLINTCREATESURFACE_ID,
+diff --git a/interface/khronos/egl/egl_client_surface.h b/interface/khronos/egl/egl_client_surface.h
+index c99d44c..b5bf70a 100644
+--- a/interface/khronos/egl/egl_client_surface.h
++++ b/interface/khronos/egl/egl_client_surface.h
+@@ -322,7 +322,8 @@ extern EGL_SURFACE_T *egl_surface_create(
+ EGLenum texture_format,
+ EGLenum texture_target,
+ EGLNativePixmapType pixmap,
+- const uint32_t *pixmap_server_handle);
++ const uint32_t *pixmap_server_handle,
++ DISPMANX_RESOURCE_HANDLE_T next_resource_handle);
+ extern EGL_SURFACE_T *egl_surface_from_vg_image(
+ VGImage vg_handle,
+ EGLSurface name,
+diff --git a/interface/khronos/egl/egl_int_impl.h b/interface/khronos/egl/egl_int_impl.h
+index 8a5734c..51b3580 100644
+--- a/interface/khronos/egl/egl_int_impl.h
++++ b/interface/khronos/egl/egl_int_impl.h
+@@ -56,7 +56,8 @@ FN(int, eglIntCreateSurface_impl, (
+ uint32_t config_stencil_bits,
+ uint32_t sem,
+ uint32_t type,
+- uint32_t *results))
++ uint32_t *results,
++ DISPMANX_RESOURCE_HANDLE_T next_resource_handle))
+
+ FN(int, eglIntCreatePbufferFromVGImage_impl, (
+ VGImage vg_handle,
+@@ -110,7 +111,7 @@ FN(void, eglIntMakeCurrent_impl, (uint32_t pid_0, uint32_t pid_1, uint32_t glver
+ FN(int, eglIntFlushAndWait_impl, (uint32_t flushgl, uint32_t flushvg))
+ FN(void, eglIntFlush_impl, (uint32_t flushgl, uint32_t flushvg))
+
+-FN(void, eglIntSwapBuffers_impl, (EGL_SURFACE_ID_T s, uint32_t width, uint32_t height, uint32_t handle, uint32_t preserve, uint32_t position))
++FN(void, eglIntSwapBuffers_impl, (EGL_SURFACE_ID_T s, uint32_t width, uint32_t height, uint32_t handle, uint32_t preserve, uint32_t position, DISPMANX_RESOURCE_HANDLE_T new_back_buffer))
+ FN(void, eglIntSelectMipmap_impl, (EGL_SURFACE_ID_T s, int level))
+
+ FN(void, eglIntGetColorData_impl, (EGL_SURFACE_ID_T s, KHRN_IMAGE_FORMAT_T format, uint32_t width, uint32_t height, int32_t stride, uint32_t y_offset, void *data))
+--
+2.7.0
+
diff --git a/recipes-graphics/userland/userland/0009-wayland-Add-support-for-the-Wayland-winsys.patch b/recipes-graphics/userland/userland/0009-wayland-Add-support-for-the-Wayland-winsys.patch
new file mode 100644
index 0000000..c6e175e
--- /dev/null
+++ b/recipes-graphics/userland/userland/0009-wayland-Add-support-for-the-Wayland-winsys.patch
@@ -0,0 +1,1880 @@
+From dba72dbc97a07509befc3072cc4dc5184913b5a7 Mon Sep 17 00:00:00 2001
+From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date: Tue, 1 Oct 2013 13:19:20 +0200
+Subject: [PATCH 09/16] wayland: Add support for the Wayland winsys
+
+* Adds EGL_WL_bind_wayland_display extension
+* Adds wayland-egl library
+* Adds wl_dispmanx_buffer protocol extension
+
+TODO: Check that platform_get_dimensions() returning swapchain_count == 1 is correct
+
+TODO: Remove the requirement of passing a valid DispmanX element handle to
+the SwapBuffers and CreateSurface RPC calls. This will remove the need to open
+a DispmanX display from the clients.
+
+TODO: wl_dispmanx_server_buffer should probably be defined in a
+private header that can be included from EGL and vc_* instead of in
+vc_vchi_dispmanx.h
+---
+ .gitignore | 2 +
+ CMakeLists.txt | 11 +
+ README.md | 4 +
+ buildme | 14 +-
+ interface/khronos/CMakeLists.txt | 52 ++++-
+ interface/khronos/common/khrn_client.c | 15 ++
+ interface/khronos/common/khrn_client.h | 10 +
+ interface/khronos/common/khrn_client_mangle.h | 3 +
+ interface/khronos/common/khrn_client_platform.h | 8 +
+ interface/khronos/common/khrn_client_unmangle.h | 3 +
+ .../common/linux/khrn_client_platform_linux.c | 115 ++++++++--
+ interface/khronos/common/linux/khrn_wayland.c | 215 ++++++++++++++++++
+ .../common/linux/khrn_wayland.h} | 46 +---
+ interface/khronos/egl/egl_client.c | 92 +++++---
+ interface/khronos/egl/egl_client_get_proc.c | 11 +
+ interface/khronos/egl/egl_client_surface.c | 42 +++-
+ interface/khronos/egl/egl_client_surface.h | 38 +++-
+ interface/khronos/egl/egl_int_impl.h | 2 +-
+ interface/khronos/ext/egl_wayland.c | 246 +++++++++++++++++++++
+ interface/khronos/include/EGL/eglext.h | 23 ++
+ interface/khronos/wayland-egl/wayland-egl-priv.h | 53 +++++
+ interface/khronos/wayland-egl/wayland-egl.c | 59 +++++
+ interface/khronos/wayland-egl/wayland-egl.pc.in | 10 +
+ interface/vmcs_host/CMakeLists.txt | 21 +-
+ interface/vmcs_host/vc_dispmanx.h | 10 +
+ interface/vmcs_host/vc_vchi_dispmanx.c | 42 ++++
+ interface/vmcs_host/vc_vchi_dispmanx.h | 15 ++
+ interface/wayland/dispmanx.xml | 123 +++++++++++
+ makefiles/cmake/Wayland.cmake | 72 ++++++
+ 29 files changed, 1260 insertions(+), 97 deletions(-)
+ create mode 100644 interface/khronos/common/linux/khrn_wayland.c
+ copy interface/{vmcs_host/vc_vchi_dispmanx.h => khronos/common/linux/khrn_wayland.h} (56%)
+ create mode 100644 interface/khronos/ext/egl_wayland.c
+ create mode 100644 interface/khronos/wayland-egl/wayland-egl-priv.h
+ create mode 100644 interface/khronos/wayland-egl/wayland-egl.c
+ create mode 100644 interface/khronos/wayland-egl/wayland-egl.pc.in
+ create mode 100644 interface/wayland/dispmanx.xml
+ create mode 100644 makefiles/cmake/Wayland.cmake
+
+diff --git a/.gitignore b/.gitignore
+index 8df9393..d0d1387 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -10,3 +10,5 @@
+ *.lai
+ *.la
+ *.a
++
++*~
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f15dc2b..b240ef6 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -13,6 +13,17 @@ include(makefiles/cmake/global_settings.cmake)
+ include(makefiles/cmake/arm-linux.cmake)
+ include(makefiles/cmake/vmcs.cmake)
+
++if (BUILD_WAYLAND)
++ include(makefiles/cmake/Wayland.cmake)
++
++ # Find Wayland libraries
++ find_package(PkgConfig)
++ pkg_check_modules(WAYLAND_CLIENT wayland-client REQUIRED)
++ pkg_check_modules(WAYLAND_SERVER wayland-server REQUIRED)
++
++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBUILD_WAYLAND")
++endif()
++
+ enable_language(ASM)
+
+ # Global include paths
+diff --git a/README.md b/README.md
+index 358d2b4..4da4448 100644
+--- a/README.md
++++ b/README.md
+@@ -4,3 +4,7 @@ EGL, mmal, GLESv2, vcos, openmaxil, vchiq_arm, bcm_host, WFC, OpenVG.
+
+ Use buildme to build. It requires cmake to be installed and an arm cross compiler. It is set up to use this one:
+ https://github.com/raspberrypi/tools/tree/master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian
++
++To build support for the Wayland winsys in EGL, execute the buildme script like this:
++
++$ BUILD_WAYLAND=1 ./buildme.
+diff --git a/buildme b/buildme
+index d5d3de9..c46f214 100755
+--- a/buildme
++++ b/buildme
+@@ -1,10 +1,14 @@
+ #!/bin/bash
+
++if [ -n "$BUILD_WAYLAND" ]; then
++ WAYLAND_VARS="-DBUILD_WAYLAND=TRUE"
++fi
++
+ if [ "armv6l" = `arch` ] || [ "armv7l" = `arch` ]; then
+ # Native compile on the Raspberry Pi
+ mkdir -p build/raspberry/release
+ pushd build/raspberry/release
+- cmake -DCMAKE_BUILD_TYPE=Release ../../..
++ cmake -DCMAKE_BUILD_TYPE=Release $WAYLAND_VARS ../../..
+ if [ "armv6l" = `arch` ]; then
+ make
+ else
+@@ -17,9 +21,15 @@ if [ "armv6l" = `arch` ] || [ "armv7l" = `arch` ]; then
+ fi
+ else
+ # Cross compile on a more capable machine
++
++ if [ -n "$BUILD_WAYLAND" ]; then
++ # Use wayland-scanner from the build platform
++ WAYLAND_VARS+=" -DWAYLAND_SCANNER_EXECUTABLE:FILEPATH=/usr/bin/wayland-scanner"
++ fi
++
+ mkdir -p build/arm-linux/release/
+ pushd build/arm-linux/release/
+- cmake -DCMAKE_TOOLCHAIN_FILE=../../../makefiles/cmake/toolchains/arm-linux-gnueabihf.cmake -DCMAKE_BUILD_TYPE=Release ../../..
++ cmake -DCMAKE_TOOLCHAIN_FILE=../../../makefiles/cmake/toolchains/arm-linux-gnueabihf.cmake -DCMAKE_BUILD_TYPE=Release $WAYLAND_VARS ../../..
+ make -j 6
+
+ if [ "$1" != "" ]; then
+diff --git a/interface/khronos/CMakeLists.txt b/interface/khronos/CMakeLists.txt
+index c437291..6778e10 100644
+--- a/interface/khronos/CMakeLists.txt
++++ b/interface/khronos/CMakeLists.txt
+@@ -6,6 +6,12 @@
+ # have quite a few circular dependencies, and so the only way
+ # to make it work seems to be to have everything static.
+
++if (BUILD_WAYLAND)
++include_directories(
++ ${WAYLAND_SERVER_INCLUDE_DIRS}
++)
++endif ()
++
+ set(EGL_SOURCE
+ egl/egl_client_config.c
+ egl/egl_client_context.c
+@@ -55,19 +61,63 @@ set(CLIENT_SOURCE
+ common/khrn_int_hash_asm.s
+ common/khrn_client_cache.c)
+
++set(EGL_LIBS
++ khrn_client
++ vchiq_arm
++ vcos
++ bcm_host
++ -lm)
++
++if (BUILD_WAYLAND)
++ set(EGL_SOURCE
++ ${EGL_SOURCE}
++ ext/egl_wayland.c
++ common/linux/khrn_wayland.c)
++
++ set(EGL_LIBS
++ ${EGL_LIBS}
++ wayland-client
++ wayland-server)
++
++ set(WAYLAND_EGL_SOURCE
++ wayland-egl/wayland-egl.c)
++
++ wayland_add_protocol_server(
++ EGL_SOURCE
++ ../../interface/wayland/dispmanx.xml
++ dispmanx
++ )
++
++ wayland_add_protocol_client(
++ EGL_SOURCE
++ ../../interface/wayland/dispmanx.xml
++ dispmanx
++ )
++
++ add_library(wayland-egl ${SHARED} ${WAYLAND_EGL_SOURCE})
++ install(TARGETS wayland-egl DESTINATION lib)
++
++ configure_file ("wayland-egl/wayland-egl.pc.in" "wayland-egl/wayland-egl.pc" @ONLY)
++ install (FILES "${CMAKE_CURRENT_BINARY_DIR}/wayland-egl/wayland-egl.pc"
++ DESTINATION lib/pkgconfig)
++endif ()
++
+ add_library(EGL ${SHARED} ${EGL_SOURCE})
+ add_library(GLESv2 ${SHARED} ${GLES_SOURCE})
+ add_library(OpenVG ${SHARED} ${VG_SOURCE})
+ add_library(WFC ${SHARED} ${WFC_SOURCE})
+ add_library(khrn_client ${CLIENT_SOURCE})
+
++set_target_properties(EGL PROPERTIES SOVERSION 1 VERSION 1.0.0)
++set_target_properties(GLESv2 PROPERTIES SOVERSION 2 VERSION 2.0.0)
++
+ # TODO do we need EGL_static and GLESv2_static now that khrn_static exists?
+ add_library(EGL_static STATIC ${EGL_SOURCE})
+ add_library(GLESv2_static STATIC ${GLES_SOURCE})
+ add_library(khrn_static STATIC
+ ${EGL_SOURCE} ${GLES_SOURCE} ${VG_SOURCE} ${WFC_SOURCE} ${CLIENT_SOURCE})
+
+-target_link_libraries(EGL khrn_client vchiq_arm vcos bcm_host -lm)
++target_link_libraries(EGL ${EGL_LIBS})
+ target_link_libraries(GLESv2 EGL khrn_client vcos)
+ target_link_libraries(WFC EGL)
+ target_link_libraries(OpenVG EGL)
+diff --git a/interface/khronos/common/khrn_client.c b/interface/khronos/common/khrn_client.c
+index e38a85f..783a68e 100644
+--- a/interface/khronos/common/khrn_client.c
++++ b/interface/khronos/common/khrn_client.c
+@@ -54,6 +54,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include "applications/vmcs/khronos/khronos_server.h"
+ #endif
+
++#ifdef BUILD_WAYLAND
++#include "interface/khronos/common/linux/khrn_wayland.h"
++#endif
++
+ VCOS_LOG_CAT_T khrn_client_log = VCOS_LOG_INIT("khrn_client", VCOS_LOG_WARN);
+
+ /*
+@@ -142,6 +146,10 @@ void client_try_unload_server(CLIENT_PROCESS_STATE_T *process)
+ bool client_process_state_init(CLIENT_PROCESS_STATE_T *process)
+ {
+ if (!process->inited) {
++#ifdef BUILD_WAYLAND
++ process->wl_global = NULL;
++#endif
++
+ if (!khrn_pointer_map_init(&process->contexts, 64))
+ return false;
+
+@@ -194,6 +202,13 @@ bool client_process_state_init(CLIENT_PROCESS_STATE_T *process)
+ }
+ #endif
+
++#ifdef BUILD_WAYLAND
++ struct wl_display *wl_display = khrn_platform_get_wl_display();
++ if (wl_display)
++ if (!init_process_wayland(process))
++ return false;
++#endif
++
+ process->inited = true;
+ }
+
+diff --git a/interface/khronos/common/khrn_client.h b/interface/khronos/common/khrn_client.h
+index 804039b..615f7b4 100644
+--- a/interface/khronos/common/khrn_client.h
++++ b/interface/khronos/common/khrn_client.h
+@@ -310,6 +310,16 @@ struct CLIENT_PROCESS_STATE {
+ #ifdef RPC_LIBRARY
+ KHRONOS_SERVER_CONNECTION_T khrn_connection;
+ #endif
++
++#ifdef BUILD_WAYLAND
++ /* Client-side Wayland state */
++ struct wl_registry *wl_registry;
++ struct wl_dispmanx *wl_dispmanx;
++ struct wl_event_queue *wl_queue;
++
++ /* Compositor-side Wayland state */
++ struct wl_global *wl_global;
++#endif
+ };
+
+ extern bool client_process_state_init(CLIENT_PROCESS_STATE_T *process);
+diff --git a/interface/khronos/common/khrn_client_mangle.h b/interface/khronos/common/khrn_client_mangle.h
+index b3c04f4..b7b21c5 100644
+--- a/interface/khronos/common/khrn_client_mangle.h
++++ b/interface/khronos/common/khrn_client_mangle.h
+@@ -83,6 +83,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #define eglReleaseGlobalImageBRCM mangled_eglReleaseGlobalImageBRCM
+ #define eglInitGlobalImageBRCM mangled_eglInitGlobalImageBRCM
+ #define eglTermGlobalImageBRCM mangled_eglTermGlobalImageBRCM
++#define eglBindWaylandDisplayWL mangled_eglBindWaylandDisplayWL
++#define eglUnbindWaylandDisplayWL mangled_eglUnbindWaylandDisplayWL
++#define eglQueryWaylandBufferWL mangled_eglQueryWaylandBufferWL
+
+ /* OpenGL ES 1.1 and 2.0 functions */
+
+diff --git a/interface/khronos/common/khrn_client_platform.h b/interface/khronos/common/khrn_client_platform.h
+index 1c9da3a..715c67e 100644
+--- a/interface/khronos/common/khrn_client_platform.h
++++ b/interface/khronos/common/khrn_client_platform.h
+@@ -48,6 +48,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include "interface/khronos/common/vcos/khrn_client_platform_filler_vcos.h"
+ #endif
+
++#ifdef BUILD_WAYLAND
++#include <wayland-client.h>
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -328,4 +332,8 @@ typedef struct
+
+ void *platform_wfc_bounce_thread(void *param);
+
++#ifdef BUILD_WAYLAND
++struct wl_display *khrn_platform_get_wl_display();
++#endif
++
+ #endif // KHRN_CLIENT_PLATFORM_H
+diff --git a/interface/khronos/common/khrn_client_unmangle.h b/interface/khronos/common/khrn_client_unmangle.h
+index 4f3ce49..84f6ec0 100644
+--- a/interface/khronos/common/khrn_client_unmangle.h
++++ b/interface/khronos/common/khrn_client_unmangle.h
+@@ -83,6 +83,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #undef eglReleaseGlobalImageBRCM
+ #undef eglInitGlobalImageBRCM
+ #undef eglTermGlobalImageBRCM
++#undef eglBindWaylandDisplayWL
++#undef eglUnbindWaylandDisplayWL
++#undef eglQueryWaylandBufferWL
+
+ /* OpenGL ES 1.1 and 2.0 functions */
+
+diff --git a/interface/khronos/common/linux/khrn_client_platform_linux.c b/interface/khronos/common/linux/khrn_client_platform_linux.c
+index a060f26..13c8c25 100644
+--- a/interface/khronos/common/linux/khrn_client_platform_linux.c
++++ b/interface/khronos/common/linux/khrn_client_platform_linux.c
+@@ -37,6 +37,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include "X11/Xlib.h"
+ #endif
+
++#ifdef BUILD_WAYLAND
++#include <wayland-client.h>
++#include "interface/khronos/wayland-egl/wayland-egl-priv.h"
++#endif
++
+ extern VCOS_LOG_CAT_T khrn_client_log;
+
+ extern void vc_vchi_khronos_init();
+@@ -460,13 +465,36 @@ EGLDisplay khrn_platform_set_display_id(EGLNativeDisplayType display_id)
+ return EGL_NO_DISPLAY;
+ }
+ #else
++
++#ifdef BUILD_WAYLAND
++static struct wl_display *hacky_display = NULL;
++#endif
++
+ EGLDisplay khrn_platform_set_display_id(EGLNativeDisplayType display_id)
+ {
+ if (display_id == EGL_DEFAULT_DISPLAY)
+ return (EGLDisplay)1;
+- else
+- return EGL_NO_DISPLAY;
++ else {
++#ifdef BUILD_WAYLAND
++ void *first_pointer = *(void **) display_id;
++
++ /* wl_display is a wl_proxy, which is a wl_object.
++ * wl_object's first element points to the interfacetype. */
++ if (first_pointer == &wl_display_interface) {
++ hacky_display = (struct wl_display*)display_id;
++ return (EGLDisplay)1;
++ } else
++#endif
++ return EGL_NO_DISPLAY;
++ }
+ }
++
++#ifdef BUILD_WAYLAND
++struct wl_display *khrn_platform_get_wl_display()
++{
++ return hacky_display;
++}
++#endif
+ #endif
+
+ #ifdef WANT_X
+@@ -801,22 +829,81 @@ static EGL_DISPMANX_WINDOW_T *check_default(EGLNativeWindowType win)
+ void platform_get_dimensions(EGLDisplay dpy, EGLNativeWindowType win,
+ uint32_t *width, uint32_t *height, uint32_t *swapchain_count)
+ {
+- EGL_DISPMANX_WINDOW_T *dwin = check_default(win);
+- vcos_assert(dwin);
+- vcos_assert(dwin->width < 1<<16); // sanity check
+- vcos_assert(dwin->height < 1<<16); // sanity check
+- *width = dwin->width;
+- *height = dwin->height;
+- *swapchain_count = 0;
++#ifdef BUILD_WAYLAND
++ if(khrn_platform_get_wl_display()) {
++ struct wl_egl_window *wl_egl_window = (struct wl_egl_window*)win;
++ *width = wl_egl_window->width;
++ *height = wl_egl_window->height;
++ /* This seems to be used for sync'ing with the VC on buffer creation, but
++ we are managing them on the CPU side */
++ *swapchain_count = 1;
++ } else {
++#endif
++ EGL_DISPMANX_WINDOW_T *dwin = check_default(win);
++ vcos_assert(dwin);
++ vcos_assert(dwin->width < 1<<16); // sanity check
++ vcos_assert(dwin->height < 1<<16); // sanity check
++ *width = dwin->width;
++ *height = dwin->height;
++ *swapchain_count = 0;
++#ifdef BUILD_WAYLAND
++ }
++#endif
+ }
+
++#ifdef BUILD_WAYLAND
++static DISPMANX_ELEMENT_HANDLE_T create_dummy_element()
++{
++ DISPMANX_DISPLAY_HANDLE_T display = vc_dispmanx_display_open(0);
++ DISPMANX_UPDATE_HANDLE_T update = vc_dispmanx_update_start(0);
++ DISPMANX_ELEMENT_HANDLE_T element;
++ VC_DISPMANX_ALPHA_T alpha = {DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS, 255, 0};
++ VC_RECT_T src_rect;
++ VC_RECT_T dst_rect;
++
++ src_rect.x = 0;
++ src_rect.y = 0;
++ src_rect.width = 1 << 16;
++ src_rect.height = 1 << 16;
++
++ dst_rect.x = 0;
++ dst_rect.y = 0;
++ dst_rect.width = 1;
++ dst_rect.height = 1;
++
++ element = vc_dispmanx_element_add(update, display, 0/*layer*/, &dst_rect,
++ 0/*src*/, &src_rect,
++ DISPMANX_PROTECTION_NONE, &alpha,
++ 0/*clamp*/, 0/*transform*/);
++
++ vc_dispmanx_update_submit_sync(update);
++
++ vc_dispmanx_display_close(display);
++
++ return element;
++}
++#endif
++
+ uint32_t platform_get_handle(EGLDisplay dpy, EGLNativeWindowType win)
+ {
+- EGL_DISPMANX_WINDOW_T *dwin = check_default(win);
+- vcos_assert(dwin);
+- vcos_assert(dwin->width < 1<<16); // sanity check
+- vcos_assert(dwin->height < 1<<16); // sanity check
+- return dwin->element;
++#ifdef BUILD_WAYLAND
++ if(khrn_platform_get_wl_display()) {
++ struct wl_egl_window *wl_egl_window = (struct wl_egl_window*)win;
++
++ if (wl_egl_window->dummy_element == PLATFORM_WIN_NONE)
++ wl_egl_window->dummy_element = create_dummy_element();
++
++ return wl_egl_window->dummy_element;
++ } else {
++#endif
++ EGL_DISPMANX_WINDOW_T *dwin = check_default(win);
++ vcos_assert(dwin);
++ vcos_assert(dwin->width < 1<<16); // sanity check
++ vcos_assert(dwin->height < 1<<16); // sanity check
++ return dwin->element;
++#ifdef BUILD_WAYLAND
++ }
++#endif
+ }
+
+ #endif
+diff --git a/interface/khronos/common/linux/khrn_wayland.c b/interface/khronos/common/linux/khrn_wayland.c
+new file mode 100644
+index 0000000..0e1b9e7
+--- /dev/null
++++ b/interface/khronos/common/linux/khrn_wayland.c
+@@ -0,0 +1,215 @@
++/*
++Copyright (c) 2013, Raspberry Pi Foundation
++All rights reserved.
++
++Redistribution and use in source and binary forms, with or without
++modification, are permitted provided that the following conditions are met:
++ * Redistributions of source code must retain the above copyright
++ notice, this list of conditions and the following disclaimer.
++ * Redistributions in binary form must reproduce the above copyright
++ notice, this list of conditions and the following disclaimer in the
++ documentation and/or other materials provided with the distribution.
++ * Neither the name of the copyright holder nor the
++ names of its contributors may be used to endorse or promote products
++ derived from this software without specific prior written permission.
++
++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
++DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
++DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
++ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++*/
++
++#define VCOS_LOG_CATEGORY (&khrn_client_log)
++
++#include "interface/khronos/common/linux/khrn_wayland.h"
++#include "interface/khronos/wayland-dispmanx-client-protocol.h"
++#include "interface/khronos/wayland-egl/wayland-egl-priv.h"
++
++extern VCOS_LOG_CAT_T khrn_client_log;
++
++static void handle_dispmanx_format(void *data, struct wl_dispmanx *dispmanx,
++ uint32_t format)
++{
++}
++
++static void handle_dispmanx_allocated(void *data, struct wl_dispmanx *dispmanx,
++ struct wl_buffer *wl_buffer,
++ uint32_t resource_handle)
++{
++ struct wl_dispmanx_client_buffer *buffer = wl_buffer_get_user_data(wl_buffer);
++
++ buffer->pending_allocation = 0;
++ buffer->resource = resource_handle;
++}
++
++static const struct wl_dispmanx_listener dispmanx_listener = {
++ handle_dispmanx_format,
++ handle_dispmanx_allocated,
++};
++
++static void
++sync_callback(void *data, struct wl_callback *callback, uint32_t serial)
++{
++ int *done = data;
++
++ *done = 1;
++
++ wl_callback_destroy(callback);
++}
++
++static const struct wl_callback_listener sync_listener = {
++ sync_callback
++};
++
++static int
++roundtrip(CLIENT_PROCESS_STATE_T *process)
++{
++ struct wl_display *wl_display = khrn_platform_get_wl_display();
++ struct wl_callback *callback;
++ int done = 0, ret = 0;
++
++ callback = wl_display_sync(wl_display);
++ wl_callback_add_listener(callback, &sync_listener, &done);
++ wl_proxy_set_queue((struct wl_proxy *) callback, process->wl_queue);
++ while (ret != -1 && !done)
++ ret = wl_display_dispatch_queue(wl_display, process->wl_queue);
++
++ if (!done)
++ wl_callback_destroy(callback);
++
++ return ret;
++}
++
++int do_wl_roundtrip()
++{
++ CLIENT_PROCESS_STATE_T *process = CLIENT_GET_PROCESS_STATE();
++ return roundtrip(process);
++}
++
++static void
++registry_handle_global(void *data, struct wl_registry *registry,
++ uint32_t name, const char *interface, uint32_t version)
++{
++ struct wl_display *wl_display = khrn_platform_get_wl_display();
++ CLIENT_PROCESS_STATE_T *process = (CLIENT_PROCESS_STATE_T *)data;
++
++ if (strcmp(interface, "wl_dispmanx") == 0) {
++ process->wl_dispmanx = wl_registry_bind(registry, name,
++ &wl_dispmanx_interface, 1);
++
++ wl_proxy_set_queue((struct wl_proxy *) process->wl_dispmanx,
++ process->wl_queue);
++ wl_dispmanx_add_listener(process->wl_dispmanx, &dispmanx_listener, wl_display);
++ roundtrip(process);
++ }
++}
++
++static void
++registry_handle_global_remove(void *data, struct wl_registry *registry,
++ uint32_t name)
++{
++}
++
++static const struct wl_registry_listener registry_listener = {
++ registry_handle_global,
++ registry_handle_global_remove
++};
++
++int
++init_process_wayland(CLIENT_PROCESS_STATE_T *process)
++{
++ struct wl_display *wl_display = khrn_platform_get_wl_display();
++
++ process->wl_queue = wl_display_create_queue(wl_display);
++ if (!process->wl_queue) {
++ vcos_log_error("wl_display_create_queue failed\n");
++ return false;
++ }
++ wl_display_dispatch_pending(wl_display);
++
++ process->wl_registry = wl_display_get_registry(wl_display);
++ if (!process->wl_registry) {
++ vcos_log_error("wl_display_get_registry failed\n");
++ return false;
++ }
++
++ wl_proxy_set_queue((struct wl_proxy *) process->wl_registry,
++ process->wl_queue);
++
++ wl_registry_add_listener(process->wl_registry, ®istry_listener, process);
++
++ if (roundtrip(process) < 0 || process->wl_dispmanx == NULL) {
++ vcos_log_error("failed to get wl_dispmanx\n");
++ return false;
++ }
++
++ return true;
++}
++
++#ifndef ALIGN_UP
++#define ALIGN_UP(x,y) ((x + (y)-1) & ~((y)-1))
++#endif
++
++static void handle_buffer_release(void *data, struct wl_buffer *buffer_wl)
++{
++ struct wl_dispmanx_client_buffer *wl_dispmanx_client_buffer = data;
++ wl_dispmanx_client_buffer->in_use = 0;
++}
++
++static const struct wl_buffer_listener buffer_listener = {
++ handle_buffer_release
++};
++
++struct wl_dispmanx_client_buffer *
++allocate_wl_buffer(struct wl_egl_window *window, KHRN_IMAGE_FORMAT_T color)
++{
++ CLIENT_PROCESS_STATE_T *process = CLIENT_GET_PROCESS_STATE();
++ struct wl_dispmanx_client_buffer *wl_dispmanx_client_buffer;
++ struct wl_buffer *wl_buffer;
++ uint32_t stride = ALIGN_UP(window->width * 4, 16);
++ uint32_t buffer_height = ALIGN_UP(window->height, 16);
++ enum wl_dispmanx_format color_format;
++ int ret = 0;
++
++ switch (color) {
++ case ABGR_8888:
++ color_format = WL_DISPMANX_FORMAT_ABGR8888;
++ break;
++ case XBGR_8888:
++ color_format = WL_DISPMANX_FORMAT_XBGR8888;
++ break;
++ case RGB_565:
++ color_format = WL_DISPMANX_FORMAT_RGB565;
++ break;
++ default:
++ vcos_log_error("unknown KHRN_IMAGE_FORMAT_T 0x%x\n", color);
++ return NULL;
++ }
++
++ wl_buffer = wl_dispmanx_create_buffer(process->wl_dispmanx, window->width,
++ window->height, stride, buffer_height,
++ color_format);
++ if (wl_buffer == NULL)
++ return NULL;
++
++ wl_dispmanx_client_buffer = calloc(1, sizeof(struct wl_dispmanx_client_buffer));
++ wl_dispmanx_client_buffer->wl_buffer = wl_buffer;
++ wl_dispmanx_client_buffer->in_use = 0;
++ wl_dispmanx_client_buffer->pending_allocation = 1;
++ wl_dispmanx_client_buffer->width = window->width;
++ wl_dispmanx_client_buffer->height = window->height;
++
++ wl_proxy_set_queue((struct wl_proxy *) wl_buffer, process->wl_queue);
++ wl_buffer_add_listener(wl_buffer, &buffer_listener, wl_dispmanx_client_buffer);
++
++ while (ret != -1 && wl_dispmanx_client_buffer->pending_allocation)
++ ret = do_wl_roundtrip();
++
++ return wl_dispmanx_client_buffer;
++}
+diff --git a/interface/vmcs_host/vc_vchi_dispmanx.h b/interface/khronos/common/linux/khrn_wayland.h
+similarity index 56%
+copy from interface/vmcs_host/vc_vchi_dispmanx.h
+copy to interface/khronos/common/linux/khrn_wayland.h
+index b723b76..b9bf08c 100644
+--- a/interface/vmcs_host/vc_vchi_dispmanx.h
++++ b/interface/khronos/common/linux/khrn_wayland.h
+@@ -1,5 +1,5 @@
+ /*
+-Copyright (c) 2012, Broadcom Europe Ltd
++Copyright (c) 2013, Raspberry Pi Foundation
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+@@ -25,45 +25,9 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+-#ifndef VC_VCHI_DISPMANX_H
+-#define VC_VCHI_DISPMANX_H
++#include "interface/khronos/common/khrn_client.h"
+
+-#include "interface/peer/vc_vchi_dispmanx_common.h"
++int init_process_wayland(CLIENT_PROCESS_STATE_T *process);
++int do_wl_roundtrip();
+
+-#define VC_NUM_HOST_RESOURCES 64
+-#define DISPMANX_MSGFIFO_SIZE 1024
+-#define DISPMANX_CLIENT_NAME MAKE_FOURCC("DISP")
+-#define DISPMANX_NOTIFY_NAME MAKE_FOURCC("UPDH")
+-
+-//Or with command to indicate we don't need a response
+-#define DISPMANX_NO_REPLY_MASK (1<<31)
+-
+-typedef struct {
+- char description[32];
+- uint32_t width;
+- uint32_t height;
+- uint32_t aspect_pixwidth;
+- uint32_t aspect_pixheight;
+- uint32_t fieldrate_num;
+- uint32_t fieldrate_denom;
+- uint32_t fields_per_frame;
+- uint32_t transform;
+-} GET_MODES_DATA_T;
+-
+-typedef struct {
+- int32_t response;
+- uint32_t width;
+- uint32_t height;
+- uint32_t transform;
+- uint32_t input_format;
+-} GET_INFO_DATA_T;
+-
+-//Attributes changes flag mask
+-#define ELEMENT_CHANGE_LAYER (1<<0)
+-#define ELEMENT_CHANGE_OPACITY (1<<1)
+-#define ELEMENT_CHANGE_DEST_RECT (1<<2)
+-#define ELEMENT_CHANGE_SRC_RECT (1<<3)
+-#define ELEMENT_CHANGE_MASK_RESOURCE (1<<4)
+-#define ELEMENT_CHANGE_TRANSFORM (1<<5)
+-
+-#endif
++struct wl_dispmanx_client_buffer *allocate_wl_buffer(struct wl_egl_window *window, KHRN_IMAGE_FORMAT_T color);
+diff --git a/interface/khronos/egl/egl_client.c b/interface/khronos/egl/egl_client.c
+index 234da65..024f3ed 100644
+--- a/interface/khronos/egl/egl_client.c
++++ b/interface/khronos/egl/egl_client.c
+@@ -153,6 +153,10 @@ by an attribute value"
+ #include <stdlib.h>
+ #include <string.h>
+
++#ifdef BUILD_WAYLAND
++#include "interface/khronos/wayland-egl/wayland-egl-priv.h"
++#include "interface/khronos/common/linux/khrn_wayland.h"
++#endif
+
+ #include "interface/khronos/egl/egl_client_cr.c"
+
+@@ -162,17 +166,6 @@ static void egl_current_release(CLIENT_PROCESS_STATE_T *process, EGL_CURRENT_T *
+ void egl_gl_flush_callback(bool wait);
+ void egl_vg_flush_callback(bool wait);
+
+-#include "interface/vmcs_host/vc_dispmanx_types.h"
+-/**HACKHACK - give us the ability to inject a DispmanX
+- * resource handle into the CreateWindowSurface and
+- * SwapBuffers calls */
+-static DISPMANX_RESOURCE_HANDLE_T next_resource_handle;
+-
+-EGLAPI EGLBoolean EGLAPIENTRY eglSetNextResourceHandle(DISPMANX_RESOURCE_HANDLE_T handle)
+-{
+- next_resource_handle = handle;
+-}
+-
+ /*
+ TODO: do an RPC call to make sure the Khronos vll is loaded (and that it stays loaded until eglTerminate)
+ Also affects global image (and possibly others?)
+@@ -451,6 +444,9 @@ EGLAPI const char EGLAPIENTRY * eglQueryString(EGLDisplay dpy, EGLint name)
+ "EGL_KHR_fence_sync "
+ #endif
+ #endif
++#if EGL_WL_bind_wayland_display
++ "EGL_WL_bind_wayland_display "
++#endif
+ ;
+ break;
+ case EGL_VENDOR:
+@@ -655,8 +651,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig c
+ false,
+ EGL_NO_TEXTURE,
+ EGL_NO_TEXTURE,
+- 0, 0,
+- next_resource_handle);
++ 0, 0);
+
+ if (surface) {
+ if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
+@@ -901,7 +896,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig
+ mipmap_texture,
+ texture_format,
+ texture_target,
+- 0, 0, 0);
++ 0, 0);
+
+ if (surface) {
+ if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
+@@ -1043,7 +1038,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig c
+ false,
+ EGL_NO_TEXTURE,
+ EGL_NO_TEXTURE,
+- pixmap, ((server_handle[0] == 0) && (server_handle[1] == (uint32_t)(-1))) ? NULL : server_handle, 0);
++ pixmap, ((server_handle[0] == 0) && (server_handle[1] == (uint32_t)(-1))) ? NULL : server_handle);
+
+ if (surface) {
+ if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
+@@ -2245,6 +2240,9 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
+ CLIENT_THREAD_STATE_T *thread;
+ CLIENT_PROCESS_STATE_T *process;
+ EGLBoolean result;
++#ifdef BUILD_WAYLAND
++ struct wl_display *wl_display = khrn_platform_get_wl_display();
++#endif
+
+ vcos_log_trace("eglSwapBuffers start. dpy=%d. surf=%d.", (int)dpy, (int)surf);
+
+@@ -2315,18 +2313,58 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
+
+ vcos_log_trace("eglSwapBuffers server call");
+
+- if (next_resource_handle)
+- RPC_CALL7(eglIntSwapBuffers_impl,
+- thread,
+- EGLINTSWAPBUFFERS_ID_V2,
+- RPC_UINT(surface->serverbuffer),
+- RPC_UINT(surface->width),
+- RPC_UINT(surface->height),
+- RPC_UINT(surface->internal_handle),
+- RPC_UINT(surface->swap_behavior == EGL_BUFFER_PRESERVED ? 1 : 0),
+- RPC_UINT(khrn_platform_get_window_position(surface->win)),
+- RPC_INT(next_resource_handle));
+- else
++#ifdef BUILD_WAYLAND
++ if (wl_display) {
++ struct wl_egl_window *wl_egl_window = surface->wl_egl_window;
++ struct wl_dispmanx_client_buffer *buffer_temp;
++ uint32_t configid;
++ KHRN_IMAGE_FORMAT_T color;
++ int ret = 0;
++
++ buffer_temp = surface->front_wl_buffer;
++ surface->front_wl_buffer = surface->back_wl_buffer;
++ surface->back_wl_buffer = buffer_temp;
++
++ configid = egl_config_to_id(surface->config);
++ color = egl_config_get_color_format(configid);
++
++ if (surface->back_wl_buffer == NULL)
++ surface->back_wl_buffer = allocate_wl_buffer(wl_egl_window, color);
++ else if (surface->back_wl_buffer->width != width ||
++ surface->back_wl_buffer->height != height) {
++
++ struct wl_dispmanx_client_buffer *buffer;
++
++ wl_buffer_destroy(surface->back_wl_buffer->wl_buffer);
++ free(surface->back_wl_buffer);
++
++ buffer = allocate_wl_buffer(wl_egl_window, color);
++ surface->back_wl_buffer = buffer;
++ }
++
++ RPC_CALL7(eglIntSwapBuffers_impl,
++ thread,
++ EGLINTSWAPBUFFERS_ID_V2,
++ RPC_UINT(surface->serverbuffer),
++ RPC_UINT(surface->width),
++ RPC_UINT(surface->height),
++ RPC_UINT(surface->internal_handle),
++ RPC_UINT(surface->swap_behavior == EGL_BUFFER_PRESERVED ? 1 : 0),
++ RPC_UINT(khrn_platform_get_window_position(surface->win)),
++ RPC_INT(surface->back_wl_buffer->resource));
++
++ surface->front_wl_buffer->in_use = 1;
++ wl_surface_attach(wl_egl_window->wl_surface,
++ surface->front_wl_buffer->wl_buffer,
++ 0, 0);
++ wl_surface_damage(wl_egl_window->wl_surface, 0, 0,
++ surface->width, surface->height);
++ wl_surface_commit(wl_egl_window->wl_surface);
++
++ while(ret != -1 && surface->back_wl_buffer->in_use)
++ ret = wl_display_dispatch_queue(wl_display, process->wl_queue);
++ } else
++#endif
+ RPC_CALL6(eglIntSwapBuffers_impl,
+ thread,
+ EGLINTSWAPBUFFERS_ID,
+diff --git a/interface/khronos/egl/egl_client_get_proc.c b/interface/khronos/egl/egl_client_get_proc.c
+index 4cfa9ff..6a715af 100644
+--- a/interface/khronos/egl/egl_client_get_proc.c
++++ b/interface/khronos/egl/egl_client_get_proc.c
+@@ -254,6 +254,17 @@ EGLAPI void EGLAPIENTRY (* eglGetProcAddress(const char *procname))(void)
+ return (void(*)(void))eglQueryGlobalImageBRCM;
+ #endif
+
++#ifdef BUILD_WAYLAND
++#if EGL_WL_bind_wayland_display
++ if (!strcmp(procname, "eglBindWaylandDisplayWL"))
++ return (void(*)(void))eglBindWaylandDisplayWL;
++ if (!strcmp(procname, "eglUnbindWaylandDisplayWL"))
++ return (void(*)(void))eglUnbindWaylandDisplayWL;
++ if (!strcmp(procname, "eglQueryWaylandBufferWL"))
++ return (void(*)(void))eglQueryWaylandBufferWL;
++#endif
++#endif
++
+ return (void(*)(void)) NULL;
+ }
+
+diff --git a/interface/khronos/egl/egl_client_surface.c b/interface/khronos/egl/egl_client_surface.c
+index 0dc10e2..49cf7e5 100644
+--- a/interface/khronos/egl/egl_client_surface.c
++++ b/interface/khronos/egl/egl_client_surface.c
+@@ -46,6 +46,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include "interface/khronos/egl/egl_int_impl.h"
+ #endif
+
++#ifdef BUILD_WAYLAND
++#include "interface/khronos/wayland-egl/wayland-egl-priv.h"
++#include "interface/khronos/common/linux/khrn_wayland.h"
++#endif
++
+ #include <stdlib.h>
+
+
+@@ -314,8 +319,7 @@ EGL_SURFACE_T *egl_surface_create(
+ EGLenum texture_format,
+ EGLenum texture_target,
+ EGLNativePixmapType pixmap,
+- const uint32_t *pixmap_server_handle,
+- DISPMANX_RESOURCE_HANDLE_T next_resource_handle)
++ const uint32_t *pixmap_server_handle)
+ {
+ KHRN_IMAGE_FORMAT_T color;
+ KHRN_IMAGE_FORMAT_T depth;
+@@ -326,6 +330,10 @@ EGL_SURFACE_T *egl_surface_create(
+ EGLint config_depth_bits;
+ EGLint config_stencil_bits;
+ CLIENT_THREAD_STATE_T *thread = CLIENT_GET_THREAD_STATE();
++#ifdef BUILD_WAYLAND
++ struct wl_display *wl_display = khrn_platform_get_wl_display();
++ DISPMANX_RESOURCE_HANDLE_T resource;
++#endif
+
+ EGL_SURFACE_T *surface = egl_surface_pool_alloc();
+
+@@ -390,6 +398,18 @@ EGL_SURFACE_T *egl_surface_create(
+
+ vcos_assert(color != IMAGE_FORMAT_INVALID);
+
++#ifdef BUILD_WAYLAND
++ if (type == WINDOW && wl_display) {
++ surface->wl_egl_window = (struct wl_egl_window*)win;
++ surface->back_wl_buffer = allocate_wl_buffer(
++ surface->wl_egl_window, color);
++ resource = surface->back_wl_buffer->resource;
++ } else {
++ surface->wl_egl_window = NULL;
++ resource = DISPMANX_NO_HANDLE;
++ }
++#endif
++
+ #ifdef KHRONOS_EGL_PLATFORM_OPENWFC
+ // Create stream for this window
+ if(type != PBUFFER)
+@@ -474,7 +494,8 @@ EGL_SURFACE_T *egl_surface_create(
+ #endif
+ uint32_t results[3];
+
+- if (next_resource_handle)
++#ifdef BUILD_WAYLAND
++ if (resource != DISPMANX_NO_HANDLE)
+ RPC_CALL16_OUT_CTRL(eglIntCreateSurface_impl,
+ thread,
+ EGLINTCREATESURFACE_ID_V2,
+@@ -492,9 +513,10 @@ EGL_SURFACE_T *egl_surface_create(
+ RPC_UINT(config_stencil_bits),
+ RPC_UINT(sem_name),
+ RPC_UINT(type),
+- RPC_INT(next_resource_handle),
++ RPC_INT(resource),
+ results);
+ else
++#endif
+ RPC_CALL15_OUT_CTRL(eglIntCreateSurface_impl,
+ thread,
+ EGLINTCREATESURFACE_ID,
+@@ -663,6 +685,18 @@ void egl_surface_free(EGL_SURFACE_T *surface)
+ if( surface->type == WINDOW ) {
+ vcos_log_trace("egl_surface_free: calling platform_destroy_winhandle...");
+ platform_destroy_winhandle( surface->win, surface->internal_handle );
++
++#ifdef BUILD_WAYLAND
++ if (surface->back_wl_buffer) {
++ wl_buffer_destroy(surface->back_wl_buffer->wl_buffer);
++ free(surface->back_wl_buffer);
++ }
++
++ if (surface->front_wl_buffer) {
++ wl_buffer_destroy(surface->front_wl_buffer->wl_buffer);
++ free(surface->front_wl_buffer);
++ }
++#endif
+ }
+ /* return value ignored -- read performed to ensure blocking. we want this to
+ * block so clients can safely destroy the surface's window as soon as the
+diff --git a/interface/khronos/egl/egl_client_surface.h b/interface/khronos/egl/egl_client_surface.h
+index b5bf70a..e328b77 100644
+--- a/interface/khronos/egl/egl_client_surface.h
++++ b/interface/khronos/egl/egl_client_surface.h
+@@ -288,6 +288,41 @@ typedef struct {
+ type == PIXMAP
+ */
+ bool server_owned;
++
++#ifdef BUILD_WAYLAND
++ /*
++ wl_egl_window
++
++ Validity:
++ type == WINDOW
++
++ Invariant:
++ wayland EGL window
++ */
++ struct wl_egl_window *wl_egl_window;
++
++ /*
++ front_wl_buffer
++
++ Validity:
++ type == WINDOW
++
++ Invariant:
++ client-side information about the wl_buffer in the front
++ */
++ struct wl_dispmanx_client_buffer *front_wl_buffer;
++
++ /*
++ back_wl_buffer
++
++ Validity:
++ type == WINDOW
++
++ Invariant:
++ client-side information about the wl_buffer in the back
++ */
++ struct wl_dispmanx_client_buffer *back_wl_buffer;
++#endif
+ } EGL_SURFACE_T;
+
+ extern bool egl_surface_check_attribs(
+@@ -322,8 +357,7 @@ extern EGL_SURFACE_T *egl_surface_create(
+ EGLenum texture_format,
+ EGLenum texture_target,
+ EGLNativePixmapType pixmap,
+- const uint32_t *pixmap_server_handle,
+- DISPMANX_RESOURCE_HANDLE_T next_resource_handle);
++ const uint32_t *pixmap_server_handle);
+ extern EGL_SURFACE_T *egl_surface_from_vg_image(
+ VGImage vg_handle,
+ EGLSurface name,
+diff --git a/interface/khronos/egl/egl_int_impl.h b/interface/khronos/egl/egl_int_impl.h
+index 51b3580..6863a3b 100644
+--- a/interface/khronos/egl/egl_int_impl.h
++++ b/interface/khronos/egl/egl_int_impl.h
+@@ -57,7 +57,7 @@ FN(int, eglIntCreateSurface_impl, (
+ uint32_t sem,
+ uint32_t type,
+ uint32_t *results,
+- DISPMANX_RESOURCE_HANDLE_T next_resource_handle))
++ DISPMANX_RESOURCE_HANDLE_T resource_handle))
+
+ FN(int, eglIntCreatePbufferFromVGImage_impl, (
+ VGImage vg_handle,
+diff --git a/interface/khronos/ext/egl_wayland.c b/interface/khronos/ext/egl_wayland.c
+new file mode 100644
+index 0000000..5730743
+--- /dev/null
++++ b/interface/khronos/ext/egl_wayland.c
+@@ -0,0 +1,246 @@
++/*
++Copyright (c) 2013, Raspberry Pi Foundation
++All rights reserved.
++
++Redistribution and use in source and binary forms, with or without
++modification, are permitted provided that the following conditions are met:
++ * Redistributions of source code must retain the above copyright
++ notice, this list of conditions and the following disclaimer.
++ * Redistributions in binary form must reproduce the above copyright
++ notice, this list of conditions and the following disclaimer in the
++ documentation and/or other materials provided with the distribution.
++ * Neither the name of the copyright holder nor the
++ names of its contributors may be used to endorse or promote products
++ derived from this software without specific prior written permission.
++
++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
++DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
++DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
++ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++*/
++
++#include "interface/khronos/common/khrn_client_mangle.h"
++#include "interface/khronos/common/khrn_client_rpc.h"
++
++#include "interface/khronos/ext/egl_khr_sync_client.h"
++#include "interface/khronos/include/EGL/egl.h"
++#include "interface/khronos/include/EGL/eglext.h"
++
++#include "interface/vmcs_host/vc_vchi_dispmanx.h"
++
++#include <wayland-server.h>
++#include "interface/khronos/wayland-dispmanx-server-protocol.h"
++
++static void
++destroy_buffer(struct wl_resource *resource)
++{
++ struct wl_dispmanx_server_buffer *buffer = wl_resource_get_user_data(resource);
++
++ if(!buffer->in_use)
++ vc_dispmanx_resource_delete(buffer->handle);
++
++ free(buffer);
++}
++
++static void
++buffer_destroy(struct wl_client *client, struct wl_resource *resource)
++{
++ wl_resource_destroy(resource);
++}
++
++static const struct wl_buffer_interface dispmanx_buffer_interface = {
++ buffer_destroy
++};
++
++static VC_IMAGE_TYPE_T
++get_vc_format(enum wl_dispmanx_format format)
++{
++ /* XXX: The app is likely to have been premultiplying in its shaders,
++ * but the VC scanout hardware on the RPi cannot mix premultiplied alpha
++ * channel with the element's alpha.
++ */
++ switch (format) {
++ case WL_DISPMANX_FORMAT_ABGR8888:
++ return VC_IMAGE_RGBA32;
++ case WL_DISPMANX_FORMAT_XBGR8888:
++ return VC_IMAGE_BGRX8888;
++ case WL_DISPMANX_FORMAT_RGB565:
++ return VC_IMAGE_RGB565;
++ default:
++ /* invalid format */
++ return VC_IMAGE_MIN;
++ }
++}
++
++static void
++dispmanx_create_buffer(struct wl_client *client, struct wl_resource *resource,
++ uint32_t id, int32_t width, int32_t height,
++ uint32_t stride, uint32_t buffer_height, uint32_t format)
++{
++ struct wl_dispmanx_server_buffer *buffer;
++ VC_IMAGE_TYPE_T vc_format = get_vc_format(format);
++ uint32_t dummy;
++
++ if(vc_format == VC_IMAGE_MIN) {
++ wl_resource_post_error(resource,
++ WL_DISPMANX_ERROR_INVALID_FORMAT,
++ "invalid format");
++ return;
++ }
++
++ buffer = calloc(1, sizeof *buffer);
++ if (buffer == NULL) {
++ wl_resource_post_no_memory(resource);
++ return;
++ }
++
++ buffer->handle = vc_dispmanx_resource_create(vc_format,
++ width | (stride << 16),
++ height | (buffer_height << 16),
++ &dummy);
++ if(buffer->handle == DISPMANX_NO_HANDLE) {
++ wl_resource_post_error(resource,
++ WL_DISPMANX_ERROR_ALLOC_FAILED,
++ "allocation failed");
++ free(buffer);
++ return;
++ }
++
++ buffer->width = width;
++ buffer->height = height;
++ buffer->format = format;
++
++ buffer->resource = wl_resource_create(resource->client, &wl_buffer_interface,
++ 1, id);
++ if (!buffer->resource) {
++ wl_resource_post_no_memory(resource);
++ vc_dispmanx_resource_delete(buffer->handle);
++ free(buffer);
++ return;
++ }
++
++ wl_resource_set_implementation(buffer->resource,
++ (void (**)(void)) &dispmanx_buffer_interface,
++ buffer, destroy_buffer);
++
++ wl_dispmanx_send_buffer_allocated(resource, buffer->resource,
++ buffer->handle);
++}
++
++static const struct wl_dispmanx_interface dispmanx_interface = {
++ dispmanx_create_buffer,
++};
++
++static void
++bind_dispmanx(struct wl_client *client, void *data, uint32_t version, uint32_t id)
++{
++ struct wl_resource *resource;
++
++ resource = wl_resource_create(client, &wl_dispmanx_interface, 1, id);
++ wl_resource_set_implementation(resource, &dispmanx_interface, NULL, NULL);
++
++ wl_resource_post_event(resource, WL_DISPMANX_FORMAT,
++ WL_DISPMANX_FORMAT_ARGB8888);
++
++ wl_resource_post_event(resource, WL_DISPMANX_FORMAT,
++ WL_DISPMANX_FORMAT_XRGB8888);
++
++ wl_resource_post_event(resource, WL_DISPMANX_FORMAT,
++ WL_DISPMANX_FORMAT_ABGR8888);
++
++ wl_resource_post_event(resource, WL_DISPMANX_FORMAT,
++ WL_DISPMANX_FORMAT_XBGR8888);
++
++ wl_resource_post_event(resource, WL_DISPMANX_FORMAT,
++ WL_DISPMANX_FORMAT_RGB565);
++}
++
++EGLBoolean EGLAPIENTRY
++eglBindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display)
++{
++ CLIENT_THREAD_STATE_T *thread;
++ CLIENT_PROCESS_STATE_T *process;
++
++ if (!CLIENT_LOCK_AND_GET_STATES(dpy, &thread, &process))
++ return EGL_FALSE;
++
++ if (process->wl_global != NULL)
++ goto error;
++
++ process->wl_global = wl_global_create(display, &wl_dispmanx_interface, 1,
++ NULL, bind_dispmanx);
++ if (process->wl_global == NULL)
++ goto error;
++
++ return EGL_TRUE;
++
++error:
++ CLIENT_UNLOCK();
++ return EGL_FALSE;
++}
++
++EGLBoolean EGLAPIENTRY
++eglUnbindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display)
++{
++ CLIENT_THREAD_STATE_T *thread;
++ CLIENT_PROCESS_STATE_T *process;
++
++ if (!CLIENT_LOCK_AND_GET_STATES(dpy, &thread, &process))
++ return EGL_FALSE;
++
++ wl_global_destroy(process->wl_global);
++ process->wl_global = NULL;
++
++ CLIENT_UNLOCK();
++
++ return EGL_TRUE;
++}
++
++static int
++get_egl_format(enum wl_dispmanx_format format)
++{
++ switch (format) {
++ case WL_DISPMANX_FORMAT_ABGR8888:
++ return EGL_TEXTURE_RGBA;
++ case WL_DISPMANX_FORMAT_XBGR8888:
++ return EGL_TEXTURE_RGB;
++ case WL_DISPMANX_FORMAT_RGB565:
++ return EGL_TEXTURE_RGB;
++ default:
++ /* invalid format */
++ return EGL_NO_TEXTURE;
++ }
++}
++
++EGLBoolean EGLAPIENTRY
++eglQueryWaylandBufferWL(EGLDisplay dpy, struct wl_resource *_buffer,
++ EGLint attribute, EGLint *value)
++{
++ struct wl_dispmanx_server_buffer *buffer = wl_resource_get_user_data(_buffer);
++
++ if (wl_resource_instance_of(_buffer, &wl_dispmanx_interface,
++ &dispmanx_buffer_interface))
++ return EGL_FALSE;
++
++ switch (attribute) {
++ case EGL_TEXTURE_FORMAT:
++ *value = get_egl_format(buffer->format);
++ if (*value == EGL_NO_TEXTURE)
++ return EGL_FALSE;
++ return EGL_TRUE;
++ case EGL_WIDTH:
++ *value = buffer->width;
++ return EGL_TRUE;
++ case EGL_HEIGHT:
++ *value = buffer->height;
++ return EGL_TRUE;
++ }
++
++ return EGL_FALSE;
++}
+diff --git a/interface/khronos/include/EGL/eglext.h b/interface/khronos/include/EGL/eglext.h
+index 89a3369..d7e5ba7 100755
+--- a/interface/khronos/include/EGL/eglext.h
++++ b/interface/khronos/include/EGL/eglext.h
+@@ -191,6 +191,29 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EG
+ #endif
+
+
++#ifndef EGL_WL_bind_wayland_display
++#define EGL_WL_bind_wayland_display 1
++
++#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
++
++struct wl_display;
++struct wl_resource;
++#ifdef EGL_EGLEXT_PROTOTYPES
++EGLAPI EGLBoolean EGLAPIENTRY eglBindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display);
++EGLAPI EGLBoolean EGLAPIENTRY eglUnbindWaylandDisplayWL(EGLDisplay dpy, struct wl_display *display);
++EGLAPI EGLBoolean EGLAPIENTRY eglQueryWaylandBufferWL(EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
++#endif
++typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display);
++typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display);
++typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWL) (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
++
++#endif
++
++
+ #ifdef __cplusplus
+ }
+ #endif
+diff --git a/interface/khronos/wayland-egl/wayland-egl-priv.h b/interface/khronos/wayland-egl/wayland-egl-priv.h
+new file mode 100644
+index 0000000..8e38d36
+--- /dev/null
++++ b/interface/khronos/wayland-egl/wayland-egl-priv.h
+@@ -0,0 +1,53 @@
++/* Copied from Mesa */
++
++#ifndef _WAYLAND_EGL_PRIV_H
++#define _WAYLAND_EGL_PRIV_H
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/* GCC visibility */
++#if defined(__GNUC__) && __GNUC__ >= 4
++#define WL_EGL_EXPORT __attribute__ ((visibility("default")))
++#else
++#define WL_EGL_EXPORT
++#endif
++
++#include "interface/vmcs_host/vc_dispmanx.h"
++#include "interface/khronos/egl/egl_client_surface.h"
++
++#include <wayland-client.h>
++
++struct wl_dispmanx_client_buffer {
++ struct wl_buffer *wl_buffer;
++ DISPMANX_RESOURCE_HANDLE_T resource;
++
++ int pending_allocation;
++ int in_use;
++ int width;
++ int height;
++};
++
++struct wl_egl_window {
++ struct wl_surface *wl_surface;
++
++ int width;
++ int height;
++ int dx;
++ int dy;
++
++ int attached_width;
++ int attached_height;
++
++ /* XXX: The VC side seems to expect a valid element handle to be
++ passed to eglIntCreateSurface_impl and/or eglIntSwapBuffers_impl,
++ even for host-managed surfaces. */
++ DISPMANX_ELEMENT_HANDLE_T dummy_element;
++};
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif
+diff --git a/interface/khronos/wayland-egl/wayland-egl.c b/interface/khronos/wayland-egl/wayland-egl.c
+new file mode 100644
+index 0000000..b8f050b
+--- /dev/null
++++ b/interface/khronos/wayland-egl/wayland-egl.c
+@@ -0,0 +1,59 @@
++/* Copied from Mesa */
++
++#include <stdlib.h>
++
++#include <wayland-client.h>
++#include <wayland-egl.h>
++#include "wayland-egl-priv.h"
++
++WL_EGL_EXPORT void
++wl_egl_window_resize(struct wl_egl_window *egl_window,
++ int width, int height,
++ int dx, int dy)
++{
++ if (egl_window->width == width &&
++ egl_window->height == height &&
++ egl_window->dx == dx &&
++ egl_window->dy == dy)
++ return;
++
++ egl_window->width = width;
++ egl_window->height = height;
++ egl_window->dx = dx;
++ egl_window->dy = dy;
++}
++
++WL_EGL_EXPORT struct wl_egl_window *
++wl_egl_window_create(struct wl_surface *surface,
++ int width, int height)
++{
++ struct wl_egl_window *egl_window;
++
++ egl_window = calloc(1, sizeof *egl_window);
++ if (!egl_window)
++ return NULL;
++
++ egl_window->wl_surface = surface;
++ wl_egl_window_resize(egl_window, width, height, 0, 0);
++ egl_window->attached_width = 0;
++ egl_window->attached_height = 0;
++ egl_window->dummy_element = PLATFORM_WIN_NONE;
++
++ return egl_window;
++}
++
++WL_EGL_EXPORT void
++wl_egl_window_destroy(struct wl_egl_window *egl_window)
++{
++ free(egl_window);
++}
++
++WL_EGL_EXPORT void
++wl_egl_window_get_attached_size(struct wl_egl_window *egl_window,
++ int *width, int *height)
++{
++ if (width)
++ *width = egl_window->attached_width;
++ if (height)
++ *height = egl_window->attached_height;
++}
+diff --git a/interface/khronos/wayland-egl/wayland-egl.pc.in b/interface/khronos/wayland-egl/wayland-egl.pc.in
+new file mode 100644
+index 0000000..8bafc15
+--- /dev/null
++++ b/interface/khronos/wayland-egl/wayland-egl.pc.in
+@@ -0,0 +1,10 @@
++prefix=@CMAKE_INSTALL_PREFIX@
++exec_prefix=${prefix}
++libdir=${exec_prefix}/lib
++includedir=${prefix}/include
++
++Name: wayland-egl
++Description: VideoCore wayland-egl library
++Version: @PROJECT_APIVER@
++Libs: -L${libdir} -lwayland-egl
++Cflags: -I${includedir}
+diff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt
+index e0c6e13..35150ed 100755
+--- a/interface/vmcs_host/CMakeLists.txt
++++ b/interface/vmcs_host/CMakeLists.txt
+@@ -9,13 +9,24 @@ add_definitions(-fno-strict-aliasing)
+
+ include_directories(${VMCS_TARGET}/vcfiled)
+
+-add_library(vchostif
+- ${VMCS_TARGET}/vcfilesys.c ${VMCS_TARGET}/vcmisc.c
+- vc_vchi_gencmd.c vc_vchi_filesys.c
+- vc_vchi_tvservice.c vc_vchi_cecservice.c
+- vc_vchi_dispmanx.c vc_service_common.c)
++set(VCHOSTIF_SOURCE
++ ${VMCS_TARGET}/vcfilesys.c ${VMCS_TARGET}/vcmisc.c
++ vc_vchi_gencmd.c vc_vchi_filesys.c
++ vc_vchi_tvservice.c vc_vchi_cecservice.c
++ vc_vchi_dispmanx.c vc_service_common.c)
+ # ${VMCS_TARGET}/vmcs_main.c
+ # vc_vchi_haud.c
++
++if (BUILD_WAYLAND)
++wayland_add_protocol_server(
++ VCHOSTIF_SOURCE
++ ../../interface/wayland/dispmanx.xml
++ dispmanx
++)
++endif ()
++
++add_library(vchostif ${VCHOSTIF_SOURCE})
++
+ #add_library(bufman vc_vchi_bufman.c )
+
+ # OpenMAX/IL component service
+diff --git a/interface/vmcs_host/vc_dispmanx.h b/interface/vmcs_host/vc_dispmanx.h
+index 37fdae1..fe3619a 100755
+--- a/interface/vmcs_host/vc_dispmanx.h
++++ b/interface/vmcs_host/vc_dispmanx.h
+@@ -39,6 +39,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
++
++#ifdef BUILD_WAYLAND
++struct wl_resource;
++#endif
++
+ // Same function as above, to aid migration of code.
+ VCHPRE_ int VCHPOST_ vc_dispman_init( void );
+ // Stop the service from being used
+@@ -135,6 +140,11 @@ VCHPRE_ int VCHPOST_ vc_dispmanx_resource_set_palette( DISPMANX_RESOURCE_HANDLE_
+ // Start triggering callbacks synced to vsync
+ VCHPRE_ int VCHPOST_ vc_dispmanx_vsync_callback( DISPMANX_DISPLAY_HANDLE_T display, DISPMANX_CALLBACK_FUNC_T cb_func, void *cb_arg );
+
++#ifdef BUILD_WAYLAND
++VCHPRE_ DISPMANX_RESOURCE_HANDLE_T VCHPOST_ vc_dispmanx_get_handle_from_wl_buffer( struct wl_resource *_buffer );
++
++VCHPRE_ void VCHPOST_ vc_dispmanx_set_wl_buffer_in_use( struct wl_resource *_buffer, int in_use );
++#endif
+ #ifdef __cplusplus
+ }
+ #endif
+diff --git a/interface/vmcs_host/vc_vchi_dispmanx.c b/interface/vmcs_host/vc_vchi_dispmanx.c
+index 3c91e07..1d24b6e 100755
+--- a/interface/vmcs_host/vc_vchi_dispmanx.c
++++ b/interface/vmcs_host/vc_vchi_dispmanx.c
+@@ -1316,3 +1316,45 @@ static void *dispmanx_notify_func( void *arg ) {
+ }
+ return 0;
+ }
++
++
++#ifdef BUILD_WAYLAND
++/***********************************************************
++ * Name: vc_dispmanx_get_handle_from_wl_buffer
++ *
++ * Arguments:
++ * struct wl_resource *_buffer
++ *
++ * Description: Return the handle of the resource associated to this Wayland buffer
++ *
++ * Returns: A resource handle
++ *
++ ***********************************************************/
++VCHPRE_ DISPMANX_RESOURCE_HANDLE_T VCHPOST_ vc_dispmanx_get_handle_from_wl_buffer( struct wl_resource *_buffer )
++{
++ struct wl_dispmanx_server_buffer *buffer = (struct wl_dispmanx_server_buffer*)_buffer->data;
++ if (!buffer)
++ return DISPMANX_NO_HANDLE;
++
++ return buffer->handle;
++}
++
++/***********************************************************
++ * Name: vc_dispmanx_set_wl_buffer_in_use
++ *
++ * Arguments:
++ * struct wl_resource *_buffer
++ * int in_use
++ *
++ * Description: Mark this Wayland buffer as being in use by the compositor
++ *
++ ***********************************************************/
++VCHPRE_ void VCHPOST_ vc_dispmanx_set_wl_buffer_in_use( struct wl_resource *_buffer, int in_use )
++{
++ struct wl_dispmanx_server_buffer *buffer = (struct wl_dispmanx_server_buffer*)_buffer->data;
++ if (!buffer)
++ return;
++
++ buffer->in_use = in_use;
++}
++#endif
+diff --git a/interface/vmcs_host/vc_vchi_dispmanx.h b/interface/vmcs_host/vc_vchi_dispmanx.h
+index b723b76..f0bae30 100644
+--- a/interface/vmcs_host/vc_vchi_dispmanx.h
++++ b/interface/vmcs_host/vc_vchi_dispmanx.h
+@@ -66,4 +66,19 @@ typedef struct {
+ #define ELEMENT_CHANGE_MASK_RESOURCE (1<<4)
+ #define ELEMENT_CHANGE_TRANSFORM (1<<5)
+
++#ifdef BUILD_WAYLAND
++/* XXX: This should be in a private header that can be included from EGL and vc_* */
++#include <wayland-server.h>
++#include "interface/vmcs_host/wayland-dispmanx-server-protocol.h"
++struct wl_dispmanx_server_buffer {
++ struct wl_resource *resource;
++ struct wl_dispmanx *dispmanx;
++ enum wl_dispmanx_format format;
++ DISPMANX_RESOURCE_HANDLE_T handle;
++ int32_t width;
++ int32_t height;
++ int in_use;
++};
++#endif
++
+ #endif
+diff --git a/interface/wayland/dispmanx.xml b/interface/wayland/dispmanx.xml
+new file mode 100644
+index 0000000..c18626d
+--- /dev/null
++++ b/interface/wayland/dispmanx.xml
+@@ -0,0 +1,123 @@
++<?xml version="1.0" encoding="UTF-8"?>
++<protocol name="dispmanx">
++
++ <copyright>
++ Copyright © 2008-2011 Kristian Høgsberg
++ Copyright © 2010-2011 Intel Corporation
++ Copyright © 2013 Raspberry Pi Foundation
++
++ Permission to use, copy, modify, distribute, and sell this
++ software and its documentation for any purpose is hereby granted
++ without fee, provided that\n the above copyright notice appear in
++ all copies and that both that copyright notice and this permission
++ notice appear in supporting documentation, and that the name of
++ the copyright holders not be used in advertising or publicity
++ pertaining to distribution of the software without specific,
++ written prior permission. The copyright holders make no
++ representations about the suitability of this software for any
++ purpose. It is provided "as is" without express or implied
++ warranty.
++
++ THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
++ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
++ FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
++ SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
++ AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
++ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
++ THIS SOFTWARE.
++ </copyright>
++
++ <!-- DispManX support. This object is created by the server and published
++ using the display's global event. -->
++ <interface name="wl_dispmanx" version="1">
++ <enum name="error">
++ <entry name="alloc_failed" value="0"/>
++ <entry name="invalid_format" value="1"/>
++ </enum>
++
++ <enum name="format">
++ <!-- The pixel format codes match the #defines in drm_fourcc.h.
++ The formats actually supported by the compositor will be
++ reported by the format event. -->
++ <entry name="c8" value="0x20203843"/>
++ <entry name="rgb332" value="0x38424752"/>
++ <entry name="bgr233" value="0x38524742"/>
++ <entry name="xrgb4444" value="0x32315258"/>
++ <entry name="xbgr4444" value="0x32314258"/>
++ <entry name="rgbx4444" value="0x32315852"/>
++ <entry name="bgrx4444" value="0x32315842"/>
++ <entry name="argb4444" value="0x32315241"/>
++ <entry name="abgr4444" value="0x32314241"/>
++ <entry name="rgba4444" value="0x32314152"/>
++ <entry name="bgra4444" value="0x32314142"/>
++ <entry name="xrgb1555" value="0x35315258"/>
++ <entry name="xbgr1555" value="0x35314258"/>
++ <entry name="rgbx5551" value="0x35315852"/>
++ <entry name="bgrx5551" value="0x35315842"/>
++ <entry name="argb1555" value="0x35315241"/>
++ <entry name="abgr1555" value="0x35314241"/>
++ <entry name="rgba5551" value="0x35314152"/>
++ <entry name="bgra5551" value="0x35314142"/>
++ <entry name="rgb565" value="0x36314752"/>
++ <entry name="bgr565" value="0x36314742"/>
++ <entry name="rgb888" value="0x34324752"/>
++ <entry name="bgr888" value="0x34324742"/>
++ <entry name="xrgb8888" value="0x34325258"/>
++ <entry name="xbgr8888" value="0x34324258"/>
++ <entry name="rgbx8888" value="0x34325852"/>
++ <entry name="bgrx8888" value="0x34325842"/>
++ <entry name="argb8888" value="0x34325241"/>
++ <entry name="abgr8888" value="0x34324241"/>
++ <entry name="rgba8888" value="0x34324152"/>
++ <entry name="bgra8888" value="0x34324142"/>
++ <entry name="xrgb2101010" value="0x30335258"/>
++ <entry name="xbgr2101010" value="0x30334258"/>
++ <entry name="rgbx1010102" value="0x30335852"/>
++ <entry name="bgrx1010102" value="0x30335842"/>
++ <entry name="argb2101010" value="0x30335241"/>
++ <entry name="abgr2101010" value="0x30334241"/>
++ <entry name="rgba1010102" value="0x30334152"/>
++ <entry name="bgra1010102" value="0x30334142"/>
++ <entry name="yuyv" value="0x56595559"/>
++ <entry name="yvyu" value="0x55595659"/>
++ <entry name="uyvy" value="0x59565955"/>
++ <entry name="vyuy" value="0x59555956"/>
++ <entry name="ayuv" value="0x56555941"/>
++ <entry name="nv12" value="0x3231564e"/>
++ <entry name="nv21" value="0x3132564e"/>
++ <entry name="nv16" value="0x3631564e"/>
++ <entry name="nv61" value="0x3136564e"/>
++ <entry name="yuv410" value="0x39565559"/>
++ <entry name="yvu410" value="0x39555659"/>
++ <entry name="yuv411" value="0x31315559"/>
++ <entry name="yvu411" value="0x31315659"/>
++ <entry name="yuv420" value="0x32315559"/>
++ <entry name="yvu420" value="0x32315659"/>
++ <entry name="yuv422" value="0x36315559"/>
++ <entry name="yvu422" value="0x36315659"/>
++ <entry name="yuv444" value="0x34325559"/>
++ <entry name="yvu444" value="0x34325659"/>
++ </enum>
++
++ <event name="format">
++ <arg name="format" type="uint"/>
++ </event>
++
++ <!-- Create a wayland buffer for the DispManX resource. -->
++ <request name="create_buffer">
++ <arg name="id" type="new_id" interface="wl_buffer"/>
++ <arg name="width" type="int"/>
++ <arg name="height" type="int"/>
++ <arg name="stride" type="uint"/>
++ <arg name="buffer_height" type="uint"/>
++ <arg name="format" type="uint"/>
++ </request>
++
++ <event name="buffer_allocated">
++ <arg name="buffer" type="object" interface="wl_buffer"/>
++ <arg name="handle" type="uint"/>
++ </event>
++ </interface>
++
++</protocol>
+diff --git a/makefiles/cmake/Wayland.cmake b/makefiles/cmake/Wayland.cmake
+new file mode 100644
+index 0000000..ad90d30
+--- /dev/null
++++ b/makefiles/cmake/Wayland.cmake
+@@ -0,0 +1,72 @@
++#=============================================================================
++# Copyright (C) 2012-2013 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
++# All rights reserved.
++#
++# Redistribution and use in source and binary forms, with or without
++# modification, are permitted provided that the following conditions
++# are met:
++#
++# * Redistributions of source code must retain the above copyright
++# notice, this list of conditions and the following disclaimer.
++#
++# * Redistributions in binary form must reproduce the above copyright
++# notice, this list of conditions and the following disclaimer in the
++# documentation and/or other materials provided with the distribution.
++#
++# * Neither the name of Pier Luigi Fiorini nor the names of his
++# contributors may be used to endorse or promote products derived
++# from this software without specific prior written permission.
++#
++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
++# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
++# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++#=============================================================================
++
++find_program(WAYLAND_SCANNER_EXECUTABLE NAMES wayland-scanner)
++
++# wayland_add_protocol_client(outfiles inputfile basename)
++function(WAYLAND_ADD_PROTOCOL_CLIENT _sources _protocol _basename)
++ if(NOT WAYLAND_SCANNER_EXECUTABLE)
++ message(FATAL "The wayland-scanner executable has nto been found on your system. You must install it.")
++ endif()
++
++ get_filename_component(_infile ${_protocol} ABSOLUTE)
++ set(_client_header "${CMAKE_CURRENT_BINARY_DIR}/wayland-${_basename}-client-protocol.h")
++ set(_code "${CMAKE_CURRENT_BINARY_DIR}/wayland-${_basename}-protocol.c")
++
++ add_custom_command(OUTPUT "${_client_header}"
++ COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header < ${_infile} > ${_client_header}
++ DEPENDS ${_infile} VERBATIM)
++
++ add_custom_command(OUTPUT "${_code}"
++ COMMAND ${WAYLAND_SCANNER_EXECUTABLE} code < ${_infile} > ${_code}
++ DEPENDS ${_infile} VERBATIM)
++
++ list(APPEND ${_sources} "${_client_header}" "${_code}")
++ set(${_sources} ${${_sources}} PARENT_SCOPE)
++endfunction()
++
++# wayland_add_protocol_server(outfiles inputfile basename)
++function(WAYLAND_ADD_PROTOCOL_SERVER _sources _protocol _basename)
++ if(NOT WAYLAND_SCANNER_EXECUTABLE)
++ message(FATAL "The wayland-scanner executable has nto been found on your system. You must install it.")
++ endif()
++
++ get_filename_component(_infile ${_protocol} ABSOLUTE)
++ set(_server_header "${CMAKE_CURRENT_BINARY_DIR}/wayland-${_basename}-server-protocol.h")
++
++ add_custom_command(OUTPUT "${_server_header}"
++ COMMAND ${WAYLAND_SCANNER_EXECUTABLE} server-header < ${_infile} > ${_server_header}
++ DEPENDS ${_infile} VERBATIM)
++
++ list(APPEND ${_sources} "${_server_header}")
++ set(${_sources} ${${_sources}} PARENT_SCOPE)
++endfunction()
+--
+2.7.0
+
diff --git a/recipes-graphics/userland/userland/0010-wayland-Add-Wayland-example.patch b/recipes-graphics/userland/userland/0010-wayland-Add-Wayland-example.patch
new file mode 100644
index 0000000..f468ef3
--- /dev/null
+++ b/recipes-graphics/userland/userland/0010-wayland-Add-Wayland-example.patch
@@ -0,0 +1,866 @@
+From b853c05f425775a65cfc5a2d64b3491ab3673e36 Mon Sep 17 00:00:00 2001
+From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date: Tue, 1 Oct 2013 13:19:20 +0200
+Subject: [PATCH 10/16] wayland: Add Wayland example
+
+---
+ .../linux/apps/hello_pi/CMakeLists.txt | 1 +
+ .../apps/hello_pi/hello_wayland/CMakeLists.txt | 8 +
+ .../apps/hello_pi/hello_wayland/Djenne_128_128.raw | 3 +
+ .../linux/apps/hello_pi/hello_wayland/Makefile | 5 +
+ .../hello_wayland/cube_texture_and_coords.h | 100 ++++
+ .../linux/apps/hello_pi/hello_wayland/triangle.c | 666 +++++++++++++++++++++
+ host_applications/linux/apps/hello_pi/rebuild.sh | 3 +-
+ 7 files changed, 785 insertions(+), 1 deletion(-)
+ create mode 100644 host_applications/linux/apps/hello_pi/hello_wayland/CMakeLists.txt
+ create mode 100644 host_applications/linux/apps/hello_pi/hello_wayland/Djenne_128_128.raw
+ create mode 100644 host_applications/linux/apps/hello_pi/hello_wayland/Makefile
+ create mode 100644 host_applications/linux/apps/hello_pi/hello_wayland/cube_texture_and_coords.h
+ create mode 100644 host_applications/linux/apps/hello_pi/hello_wayland/triangle.c
+
+diff --git a/host_applications/linux/apps/hello_pi/CMakeLists.txt b/host_applications/linux/apps/hello_pi/CMakeLists.txt
+index f2c6aef..0df78f7 100644
+--- a/host_applications/linux/apps/hello_pi/CMakeLists.txt
++++ b/host_applications/linux/apps/hello_pi/CMakeLists.txt
+@@ -21,6 +21,7 @@ add_subdirectory(hello_encode)
+ add_subdirectory(hello_jpeg)
+ add_subdirectory(hello_videocube)
+ add_subdirectory(hello_teapot)
++add_subdirectory(hello_wayland)
+
+ if(BUILD_FONT)
+ set(VGFONT_SRCS libs/vgfont/font.c libs/vgfont/vgft.c libs/vgfont/graphics.c)
+diff --git a/host_applications/linux/apps/hello_pi/hello_wayland/CMakeLists.txt b/host_applications/linux/apps/hello_pi/hello_wayland/CMakeLists.txt
+new file mode 100644
+index 0000000..9a2f75c
+--- /dev/null
++++ b/host_applications/linux/apps/hello_pi/hello_wayland/CMakeLists.txt
+@@ -0,0 +1,8 @@
++set(EXEC hello_wayland.bin)
++set(SRCS triangle.c)
++
++add_executable(${EXEC} ${SRCS})
++target_link_libraries(${EXEC} ${HELLO_PI_LIBS} -lwayland-client -lwayland-egl)
++
++install(TARGETS ${EXEC}
++ RUNTIME DESTINATION bin)
+diff --git a/host_applications/linux/apps/hello_pi/hello_wayland/Djenne_128_128.raw b/host_applications/linux/apps/hello_pi/hello_wayland/Djenne_128_128.raw
+new file mode 100644
+index 0000000..de9173c
+--- /dev/null
++++ b/host_applications/linux/apps/hello_pi/hello_wayland/Djenne_128_128.raw
+@@ -0,0 +1,3 @@
++öÖ¿÷×À÷×ÀøØÁúÚÃúÚÃúÚÃúÚÃùÙÂùÙÂùÙÂùÙÂùÙÂùÙÂùÙÂùÙÂûÙÂûÙÂûÙÂûÙÂúØÁúØÁúØÁúØÁøÖ¿ù×Àù×ÀúØÁúØÁúØÁúØÁúØÁù×Àù×Àù×Àù×À÷Õ¾øÖ¿ù×Àù×À÷Õ¾÷Õ¾÷Õ¾÷Õ¾÷Õ¾÷Õ¾÷Õ¾÷Õ¾÷Õ¾÷Õ¾öÔ½öÔ½÷Õ¾÷Õ¾÷Õ¾÷Õ¾õÓ¼öÔ½öÔ½õÓ¼ôÒ»ôÒ»ôÒ»ôÒ»õкõкõкõкõкõкõкõкôиõѹôиôиòζóÏ·óÏ·õѹñ͵óÏ·óÏ·ñ͵òζñ͵ñ͵ñ͵ñ͵ñ͵ðÌ´ðÌ´ðÌ´ï˳ï˳ï˳î˱î˱î˱î˱î˱î˱î˱íʰïʰïʰîɯîɯíÈ®ìÇìÇìÇëÆ¬ëÆ¬ëÆ¬êÅ«êÅ«êÅ«ëÆ¬ëÆ¬èééĪéĪèéèéèéèéç¨ùÙÂúÚÃúÚÃûÛÄüÜÅüÜÅüÜÅüÜÅûÛÄûÛÄûÛÄûÛÄûÛÄûÛÄûÛÄûÛÄýÛÄýÛÄýÛÄýÛÄýÛÄýÛÄýÛÄýÛÄüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃûÙÂûÙÂûÙÂûÙÂúØÁúØÁúØÁúØÁù×Àù×Àù×Àù×ÀúØÁù×Àù×Àù×ÀøÖ¿øÖ¿øÖ¿øÖ¿øÖ¿øÖ¿øÖ¿÷Õ¾÷Õ¾÷Õ¾÷Õ¾÷Õ¾øÓ½øÓ½øÓ½øÓ½÷Ò¼÷Ò¼÷Ò¼÷Ò¼öÓº÷Ó»÷Ó»÷Ó»õѹöÒºöÒºöÒºôиõѹõѹôиôиôиôиóÏ·ôиóÏ·óÏ·óÏ·óÏ·òζòζòζñδñδñδñδñδñδðͳðͳòͳñ̲ñ̲ñ̲ð˱ïʰïʰïʰîɯîɯîɯíÈ®îɯíÈ®íÈ®ìÇìÇíÈ®íÈ®ìÇëÆ¬ëÆ¬êÅ«êÅ«ûÛÄûÛÄûÛÄûÛÄüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅûÛÄûÛÄûÛÄûÛÄýÛÄýÛÄüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃûÙÂúØÁûÙÂûÙÂûÙÂûÙÂúØÁúØÁúØÁúØÁúØÁúØÁù×Àù×ÀøÖ¿øÖ¿øÖ¿øÖ¿øÖ¿ù×ÀøÖ¿÷Õ¾÷Õ¾÷Õ¾÷Õ¾÷Õ¾øÓ½øÓ½øÓ½øÓ½÷Ò¼÷Ò¼÷Ò¼÷Ò¼öÓº÷Ó»÷Ó»öÒºöÒºöÒºöÒºöÒºõѹõѹõѹõѹõѹõѹôиôиôиôиôиóÏ·óÏ·óÏ·òζòζñδñδñδñδñδñδðͳðͳòͳñ̲ñ̲ñ̲ð˱ð˱ïʰïʰïʰîɯîɯîɯïʰîɯíÈ®ìÇìÇìÇìÇëÆ¬ìÇëÆ¬ëÆ¬ëÆ¬üÜÅüÜÅüÜÅüÜÅýÝÆýÝÆýÝÆýÝÆüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅûÛÄûÛÄûÛÄûÛÄüÚÃýÛÄýÛÄýÛÄüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃüÚÃûÙÂûÙÂûÙÂûÙÂûÙÂûÙÂûÙÂûÙÂúØÁúØÁúØÁúØÁúØÁúØÁù×Àù×Àù×Àù×Àù×Àù×ÀøÖ¿ù×ÀøÖ¿÷Õ¾÷Õ¾÷Õ¾÷Õ¾÷Õ¾øÓ½øÓ½øÓ½øÓ½÷Ò¼÷Ò¼÷Ò¼÷Ò¼öÓº÷Ó»÷Ó»öÒº÷Ó»÷Ó»öÒºöÒºõѹôиõѹöÒºõѹõѹôиôиõѹôиôиôиóÏ·óÏ·óÏ·òζòϵòϵòϵòϵñδñδðͳðͳòͳñ̲ñ̲ñ̲ð˱ð˱ð˱ïʰïʰïʰîɯîɯîɯîɯîɯîɯíÈ®îɯîɯíÈ®ìÇìÇëÆ¬ëÆ¬ûÜÅüÝÆýÞÇüÝÆüÝÆüÝÆüÝÆüÝÆûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅûÛÄûÛÄûÛÄûÛÄüÜÅüÜÅüÜÅüÜÅûÛÄûÛÄûÛÄûÛÄúÚÃûÛÄûÛÄûÛÄýÛÃýÛÃýÛÃýÛÃüÚÂüÚÂüÚÂüÚÂüÚÃüÚÃüÚÃüÚÃûÙÂûÙÂûÙÂûÙÂúØÀúØÀúØÀù׿÷Õ½úØÀúØÀù׿øÖ¿øÖ¿øÖ¿÷Õ¾÷Õ¾ù×Àù×ÀöÔ¾øÔ¼øÔ¼ùÕ½úÖ¾õѹøÔ¼ùÕ½ùÕ½÷Ó»÷Ó»÷Ó»÷Ó»öÒºöÒºöÒºöÒºõѹõѹõѹõѹõѹõѹõѹõѹõѹõѹõѹõѹôиôиóÏ·óÏ·óжòϵòϵòϵñδñδðͳðͳñ̲ñ̲ñ̲ñ̲ñ̲ñ̲ð˱ð˱ð˱ð˱ð˱ïʰïʰîɯîɯîɯïʰîɯîɯîɯìÇìÇìÇëÆ¬ûÜÅüÝÆýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅûÛÄûÛÄüÜÅûÛÄýÛÃýÛÃýÛÃýÛÃýÛÃýÛÃýÛÃýÛÃýÛÄýÛÄýÛÄýÛÄüÚÃüÚÃüÚÃüÚÃüÚÂüÚÂüÚÂûÙÁúØÀúØÀúØÀù׿ù×Àù×Àù×ÀøÖ¿ù×Àù×Àù×À÷Õ¿úÖ¾úÖ¾û׿û׿øÔ¼ùÕ½ùÕ½øÔ¼ùÕ½ùÕ½ùÕ½ùÕ½øÔ¼øÔ¼øÔ¼øÔ¼÷Ó»÷Ó»÷Ó»÷Ó»÷Ó»÷Ó»÷Ó»÷Ó»õѹõѹõѹõѹõѹôиôиôиóжóжóжòϵóжóжòϵòϵóδóδóδóδòͳñ̲ñ̲ñ̲ñ̲ñ̲ð˱ð˱ð˱ïʰïʰïʰïʰïʰîɯîɯîɯîɯîɯíÈ®üÝÆýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆûÜÅûÜÅûÜÅûÜÅýÝÆýÝÆýÝÆýÝÆûÛÄüÜÅüÜÅüÜÅþÜÄþÜÄþÜÄþÜÄýÛÃýÛÃýÛÃýÛÃýÛÄýÛÄýÛÄýÛÄýÛÄýÛÄýÛÄýÛÄüÚÂüÚÂüÚÂûÙÁüÚÂûÙÁûÙÁúØÀûÙÂûÙÂúØÁúØÁúØÁúØÁù×Àù×Àû׿û׿û׿û׿û׿úÖ¾ùÕ½ùÕ½ùÕ½ùÕ½ùÕ½ùÕ½øÔ¼øÔ¼øÔ¼øÔ¼øÔ¼øÔ¼øÔ¼øÔ¼÷Ó»÷Ó»÷Ó»÷Ó»÷Ó»÷Ó»÷Ó»÷Ó»öÒºöÒºõѹõѹõÒ¸ôÑ·ôÑ·ôÑ·óжóжòϵòϵõжôϵôϵôϵóδóδòͳòͳòͳòͳòͳñ̲ñ̲ñ̲ð˱ð˱ð˱ð˱ð˱ïʰïʰïʰîɯíÈ®üÝÆýÞÇþßÈýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆýÝÆýÝÆýÝÆýÝÆüÜÅýÝÆýÝÆüÜÅÿÝÅÿÝÅÿÝÅÿÝÅþÜÄþÜÄþÜÄþÜÄþÜÅþÜÅþÜÅþÜÅýÛÄýÛÄýÛÄýÛÄþÜÄýÛÃýÛÃýÛÃüÚÂûÙÁûÙÁýÛÃüÚÃüÚÃüÚÃûÙÂüÚÃûÙÂúØÁûÙÂýÙÀüØÀüØÀû׿üØÀúÖ¾úÖ¾û׿úÖ¾úÖ¾úÖ¾úÖ¾ùÕ½ùÕ½ùÕ½ùÕ½ùÕ½ùÕ½ùÕ½ùÕ½øÔ¼øÔ¼øÔ¼øÔ¼øÔ¼øÔ¼øÔ¼øÔ¼÷Ó»÷Ó»öÒºöÒºöÓ¹õÒ¸õÒ¸õÒ¸ôÑ·ôÑ·ôÑ·óжõжõжôϵóδôϵôϵóδóδóδóδóδòͳòͳòͳòͳñ̲ñ̲ñ̲ñ̲ð˱ð˱ñ̲ð˱ïʰýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆýÞÇýÞÇýÞÇýÞÇüÝÆýÞÇýÞÇýÞÇþÞÇþÞÇþÞÇþÞÇþÞÇþÞÇþÞÇþÞÇýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆýÝÆýÝÆýÝÆýÝÆüÜÅüÜÅüÜÅüÜÅûÜÂüÝÄüÝÄûÜÃûÜÃûÜÃûÜÃûÜÃýÜÂýÜÂýÜÂýÜÂýÜÂýÜÂýÜÂýÜÂüÚÂüÚÂüÚÂüÚÂüÚÂüÚÂüÚÂüÚÂúÙ¿úÙ¿úÙ¿úÙ¿úÙ¿úÙ¿úÙ¿ùؾúØÁúØÁúØÁúØÁøÖ¿øÖ¿øÖ¿øÖ¿øÖ¾÷Õ½÷Õ½÷Õ½÷Õ½÷Õ½÷Õ½÷Õ½öÔ¼÷Õ½öÔ¼õÓ»õÓ»õÓ»õÓ»ôÒºóѹôÒºóѹòиóѹòиòиòиôиóÏ·óÏ·óÏ·ôиôиôиôиñÏ·ñÏ·ñÏ·ðζðζðζï͵ï͵ðͳðͳðͳï̲ï̲ï̲î˱î˱þßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈýÞÇýÞÇþßÈýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÝÆýÝÆýÝÆýÝÆüÜÅüÜÅüÜÅüÜÅûÜÃüÝÄüÝÄüÝÄüÝÄüÝÄüÝÄüÝÄþÝÃþÝÃþÝÃþÝÃýÜÂýÜÂýÜÂýÜÂýÛÃýÛÃýÛÃýÛÃýÛÃýÛÃýÛÃýÛÃüÛÁüÛÁüÛÁüÛÁýÜÂýÜÂüÛÁüÜÁúØÁúØÁúØÁúØÁúØÁúØÁúØÁúØÁúØÀúØÀù׿ù׿øÖ¾øÖ¾øÖ¾øÖ¾÷Õ½øÖ¾÷Õ½öÔ¼øÖ¾÷Õ½÷Õ½öÔ¼öÔ¼öÔ¼õÓ»ôÒºõÓ»õÓ»ôÒºôÒºöÒºõѹõѹõѹóÏ·óÏ·óÏ·óÏ·ñÏ·ñÏ·ðζðζñÏ·ðζðζðζòϵòϵòϵñδñδñδðͳðͳþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈÿàÉþßÈýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆþÞÇþÞÇþÞÇþÞÇýÝÆýÝÆýÝÆýÝÆüÝÄýÞÅýÞÅüÝÄýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅüÝÄüÝÄüÝÄüÝÄûÜÃûÜÃûÜÃûÜÃûÜÃûÜÃûÜÃûÜÃûÜÃûÜÃûÜÃûÜÃûÜÃûÜÃûÜÃûÜÃúÚÃúÚÃúÚÃúÚÃùÙÂùÙÂùÙÂùÙÂøÚÀøÙÀøÙÀøÙÀ÷Ø¿÷Ø¿÷Ø¿÷Ø¿ù׿ù׿øÖ¾øÖ¾øÖ¾øÖ¾÷Õ½÷Õ½÷Õ½÷Õ½öÔ¼õÓ»õÓ»õÓ»õÓ»õÓ»öÒºöÒºõѹõѹôиôиôиôиòиòиñÏ·ñÏ·òиòиñÏ·ñÏ·òϵòϵòϵñδñδñδðͳðͳüàÈüàÈüàÈüàÈýáÉýáÉýáÉýáÉüàÈüàÈüàÈüàÈüàÈýáÉýáÉýáÉþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈýÞÇýÞÇýÞÇýÞÇÿßÈÿßÈÿßÈÿßÈþÞÇþÞÇþÞÇþÞÇýÞÅýÞÅþ߯ýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅüÝÄüÝÄüÝÄüÝÄüÝÄüÝÄüÝÄüÝÄüÝÄüÝÄüÝÄüÝÄûÜÃûÜÃüÝÄüÝÄûÛÄûÛÄûÛÄûÛÄúÚÃúÚÃúÚÃúÚÃúÛÂúÛÂúÛÂùÚÁùÚÁùÚÁùÚÁùÚÁúØÀúØÀúØÀù׿úØÀù׿ù׿ù׿ù׿ù׿øÖ¾÷Õ½÷Õ½÷Õ½öÔ¼öÔ¼öÔ¼õÓ»õÓ»õÓ»ôÒºôÒºôÒºôÒºôÒºôÒºóѹóѹóѹóѹòиòиòÑ·ñжñжñжðϵðϵðϵïδüàÈüàÈýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈýÞÇþßÈþßÈýÞÇýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅüÝÄüÝÄüÝÄüÝÄüÝÄüÝÄüÝÄüÝÄüÝÄüÝÄýÞÅýÞÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅýÜÆùÚÁùÚÁùÚÁùÚÁùÚÁùÚÁùÚÁùÚÁùÙÂùÙÂùÙÂùÙÂùÙÂùÙÂùÙÂùÙÂ÷Ø¿÷Ø¿÷Ø¿÷Ø¿ö×¾ö×¾ö×¾õÖ½øÖ¾÷Õ½÷Õ½÷Õ½öÔ¼öÔ¼öÔ¼÷Ô¼òÓºòÓºòÓºòÓºòÓºòÓºñÒ¹ñÒ¹òиòиñÏ·ñÏ·ñÏ·ñÏ·ñÏ·ðζüàÈýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈýÞÇþßÈþßÈýÞÇþßÈþßÈþßÈþßÈÿàÉÿàÉÿàÉÿàÉýÞÇýÞÇýÞÇýÞÇýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅýÞÅüÝÄýÞÅýÞÅýÞÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÝÄüÝÄüÝÄüÝÄûÜÃûÜÃûÜÃûÜÃûÛÄûÛÄûÛÄûÛÄúÚÃúÚÃúÚÃúÚÃùÚÁùÚÁøÙÀøÙÀùÚÁøÙÀøÙÀøÙÀù׿øÖ¾øÖ¾øÖ¾÷Õ½÷Õ½÷Õ½öÔ¼ôÕ¼ôÕ¼ôÕ¼ôÕ¼óÔ»óÔ»óÔ»òÓºôÒºóѹóѹóѹòиòиñÏ·ñÏ·ûáÉûáÉûáÉüâÊûáÉûáÉûáÉûáÉûáÉûáÉûáÉûáÉûáÉûáÉûáÉûáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉýÞÇþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇý߯ý߯ý߯ý߯üÞÅüÞÅüÞÅüÞÅüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅûÝÄûÝÄûÝÄûÝÄûÝÄûÝÄûÝÄûÝÄüÜÅüÜÅüÜÅüÜÅûÛÄûÛÄûÛÄûÛÄûÜÃúÛÂúÛÂúÛÂùÚÁùÚÁøÙÀøÙÀúØÀúØÀù׿ù׿ù׿ù׿øÖ¾øÖ¾ö×¾ö×¾ö×¾õÖ½õÖ½õÖ½ôÕ¼ôÕ¼õÓ»õÓ»ôÒºôÒºóѹóѹóѹòиûáÉûáÉüâÊüâÊüâÊüâÊüâÊüâÊüâÊüâÊüâÊüâÊüâÊüâÊüâÊüâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉþßÈÿàÉÿàÉþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈý߯ý߯ý߯ý߯üÞÅüÞÅüÞÅüÞÅüÝÆüÝÆüÝÆüÝÆýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆûÝÄûÝÄûÝÄûÝÄûÝÄûÝÄûÝÄûÝÄüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅüÜÅûÜÃúÛÂúÛÂúÛÂûÜÃúÛÂúÛÂúÛÂúÛÂùÚÁùÚÁùÚÁøÙÀøÙÀøÙÀ÷Ø¿÷Ø¿÷Ø¿ö×¾õÖ½õÖ½õÖ½ôÕ¼ôÕ¼óÔ»óÔ»óÔ»òÓºòÓºòÓºòÓºñÒ¹ùâÈùâÈùáÉùáÉüáÌüáÌüáÍüáÍûáÉûáÉûáÉûáÉüâÊüâÊüâÊüâÊüâÊüâÊüâÊþâÊýáÉýáÉýáÉÿàÉýãÈýâÈýâÈýâÈýâÈýâÈýâÈýâÈÿáÈÿáÈÿáÈÿáÈÿáÈÿáÈÿáÈÿáÈþáÀúàÆøÞÊþÞÇÿãÄÿâÃûÝÃöÚÆúÞÅÿãÈúÝÂ÷äÊùÝÎÿÛÎÿÞÈñåÃÿÞÉÿßÈÿßÈÿßÈþÞÇþÞÇþÞÇþÞÇþÞÇþÞÇþÞÇþÞÇþÞÇþÞÇþÞÇþÞÇþÞÇþÞÇþÞÇþÞÇýÝÆýÝÆýÝÆýÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆûÜÅûÜÅûÜÅûÜÅúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÅøÙÂ÷ØÁ÷ØÁ÷ØÁ÷Ø¿÷Ø¿÷Ø¿ö×¾õÖ½ö×¾õÖ½ôÕ¼ôÕ¼ôÕ¼ôÕ¼óÔ»óÔ»óÔ»òÓºòÓºùãÊúâÊúâÊúâÌüáÌüáÌüáÍüáÍüâÊüâÊüâÊüâÊüâÊüâÊüâÊüâÊüâÊüâÊüâÊüâÊýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉÿâÄýâÈûàÌÿàÉÿÞÅÿæÈúÜÃöàÍþéÖÿãÉûÝÁùæÊúßËÿÛÎÿÞÈõäÃÿÞÉþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆûÜÅûÜÅûÜÅûÜÅüÝÆüÝÆüÝÆüÝÆûÜÅûÜÅûÜÅûÜÅúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄøÙÂøÙÂ÷ØÁ÷ØÁøÙÀøÙÀ÷Ø¿÷Ø¿ö×¾ö×¾õÖ½õÖ½õÖ½ôÕ¼ôÕ¼ôÕ¼óÔ»óÔ»óÔ»óÔ»úäËúäËûãÍûãÍûãÍýâÍýâÎýâÎýãËýãËýãËýãËüâÊüâÊüâÊüâÊüâÊüâÊüâÊüâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉþâÃùàÈúßÊþßÈþàÆÿãÇ÷ßÌìÜÑóãÒÿãÏÿáÅøâÈûàÍÿÞÌÿàÉöäÇÿàÉÿàÉÿàÉÿàÉþßÈþßÈþßÈþßÈÿàÉÿàÉÿàÉÿàÉýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆûÜÅûÜÅûÜÅûÜÅúÛÄúÛÄúÛÄúÛÄùÚÃùÚÃøÙÂøÙÂùÚÁøÙÀøÙÀøÙÀ÷Ø¿ö×¾ö×¾ö×¾ö×¾õÖ½õÖ½õÖ½ôÕ¼ôÕ¼ôÕ¼óÔ»úãÍúãÍúãÍûãÍüäÎüäÎþãÏþãÏûãÍûãÍûãÍûãÍûãÍûãÍûãÍûãÍûãÍûãÍýâÍýâÍüáÌþáÌþáÌþáÌþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊýâÇûáÉûàÌÿàÉÿåÉøÝÅúíÞnhcòëÞøÜËÿäÊøàÅúßËÿÞÌÿßËøäÆÿàÉÿàÉÿàÉÿàÉþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈþßÈýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅúÛÄùÚÃùÚÃùÚÃùÚÁùÚÁùÚÁøÙÀøÙÀö×¾ö×¾÷Ø¿ö×¾ö×¾õÖ½õÖ½õÖ½õÖ½ôÕ¼ôÕ¼úâÎúâÎúâÎúâÎúáÍüãÏüäÎûãÍüäÎüäÎüäÎüäÎûãÍûãÍûãÍûãÍûãÍûãÍûãÍýâÍýâÍýâÍýâÍÿâÍüâÊüâÊüâÊüâÊûáÉüâÊýãËûâÊýáÉýáÉþâÊÿãËþâÊþâÊþâÊþâÊþâÊüáÍüáÌÿãÉýàÄñÝÇÚÖÌ]egòÛÌÿÜÄÿæÊøáÉÿàËÿßËúâÈÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉÿàÉþßÈþßÈþßÈþßÈýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇþßÈþßÈþßÈþßÈýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇþßÈþßÈýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆûÜÅûÜÅûÜÅûÜÅúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄùÚÃùÚÃùÚÁùÚÁøÙÀøÙÀøÙÀøÙÀ÷Ø¿÷Ø¿ö×¾ö×¾õÖ½õÖ½ôÕ¼ôÕ¼ôÕ¼ôÕ¼üæÔûåÓüäÐúâÎûãÏüãÏýåÏüäÎüäÎüäÎüäÎüäÎûãÍûãÍûãÍûãÍûãÍûãÍûãÍûãÍýâÍýâÍýâÍýâÍýâÍýâÍýâÍýâÍýâÍþãÎþãÎýâÍþáÌþáÌþáÌþáÌþáÌþáÌþáÌþáÌûáÌüáÌüáÌÿâÉùàÅôæÓ¬«UdlYheÿìáÿäÐþáÅùäÉþáÍÿàÌþâÊýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉþâÊþâÊþâÊþâÊýáÉýáÉýáÉýáÉüàÈüàÈüàÈüàÈüàÈüàÈüàÈûàÈþßÈþßÈþßÈþßÈþßÈþßÈýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄúÛÄùÚÃúÛÂúÛÂúÛÂùÚÁøÙÀøÙÀøÙÀøÙÀ÷Ø¿ö×¾ö×¾ö×¾ö×¾õÖ½õÖ½ôÕ¼ùãÑùãÑùãÑûãÏûãÏûãÏûãÍûãÍüãÏüãÏüãÏüãÏüãÏüãÏüãÏüãÏûãÏûãÏüãÏüãÏüãÏþãÏþãÏþãÏýâÍýâÍýâÍýâÍýâÍýâÍýâÍýâÍýâÍýâÍüáÌüáÌüáÌüáÌüáÌüáÌüáÌüáÌüâÊþãÉÿèÍîâÐ@Vg:PMÿõîÿÞÉÿäÆùåÈüáÍÿáÌÿáÍýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉüàÈüàÈüàÈüàÈýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉÿàÉÿàÉÿàÉÿàÉÿàÉþßÈýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅúÛÄúÛÄúÛÄûÜÃûÜÃúÛÂúÛÂùÚÁùÚÁùÚÁøÙÀ÷Ø¿÷Ø¿÷Ø¿ö×¾øÙÀ÷Ø¿ö×¾õÖ½þç×þç×þèÖÿçÖÿçÓýåÑûäÎýåÏüäÐüäÐüäÐüäÐûãÏûãÏûãÏûãÏûãÏûãÏüãÏüãÏüãÏþãÏþãÏþãÏýâÍýâÍýâÍýâÍþãÎýâÍýâÍþãÎüáÌýâÍýâÍýâÍýâÍýâÍýâÍýâÍýâÎýâÎýãËÿäÉøàÆäÚÉlyzB[n>VWIJ¬ÿÞÉÿ寸äÈùâÊÿßÎÿáÌþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉýáÉþáÉýáÉýáÉýáÉþßÈþßÈþßÈþßÈþßÈþßÈÿàÉÿàÉþßÈþßÈþßÈþßÈýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆüÝÆûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅúÛÄúÛÄúÛÂúÛÂúÛÂúÛÂúÛÂúÛÂùÚÁùÚÁøÙÀøÙÀ÷Ø¿÷Ø¿ö×¾ö×¾ö×¾ö×¾úêÒýëÚþëÜùçÖõåÎøçÏûåÓüá×øãÎùäÏùåÐùåÏüäÐüäÐüäÐüäÐüäÎüäÎýåÏýåÏüäÎüäÎüäÎüäÎüãÏüãÏüãÏüãÏüãÏüãÏüãÏüãÏüåÎüäÎüäÎüäÎûãÍûãÍûãÍúãÍÿáÈõâÎöâÍÿåÃÿèÏA;=?LWI]`AU[ôãÛúÝÍÿãÈüãÉûâÉþßÎýãÇýâÈýâÈýâÈýãÈþãÉÿäÊÿäÊþãÉþãÉþãÉþãÉýâÈýâÈýâÈýâÇøßËïæÉÿàÂÿäËÙáÈøãÒÿØÉðèÈýàÈüàÈüàÈüàÈüàÈüàÈüàÈüàÈûßÇûßÇûßÇûßÇûßÇûßÇûßÇúßÇýÞÇýÞÇýÞÇýÞÇûÜÅüÝÆýÞÇýÞÇüÝÆüÝÆûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅúÛÄúÛÄùÚÃùÚÃùÚÃùÚÃùÚÃøÙÂùÙÂøØÁøØÁøØÁ÷×À÷×À÷×ÀöÖ¿ùéÙ÷ç×ö娸è×øêÔûêÕýéØýçÛÿñÛÿîÙÿëÖýèÓûãÏûãÏûãÏûãÏüäÎüäÎüäÎüäÎüäÎüäÎüäÎüäÎýäÐýäÐýäÐýäÐüãÏüãÏüãÏüãÏüäÎüäÎüäÎüäÎûãÍûãÍûãÍûãÍÿäÈ÷ãÏ÷ãÍÿæÆüåÏÉÇÅGV`=QV@TY.23D2+óØÆÿãËüãÉüâÊþßÎÿãËÿãËÿãËÿãËÿãËÿãËþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊþßÈõçËþÛÄüâÑÝç×îÚÏÿßÌõåÄüßÈüàÈüàÈüàÈüàÈüàÈüàÈüàÈüàÈüàÈüàÈüàÈûßÇûßÇûßÇûßÇýÞÇýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆüÝÆüÝÆüÝÆûÜÅûÜÅûÜÅûÜÅûÜÅûÜÅúÛÄúÛÄúÛÄùÚÃúÛÄùÚÃùÚÃùÚÃøÙÂøÙÂ÷ØÁ÷ØÁ÷ØÁ÷ØÁö×Àö×Àúîâùîâùíß÷ëÙøêØúêÙùéÚøèÛúåÏùäÏùäÏúåÐüäÐüäÐüäÐüäÐýåÏýåÏüäÎüäÎüäÎüäÎüäÎüäÎüãÏüãÏüãÏüãÏüãÏüãÏüãÏüãÏüäÎüäÎüäÎüäÎüäÎüäÎüäÎüäÎÿäÈúâÑúâÎÿäÈ𶸻_pzGV]@T\MRS¡÷ÞËýâÊüäÉüáÍüáÎüâÉüâÊüâÊûâÊýãËýãËüâÊûáÉþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâÊÿáÅùáÈýâÒêÝÙhwvñäàÿÝÌùãÁýáÊýáÉýáÉýáÉýáÉýáÉýáÉýáÉüàÈüàÈüàÈüàÈûßÇûßÇûßÇûßÇýÞÇýÞÇýÞÇýÞÇýÞÇýÞÇüÝÆüÝÆýÞÇüÝÆüÝÆüÝÆûÜÅûÜÅûÜÅûÜÅûÜÅúÛÄúÛÄúÛÄúÛÄúÛÄùÚÃùÚÃùÚÃùÚÃøÙÂøÙÂøÙÂ÷ØÁ÷ØÁ÷ØÁõíéùðæúòáýñßÿðàþîáûëßùêÚüçÒúåÐùäÏûæÑÿèÔÿèÔÿèÔÿèÔÿçÑÿçÑþæÐýåÏýåÏýåÏýåÏýåÏüãÏüãÏüãÏüãÏýäÐýäÐýäÐýäÐüäÎüäÎüäÎüäÎüäÎüäÎüäÎüäÎÿåÈùâÑûáÑÿåÉìßÍ\m|M[d:T\LSVÿñëöÝÍüäÊûãËûãÍýâÎýãËýãËýãËýãËüâÊüâÊýãËýãËþâÊþâÊþâÊþâÊþâÊþâÊþâÊþâËÿãÅÿàÊöâÚ¦¯³Viu¯©¯ýÞÐþå¿ýáÊýáÉýáÉýáÉýáÉýáÉýáÉýáÉüàÈüàÈüàÈüàÈüàÈüàÈüàÈüàÈüàÈüàÈüàÈüàÈúßÇûßÇûßÇûßÇûßÇûßÇúÞÆúÞÆúÞÆúÞÆúÞÆúÞÆùÝÅùÝÅøÜÄøÜÄøÜÄøÜÄøÜÄ÷ÛÃúÛÄùÚÃùÚÃùÚÃøÙÂøÙÂøÙÂ÷ØÁõìïôìåøñÞùîÚøéÙúèÞùêÝøê×þèÓÿëÖÿì×þéÔýäÐýåÑýåÑýåÑûãÐüäÐüäÐüäÐüäÐüäÐüäÐüäÐýäÐýäÐýäÐýäÐüãÏüãÏüãÏüãÏüãÏüãÏüãÏüãÏüãÏüãÏüãÏüãÐõâÄûäÓþãÕþáË¢ /5G\nJS_<ZgFOWËÁ½º¤ÿîØûæÌüäÎúâÎýãËýãËýãËýãËýãËýãËýãËýãËüâÊüâÊüâÊüâÊüâÊüâÊüâÊüâËýãÂûÙÅóæâ¥K`tSS_üêàÿåÅúáÉûáÉûáÉûáÉûáÉûáÉûáÉûáÉúáÉüâÊûáÉùßÇúàÈúàÈúàÈúàÈûßÇûßÇûßÇûßÇûßÇûßÇûßÇûßÇúÞÆúÞÆúÞÆúÞÆùÝÅùÝÅùÝÅùÝÅùÝÅùÝÅùÝÅùÝÅøÜÄøÜÄøÜÄøÜÄúÛÄúÛÄúÛÄúÛÄùÚÃùÚÃøÙÂøÙÂÑÆÑöìåøí×ùëÔüæ×úãÜ÷äÕõèÐúåÐûæÑûæÑúåÐýåÑýåÑýåÑýåÑüäÐüäÐüäÐüäÐüäÐüäÐüäÐüäÐýäÐýäÐýäÐýäÐýäÐýäÐýäÐýäÐýäÐýäÐýäÐýäÐüãÏüãÏüãÏüãÐùåÇøàÏÿáÕõçÑÓÎÁv1EYPVd;ZiGQYogcÿîáùàÌûåËûäÎüãÏûãÍûãÍûãÍûãÍûãÍûãÍûãÍûãÎýâÍýâÍýâÍýâÍüáÌüáÌüáÌýáÎõãÅÿÚÍßÖÓ|¥?RePUbâáØúàÇûáÉûáÉûáÉûáÉûáÉûáÉûáÉûáÉûáÉûáÉûáÉúàÈúàÈúàÈúàÈúàÈüàÈüàÈüàÈüàÈûßÇûßÇûßÇûßÇúÞÆúÞÆúÞÆúÞÆúÞÆúÞÆúÞÆúÞÆùÝÅùÝÅùÝÅùÝÅøÜÄøÜÄøÜÄøÜÄøÜÄøÜÄøÜÄøÜÄ÷ÛÃ÷ÛÃ÷ÛÃöÚÂ|éÝ×óèÌýìÐþãÖýàÚúãÒùéËûæÑûæÑüçÒûæÑýåÑýåÑýåÑýåÑýåÑýåÑýåÑýåÑýåÑýåÑýåÑýåÑþåÑþåÑþåÑþåÑýäÐýäÐýäÐýäÐýäÐýäÐýäÐýäÐüãÏüãÏüãÏýãÐøéÇþåÕ÷ÕÉÿíÞÌÍÃ|@ZnKM\=_nJU`C<;ÿÿòùäÎøäÎüäÎüãÏüäÎüäÎüäÎüäÎüäÎüäÎüäÎüäÎýâÍýâÍýâÍýâÍüáÌüáÌüáÌþáÌéàÊÿßÓ³§\x129=APbTYf£êÔÃýâÊüâÊüâÊüâÊûáÉûáÉûáÉûáÉüâÊûáÉûáÉûáÉûáÉûáÉûáÉûáÉúàÈúàÈúàÈúàÈùßÇùßÇùßÇùßÇùßÇùßÇùßÇùßÇøÞÆøÞÆøÞÆøÞÆ÷ÝÅ÷ÝÅ÷ÝÅ÷ÝÅ÷ÝÅ÷ÝÅ÷ÝÅ÷ÝÅøÜÄøÜÄøÜÄøÜÄøÜÄøÜÄ÷ÛÃ÷ÛÃjWiïàÚøêÍÿîÑÿäÕÿâÜÿæ×üêÊûæÒûæÑûæÑûæÑýåÑýåÑýåÑýåÑýåÑýåÑýåÑýåÑýåÑýåÑýåÑýåÑþåÑþåÑþåÑþåÑýäÐýäÐýäÐýäÐýäÐýäÐýäÐýäÐýäÐýäÐýäÐþäÐ÷êÆþãÕþØÐÿçÕÏÑÆw¡]v`bsChx[irúæÚûåÍúäÎúåÏýäÑüäÎüäÎüäÎüäÎüäÎüäÎüäÎüäÎýâÍýâÍýâÍýâÍýâÍýâÍýâÍÿâÍêèÒ纲¾¹³b;JXZbn°Á»îßÏýâÉüâÊüâÊüâÊüâÊüâÊüâÊüâÊýâÊûáÉûáÉüâÊûáÉûáÉûáÉûáÉúàÈúàÈúàÈúàÈúàÈúàÈúàÈúàÈùßÇùßÇùßÇùßÇøÞÆøÞÆøÞÆøÞÆøÞÆøÞÆøÞÆøÞÆ÷ÝÅ÷ÝÅ÷ÝÅ÷ÝÅùÝÅùÝÅùÝÅùÝÅùÝÅøÜÄøÜÄøÜÄCHVèÚÔÿæÔ÷ãÓöåÔýçÎýçÍôä×öæÑöæÑöæÑùæÑ÷åÐøæÑûæÑüçÒýåÑýåÑýåÑýåÑýåÑýåÑýåÑýåÑýæÐýæÐýæÐýæÐüåÏýæÐýæÐÿçÑòêÌþêÈûçÎóäÚøáÒÿäÆüàËóèãÐãÚÌßÚ¼ÕÕ®ËÔª¼±Äµ\x7f³k
;W^Nir/GQ¤¶»ÒÙÖîíßçßÍùåÊûåÌûåËûäÎûãÏüãÏüãÏüáÓüéÅüåËúæËûãÐùâÎûâÎûãÍþãÊóáÊïçࡹÃjUT_MZ[xôÜÜúãÌúâÌùáÎüáÍüáÍüáÎúâÌúâÍøãÊùãÊúâÊúâÊûáÉûáÉþáÉþáÉùáÌùáËùáËùáÌøàÊøàÊøàÊøàË÷àÆ÷àÆ÷àÆ÷àÆõßÅ÷àÆ÷àÆøáÇößÅößÅößÅößÅößÅößÅößÅößÅ÷ÞÄ÷ÞÄ÷ÞÄ÷ÞÄõÜÂ÷ÞÄöÝÃõÜÂJM[÷éãýåÑ÷ãÒ÷åÔýæÐýçÎõåÕúæÑúæÑùæÑùæÑýçÒüçÒûæÑûæÑûæÑûæÑûæÑûæÑûæÑûæÑûæÑûæÑûæÐûæÐûæÐûæÐüçÑüçÑúæÐûæÐöæÔÿæÍÿåÒöäØúæÕúãÉäÛË¥¦¤±£°¢´}©¥¶y©z©x§\mx<R^8M]K\iJVaV[^onjîéåþèÌúæÍýåÐüåÏüäÐýäÐýäÐýãÓüåÊüäÌûäÎüãÏýäÐýäÑÿåÌÿäÍÿèËüçÞm"?PSXiN^`F]YåÎÌúäÉûãÎþâÍþãÍüáÌüáÌúâÌúâÌùãÊùãÊúâÊúâÊûáÉûáÉûáÉþáÉùáËùáËùáËùáËøàÊøàÊøàÊøàÊøàÈøàÈøàÈøàÈ÷ßÈ÷ßÇ÷ßÇ÷ßÇ÷ßÇ÷ßÇ÷ßÇ÷ßÇöÞÆöÞÆöÞÆöÞÆ÷ÝÅ÷ÝÅ÷ÝÅ÷ÝÅ÷ÝÅ÷ÝÆ÷ÝÅ÷ÝÅNQ_öéãþéÕüè×øæÕþçÑþèÏöæÖúçÒúçÒüçÒüçÒýèÓþæÒþæÒýåÑüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒýèÓüçÒüçÒûæÑöáÝÿäÓÿäÑûäÖôãÒöêÔ´¾´v¥¿·{°{µs¨\x7f¡°~¡]R_q>M_BSg=L`KXhFO]OU]»ÁÉþåÌúåÏùåÏüåÏüäÐüäÐýäÐýäÐûäÎûäÎýãÏüãÏþãÏþãÎÿäÌÿåËþéÄઽÃs§KRhL]h#>:ÿôôûçÌûåÌüäËÿãÏüáÌýáÌúâÌùáÎùãÊùãÊúâÊúâÊùâÊüâÊüâÊüâÊùáËùáËùáËùáËùáËùáËùáËùáÌøàÈøàÈøàÈøàÈøàÈøàÈ÷ßÇöÞÆöÞÆöÞÆöÞÆöÞÆ÷ßÇ÷ßÇ÷ßÇ÷ßÇ÷ÝÅ÷ÝÅ÷ÝÅ÷ÝÅ÷ÝÅöÜÄöÜÄ÷ÜÄJM[çÙÓÿñÝøäÓøæÕþçÑþèÏöæÖýæÔýæÔüæÔüæÔþæÔþæÔþæÔÿçÖüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒþèÓôäÝÿæÑÿèÎÿæÒþêÕøêÓ ¨¥v«}µy¯x®|°s¥¡²
£^\x7f^gv@Q]>N^<L^<M]TaoMZdþäËúåÐúåÐùåÐüäÐüäÐüäÐüäÐúäÓùäÒüäÒýäÐÿäÐÿäÏÿäÐÿäÍÿóÌýÛ̼Äm¤gn`w.OJðæåôâÌõäÌúãÎýãÊýãÊýâÍûãÍúâÎûãÍûãÍûãÍûãÍúâÌúâÌúâÌúâÌúâÌúâÌúâÌúâÌùáËùáËùáËùáËøàÈøàÈøàÈøàÈ÷ßÇøàÈøàÈùáÉ÷ßÇ÷ßÇ÷ßÇ÷ßÇ÷ßÇ÷ßÇ÷ßÇ÷ßÇöÞÆöÞÆöÞÆöÞÆöÞÆôÝÅõÞÆ÷ßÇ,/=ztnZþíÜøæÕþçÑþèÏöæÖöâÐôàÎÿìÚýèÖüæÔþæÔþæÔþæÔüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒüçÒýçÒéåÔÿìÑÿèËÿçÒúãÌþèÒª§¤q¦®§µ^wm^s
CXkCZj|£Obf<MVBV\BU\@TZGXaCW]rÿçÒ÷äÒ÷ãÍýèÓúæÑþåÑýåÑþåÑ÷äÒüæÔþæÔýäÐýâÎùàÌûåÑüèÔÿåÇóßÕm:Zt©Mfs.QRQINÓ̺ßÔÃòãÍ÷àÊþãËþâÍúãÍ÷ãÎûãÍûãÍûãÍûãÍúãÍúãÍùâÌùâÌùâÌùâÌùâÌùâÌøáËøáËøáËøáËøâÉøâÉøâÉøãÉöàÇöàÇöàÇöàÇ÷áÈ÷áÈ÷áÈ÷áÈöàÇöàÇ÷áÈ÷âÈ÷ßÇ÷ßÇöÞÆöÞÆõÝÅõÝÅöÞÆöÞÆ?BPùëåûàÌïÚÉøæÕþçÑþèÏöæÖöåÒÿðÝñÝËþé×úæÔüæÔüæÔüæÔúçÒúçÒúçÒúçÒúçÒúçÒúçÒúçÒúæÕúæÔúæÔúæÔúæÔúæÔúæÔúæÔïéÔúéÍÿëÏøç×ôßÑùéØ
°Yxy\b%*=Q\-?M<N_yYj{CTfTglATZAT[AT[@RY!59@PUuÿèÓýíÚôßÍýêÙüçÑúæÑýåÑþåÑøåÓûåÓýåÐþåÑüäÏùåÓ÷è×íàÑðéÜ®¦¨ªÈÖPp
£§ÀK`k*PS|}¢¤MJ@ýðáúèÒûãÎûãÊüãÍúâÏûãÍûãÍûãÍúäÍùâÌûãÍøãÍòÞÈùâÌùâÌùâÌùâÌøáËøáËøáËøáËøáËøáËøáËøáË÷àË÷àË÷àË÷àË÷àÊ÷àÊ÷àÊ÷àÊößÊößÊ÷àÊ÷àÊ÷ßÊ÷ßÉ÷ßÉöÞÉöÞÈöÞÈöÞÈöÞÈDGUóåßüãÏþêÙøæÕþçÑþèÏöæÖùë×ôåÒ÷èÕìÛÈ÷æÓ÷çÔúæÔúæÔúçÒúçÒúçÒúçÒúçÒúçÒúçÒúçÒúæÔúæÔúæÔúæÔúæÔúæÔúæÔúæÔûêÔÿéÏôâÓëáàïìëäáÝ u²
¬¦¾Ï²Ä©½Ï¶ÅÙj~JapeoVlxF\cGW`2@J6CK-6A\v\x17$ìôßÏÿîÝ÷ãÑûåÔûæÑúæÑþåÑùçÑûæÑýæÐýåÑýçÕðàÐòêÞåÝаÅʯ¸È³Çx¬wyRhlCkm¨O\]Z`\ÈĺñâÑüäÎüäÌüäÎûäÎüãÏüãÏüãÏûãÐûâÏûæÒöàÌñÜÇúãÍùâÌùâÌùâÌùâÌùâÌùâÌùâÌøáËøáËøáËøáËøáËøáËøáËøáËøáËøáËøáËøáË÷àÊ÷àÊ÷àÊ÷àÊøàÊ÷ßÉ÷ßÉ÷ßÉ÷ßÉöÞÈöÞÈõÝÇGIWóãÝþåÐÿìÛùçÖÿèÒÿéÐ÷ç×÷é×÷èÕÑ¿ÿóà÷çÖøæÕ÷æÖ÷æÕúçÓûçÑüèÑúçÒúçÓúçÒúçÒúçÒûæÕûæÔûæÔúæÔúæÕúæÔúæÔúæÕÿäÕÿâÒûèãÒÐÙ¥°¡«m¢¼z°º±~¬7R_3T[6]]<RiAYjBTe>N\<GS\x0e\x14">BPEJ]ÿÿÿóßÍýéØùåÒüæÔüçÒüçÒüçÒûçÒûæÏýæÐÿèÑôåÑöéÚðëঠ¨¼¤¹y¢ºSu
qm|]pt:dfNU`^mvZcdÅûæÙÉúåÎþåËýäÌúäÎüãÏüãÏüãÏûâÏûçÒñÜÇüèÒéÕ¿ýäÍûãÍúãÍúãÍùâÌùâÌùâÌùâÌùâÌùâÌùâÌúâÌøáËøáËøáËøàËøáËøáËøáËøáËøáËøàÊ÷àÊ÷àÊ÷àÊ÷àÊößÉößÉößÉößÉõÞÈôÝÇ?TXÃÎÍçåÝùë×ÿèÑüèÓõç×ñè×çÞ˽ÇÄZp~XdrîßÞþàÑÿßËÿíÝúë¼êãâäâí÷èÔÿæÇüàÒúäÚýìËîêÍêè×ïêÖÿíÏýçÈùèÓùêÑûéÁûæÉÿéØèçän{¢µ¶¶ªu¡sx¡ne|7N]>R^=Q_8MR@U\@V]@S[9MU\x1a/6;MV<NWwØãåïæåûãÙÿæÑÿçÎÿæÒÿã×èäÝôåÖ÷äÖöä×þçÐÿëÊïèÞ{¬
¨Á¬Á®Â]j~CTdYhwSak<NXSkd^fuµº´áåÐÒÎÚåÚÚòçÅÿäÒöãÑöãÒøäÏýäÌþåÉõæÑàÞÚU`kÙÞØäàÏûæÐýäËûáÍ÷áÐ÷âÎ÷åÈõãÌõãÌõãÌõäÌóâËõãÌõãÌöåÎõàÊöáË÷âÌ÷âÌöáËöáËöáËöáË÷àÊ÷àÊ÷àÊ÷àÊößÉøàÊ÷àÊöÞÈBTZJSWöóëôãÓÿçÓÿèÒùèÓöèÖóêÜPdlEU^ïêéÿîÝüéÔöêÓó鯼º¸\\cöìÞýèÎüâÓ÷åØýîÒÚÙÍÛØÖìãÚüãÏþëÕîâÕêâÖüðÞÿòÕíÚÊåãর
¨¹µ©¬w¡k|£f}Thw>U`@Vc:P\AT[@SZ@RZEX`?OYGXaBS\DT^9WRHX[ÿñéýçÑÿèÎùçÒõæ×òæÖûçÑýçÑøæÖùãÍÿéËâàÔ§¸
©½o¢°Åh|DTdfvDU^9ITIa[HQb¢¨£ÚàÑF>HôéèöêÊÿäÔøäÒøäÒ÷åÐüæÍüèËõåÐÆÂ¼fpz¼À·ïéÛìÚÅþäËûâÎøâÐõãÎøäËöäÍöäÍöäÍöäÍõãÌõãÌõãÌõãÌ÷âÌ÷âÌöáËöáËöáËöáËöáËöáËõàÊõàÊõàÊõàÊõàÊõáËöáËõàÊ9JX<FMuppíßÓýçÕÿèÒþèÒùéÑåãÜpz~>T\@S[åßÒïêÖèæÍæéÔ}U\iòçÑøäÓöåÙíçÓ\x7fZ]höïñüåÕüæ×îéé²¶¹ÓÕÖñäÍöêßÍÎФ«¦¹}¦o\x7fux£u| aue|8KV@S_F[bFV_>OXIZcFW`GU^GV_ET]ES\7Y^G[c@FJÿüõõçÕõêÎõèÒïèÖøæÐÿçÌþçÍôäÔöéÖõåÑÐÎǨ¸~´{¸ÉLdt=P]_q|?RY;NWCZYWarÒÝÏ_^lÏËÍõêÐýäÕ÷äÒøäÒ÷åÐüæÌþéÏîáͧ¨¦UblûöêýíØüèÒúáÍöâÐöãÎøäÊöãÎöãÎöãÎöãÎöãÎöãÎõâÍõâÍøãÍ÷âÌ÷áËöáËöáËöáËöáËöáËöáËöáËöáËöáËõàÊôßÉôßÉõàÊ4DTGQ[IHMòçä÷æÙûçÕûèÓúéÒÂÌÎ`ruBZbAT\]adîåÝðâÑöëÔÀÔËdpxKXeZcgöñæùåÓñå×ÑÒÄlzO[k§¥©ùèÙóâѧ¬®XjvAS\ìèÛêãߥ©§µ\x7f¯^o
1C!<K[n\x19-=;O`6KZ*<I@T_>SZ1FN\x1e-:\x19)5=JW!.;1?LJUaFR^NXd:XbBUaBDMðèæôçÖöëÒöêÑóè×õçÕÿêÍûèÐêæÜëèåÙÚÓÅÎЯƼ̨¹\x7f©Lcr9P[OdoI\c<OX\x17.-'2IQ`]²Â¹LReÅÅÊêåËÿâÖûæÏøäÓøåÐúäÏñÞÆéÞ˼½¼QapRYZÞнúäÎùäÎôãÐôãÑöåÍ÷ãÎöãÎ÷ãÎ÷ãÎ÷ãÎöãÎõâÍõâÍõãÌõãÌõãÌöåÍõãÌõãÌõãÌõäÌöáËöáËöáËöáËöáÊôßÉôßÉõàÊ\x1e.?\x19%347?æáãèÝÚøìàòè×íäϤSls:RX<LVFFNüìîüãÛÿêÙ°³Tdl>KZCU^çëåöäÒóéÛTjx>R__egÿøæãßÏ~D`lA^eglfäå硯¾ ²¥·kzx¡Tj|y ¦BWfG^i?R]@U\9NV0?L7GS0>J#1=6DP\x17#/\x19%1"-9"6F2<K74?ÿúûøè×öæÎýì×øåÔñåÙûèÐòåÒÜã䣱¾¦²½§~µw °c}H`l?UaAW^BR[>PWDWX;F\)8;¨½·GRgíèÒüäÖùäÏ÷ãÒôäÏøæÏöåÌÿöè©°Ug{T]]ÛÚÔíßËþèÒ÷äÏõäÑõäÑøäÏóãÎôäÏôãÎôãÎóâÍóâÍóâÍóâÍõâÍõâÍõâÍõâÍôáÌõâÍõâÍóàËöáÌöáÌöáÌöáÌõàËõàËõàËõàË,9G!,:7=H #,/.3¹»²ÀÁ¸a|Jbh?UZ>MTEDS¬ ªýæäüáÒjHV^;IU:P`mtsúçÔïâ×rUnt4OYGVXááÕÓØÌgz~>[e9TZ7EIÝäîx\x1d8I\x188I\x7f¢}v¡ µz¤czqQit<R]@Va6NU<KW<LX3CO1AM/<H:HT;IU(6B(:G*2A'%0F85áÑ¿ÿóÛúäÏþèØìæÛüèÓòê×¾ËÐu¨
²©¡¼xcyUny=VbCVbG[b?NWDPYHZZEPe@QSPhbP_tZbjóî×üàÔûæÏùæÐöåÑöæÎ÷éÑðèÜ{Uk\hnÛÜ×èßÎôäÌõäÏóäÑòãÒõäÑôãÐõäÑõäÒôãÐôãÐôãÐôãÐôãÑõâÍõâÍõâÍõâÍôáÌõâÍõâÍôáÌôáÌôáÌôáÌôáÌôáÌôáÌôáÌôáÌ?KT.:F0:H1;JCMW?JQ>LPCRP8KY:NR>RR=PW?M\BIVôôöøóèeIRULU_/J]WaeÿîÚìàÓx£I_c@[h8LXqxw¦®®qLdtIZ`2LTHQ`¡²¯ÀNj{.?Pet^|r nx¢o`{8P\=Ua<V`AQ^?P^9JW6GT7GT6FS8HV8HU7LW8DQ;=EéáÞôæÖòåÌýíÚüèÙòæÚÿîÑõèѹÅÊRp\x14/@*<K\x1f2@;KWdw&9D9OZ@V]\x1c-7%2:AKTL\[CLaGXZF`[FVmIPXÿüáÿäÖûæÐùæÑ÷æÑ÷æÑëÛÇÀ½²¢®³=TlWclvxu»° ðãÌöäÏóãÒóãÒõäÑõäÑõäÑõäÑôãÐôãÐôãÐôãÐôãÐóâÍóâÍóâÍóâÍóâÍóâÍóâÍóãÎôáÌôáÌôáÌôáÌõâÍõâÍõâÍõâÍ@JR?IS/:I%3C(8J&9G-BI7OU;FU@MR;IJ5HO1JZ2L[-CEL`O/TdMRSKPY4OeGRVÿ÷áéÛÐOmgz}:TfCWjPXbl}G[nCQV1N[CPas¢s¡\x7f lz]{t¦n
®oQk|4O]:U`9T`<O\;O\1ER*:G=N[<MZ?O\BQ_5SW-@G9CGáâÛùòßëàÉûîÚøèß÷çÔÿèÅþïеÂÀoz¢wNW\FVd5GQVkuAU`GZa8GP5?G?FQ*75ILeK\^Hc\@PgAIQÿûàþâÔýæÏùåÐ÷æÐùæÏúèÑäÞФE_xWbj¨«ªïæÔôåÍóæÎòäÒóãÒõâÓõäÑöåÒõäÑõäÑõãÐõäÑõãÐõãÑôãÎôãÎôãÎôãÎôãÎòáÌóâÍôãÎõâÍõâÍõâÍõâÍôáÌôáÌôáÌôáÌ9JP4BH1<C/8A-5>\x13\x1a'%,;1;J6FN2DN3FR2ES1DP8IS7HR1?L?P];P_5KX@P\>P^J`rq
ftBX`9MW=P]7K[¢²Zr|Kbk4MT7PZ.KV
¡²w¤nkh
fua}B]jXsd{@Tc?P`=P_8CQ\x1a*7+<I@Sa8LY2BO^[(6"+:ALS6=G7:>îçäøîà÷èÐÿëÌêëÙõäÕòäÜ£«©yv¢s¥s¯i}^s
as;N\I[f@QZ;NU6JP;M\@RV>HQ,3@-7@CEJ¶±¬ùéÔÞáÖüêØöß×ÎÑÝ¥ÄÕ¡ÄÏ®½«Í¢´l·¿ÄçâÛòâÔóåÎóåÎñåÎóäÑóäÑóäÑóäÑñâÏñâÏòãÐòãÐñâÐñâÐñâÐñâÐðâÏñâÏñâÏïáÎóâÍóâÍóâÍóâÍòáÌòáÌòáÌòáÌ4DK)9BEOY2;D4=G\x1a"0)2?1=I6EN:IQ5EQ7GT8IV9IU5CL\x10\x1f(.?L5ER6GT<MZ7GT3CP@P];KX4JQ3GS=P]>Qa:M\H[h6JU6KR2IQ2JV`wd}d|z§a|qh\x7f<SbAYh;O^AVe/DS=P_=P`<IU5EQ2DO9NY8JU-<I+9EEP\:KW)8D\x1e(2y}¸»ÀÛÙÕåäÚëèÙÍÑÅøìâüòꢰ¯t\x7f¦®mk\x7f§h{BUbEWbCT]BT[<NUI]dK\cLY^9DLLU_/38ëåÜúêÖïæÕúæÎÿòæw£©g~u¨a}Seo]bd¾¸²ñäÔôåÓôæÐóæÐóäÑóäÑóäÑóäÑôåÒóäÑóäÑóäÑòãÐòãÐòãÐòãÐòãÐñâÏñâÏñâÏóâÍóâÍóâÍóâÍòáÌòáÌòáÌòáÌ-=J+9E\x16#/)2?-6@2=F0:D2=G3?I<GT6DP/@M5ER1?K9DQ#/9'7E4DQ;KX9IV@L[9FT\x0f^[)+8F4JQ4HS8KX8K[3FU8KX1EP8MU<QY6IU!4A)<K^rgz{ v9IUK\iAQ^FZf?R_?Q^;N[<S_BS[5FO:MU;NU9MT:KT7FO=HQ4IW8IV1CQ©et^luëøÿ ¬²N^[ÈÄÄõö󤦯¿n~|xh|s_rDWdEWbK\eM_fGY`HYc@NTfqt^gn=GQEKOøôìøéØúëÏýæÎóæÛ£t¬~©~h|Wn~HZdfoputkðèÚôæÔõåÓôçÐòäÓòäÓòäÓòäÓòäÒñäÒñãÑðâÐñãÐñãÐñãÐñãÐñãÐñãÐðâÏðâÏóâÍóâÍóâÍóâÍòáÌòáÌòáÌòáÌ)9F\x1c)72=K*3@%/9=GQ0>E6CK8BL6BN4AP5AO5BP:GUDP\8BK1BO5ER8ES8ES2?M8BP\x1f)7.8F0EP6HR;KYCS`%6C$5B2BM5EQ7JR=MV&6C+;F\x1f/<]lyM^k9IV-8C<GS@NZ\f\x1c(3EP8LW8LW<S^CS\:KT?OY@QZFXaFU^?NW<GQ;LX8HU7IVN_lSgw?Sc¦¼Ìe{F_d\dlñõúVns\a$2-?P3>M\a\x1a\x1enThy\x1d0?9LYEWb$4=\x17)0&8?*9B2=C\x1f*.s\x7fJW^CKPòñéõçÙþëÎúæÌçàÙ|¦Khj\mw`t[n{@R\OY^_^[îèÞïæÔóåÑôåÒóåÓóåÓóåÓóåÓòäÒóåÓóåÓóåÓñãÐñãÐñãÐòäÐñãÐñãÐñãÐðâÏñâÏñâÏñâÏñâÏñâÏñâÏñâÏñâÏ3BS3@P5?M.7D/8F7AJ6BL(9?-6D)5A3@N1=N2>O#0>\x0f^['/7E7HU8HU6BQ7DRAN\5?M9DR>HV.?L2BP3FP:LW0?L)9E-:H/<J5GO8GP".8\x1d&0\x1c&/\x13\x1f,\x18%1\x1c,:\x19"+.7AFQ[:IQ5FNAT[?U\6OV&6?\x17(1,>G\v\x1a#\x15$-\x19(1\x1a(1-=F9AGO\`?KSAPY7ITBUbXpTk|1N^@MZ²ºÄqgj{7DP\qsK_q,@R`r9LYEWb:KT8JPCV\BP]?JR4?C +.1@G2<?®¯ªÚÑÅüéÒúì×ÒÖÒ«Á¤Æu©|£oWfoLX]DGFÙØÎêáÔóçÕöçÔóåÓóåÓóåÓóåÓñãÑòäÒòäÒòäÒñãÑñãÑñãÑñãÑñãÑñãÑñãÑñãÑðâÏðâÏðâÏðâÏðâÏðâÏðâÏðâÏ3DQ6GS2@N1<J2;H5BN-9E\x17%2\x1f+7\x1d(63@N/>O7FV)6C0:H?LW;KX:JW3DQ1AN0<J\x19&4\v\x18&.;I3CT4ER1CNCS\>MU1?L1;I,6H4GS;IU5?H'0:#'3 )3#0<\x1f,:\x1e&31>J:ERDQ^DS`@R^?S^9MY1DK6GP+9B +5&2<&1;0@H\x19)207=\x17\x1e$\x1c(.$17\x14'-:MT?R_J_n,L[CS_z~¨g{£¨by|[n§¸M`o7KX?Q\>OX<NU:MS@M\BNYEPSARX:MU:GNàãâóîåëâÙÒÊÀ¸w°©¤|ªO_kSblVcgAHGããÞãÞÔóæÖóãÒóåÓóåÓóåÓóåÓóåÓòäÒñãÑñãÑòãÑòãÑòãÑòãÑòãÑòãÑòãÑòãÒñãÐñãÐñãÐñãÐðâÏðâÏðâÏðâÏ3EP6FS2@L.:F.:H6AO0>L%2@%3?.:I1AQ/?O1AQ/>N0<J8GS7HU5FS5FS4ER2CO\x1c,9?P\=MZ5EU0BN4CO3DM\x16%.\x19%108F29J8IZ8HU&.;%*5(.9'1:,4B"/= /:3AM:HT?O[:MX@R]=OZ<Q[6GS0@L9GT\x10\x18%)1>0=I8FS\x16$0&.=.6C;GQ:KQ;MT3FM<MXAS`-IZBM\~\x7f§Yzu Xey[r|ThzOcu{DWdI[fEV_ASY@SX;I]?MYBSYDW[=S[<PXª³³íéãÙÙâ¶¼ºYlpv§z¢ h¢UbnSclP\cOZZEJFêæÛíãÖõåÓñäÔñäÔñäÔñäÔòåÕñäÔðãÓïâÒðäÒðäÒðäÒðäÒðäÒðäÒðäÒðäÒïäÐïäÐïäÐïäÐîäÏîäÏîäÏîäÏ4HO1BK7FR*7C-8G09K-:J-8K.=H+<I/?O';J*>M.>N,<I4BN5IV3FS4HU4ER/@M(9F)9E5FR.>O2DP3CO2@H)4=8DO5=K4;M(<M)7H\x19 -',6-0:).9/8F1>O&7C->K8HU8IV>O\GWe;LY6FT3CQ8HU+4C^[#18@O?FUCQ_\x18%3'0G6DX6GS1AN<PW;MX7KX>Qa3P^@JUEKX6Qb'J_¼dt &2Pcu^[/A\x1e1@AUbEWb>OX'9@L^c?NdGXf@PWDX^8P]H]fS\`ÕÔÎ^fm
]{fw}ªe©U^jNYdAPVWehU]XöõìîäÖúéØñãÕñäÓòåÓóäÓòãÓòäÓñäÔñäÕðäÒðäÒðäÒðäÒðäÒðäÒðäÒñäÒðãÒðãÒðãÒðãÒïãÑïãÑïãÑïãÑ0=I0>J\x1c(13<F.8A2>J0=K1>M*8D,=I'8E+>M.BN2DN3EM3CI1@M/?K1AN4DQ6EV,;K+9L/<O/@J0AO,@P0CU+>P/?Q)9I*7E-<M);G!3@#1?#.="2>*8D+<G*;H-?L2CP5IV2ER9Q\:Q]8Q],CM 7B"7B:MX9JV6GS\x18&2\x1f,8.EN5HR=MY>KW4?K4?KCP\<IU;JW8ETAMY:CO2<IDTbudy9IT0AM1CM2DOCVa*;D<LV\x12$.\x1a")\x16\x1f'4<E*4<DPWKW_YfoGY`¥@UewPaoQbrtK^o<K\LdiEX_HX^@EK=<>ìä×íæ×ïëÆòèÝìçìÝãÛàçØæäÚîä×öæÍìåÔíåÔíåÔíåÔëãÒëãÒëãÒëãÒìãÒìãÒìãÒíãÒìâÑìâÑìâÑìâÑ,<I\x1d+7-9E-9C\x1d*6.9G*7G-;M3AM0=K-=J.>N0AN5EQ3BK1BH3CP4DP->I7GT6FS2AR1@P0@P0@L0@L1BO7FW6EV+:K+8F*6B,>K/?L'4B#.<)1>#/;'3?)7C/;J0@M1AN4ER6JW;N[.EQ/EQ/EP-@K+@K8JU<LX5EQ1?K9GS8NY2EO\x15%1^[)58DP3?K/=I-:F,<I5APBNZ'4=\x1d)5 \x15#%5F(9M0@L5ER3BO:JVFVc!2;6GP=OX"*3DLU9EL>HP\x1c)15BJ\x1f,4<MRjzDXeatzViwCUfi{xH[bNahFU[V_cLQRØ×ÓæáØêâÖæéÐÏÌÈäæÝææÓêä×ìä×òæÒíåÔíåÔíåÔíåÔìäÓìäÓìäÓìäÓîäÓîäÓîäÓîäÓîãÒîãÒîãÒîãÒ2BR3CP1=L)7C-;I-:J-;N/>Q4@K7BP0<M-<L3BS7DR9EN8CN8GP1@I2@L9GS1?K1?J.;I,9G5DL/>G->J3CP:JW2?K-8B09C0AN2>L)4B(0?)1>%-;)1?*6B/9H0=K2?M3CP:JW=N[8HV7JX7KV5JU7HS7IT:JV1AM6DP;IU5GR4DQ3AM=IU8DP.:FFT`6GR3BS3@N@LX"+5.8B'09*6B0;F2?M0=L2AL8EQES`7FOCR[APY<FNFQY<GOGQY&4<:GOGT\EQYWiq6GOI[fSdpzlli}I]aIYa4@EALT>BFçèçÞÜ×âò妪°XW]êéÛêçÒìåÖìãÚìåÖíåÔíåÔíåÔíåÔíåÔíåÔíåÔíåÔìäÓìäÓìäÓìäÓëäÓëäÓëäÓëäÓ5GX-=M9IV)6E*7E*9I)9J\x16(;\x16\x1f-\x17"0.;K2?N3@P-:H\x16!.$-7".8%0:$09*6@=IR.9F%1=5AM8EL0<F1?L7DPDR^2=G3=E,6=.;J4?M,5C%-:)/<'0=-6?/9C1:H4?M9DR;HV?KY<LY<MZ7HU;MW9JU5HS<KX8HT3DP9FR:HT3DM1CL9HQ?JT^['0/:D2BJ%7?'7H7DR@KW:DM7?H*5;8?F3;@4=L@HV3;H9EQFR^NYcJV`DOZHV]DQYES[AOWCPXFS[IV^@MUDTZBQXEV_br~xtfxH]pIV\R`fLX^JS[U_bowz¥¨¬¤¦[]iÜØÊîéÎîæÔêâÙäãÛìåÖìåÖìåÖìå×ëäÕëäÕëäÕëäÕëãÒëãÒëãÒëãÒëãÒëãÒëãÒëãÒ(:K.>N/?L&3A,9G2BR-=N!3F08F0:K9GV5@S.;J/<J'3?7AJ\x1e*6\x1c(4%1=*6?-8B\x1f+4\x18$.\x1e)3\x12^[%\x12\x1e(\x1e)55DP&2;\x1e)0\x1f)0"*-$/>7?L)1>',9#)6 &0)2<+3=-6E.7E'2@*4B<IW8HU:JW@P]<LX5EQ9IU9IU9IU7DP6DP@NZ<KS>MV>IT@IS1>H7BL6EN2CL=IX8ES&5@&1>2=D$+2\x1d"'4;<(/?\x1e$409F7@M?LX7CM&1<&6?1BI8IOMYaGT\VckN[cMZb;IQFQW;JOHU]CS[DR^4DRgx6GYJT\R^dCOU>JPEOWIS[blt<Y_}¡OQ^ÚÚÌïêÐîæÔìãÝæåÜëäÕëäÕëäÕëäÕëäÕëäÕëäÕêäÕëãÒëãÒëãÒêâÑêâÑêâÑêâÑêâÑ.>N;KX<IW+:F1>L7DT+9K)8K,7E.7I/:M0?Q/=P6CS/;F/;G+8F&3A,:F)7C/=I,:F+;C$3< ,6(4@&5A-:F^[*6\x16$+\x12\x1e$\x19$(\x1c+8)5A\x13\x1c)\x1f'5\x1a\x1f*\x0f\x19#\x1a"-\x1f)3\x0e\x17%\x1f+9\x1f)7\x15"08DR;LY:KX6GT!1=\x16&2\x1f/;\x18(4)7C*9E.<H$1>&6>/;E.8B5?I+4>9EO.=F3DM:HT3@N0=L.<H-9C"*4\x1e(*/67&-=")8)2?;CPCO[AQY7GO;IR*9@/>E^[,2\x1e/5(5=,9A2?G9FNIS\?JRGRZ;FM0:D7AK%/9\foEPWQ\dGSZ>IMYdh+6:ISZhoyOin
¤\`nÐÒÉçäÎêâÒêãÚçãÙëäÕëäÕëäÕëäÕêãÔêãÔêãÔêãÔêãÒêãÒéâÑéâÑéâÑéâÑéâÑéâÑ"2?!.:^['3*6@*6B9DR4AQ-;M.;K2?O1?Q1AR4DU4DS/<J0>J.=N)9I+:J%6B*;H0@L&6C*:G.8G&3A*6D'8E/=I'2=\x1c(-"-0&4A+7C/7D\x1f(1^[%.\x1a#-".5$.6"-<%0>$2@,8F1BN9JW:KX:KX*7C1>J0=I,9E1?K-;G9JV%6B/:E(2<+5@(2<(1;9EO.@I6HQ5AJ0<H5AP.?L(4C'3=&/9(06,2C)3@)1>4@LAO\AR[<LV;OW1CJ=OV8JQ<KR?PWJW_<IQ'4<6@J09CCLU3:C:@F29@;=EHJR@KUV^hNY\GTU1=?HUVMY\SYbCVSR[hgj{¹½¹áäÐçãÙèßÖîçØëãÖëãÖëãÖëãÖêâÕêâÕêâÕêâÕêãÒéâÑéâÑéâÑéâÑéâÑéâÑéâÑ0<H*7B7BK\x1e'1\x1f(2.:F4AO1>N,9J)8H*:K*=N-?P2BR,=J0?K-;O+8K(7G)8I5EQ2CP%5A*:F&3A.;K&6F0?O1AN(7?!.6%16+<H-;G0<H )3\x1f'1\x1e(2&19%3:"/?%2A)5D,<J.?M;LY7KX2ER7CO1>K6DP4BN3AM3@L2BN3CP7BI7@H;EMELU6AH3@G+?E3GM19C1>J5AP,<M(8I%2B(3<,5=,6E.6E,8D/=IANZ>OX7KS<OW=PW@SZ<OVEV\DU\>KS<JRBPW@HW?HRDIU@EN9;D*(/<=@HDF>JTV^h?IM9EGQZY6>APY]KSYR`VJR]EJ[^fdÖÝÍÞÝÔòèàñåÑéãÖéãÖéãÖéãÖçáÔçâÔçâÔçâÔéâÑéâÑéâÑèáÐéâÑéâÑéâÑéâÑ$@Q$<M+?N&7D)6E2>J7?L/;D,=H/@M3CT0=T-<O5DT3>J7AI+:B/=H,8F,9I1>O3?M.<H+:B-:I+<I)8I0AQ,;K.:I\x1e*7$-7(9K6FS+9E#.5\x1f+2\x1f*2%08$0;$4<&5=':B,=E*=H6HS8MW<O\7LV8MX0EP5GR2DO0CN3CO4DP3MT/HP8NV?T\"1:\x14 *\x1d&0!(2\x18'4\x1e)50=I%.7)2<%.8-2>29B'-63;E2>J-;G@P\<LY7EO0AH9@IGNX5@G(2;KV\JT[MT[DHO>IQ>KP>IO:EL3<C5<@:@F=DIAIOMW^NZ`HTXNZ_HTYBOPIPT3GGL\YFPKQUOéçÞäâ×ãäÓâåÕæâ׿â׿â×éâ×èâ×ëá×ëá×ìáØëãÏëãÐêãÏêãÑéáÒçâÓæàÓåßÒ+BR*@O4DT)6D+6D.9G+7C,7C5EQ'9E.>O-:Q0?R5DT3AM/<D1AJ3AN5AP.;K6CS4AO0>J-<D/:G(5D(9F/>N3DP(6B(1;!-4*:L.?K'5A!,3\x1e)1!,4%08'3=%0;,8B%4=1>K5ER6HS5ES8KX3EP8JU+=H0CM9IU.>J7GS3CO2IP5HP6IQAR\0@H,8B*4>6?I.=I'3?2>J(2<%/9\x16 )\x1d"..6>\x1c#,\x19!++7C3@L<MYEVb(7@"39(1;",61=G8EM\x19&.\x18#+\x17"(*28ALTCPV?IPDLS5=D>DI.49?BG<DKISZHTZAMQJVZT`dIVXFNRN][HUUNVSab^ïìååãØæå×êêÙàãÖãã×ãã×âã×ãá×ãâ׿â׿â×äáÓäáÓááÓâàÕâàÕâàÕâàÕáßÕ0BM1AL7ER)4B.9G-7H(5E\x11\x1e.\x1c-8\x1e-=,<M,;N*9M,;K\x1c*6\x18$.\x18'0\x12 ,\x12\x1f-%2B5BR)6D!/;\x1e.6+3=!.:&5@5BP7EQ+7A$,5'18*;L6FS-;G!,3\x1e)1!,4(3;$0:-6@'0: ,9\x14#/+8D7HU1AN9JW2AM(8D/?K(9E1>J>LX1?K@NZ5CL;JS=MUEPZ?KU/;E1:D9BL/>J,7C6BO+5>%/9"+5(-9+2;*1:(1;(4@0>J:JV:KW>MV5EL:FR8DP8FS<KT5DM@LWAMT,4>,8@&07)3:,4;"*2-380386:?DLSHRYAMT6BF.:>+7;5BC=FIANNX``LQQPQMÏÑÇààÖèåÛáßÑÝâÖÝâÖÝâÖÝâÖàâÖàâÖßâÖàâÖÜà×ÞàØßàØßà×ÝßÕÝßÕàßÕáà×5DM6AM=FS,5C/7E-7I/:L"0C&2@,<L*;L*:K+;L3AQ\x1f-9/>F(7@\x1f-9-9H'3D.;K&2@"/;\x16%.^[&-!+5&2>3?J\x15 ,\x17!+\x19"+\x1d$*(9J*;G\x18%1 *2\x19$,\v\x16\x1e\x1c'/$0;\x0f\x19"\x1e'5&/<^['3%2A:FT7GT'7C\x11!-%5A\x15#/\x1f-9#1=\x19$0*6B\x15!- +5\x14 *\x14 *\x17#-\x1f+5.:D,9C5AK4CO)5A6BN4=G&0:$-7(.9*1:.4=*3=(4@0>J5EQ@P\@OX=NT:GV@NZ;KW9IU9IV>NWFR\8CM:CL;EL4?F8@G-2:3:?8<A<?D<DKISZMZ`HTXEQUEQU>KMBKN@GJ?DEHMLTXWããÝáÞÖæäÛääØàâÖàâÖàâÖàâÖàâÖßâÖàâÖßâÕÜßÚßàØÞà×ßà×ááÕÞßÓáàÒâáÓ2>H'2>&/<+4B2;I6@Q.<O*:K,:J.;K-;M-=N,<L4DT-=J-:F,=F-=I*;H(7G5DT6FS'7C&8A*5<&/9#/;/;G.:F)3<\x1c$-")/&7I*;G!/;^[&-\x16!)^[&.(3;\x1f,6"*8(1>'0<)3B%3@7DR<LX4CT.>J0@L2?K-;G0?K2>J1=I6BN4@J.:D7BM8DN6BL\x12\x1e(\x18$.1=G&5A)4@6BN7@J%/9#,6-3>+2;-4=/7A(4@/=I7HT?O\IXaCTZ?KZAR^<KWAT_8GTFU^COZ>HS;CM<GN>EL=FM06><?D7;@CEJ9AHKU\MY_NZ^LX\MY]KWYHQTUZ]PUVKPOOTRÏÓÎàâÜååÜáâØéçÛäâ×ßÜÑãáÖààÔääØááÕÝÜÐàÞÔàÞÒçäÙáàÑàßÑÝÚÊáÞËæäÑ"0< .9.9F*5C!,:+9I/>O.>N3<N1>N.>M-=M+;K2CO+;H.>K4EM.>K3CP,;L2AQ9IV*:F,=F4=G*7C&4@4AO7EQ-8B#+4",3+<M)9F(6B *2!,4\x1e)1(3;$0:,4A)1>%0?+8F,8F5FR<K\8HX7GS7GS4DP5FR7EQ6DP7DP<IV8GO:IR9HQ?IT9EO\x1e*4",6+4>\x12!-\x18$0+7C\x18"+ *4\x1d&0)/:+2;.5>.7@(4@-;G:KWDTa(7@"28^[)5\x1d+77GTEV_+=F+:C:GO)4<'0:)18.6=.4;#*126:,/41389AHCMT:FL0<@-9=.:>3@B*46;>B:?@=ACIRQØßÜØÞÙÛßÙÜßÖæâÚßÜÔàÝÕãàØÖÒÊåæÝÝÞÕãäÛäâÖßÜÑâßÔáÞÓÛÚËææ×§¥¹¼¬3CS+;K/?O&3A/<J2?M1AL/AL3=O3?Q1@P-=M/@L4ER,=J2BN0AJ-=I1AN*9I4CS:KW.>J->F/:G.;J'8E0?P8IU+9E%.8\x1e)1+<M/?L5CO\x1f*1 +3\x1e)1$/7#/:'3?)4C'4B)5C&7C2BS9IY1ET7IS;MX8JU4FQ8HT8HT6FR>NZ1GN;MU8LS=NX;JS0;F&/9;EN)7D&2>:GS0:C^[%/\x15\x1e(!&2(/8(.71:D/;G*8D>NZBR_?MV<MTBLW;KSAPYGZa8IO5AJ>JP7BH8?H:BI:BI8>E(+326;/271386>EHRYKW]JVZ@LPAMRJVX>HKIKOHLM?IINYW»ÆÃ¾ÈÂÐ×ÒÕÝÖ×ÛÕâæàÓÚÓÞåÞ×Þ׻¼×ߨÕÝÖÛÜÓßßÙÝßÙÕÙÓäëäÚáܬ¶°2EW4EW8GX&6C)5D.=H0AM,>F37M4=P1@P/AM0AM8IV,=J.=N,>F.>K.>K(7H6FV5FS-=J&8@+8G):G$3D/@Q6EV+8F'4@\x1e'2*<M1AN3AN\x1e)0\x1c'/\x1e)1%08'4>#1A$1@$6C'8E):K1AR3GV5GW9NY:OZ6KV:MX5HS5HS1AM:JW5OV3LT4JR7KS;JT1=G%0:4=G6ER*5B6BN2<F\x1e)3\x1f(2(-9$+4\x16\x1d%$-7+7C*8D:JVBR_HV_DT[GS[FRZ?PW@PW>NTBPVKV\?IO;AK;CJ7<C@FM.1:15:58=79>4<CBLSERXHTXHTXFRVJVXFOSNSULSV=GGANLwz
§¡¼À»´¾¹ÇÑÌ¥yoxt
~¯Ä½ÈÉȾÂÀÅÊÉÑÚÚvv
dx|*KS2QY0GR-?J.<H.:F7?L3;H1AI6FN7GT3BS/?Q3BR4@Q1>L-<D/>F4BN)6D0<J;IT1@H,:C4?I/;E+9E4BM8FR2>G+6=&06,9F7DQ:DK$.4#*1%,3*3<)2<06>/8@-7@*6?.<H2BM8IV8LY<JRAOX>LU=GR<GQ@KU@LVCLVEOWDMU:DK:DL2=D.4=04=?>H5BL%2;5AK5?I&/8"+4&-5%,5$-6,5?,4A-9E@MYBR^EV_9MTBRYGW^=MTAQX>NU>OVEV]:LS5?F=GN3<CGLT,3758=26;:=A6;BHOWJUXHTXJVZFTUDPR/=>=@E9@B;CGFQRizwaupn~b{rl\x7f^uid}|[rp[ljcqk}}m\x7f|cvw^uv«°t¡§w|.JT1JT2FQ/?K1@K4@L -8\x12\x1e*\x13"+\x1f,9/?L,<L4DT7FV&3C\x1c)7\x1f.7!09#1=\x1f,:9FT4BN'6>\x1e-6\x17"-^[&0%4@5CN'5A\x13\x1f)\x17"*\x18!(#4B0>J#,6\x1e'0\x1d%+\x1e$.%.7#,6\x1e'2(0:\x1f*3\x1a&3$2>6FR3DQ)=K\x1e,4\x12!* /8\x14$-!,6\x1f*5\x1d)3^['1\x1c%/\x16",\x1a&0\x19$/+7B\x1c%/\x11\x17#03>\x13 )\x1a&02>H*3>\x1e'/$-6%+4&,5"+4(1;*3@/;G3AM@Q]CT]6JQ&6=\x1d-4,<CHX_2BI-=D3CJ1BI\x1f'1)3:%-419A^[!&*.3$(-,059?FGOV2;C+7;/;?/;@;GI9FHJPT?DI>IMIVXCQSbwt\sp_tsUthp`|rczucvt[libpn}y
¡«¶¤ªz{n4JV8KX<LY1>L+6D5?M(4C!-<,<D*:F2CP/>N-<M1AQ"3?"/=\x1c,4\x16$1'5@$1?1>L,;F\x1a(5$3<(3=-;H"0<.?L1>J*5?\x1d(/\x16 &&7E-;G\x19%/\x1a"+
\x17\x1e\x11\x1a$\x1f(1\x1d&0\x16\x1f)*4=&.<\x15"-,9E:JV2CP(8F$5==NW$5>3AJ/>G.>G2=G'2<3CL-<E2CL3DM9HP/;E#,6;?J$4A\x17#,/<E\x1f(2\x1a$.\x12^[$\x1e(1"(1\x12^[$!*4(1>'3?1?K=MZ8HQ(;B7FM?OVGW^BRYBRY=MT/?F0AH4=F@IR5=D@HO(-5.59,/41498=DFNUFPX?KN>NPAMQBNR<IJBJQ<FM<GM;IOy~|x]tpv^wlUja\nfdvr_jnt\x7f`m{sxwfw[j~m}^l\x7f.>K.>K5BP/9G/:H0=K.?L(9E.;H1AM3DP,@O+>M7GW/?L+9D1@H)7C+7F"/=1=K7DR2@L-<D,8A+9E"3@2BO9IV1?K(1;\x1d(/,=K9FR7CM\x1e)1\x18 *^[$-(1;!,5(1?*2@(5@)8C,=H3CO:KX9JW2EL5EN6GP5FP5CLN\eKZcN]f?PY7JR7IQ7JR7HR0?H&2<5?I4BO\x14"/+7C;GQ\x17!+^[#.!*3\x1d&/#,5'0:*3@&2>2@LAQ^EV_BU\BRY@PW?OVAQX@PWAQXCSZCT[2>EAJS+5>DLS05<+1947<48<1:@@JQEQWESZFVXBRUAMQ<GK?IPAMR1>F>MVvwlr
cvz^qnXkbRdV\naycqxwcp~zv{}fwhwdq(7D\x1a*71>K1<J"/=3@N4DQ,=J2BN3BP1@Q+>M(;J7GT8HT)9F.>J-=I.>K&5E4CS7GT3DO,<I0>K/=I(8E4DP8HU8FR(4>\x1e(0(:G3DQ7CL&18\x19"+ )1%0:'0>'2@+6D*8F0<J,=J<KY:LW>P[8KS8KS9LT9LT6GP5FO:KT>LU5IQ9LT8NU9NV7KR5FO\x1f+53<E5CO!/;+:F8DQ\x19",!+6"+5$-7'08&/9'0=(4@-;G?O[CT]>RYJY`GW^=MTAQX?OVHX_AQXGW^/:BDOW6>H@IR-6<16=/6=45>/6??HQIU[GU[DRXBRTEQU=IM=JP=IN6BJ<KT`p}euN]nQdw:JPWfiVf^M^Q`ndhtsir
Wfobt|Xht\mzOancr\x7fJYbJW_-@O1@P5DT-<L.;K1@Q1AR-AP0@M3EQ*=L)<K)<K4GT9KV,=F3CP4DQ4DQ)8H7EV8HT2BO.>J3@L->K$4A-=M<MY7EQ*6@!,3,=N4DQ6DP%/9^['.",6)3<*2?)7H+8I,9F->K0@M9IV<NY;MX;QX6LT:MU=OW:NU;LU=NW<MV;MY<MY;OZ<Q\:LW4EQ\x1e*6/7E/@M!.:+9E7CO\x1c(5",6!,6"+5)2;&/9&/<'3?*8DAQ^BS\-AH$4;\x18(/ 07AQX<LS&6=(8?$5<+4?BLV2;CBLT28B-5<06=4:A39B>GPLV_ESXCTZCQWCQX?JN=JP9EK6CK;FP;IVUfs[kxSbtcv}kz}bnn{
qw_otvarzpbs|ex~lzbrt2IX0ET6IX-<M,;K1AQ3CS+>M.>K8HX2ET+>M)<K2ER9KV+<E3CO6FS6EU)8H3BR8GW3CP2BN6DP1BO)8I2BR6EU6BP-9B"+5/@Q4DQ9GS)2<\x1a$.#-7'0>'4?)9I+:J,;K/?K,<I4DQ7JU:LW5JR9NV<QY9OW<NVAT\EX`?RZ;JW9KV9KV;MX9LW8FR!.94<I1BO$5B/<H7EQ\x1c(5!+4#-7",6)1:&/8%.;%1<.<HCS_AQZ&9@5EL:JQ?OVBRYEU\<LS@PWCTZ3<FEOY1;EDNW07@18A39?27>1:C=FOHU]BSZFV\CSYESY@LR>GOBKS3?ELW_ERZ>ITM]fZir ¥aqw¥°·xz{~{^mvFVb n~x{DPV0M[0LZ7M]1EU0AQ2BR4DT.AO0?L4CT2ET*>P+AP4HT;OU,=E3CO3CP5CT+:J2AQ:IY2CO/?K8FR3CP(8I1AQ9IY7HT2>J\x1d)3/@Q1AN:HT(4>\x1a$.%.8(0>(5@(5J+9L-<L0?O6FR9IV5DP;LX5MU9MU:PX:OW@V^AS[AT\?RYBQ^=LY:LX<NY9HU6DQ"*82:G3DQ&7D.:I2AM"/;"+9#-7 *5(19*3<*3A%2>(7C?O\HYb:NUBRYEU\CRY;KRFV]IX_:JQGW^1=H>HR.8CAIS09C.5>04>49@/8A>IQER[FW^DTZBRXDRX?JQ@KN=HK<FM7CI:FLAOVSagVbirK^epyccstp~lhrvyxcn~wzsqgoz~?O\?NZ7FR1?K1>K2AQ/?P.?S/CO.AN3FU.>O*:K5EU9JX0@M2BO4DQ4DQ-=J2BO8IU5ER0@N4BN0@M"2?1AR8HT6DP.:C",6+<I:JV4EM(7@\x19%/%2<'/=.6E*:A+9E,<I/>N.=N:JW8KV9MT7JR;NV<OWCU]>QYBU]<OWAT\=QXBU];NU;NV=QX3BJ\x1c(2/8A.<I+9E0<H8DN&0:$/8&/9&.7$0;)2<+5?.8A+4>=LUDU^>RZ>PWDV]CV]@RYEX_FX_ASZEY`9EK<HN2<C?IP.6=6;B06=4:A7;D;BILX^KX^EU[?SVARU6HJ?HS:EN7AIGPTCLOGSTT`dQac7JRJ[bS_e[gjo{~¢£°¼|Xqvtr}\x7flmZovo|/>O8IV<LY0>J8ES4CS/?P.?R3FR2ER6IX0@Q,<M4DT8IV-=J2BO3CP4DQ-=J0@M5ER0@M.>K/=I2BO 0=1AR?O\7DP0<E"+5+<J9IU3EM+:C\x19%/#/9&.<,5C,<D,:F*:G,:K/>N9IU;MX>RY:MU9LT8KS7JR@S[@S[>QYCV^=PX>QY=PX:MU:MU2AJ ,61;D;JV*8D6BN8DN*4>",6%.8&/8%1;)2<+5?,6@7@JAPYGXa-@H7GM2AH+;B1AHCSZ#3:$4;%5<\x1d)/4AG09@@KQ08?.7>27>39@9>G:BIIU[ESYCSZCSVBSV9JM<IQ;GM:EI?HL:ED?HKNZ\OZ^5HO8FM[gk_kmZeikv}tx_u{n~¢r}tuct}x':H%5E\x14$1!2=\x13$1,;K1AR0AU1DQ3FS4GV.>O.>O7GW9KW.>K4DQ6FS7GT0@M/?L9IV6FS-=J1?K-=J#3@/?P7GT8FR0;E!+50AN9IU5FO0?H\x1a&0!.7&/<,5C+;C,:F):G-;L,;K3CP7IT:MU8KS9LT=PX?RZ9LT=PX@S[CV^AT\?RZ=PX8KS<PX4CL$0:09C4CO-;G/;G:FP,6@!+5%.8$-6%1<)3=*4>,6@3<F>NW>OX!5=)9@%5<-=DAQXAQX4DK>NU?OV9DJBNT2?DBLS29@/8?27>5;B3:D6=DHTZESY@QW@QTCQT6EHETZ<HL6CEAIIbjj^gfV\_NVY?MTT`d\ijJVXFRUix¢i|¥U\i}o~u_o|PZd,?Q*=K5FS,<I-=J.>J3CS3EV3FS6IV3FU.>O,<M5EU9JW.=J1AN4DQ6FS.>K4DQ8HU4DQ/?L2@L3CQ%5B1ARIYf/=I3>H!*42CP6FR0AJ-<E\x1d)3#/9&/<.6E'7?*8D*:G0?O2AQ5ER:LW:MT<OW;NV@S[=PX9LT@S[EX`?RZ>QYBU]=PX?RZ:NU4CL&2<1;D4BO/=I2=J7DM/8B$.8)2<$-6*6@+5?-7A-7A5>H<LUCT];OWAQX<LSAQX:JQGW^AQXEU\DT[6DJ<JP2>DBKR+5<19@*3:4:A29B0:AFRX@NTFSZDTVBRT8CGFVXBMR2?A=FEMQRBGG:AD9>CCOSP\^forIUWKV\£§»Ì³Ìá®ÀËy
fm|t|t{lz
\er4K[1FT:NZ.?L.>K3CO1AQ4CU/BO3FS6IX/?P*:K4DT6HT1AN1AN3CP7GT0@M0@M8HU7GT/?L2@L4ER3CP+;L3CP4BN3?I)3=->K<LX7HP,;D ,6\x1f+5)2?.6E-=E-:G+<H,;K0?O8HT9KV<OV9LT<OW<OWBU]<OW?RZ;NVBU];NVAT\<OW;NV>QY4CL*6@09C6EQ3BN+7C<HR3=G#-7)1<&/8#/:-7A.8B-7A09D<LTGXaAU]DU[DT[@QX<MSBRYFW^P`gFW^;IO1@F3>DFRX-8?,3:.6=-6<3:C.8?EQV@OU>MSCNRFRV6@E@PSIVX0<>>FECLKGMP',1/7>?JNEQRNWZ?KM>KR\mx]t[t_t@O_LVgwxr¢¨2J]4L\>P`/@M5EQ5ER2BS5EU2ER3FS1DS-=N)9J5EU7IU2AN3CP2BO4DQ.>K3CP9IV7GT.>K=KW.?L"2?3CS1AN1?K3?H,5?,=K9IU6GP-<E\x1c'1!-73;I(1?"2:9FS*:G,;K.=M5ER:LW<OV8KS<OW>QY?RZ=PX=PX<OWDW_?RZ>QY:MU?RZ:MU6EN-9C,6?4CO2@L*6B?KU7AK!+5*3=)1:)5@.8B-7A.8B3<F7FOEV_=QYKW_ANV4AI#081>F>KS^[(0\x14 )&4:0>D7EK:FL/9@&18+3:/7>18A.8?COU>JP>MS@LP>JN4<@AMQIUY1>?:BF<EH>ILhtzx>IPDPTN[\?KM8GJ4GNpnh¦ £´ªº§¶§¹¬0HZ4JZ<Q`2CP4DP4DQ1BO5DU5HU5HU3FU/?P'7H5EU:KX5DQ4DQ3CP6FS/?L4DQ9IV;KX/?L3@L/?MYiv6FV8HT5CN5AJ,6@+<J6FR6GP-<E%1;'4='/=19HP`h(6B0AN1@P.=N6FS=P[<OW8KS:MU<OW=PX8KS=PX>QY>QY:MU<OW=PX>QY>RY6DM0<F09C6DQ5CO)4A<HR8AK!+5&/9&/8(4>-7A,6@-7A/8B4CL;LUBV^$19$19.;C1>F8EM@MU5BJ;HP8IO:HN.<B<HN4AG-7>*5<+3:07@,6=BNT?KQDPVALP:BF5>A;HMGQY1<@=HL;GKCOWGXa2DP9IPCQXIUY=JLFUX;LS|}¥r¦_vhzj\x7f^z]{]u\p2M_+FV8M]/AN/AL4DO4ER:JW3ES3FS4GW0?Q*:L8HX:KX3BO/@M2BO7GT.?K0@L6GS;KX-=J8EP9IV¯¾ËDSd7ES6CO5AJ/9B.?M6FR8IR/>G#/8&3<3:GmsSbkAN[*:H0?O-<M3CP:MX5HP>QY9LT>QY?RZ=PX<OW>QY=PXARZ;NV:NU:NV:NU:GP5?J-5?4BO7ER)5B:FO>GQ*4>&/9)1:%1</9C-9B+7@/8B.<E<MV=RZCNX<HQDQYAMU:GN8EM&3<=ISCRX>NU7EK;FL;GM;EL:DK6>D6<F+4<?KQ=IPCPW?KO4>A9?C>GQ?IPHRYMV]KY_<PV@S_(AN4FP<MTHSZS^bFUWBU[OcoPitBcKeTlPjGj~Lp
Li
Tj4EP6EQ4DP/<J\x1f/<0AM8KW.DP2JV)?K9LX1BN(9F6GT7JW.AN/;J6CQ4DQ*9J1@P3AS0@Q1AR0CTMbq¨B^g2LU/AL:AO03C.=H9KV7JR0?H)/='-="2C«ÄÕMejH]e/AL.<M1>N7DR>LX?PY9MU>QY?RZ>QY:MU?RZ?RZ>PX3SW>RZBN[BNZ7IWs*AH"1:6BJ;HP.;C7GP5FN2>H1;E.7B$5>,5>43B12A0<H$6A/ALHSa=TT>RW>PWAS\*:C(6<>HMJWT>RW9MR6FL5FL8GM:GL?IP=GN9HK7FI;GK>IM@HLINS:@E=?D4AG?KQANTFPXCMT=GNBIP@FM7BH?JPGV\FTZJV_HX_JZ`P`fN]hO^jM\hO^jM\hL[gM\hN^j*<I 3@%6C.>K.>J3CS6JX=Ra*BNG]i5HU<LY):G6GT5IV.AN0<J4AO2BO+:K0?O1>Q8IZ2AS/CUt¦;V`9R\4EP6BN07F0?K8JV7JR2@I.4B2;IBRc¤´OfkEYaEWb1AN5AO;GV<MY=NW;NV=PX?RZ>QY:MU>QY>QY>PX3SW9NVAMYAP^«TnwEYd!3;5AH;HP4AI7GP7CM4AK8BL8AK-AH1<D58C38B(6B«j~?N\>RW:OSASZ?PY?MW@PV:LOERT@TY<OT9IO9JP<JP=IO>HO=FN<KN8HK:FK:EI9DH9CF39>;@E@LP=IMDOS>IMBMQ>JM<GK7BF:FJ;GKCQWGU\JX^GW\EU\GW^EU^FV_EU^HW`HXaHW`HXaIYb4LX,BN8KZ/?O-=M4DT5GX5IZ~¢Lbn?Q^6GT*;H6GT7JW1DQ1=K4AO1BO-=J,:K4CS/@O/?O*>P§¾Í{¤8S]?U`7IT4?K27G5CO6JQ7JR4BK09F5=KScsqLglH_fCT_+;I1=L8FQ;LU:KT<PW9LT9LT>QY;NV>QY=PX=PX7RX<QY>MZ*:G¨ÁÌlI`j>MZ1?H:IR8GP5@J8DN7CM;GRAIT0FJ:HN>GP<EO
\x1d*µÍÜuASeAUY?PXBU[@PZDV]=PU@SVCVX=QVAUZ?OU=KQ>MS@LR=JPBJR=LN8HJ8CG4AD0;>+7:6?B=FJ6<ABGL/9<ENR=HL3=A?KO;FJ>JNAMQGVYFUWIW]JZ`HX^HX^P[cR]eS^fVahU`hWbjYdkYdl:T`5K[4JY1CT5GX<M`8H[;Pa
©H^j>Q^/@M%6D3DQ6IV2ER1=K3@N1AN-=J.>K9IV7GW/?P,AW¦¾Ð¢°Tlx<R\:LW5CO8@M4FN5IP4IR1BK;BO7AO°}¬WpyI_jEYd>MY(8D4CP;LU;LU;NV<OW=PX;NV=PX=PX;NV<OW9U[>PX2AMFXh±ÌÚy¢CXgL[h6JP5FO9HQ;GQ8EO=GO>KS?KT6ML:LNBLTAOWJcn°ÊÚiDWnDU[ASZ?QW>QX@SZ@TY?TY@UZHX^EU[?PUGU[APU@LQ7CI7CI?MS=KQ?NS@KQ:FL.:@8AI#.58<@>BF9>CAJMDOS;GJ@OR@OQFRVEPUJY[JY\HV\BRXIY^Ufl_hq`ir^gp`hqajsbjt`hr^gp0KWKdp1GV-AO1CT0AT1DZGZosRgr7KV6HS+=H1CN5IT/CN.:I5BP4DQ2BO1AO8HU3DQ3DQ1I`³Ç¯Nfq=S^:LW.;H9DP,=F6HQ2IN7HQ?JV,8I¯ÇÖUt
F]hG]hDXc9KW*;C3DM=NW6IQ8KS<OW;NV<OW;NV=PX<OW>QY8QW>PX>N\Ym|¶Ät H_oETdH\g1CO:HQ:EP>IQ>IQ<IR>KQ9PP;MOBMU=NYi°Áq@UnCV]BU]BS\FX^BT[CV]>PWI]cEV]HY`IV^IV^ANVCPXGT]KX`NZcVckUbjTbjWdlCPXLW_S_g\]fX^dPX_XbiS_eP^dP]cL\cQ]aUadTchYgmWejXhoXio\mt_jq`ksbmtcnualtbmt`ks^iqµÁ3GS4ER1AQ4DU7H[3I[|¦¥Lbm>R]<NY4FQ3EP5IT4HS)5C1>L1AN2BO6FR>NZ6HS3EPOh°ÆqNet?S]BT_7GS8FR5HN4KQ2HN4GO7DQO^n«½o¤IaqAXgEXcDW_(9B5EN:MU;NV<OW=PX<OWAT\;NV<OW;NV?RZ7NS<OV>N[¯¯ÀmOgyt_z:NY:JW@KUALT?IR=LQ?OU?SUAQW<LR7JU¥³±ÁeBVn>OY@R^EV_BT\FW]CPY\x1f-4IV`=JRCPXERZFS[KX`MZbR_gUbjScjRbiPagT`hUbjZgnZgoWdl\enYaj]enWaiZgoZfnWgnVfm\go\goXemYgn\gq\ks\ks]mubmw`lv]irZeo]isalv]hrVak_qx0?HDR_8IV0@P.BS6L^³ËÝ©Ndo=P[8JU5GR6HS7KV2FQ0<M5BP0AN3CP3CO=LY8KS8KS·Ó좸w BYhK]jI[eCR_.>J:LR2IN.GM5GO)9Feu
¾e]u
D[jGZeGZb/BH:MT6IQ9LT;NV=PX<OW=PX;NV<OW;NV>QY;PX=NZ(;G¾×ç~ ¯m¡Hav¯¾Ñp>T_5ER>GQDMVBNSCQWFV\ARWERZCMW6JU£ÀγÁr¢BWm:MZ?Q\8IRARXHUZXaj\x04
++\x15bepSaiYfnYfn[hpWdlZgo\iq]iqYhrWfoYhq[ktUdm[jsZir[js[jr]ktZjrZirZir[js[js]lu\fo^hr]ir_kw^jv\kv\iwYftWgsQamO_kRbnM]iM]iM]iN^jgsy=IQDOY:HT6FS4IX/HX¡ºÌ
¨BWc6JU8JU:LW7IT6KV4IS0<M8DR0@M7FS8HT(9ANah §t¬WsOhzNdsL`lr £¬¡z{¦ª·Â·ÅÕ¥µk¦[qAXhF\fO`gI[a@RX%7>&;B(9A)<C-@G5HO7JP?QX@RYBRZ<QX1@Ks¸Ç³Æk TlÆÓê®·5NZ<LX@ITAISALR>KR9LM@MVAITHQ^1CO²ÐÝ´Â`}BWj@QaNbmYjsYhm]gmbjr41@gu|gt|cpxanvcpxamvZkqSdkZhpWfn[irZhq]ktXiqWhq[ltZlxYlvaq}`p|^o{ao{_ny^lxem{fm{amxbl{_hv\huZeuR]nL_lL_lL_lL_lJ^kI\iG[hFYgOjp2IN;LU8FR6FS3HW/JZ¬»v>V\8MU3HP7IT4ER1AN1AN\x1d18;MX]ozeykj}h~PfsE]iG\gJ[eO_l^n~¬³¤¹ª»\x7f¯
¤µ½ÑµÉ®Ã³r¢wOfvI`pG^n{¢\x7f©¨¶®º²»¨µª ²®¥µ«¦²¡°¦ÄÒ°Îߺд\x7f³Ur¸Óçv¨Gam>LT?HPESXAQWHV[HSY[ggO^cZp{d~¬ËÞ²Çd\x7f@Yi7R^FakXkr`pyv,1>kp~\x1c\x1e3YhpWgo\gr_ls]jqanu_ltbntWkyWkx[o{Xmx[ny^p{]oz\nz[nx^nz`p|aq}dq\x7fdq\x7ferercrz^nz[jvVgsPcrL`rKcsNfvOeqNepRerWguVfrUeqZgtWfoPjp;PV5HO;KW@P]2ET±ÁºÉYqw:PU6KS4IQ:LW5FSN^kbr~t\nyRdoL`kM`mK^k>T`>T`4LX=S_\lyZkx>Raax³t©¡±¬À¦¹®Á§º
´w¦w§h~\sYq~§«»«¹\t¤¢²¨º°Á½¬½³Â¸Æ¦ÁҴƮ¥¼t«yª§Áצ²<VbCR^ET\K[d>SZFXcQ]jK\aN`jXq¼×ëºÏ¨¼iCZi=Vb9P[Ymt`kuYclX`mt{06Ebs_o|_o{_o{`nz^lxao{_lx[kxUfsTenTenSdmTfoTfoZirZjv]mxYiuScpScpYiuZhxVduTfpXhtUhuSfuSftRgxThyThzRhtPcpPdqSepXhuZjv\ktXgp\v|=T[3EP5DQ8HUL`l®¾pG]b7LT5JR6GS9KV8IV8HU:IY7JT9KV>P[<P[ATb5HU9P[8OZ7M]9OZ¾ÑÞRboBVe9QaRl}²s£y§³¢¶±¤µ\x7f¬y¥nnWpt¡y¦\x7f®¥¶¤²9JWl¥¶ ³´É®Ä²´ÈµÉ²Ç®Å¦¿§Àsª§À·Ë
¨¶<Vd>MZ\myy¨¤³°Â¸ÅªÅÖ¥ÃÖ°ÐèµÎ°^tDYh=T`9MXWhqbnxCLWHS\DMZ%,;as^o|]n{Zkx_p}YjwQboYjx]jq]jr^ksbowiv~dqybowhu|evjzjzfw`o[m|TixPetPfuOfuQetNbsOctRduPbsM_qOcnPdoUfr_q}XiqRclRakQ`i^wCYd/DN6HR8IV6GTl\x7fH^j>QY9LT5IP6IT5FS8IU8HY:JZ7JT;MW8JU9LY6IV7JV7L[7L[4N]:Q`®ÂÒ@S`BUb=Ra7Qasx¦|o
´x§®}ky£d}h[v|«t§¨»«¼DP`AUf°¦º¤»|³·ªÀ¶Ê´ËƤÀ{µz±§¾¤½u£B\l?Q`Pdu°Á±Ã²Ë¬Ç¬¿¾Ö«Ìã¦ÆÝ¸Ít¡]qGVg<P]GYdTcl\iq`ksLU`8DNco|_itdoygr|hs}lteq~huivlu|nx~jt{ku}r}
vr|oy\x7fap[jzSbrM`oK_pKbrIbrHaqGbrF_oGaqKcsMasPctTduTdvPbmYkvfz\mvPajL_fIZ`EU\VnzDZf=P]<MZ:LW4FQ>P[9KV7HQ6GP7GS2BN7HU7GW9IX5EU8JT:KX8IV3FS6IV;M]5JY4IX3K]E^n«ºRhs7MY6K[<Sc<Scayx¥{©¯°{ªpf~«a}fjy®t¦µÈmUaq2FXs¢z±¤¼w°µ¡·Ï¤»²Ë »{´y² ¹©Á±Ë|¨AXh:K])=N°Á} ´±Ê®Ë§À¿Ö¦¾v©lUl~M`oK\iCVcDUc?NWeszgrzZem1=Gkx\x7f{\x7fx~u{\x7fxzw~oxt~s~
s}o{
lwit}anz[hsTctN`qM^oI\mI_pI`rGbrF`pD_oIasJ`rOcuQds]m~aq~dt\mvZjtVgqN`gL_fIY`FV]BRX]t@Wf8NY7JW9KV5ER7FO7FO<KS7EQ5FR7GU5EQ,<L2BR5EW5FS5FS3DQ3GS3FV5GV2HV5JY+DX=Ug®¾Pfv@Va6LX:LY7JZ8PcMex®y©z©kq¤oi]yhzªp£©ÈÛ ±O_lAVf3I\^w\x7f³µÐ ¹¡¸¯Æ¨Á¡¼w²\x7f¸n¥©ÃÜ ·Îk
AVgGVe8K]t¡vªªÂ»yp¡GauB[n>VfCYhBTbFWaBWg>Q^>OXiv~v}$/7S_h
z{v}wxx\x7fn}
mziy]lxWgsN`oObpM^oNasJ_rI_qG_pG_sHbuJcwFbvPfxNdwShy[o~`q~euYiu]luK\eJ]dHZaEX_FV\AQWAPWBRXI`pNeu9N^=P]<NY?NW=JR<FN2@M1?K2@L0AN#2B#3C-=N4DU7HU6GT4ER6IX7JY3FU/DU/CT3Kb¸Ì ¯D_l=Ua5LX2ER;LY7N^7M]Ibr{¦w¦nq¥n¤x¡qhf}y©o¶Ò㣲Zr|>T`?QbQ^u«
µ~¶Â£º\x7f¡¹}·x³x°}´®Èݦ»c{IXgETd8KZUp~¡¯e}L^tCXjEYl=OaG[h@R]DUa=RZAV]8O`8N[=QY[goxjt|\x11\x1c":CMclsgsxis{lwiw`o{[kwZjvUhwQcrQftLcrG^pG_sG`sG^uF`pFaqHauIbvIcvKcyMe|Nf}Xi}[n~aqZkxXhu[luN`gK[bL\cFV]M\dGV\CSYDTZ=PS;NQLctAXh=Ra9KXCT^DQYEQXIRZDO[6CO-:F,9G\x04\x13$^[+;-<M1@R5ER6FS3DQ2FU4GV1DS1DU*=N.E\²Ë߬Zu<T`FYd9JU@O\0JV;S_=VgB]nw¦s¦p¥u¬y ld~h~«©¹«Ç×UtyLbm@N^NTiz
©Ã§¾\x7f¬Á|³¨¾} ·y³\x7f ¶±Æ°Ä~¨Shw@OaBM[?P]*FQ2O]9Qa<K\AP`>M^BM\ANZ<MU?RY=RZ<QW6Ra9R^@RYCRXq{\x7fty\x7fqv|gkoVdoTdpTdoK]kM`qJ`rI]sD\qI`oF`oE]nF^rE`tD`y=]tFe\x7fDcuHcwJexKg{TlUmUn
Volw]i}_n\x7fWguM^hEW^GW]DUWDS[HX_>NTCTYCSYASU;OR@SVfD_h6P\6P\5O[>YgB]kHcqTjtATaq¡o~y¤tr¢¦\x7fx¡®¬º£ÅÚ¥ÃÖ\x7f©Vm|BXdATa?Rb8KZ>TXBZcF\i?ZjF`tkp¦m£wsjg}µȨ¼¡7MY=P_.BSx£¬Á¤»¤»£Â£½y³{³·±Ç²dFX^>QY@R]=OZ7HU=NZ9IY;K[;J[<MZ9JW:KX=N[<NY;MX<MX4IY3K[5M`/J[Gcx>ZoA]rB^q9Xr>Yt>XqBZsF^tBZqC[qF`sM_tK_tG_rB_tFcwFbzMg\x7fSiNkYtLg}^yWqWo~WlxLanHfkQjoEX_IY`IU]GW^ASZBT[=VV?TV>NTDOWEPXDOUCQT>OR_xPiu7Q]4N\5O]:TbE^nOhx¦¤²
©®¥©º®¶Æ§ ®¬\x7f¡¯«º ¹É³ÃÁÕ²Å
®Vm|F\gI[h@Rb;N]DXXCV[K^fNaoVi|F`pv¡}¨|§z¥oq¡v¨´Ñæ»Î³ÇXpxC[g@Ud9M^tªÁx®¤»©Ã
¥¼¶{¬dUpF]q?YjBT[BU]>P\:LW;LZ8JV:JZ9IZ4EQ6GT8IV<LZ8JU;MX=OZ:LW;LV<MU9LZ3HWJaqD[nC]mD]qA\qC^sD_tH_uBYpIbuJbuA]pKbzLe}Kf~MlHg~KkVp]t[w`xIcwp¤´j\x7fKamNbnG`fI`eFX_GW^CPXAQW@SY=PW=STAUY>NUBMUFPXAMS?NQ=OPlSm{6P^2K[5O^:ScC[mLdul
®v¢°~«~®mq¥l}«{§ ´¥µ¨¹©¹¹Î¶Év¢k
?Sb@Ud@Ud=PbKZ^N]dTemZlvK^kYo{Umyw~«z¦{ª\x7f¯¡¿Ó¼Ñ·É¢¶_{
?Ye>Tc.EUw
°µ°`yk;Sf@Wg>Vf0EU<S^5HV<NY;MX<NY=OZ8HV:KX3DQ5FS:KX8IV9JW8IV9KV6HS;LX:LY@KN@NT>NT9KUThwLcuGbuKfzMgzLezHeyEauLh{Kf~Hg}Gf|IfKlNoSuKkPoSp
Okj ¶y¡}£patI]hN_kCV^CT^BQZ@OX?NW?NW>OX:MU9MS@QZ>NV@LVAMW=KQ?MP=OPz£Xq5N^6N`1I[;SeAYmH`tiz®µXsu§gWuqª¡º{³|²r¨}±©¾¨½®Â¥ÆÚ»Î¬½n<RaE[j=Tc@WhL_hSeqXm{`s¦µ «¦¯¦·ª¿«À²Æ°Ì塽ҷʡ±c>Xf5Q^9Rb>Uem?TfBUl:P^>Td?R_BVc9KU>P[5GR:IV<NY7IT4FQ+=H\x13$28IV1BO8IV7IV5FS9JW6HS9KV9KW>QY8LT?MN@OU;MS7JUE^mJg{MjJhPm
PrXzVzTxJoVzl«z¼\x7f£Â©Ç±É¯Æ¶Ì°Ä¥¹{¡]qUgyPdsL]jHYf=OZBU`AR[DU^>LV?MVAPY?PZ;KU<MV>MVAQY;IU>IVBNXAOUBSV@RSr_w5M_/GY1I[7OcC[oNfzr«vw«b\x7fIe~=\u6Tp=^{Xwcl¥k£}´§¾\x7fµ¤¼¿Ö¹Î|¨pC]k;Uc:Sc<Ud>WkE]qC^r¡¹ ¸}®\x7f ²¨¶¯±¨½§ÃÛ¨ÄܳȱÄ}®VsB`o<Vf6O_4L\AUg<K\6FX9LV<NY9KV;KW=MY8IQ6GO6HP@P^3CP4DQ\x18(5\x1c,89IU7GS4DP6FS9IT8HT9IU8HU:KT;LU:KT7IQ=OW6JT5LZ]x ½{ Â{¢É¨Ê§É}¦Æ~©É{¨Ê¬Ð«Î¸Ü´Ð¶Ô¼×j¢`}h
c~JduRetI\lHYfDTbCT`CUa?RZ>OX>OV>PX4GNASZ7JQ:LSASZ>QXCQY;GQ7FOBQZ@NX@PV?PS=OPªd}>Wg0HZ2J\7OaBZoNfzn¤uªmXs9Ti5Qj$A]"@]">RJh}s¨q©uw®¡»¥¾ÀÖ¨½ ³Vp\x7fIcs<Vf6O`4Pa9Yo@`wIgm¦r¬ ¹{²x²yª®Â®Ç¶Î©È߰űÄu¦[t@Zj6P`4N^3IX9KZ4DT:IZ9IT;KW:JV8HT7FR7GS7GS7GS5ER5EQp\x0e\x1e+!1=7GS1AM1@M2BN9IU9IU:JW9JR;LU<MV<LU2IU7NY5KV2IX9Ti½t½rÅt¿y Çz¤Êy§É¯Ò¶Û»Ýºß¨ÀZzTpLdzQiyF[kAWc=TaCTaCT`BT_?Q]?RY<OW>PY>PX:RW5MR5MQ6OS4JO;OT9LR;LR<HMBQT>MT9KS=OV<OTASU>OS|¤kD]m3L\4M]7OaBZlOgyn¢x©s\u
Ict-H\,Gb\x184S4GX,CS³Ä©½z® ·}´
£¼¾Õ¦» ³c~Jdt;Ue6Sb3O`7Ug@_rIf|Lh¢¼¢»¢ºv«´
¡º¯ÇǼӨ½ª½q£Wn>Vh<Wf2L\2M[6LX8HU8HU7HU7IU:JW9JV4ER5FS6GT6GS7FV8GWJZgRbo1AM:JW=NV3EM;KW9IU;KW6GP=NW;KU8JQ7IP6IQ7KR9LS;NV-BQHdxIeDhDdGkCjBiFoFhHdKa~E`pLdtNetPanJZhHXeDW_BU]?RZ>RY<OW>PX:OW8MU=SY9NTEdcDdc8WV+JI1MM2KK=OP:ILCQMDRP9KL@SV=QV>RV>NT=LO{¢s=We7O_6O_7P`B[kPhzq z¥iXn}=Wd0IZ,G_\x1c8T7EO/AN{£¨¸«¾z±¡»
£¼¿×¯Ä§ºu¡[y9Vd7Tc2Pa;V`A[iLeuTm¯£¸z¦u p¥³|°¯È®Å¦»¬¿y¬h|<Qc=Wf4O_0KY1GS9KU<KW<MZ4CT3GV2ET4GW2FU3EW4GY2AR8GX0@M5ER5EQ8HU6GP3DM6ER4CP9HU<MV:JT8IS7JQ6IQ>PP:IK=KHBNO=MR6J[2Kd3Qq8Sx8Vw4Uu2Vo9\uMj\x7f[p]l~QhtJ\gQ_kJV_T\fO\cDSZ=OU=PX:MU2IP;QX7NT7MT9MT#5>UuuCgfMqpRrsPmnF[]\x1f.15>CMXPLYUburF[\DY^ATZ?NUN[bs¤e7Sd0JZ3L\6Pa@YmMh|x¯}¯}ª\w7Wj3Sf.F\'5O;R[7M_r¦¤¾¥¹¢±¢·¦Á¼Ë½~¯k
^y<Wl5Sh3Rg3Wd<^mFbsQj~ku¦|³{¶{®~µ\x7f¶¹Ò«Äx®s¦x¬e=Wg<Ue6M]1EV3DV5EV7EZ3HR5JT5JT4GU5FS6GT/@M5FT6GO6GP6GP4EN:IR>MV6EN8GP7KS5HO9LS5IM6JO9JL<MP<JM:KN<MO=MS;LS4CKES_M[gKVd<P]CVcOcnWht_pxUfoYioRbhK]iGYdGYdGYdDWb>P[?Q\9KV4HO-;G7CO4@L2BIAWZ\x1240SyqDyk?uf:oaH|jF{iPpPqNmL
sU{p.A>{ENQ0BA9SO4OKu¦b?Yj1JZ4M];SeB[pKg{}µt£nh4Ue3Sf+CY%3N5LU,BTr¦·¨»¨¸¡¶¨ÃÂѪºq¢hJcw?[o>Yn3Pe5Wf@]nHcwTkd|iu«v¯wªs©\x7f¶°É¥¿«Âvªr¦kIcs:Sc5L\8L]1CT6EV5DV3HR3GR3GR2ES2CP0AN2CP4DR3DM4EN8IR9KT>MV;JS:IR:HR6IP6HO9LS9IP<LR=MTAPS@OR:KM;JQ9HN9IP5DM?MYM[gFR`M_lZkyVhsSfpCR_UfnIYcXhqGYdDVa?Q[?Q\>PZ<NY9KV;MX1EL,:F5BN;CQUaj[mqXsq[{tI|oDvj;pcG|oCxiCxjEzlLrc|h
ƾŽƿ½¹°«p¡e>Xi5N^8Qa;SeB[oLeys¨lv£Uq<^m0Qd.DZ 0G/FP2H[¥À ¹¨»}¯|°¡¼§ÈÚÀ{¬r_xD]r:Sh7Sd7Vi@^qGbwOf}Wo
t¦t¨t«yw¤½§À§Á\x7fµ©¾wªrRl|:Sc6M]7K\2CT3EV5DV4HR2FQ1FQ4FQ3EP5HS9IU8GT;MT4FM3FM<LS<LS9IP9IP:FN7GN8IO:JQ<IQ;IO>MR>MSCNT;OS;NS7IP9KRL]fJZfO_k`p|]mzTdq[kwUdpOalHYeGZb>RXBS`=N[AR_;LY7HU9JW:KX4FS1AM6EP6>L\x18!+2;EBNRFXWf|xT\x7fwJunN|rM}tExnG|rH\x7fqKv?pGwCui®¥qÀµuºr¹®Ä»~¯fB\m?Xh7P`?WiHauIbvt¨r¢o[u8Zj5Sf)?V!.EE\f?Ug´Î
£¼£·~ ¯q¥¥À¿Ðª½v§w¡¥·Zq>Wh4M]:UkC^sHcxNh}Xsw©}¯v¨¥º~´§À§À¨Á¥¼\x7f³~±rUn~<Vf5N^/FV2EW3EV4GV6IV3FT4FQ5GR6HS3CO2BN:KS;NT;MT=MT<LS=NTANV>KS<IQ:GO>KS>KSANV:GPALT<GO>HP2EK9KR:MSFW`N`hRbnP`lO_kP]kKWfJ[fGWcBT^?S^DYc<Q[<MZ;LY7HU6GT6HU:LY2CP8IW1BM2@L<FP"(1;CJHQV(21\x1a&&*CA
)&?]Z`}V~wS~wQ~wU|JDxE\x7fvMrº°o¿¶}ÍÄ5zu¤mBZl?XhCYi@VhMeyc|v«s¢~§\v<Zk2Pa&>R$1IAXb8Na£½×§Àt©£²µ«ÆÁÔ¨»}®§¸Wn~L`o<R^=S_8PhBYpIdyPm^zw¨w¨z«yt«¡»¨ÁªÄ¡·\x7f³~±v¢\x;Uf6O^1HX3HW4GV2FU6FS6GT6HS6HT5FO5FO3EN4EO;KQAQX:JQ<LSBNV?LT9FN:HP<GO<GOAKS?LT<IP5AI/<D>KR;LUEV_^ow[ltO_kTdpQamO`lKXdIWbBR_@P]?O\>Q^:NZ;N[;KX7GT3DP1AN7GS9IV3CP5FR0=K.:F1;E")35;@JOR"'*\x18\x1d\x1d\x19"''46\x1f-/\a\x16\x18\b\x1e^[\v$"!=:Xurs~rZ:u^¯¤o¸±M~zg
y¨oNfx?VfAXhF\nf~¬t©~«qf=\k/M^(=R!.E1HRAWi©ÂݧÀ}²£³\x7f³®ÉÀÓ¥¸À£²^s3FS7IT3FM9RhE^rIdyPmZyk¡{®{¯¡µ¦¾¡º®Ç¥¾©À{¯~±|«f?Yj2K[6M]3HW1FU4GS4ER6GT7IT6FR8IR1DK6FM;KR;KR=MT7HN?LT>KS<IQ=JS@KS?JR9FN9FN<IQ5AKCR[=LTCRZdt]myu
Wfs^nzK[gAP]HXdGWcBQ]JZgAQ^:KX:KW8HX9IY:IY7FV8GW6EU2AQ5DT0?O0@P,7H%.='0;\x1d%,8>CEJM&)-\x14\x15\x19 #(-/527:48;7>A\x10^[^[\x0e\x18\x18\x16!!\x15^[\x1a\x17"\x1f\x1f1-&FAcrss¢u¢^vRiyjpy¦®{¬¡µ¢´x¢:Zi0N_(=R!-C\x1d4>1GY¶Ðy±w¬{¬¥º©ÄÁÔ©½«ÉÜnZlyJ\g:KT/AG5K_C[mFavKj\x7fSrj¡r©u«vª¢¹¡º²Ë«Ä
¤»¨½\x7f ²w¨l<Xi4N]4M^1GV/EP.EQ9IV7HU<LW8GT5FO>NU9IN=MS<LR<LR9JP@NT=KQ>MS>JP:FL6CL8DM7HO<LSGU_7HQVfr[jwGZdj|CU`PbmDVaAS^GYdAS^7IT7IT9JW4ER6FR6EV9HX8GW5DT7FV3BR8GW5DT5DT2AQ0@P-5F$+:"+5\x1d%-+2527:69=\x1c\x1c \x19\x1e#\x1e$(-25-25!$) \v\f "#^[^[\x1c\x03\x1e^[\x18##$\x1f )\x1f\x1f>;;<DG"47%9?q ojuwezv |§k|§¨m:Zi6Rc&<N ,C\x1c3<EZm¨Ã¬Åw¬¢±«Á·ÒÆÙ¯Ã¯Àc{Wiv?PX+=D*9?8M`6P`Nk|Gh{Uuq©y±{´s¦z°¥¾¶Ï¸¦½¦»¡³
£µs¡=Yj1K[8Qa5L[4JU0GS8HU2BO9HU5FO&7A<LSBRX4DJ:IO;KQ=KQ>LR9GM9EJ/;A5AG7EJ=MT?OUAR[WgpZlwM_jXjuQaoM]kJ\gFXcAS^>P[:LW<MX;PZ6JU<P]2CO6EU8GW<GY4?Q5DT3BR6EU4CS2AQ2AQ1@P,=L+0D!'7\x1f(2\x18$';EH\x14^[\x1e^[!$\x1c\x1e$\x13 #\x1d+-^[(* \x10\x14 %&/12\x1e\x1d\x1f!\x1d\x1f\x15\x16^[\x19\x1a\x1c\x18\x1a^[\x0f\x18\x15%53,;=..7WLY °lqd}rqu¥w§|«z§gjG^m;P^1CP-@M0HX¥¾Î·È®¦¹À«¿·Ë¼Ï\x7f²³sPetAR^:KS:JQ3DR4GVRg|Nf\x7fg\x7fz®n v§{´\x7fµ¬Ã¦ÆÝ°Ç|¯¥ºvªq¥e
>\o=Wf7Q_;Q]6JU7HS1FQ4HT6KS9KS7IP6FM;IO>IO:PR7LM:MU3EM1AN%7@=KU;KQ?QX:LSWip[msQbkRclVgpPajCV^J]e@S[<OV=OZ@R]7IS:KW4DT;K[:JZ7GW5EU9IY8HX3CS4DT2BR1AQ9HX1@P.=M.>N.;K$/=\x1e'4\x1c#,^[!&\x1c!%\x19\x1d\x1e/45\x15\x1a^[\x18\x1e\x1d\x1d#"#('\x14\x16\x16 .,,&!"\x19\x12\x14\a\x19\x15\a\x0f\b+"^[O93D($gRQqgj~r£j
r¡nw§m~°v¨|«¬i
^xOhx@WgCWfMap¡²µÆ¥¶¯¸Ê²Ç´É½Ð¶É¢µ~«azEZi6FSARZ8GP/BM/CRJ_u\ty¯s§u©w§~·£¹°Ç¦ÆÝ§¾~²~²r¦¥º{¯:Xk5N^9Tb:O[9MW3GR4FQ7IT9LT9MU6IO9IP<JO;GM9IK<JP1>F:FP1>J@LX?KULWbSfm\nuQcjQcjL]fHYbK\eFW`GZb>QY:MT>P[7IT:LW6GT7HT6FV9IY8HX6FV7GW8HX7GW7GW3CS3CS1AQ3BR/>N,<L3@P,9I$/=\x1c%3\x1a!*\x18\x1e#\x14\x19\x1c\x1a\x1d\x1e\x17\x1c\x1d\x1c!"\x14\x19\x18\x15\x1a\x19022^[\x1d\x1d\x13\x13\x13###\x1a\x18\x18 \x1d\x1d\a\x0e
\x19\x1a\x16$\x1e\x173'\x1f;.(60-#'&\x05\x11\x14|´\x7f·z²¥¾~´´{°z¯§ºu¦[vrNhy@Xj²Á«¥¸®Á¯Ä©¾³È±È¶Í¸ÎÀ©¼«¼z£6JY9KU4EM5DL6GS,<L8Oa¸\x7fµ§¾¡¶¡´{´°Ç¢ÂÙ©ÉàªÁx¬¨½x¬´a:Xk=Wg:Sc;Qa4JU6HV3EP6IP7HQ8GP9HQ:GN;IQ<GO<FM6?H5>G19FAJWZbp\fpfnyNahFX_GY_@QZHYbEV_;LTFUbDW_:MT;MX5GR:LV3CQ3DQ4FR3CT5EU4DT3CS6FV6FV5EU4DT1BR/?O/>N.=M-<L0=M0=M*7H&1?^[$1\x15\x1c%\x12\x18\x1d!&)\x18^[\x1c\x12\x17\x18
\x13\x14\x16\x19\x19\x10\x12\x12&((\x16\x18\x18\x0e\x11\x11!##\x18\x19\x19\x11\x13\x13% "LFHQMI]]T$) #.'CSL\x17)%°Ì§Ä«Ç¥¿
£¾}µ°É®Ç±Å³ÇÂv§g±År «¾¶Í¾ÕªÁ³É´Ê´Ë¯É¨Â«Â ¿Ô¬¼tVlwVhs7GS<JV2CL5FS\x1f3E´Ë¥¿§À§½ª¾¦À¼Ó¦ÆÝÀ×®Å{¯|°w«~±aYw6RcA[k9P_:Q`5KW5HO7HQ8GP7CM@LV:EO:FP:EP2<C:FP6BNlv
¥±À¡WgqJ\cBT[HYb6GP?QY;KW;KW<KX9MT3EP>P[2DO6GT2CP6GT3EQ3CS3CS4DT7GW4DT5EU3CS->N2AQ.=M0?O.=M.;K+8H2?O#1A\x17"0\x13\x1c*\x16\x1d&\x1a &\x14\x19\x1c\x1a\x1d\x1e\x10\x15\x166<=\x13\x13\x13%%%\x17\x19\x19\x1d\x1f\x1f\x14\x15\x15\x14\x19\x18\x17\x1c^[\f\x12\x10\x17\x10\x15ebdLNLAIB\x1a&\x1c\x0e\x18\x0e!)"\x1e&\x1f¦È±Ñ£Äv¶¤ÁªÅ
£¼{°m¡s§Wss©µÌ¬Â¯Æ¡¸\x7f¤¿§Á
©Â¿Ù°Ë»Ö¬Ä¶«Â ¿Ó©¹lOdoDVa;KW8ER7FO/@N*>Qu¤¤¿§À¦½´È¦À»Ò¿Ö¡ÁخťºÂ¥º¥·mRq@[l=Vh9Rb:Qa6M]:MS9JS5DM:FP:DM4@L3AM:JV?U\-AL·Ê×§´¶ÂmRhsLdkCT]HYb?PY>PX:JW<LX=MY9IU3EP9KV2DN.>L3DQ4ER4ER3CS3CS2BR3CS1AQ4DT6FV4DT/?O1@P2AQ.=M1>N0=M-;K2<M#,>\x1d(6\x19"/\x1c#-\x19\x1f$\x17\x1c\x1f\x16\x1a^[\x0f\x14\x15$)*\x0f\x0e\x0e\x0f\x11\x11\x1e \x15\x17\x17\x0e\x13\x12\x11\x16\x15\x12\x17\x16\f\x12\x10%!&XWY@ECCJE\x15\x1a\x1487.\RKgXRz¢Åj´j°xº ½tl¡t¨{¯f
o¦«Ä¡º¬Æv±y¶\x7f£Áa
£§Ä}¼©Æ®ËªÅªÅ°É´É©·[tKak;MX9HT8ES4DJ2BO.CTBZq
¡»«Ã°Ê®Å«Ä¤ÅÛ ÀׯƬīÀt¨n¢|¯v§`~B]n=Wh:Te9Qa1K[4HO6IQ6DM2=J,8D0>JDVa9KX®¹®¹©LguwNfr=Va<W^9IR@QZ7HP?O[7GS8HT8HT3CP3EP1CN5FS1BO.?L3DP3CS1AQ5EU3CS3CS1AQ3CS4DT3CS/?O2AQ1AQ0=M/<L0=M/9J+5F$.@!,:\x1d&4\x1d$.\x1a %\x18\x1e!\x12\x16\x17\x11\x17\x18!&'\x12\x17\x16\x0f\x14\x13\f\x11\x10 \x0e
\x10\x15\x14\x12\x17\x16\x0f\x15\x14 \x0f\x0e\x1c\x1e \x18\x1a\x1a475GHF\x1a\x17\x13>3/ub]B)%b±h³q¹v¸q®v´v¦m¤p§ ¹¥¿«Å}¼~£¿{ ¼¤Å¦Çv¸¨Æ¦Ä}¼°Í¢¿®ÇÂ|§j
E\d@RZ:JW6BS9FL/?L/AS0H^®É¥¾³Ë´Ê®Ç¯Æ£ÃÚ\x7f¶ªÁ
¤¹z®s§{«w¨g<Xh=Yj;Uf8Rc2L^7NU4IQ+<D8COAO[;JWx²¾¥¯Rm|lF]mYn}7JW9KV=QX>NX:KT9JS7GS2BN:JU6FS9HV2EO.?L5FS1BO0AM1AQ1AQ1AQ2BR2BR2BR2BR1AQ3CS4DT3CS2AQ0=M0=M/<L0:K1;L)3D(2C#.<\x1f)6\x1d$.\x1c"'$),\x1c !^[ !#()\x11\x19\x18\x14\x1a\x19\x14\x1a\x19\x13\x18\x17\x10\x15\x14\x0f\x11\x11\x0e\x10\x10\x13\x13\x13
++\b!" &'%&$$\x0e\v\a/(%$^[\x17OD=kºy¡Ä±Ó¤Â§Â®Æ«À¬Ã©Â ¹È°Ê¯Í²Î{¡¿©Ç
¤È{¾r´o´¨Å¨Æg¨|¡½£¾¯Æ\x7fªwE\dCV]7FT>K[9FM3CP*<M$<R²Ì¹¯ÆÅ§À¢¸¡¸¬Ã¶{¯|°s§r£mk>Ym=Yj:Te8Rc6Pb1KQ/FO9IR>KX
º}¢^x[vf}Oct:L]BQbAN\;GSDMW;MV5GO1AM5EQ5EQ5ER9IV3BO1BO/@M3DQ/@L3CS/?O0@P2BR0@P0@P2BR3CS0@P1AQ1AQ1AQ,9I0=M1>N'4D+5F1;L'1B'1C"-;!*7\x1d$.\x1e$*&+/&*+"'((,-".+%-,^[#"\x1e%$\x16\x1c^[\x0f\x11\x11\x13\x13\x13#!!,+'\x18\x18\x13/+*=98\x12\x10\x0f\x13\x14\x10\x10\x17\x10%-&
+\ No newline at end of file
+diff --git a/host_applications/linux/apps/hello_pi/hello_wayland/Makefile b/host_applications/linux/apps/hello_pi/hello_wayland/Makefile
+new file mode 100644
+index 0000000..c9ddf23
+--- /dev/null
++++ b/host_applications/linux/apps/hello_pi/hello_wayland/Makefile
+@@ -0,0 +1,5 @@
++OBJS=triangle.o
++BIN=hello_wayland.bin
++LDFLAGS+=-lwayland-client -lwayland-egl
++
++include ../Makefile.include
+diff --git a/host_applications/linux/apps/hello_pi/hello_wayland/cube_texture_and_coords.h b/host_applications/linux/apps/hello_pi/hello_wayland/cube_texture_and_coords.h
+new file mode 100644
+index 0000000..663e23b
+--- /dev/null
++++ b/host_applications/linux/apps/hello_pi/hello_wayland/cube_texture_and_coords.h
+@@ -0,0 +1,100 @@
++/*
++Copyright (c) 2012, Broadcom Europe Ltd
++All rights reserved.
++
++Redistribution and use in source and binary forms, with or without
++modification, are permitted provided that the following conditions are met:
++ * Redistributions of source code must retain the above copyright
++ notice, this list of conditions and the following disclaimer.
++ * Redistributions in binary form must reproduce the above copyright
++ notice, this list of conditions and the following disclaimer in the
++ documentation and/or other materials provided with the distribution.
++ * Neither the name of the copyright holder nor the
++ names of its contributors may be used to endorse or promote products
++ derived from this software without specific prior written permission.
++
++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
++DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
++DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
++ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++*/
++
++// Spatial coordinates for the cube
++
++static const GLbyte quadx[6*4*3] = {
++ /* FRONT */
++ -10, -10, 10,
++ 10, -10, 10,
++ -10, 10, 10,
++ 10, 10, 10,
++
++ /* BACK */
++ -10, -10, -10,
++ -10, 10, -10,
++ 10, -10, -10,
++ 10, 10, -10,
++
++ /* LEFT */
++ -10, -10, 10,
++ -10, 10, 10,
++ -10, -10, -10,
++ -10, 10, -10,
++
++ /* RIGHT */
++ 10, -10, -10,
++ 10, 10, -10,
++ 10, -10, 10,
++ 10, 10, 10,
++
++ /* TOP */
++ -10, 10, 10,
++ 10, 10, 10,
++ -10, 10, -10,
++ 10, 10, -10,
++
++ /* BOTTOM */
++ -10, -10, 10,
++ -10, -10, -10,
++ 10, -10, 10,
++ 10, -10, -10,
++};
++
++/** Texture coordinates for the quad. */
++static const GLfloat texCoords[6 * 4 * 2] = {
++ 0.f, 0.f,
++ 1.f, 0.f,
++ 0.f, 1.f,
++ 1.f, 1.f,
++
++ 0.f, 0.f,
++ 1.f, 0.f,
++ 0.f, 1.f,
++ 1.f, 1.f,
++
++ 0.f, 0.f,
++ 1.f, 0.f,
++ 0.f, 1.f,
++ 1.f, 1.f,
++
++ 0.f, 0.f,
++ 1.f, 0.f,
++ 0.f, 1.f,
++ 1.f, 1.f,
++
++ 0.f, 0.f,
++ 1.f, 0.f,
++ 0.f, 1.f,
++ 1.f, 1.f,
++
++ 0.f, 0.f,
++ 1.f, 0.f,
++ 0.f, 1.f,
++ 1.f, 1.f,
++};
++
+diff --git a/host_applications/linux/apps/hello_pi/hello_wayland/triangle.c b/host_applications/linux/apps/hello_pi/hello_wayland/triangle.c
+new file mode 100644
+index 0000000..1a7bfc4
+--- /dev/null
++++ b/host_applications/linux/apps/hello_pi/hello_wayland/triangle.c
+@@ -0,0 +1,666 @@
++/*
++Copyright (c) 2012, Broadcom Europe Ltd
++All rights reserved.
++
++Redistribution and use in source and binary forms, with or without
++modification, are permitted provided that the following conditions are met:
++ * Redistributions of source code must retain the above copyright
++ notice, this list of conditions and the following disclaimer.
++ * Redistributions in binary form must reproduce the above copyright
++ notice, this list of conditions and the following disclaimer in the
++ documentation and/or other materials provided with the distribution.
++ * Neither the name of the copyright holder nor the
++ names of its contributors may be used to endorse or promote products
++ derived from this software without specific prior written permission.
++
++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
++DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
++DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
++ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++*/
++
++// A rotating cube rendered with OpenGL|ES. Three images used as textures on the cube faces.
++
++#define _GNU_SOURCE
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <math.h>
++#include <assert.h>
++#include <unistd.h>
++#include <sys/socket.h>
++#include <sys/un.h>
++
++#include <wayland-egl.h>
++#include <wayland-client.h>
++
++#include "GLES/gl.h"
++#include "EGL/egl.h"
++#include "EGL/eglext.h"
++
++#include "cube_texture_and_coords.h"
++
++#define PATH "./"
++
++#define IMAGE_SIZE 128
++
++#ifndef M_PI
++ #define M_PI 3.141592654
++#endif
++
++
++typedef struct
++{
++ uint32_t screen_width;
++ uint32_t screen_height;
++// OpenGL|ES objects
++ EGLDisplay display;
++ EGLSurface surface;
++ EGLContext context;
++ GLuint tex[6];
++// model rotation vector and direction
++ GLfloat rot_angle_x_inc;
++ GLfloat rot_angle_y_inc;
++ GLfloat rot_angle_z_inc;
++// current model rotation angles
++ GLfloat rot_angle_x;
++ GLfloat rot_angle_y;
++ GLfloat rot_angle_z;
++// current distance from camera
++ GLfloat distance;
++ GLfloat distance_inc;
++// pointers to texture buffers
++ char *tex_buf1;
++ char *tex_buf2;
++ char *tex_buf3;
++ struct wl_display *wl_display;
++ struct wl_registry *wl_registry;
++ struct wl_shell *wl_shell;
++ struct wl_shell_surface *wl_shell_surface;
++ struct wl_compositor *wl_compositor;
++ struct wl_surface *wl_surface;
++ struct wl_callback *wl_callback;
++ struct wl_egl_window *wl_egl_window;
++ int needs_update;
++ int ellapsed_frames;
++ int kill_compositor;
++ int single_frame;
++ int terminate_abruptly;
++} CUBE_STATE_T;
++
++static void init_ogl(CUBE_STATE_T *state);
++static void init_model_proj(CUBE_STATE_T *state);
++static void reset_model(CUBE_STATE_T *state);
++static GLfloat inc_and_wrap_angle(GLfloat angle, GLfloat angle_inc);
++static GLfloat inc_and_clip_distance(GLfloat distance, GLfloat distance_inc);
++static void redraw_scene(CUBE_STATE_T *state);
++static void update_model(CUBE_STATE_T *state);
++static void init_textures(CUBE_STATE_T *state);
++static void load_tex_images(CUBE_STATE_T *state);
++static void exit_func(CUBE_STATE_T *state);
++
++static void
++registry_handle_global(void *data, struct wl_registry *registry,
++ uint32_t name, const char *interface, uint32_t version)
++{
++ CUBE_STATE_T *state = data;
++
++ if (strcmp(interface, "wl_compositor") == 0) {
++ state->wl_compositor =
++ wl_registry_bind(registry, name,
++ &wl_compositor_interface, 1);
++ } else if (strcmp(interface, "wl_shell") == 0) {
++ state->wl_shell = wl_registry_bind(registry, name,
++ &wl_shell_interface, 1);
++ }
++}
++
++static void
++registry_handle_global_remove(void *data, struct wl_registry *registry,
++ uint32_t name)
++{
++}
++
++static const struct wl_registry_listener registry_listener = {
++ registry_handle_global,
++ registry_handle_global_remove
++};
++
++/***********************************************************
++ * Name: init_ogl
++ *
++ * Arguments:
++ * CUBE_STATE_T *state - holds OGLES model info
++ *
++ * Description: Sets the display, OpenGL|ES context and screen stuff
++ *
++ * Returns: void
++ *
++ ***********************************************************/
++static void init_ogl(CUBE_STATE_T *state)
++{
++ EGLBoolean result;
++ EGLint num_config;
++
++ static const EGLint attribute_list[] =
++ {
++ EGL_RED_SIZE, 8,
++ EGL_GREEN_SIZE, 8,
++ EGL_BLUE_SIZE, 8,
++ EGL_ALPHA_SIZE, 8,
++ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
++ EGL_NONE
++ };
++
++ EGLConfig config;
++
++ state->wl_display = wl_display_connect(NULL);
++
++ state->wl_registry = wl_display_get_registry(state->wl_display);
++ wl_registry_add_listener(state->wl_registry, ®istry_listener, state);
++
++ wl_display_dispatch(state->wl_display);
++
++ // get an EGL display connection
++ state->display = eglGetDisplay(state->wl_display);
++ assert(state->display!=EGL_NO_DISPLAY);
++
++ // initialize the EGL display connection
++ result = eglInitialize(state->display, NULL, NULL);
++ assert(EGL_FALSE != result);
++
++ // get an appropriate EGL frame buffer configuration
++ result = eglChooseConfig(state->display, attribute_list, &config, 1, &num_config);
++ assert(EGL_FALSE != result);
++
++ // create an EGL rendering context
++ state->context = eglCreateContext(state->display, config, EGL_NO_CONTEXT, NULL);
++ assert(state->context!=EGL_NO_CONTEXT);
++
++ // create an EGL window surface
++ state->screen_width = 1024;
++ state->screen_height = 860;
++
++ state->wl_surface = wl_compositor_create_surface(state->wl_compositor);
++ state->wl_shell_surface = wl_shell_get_shell_surface(state->wl_shell, state->wl_surface);
++
++ wl_shell_surface_set_toplevel(state->wl_shell_surface);
++ wl_shell_surface_set_title(state->wl_shell_surface, "triangle.c");
++
++ state->wl_egl_window = wl_egl_window_create(state->wl_surface, state->screen_width, state->screen_height);
++
++ state->surface = eglCreateWindowSurface( state->display, config, state->wl_egl_window, NULL );
++ assert(state->surface != EGL_NO_SURFACE);
++
++ // connect the context to the surface
++ result = eglMakeCurrent(state->display, state->surface, state->surface, state->context);
++ assert(EGL_FALSE != result);
++
++ // Set background color and clear buffers
++ glClearColor(0.15f, 0.25f, 0.35f, 1.0f);
++
++ // Enable back face culling.
++ glEnable(GL_CULL_FACE);
++
++ glMatrixMode(GL_MODELVIEW);
++}
++
++/***********************************************************
++ * Name: init_model_proj
++ *
++ * Arguments:
++ * CUBE_STATE_T *state - holds OGLES model info
++ *
++ * Description: Sets the OpenGL|ES model to default values
++ *
++ * Returns: void
++ *
++ ***********************************************************/
++static void init_model_proj(CUBE_STATE_T *state)
++{
++ float nearp = 1.0f;
++ float farp = 500.0f;
++ float hht;
++ float hwd;
++
++ glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
++
++ glViewport(0, 0, (GLsizei)state->screen_width, (GLsizei)state->screen_height);
++
++ glMatrixMode(GL_PROJECTION);
++ glLoadIdentity();
++
++ hht = nearp * (float)tan(45.0 / 2.0 / 180.0 * M_PI);
++ hwd = hht * (float)state->screen_width / (float)state->screen_height;
++
++ glFrustumf(-hwd, hwd, -hht, hht, nearp, farp);
++
++ glEnableClientState( GL_VERTEX_ARRAY );
++ glVertexPointer( 3, GL_BYTE, 0, quadx );
++
++ reset_model(state);
++}
++
++/***********************************************************
++ * Name: reset_model
++ *
++ * Arguments:
++ * CUBE_STATE_T *state - holds OGLES model info
++ *
++ * Description: Resets the Model projection and rotation direction
++ *
++ * Returns: void
++ *
++ ***********************************************************/
++static void reset_model(CUBE_STATE_T *state)
++{
++ // reset model position
++ glMatrixMode(GL_MODELVIEW);
++ glLoadIdentity();
++ glTranslatef(0.f, 0.f, -50.f);
++
++ // reset model rotation
++ state->rot_angle_x = 45.f; state->rot_angle_y = 30.f; state->rot_angle_z = 0.f;
++ state->rot_angle_x_inc = 0.5f; state->rot_angle_y_inc = 0.5f; state->rot_angle_z_inc = 0.f;
++ state->distance = 40.f;
++}
++
++/***********************************************************
++ * Name: update_model
++ *
++ * Arguments:
++ * CUBE_STATE_T *state - holds OGLES model info
++ *
++ * Description: Updates model projection to current position/rotation
++ *
++ * Returns: void
++ *
++ ***********************************************************/
++static void update_model(CUBE_STATE_T *state)
++{
++ // update position
++ state->rot_angle_x = inc_and_wrap_angle(state->rot_angle_x, state->rot_angle_x_inc);
++ state->rot_angle_y = inc_and_wrap_angle(state->rot_angle_y, state->rot_angle_y_inc);
++ state->rot_angle_z = inc_and_wrap_angle(state->rot_angle_z, state->rot_angle_z_inc);
++ state->distance = inc_and_clip_distance(state->distance, state->distance_inc);
++
++ glLoadIdentity();
++ // move camera back to see the cube
++ glTranslatef(0.f, 0.f, -state->distance);
++
++ // Rotate model to new position
++ glRotatef(state->rot_angle_x, 1.f, 0.f, 0.f);
++ glRotatef(state->rot_angle_y, 0.f, 1.f, 0.f);
++ glRotatef(state->rot_angle_z, 0.f, 0.f, 1.f);
++}
++
++/***********************************************************
++ * Name: inc_and_wrap_angle
++ *
++ * Arguments:
++ * GLfloat angle current angle
++ * GLfloat angle_inc angle increment
++ *
++ * Description: Increments or decrements angle by angle_inc degrees
++ * Wraps to 0 at 360 deg.
++ *
++ * Returns: new value of angle
++ *
++ ***********************************************************/
++static GLfloat inc_and_wrap_angle(GLfloat angle, GLfloat angle_inc)
++{
++ angle += angle_inc;
++
++ if (angle >= 360.0)
++ angle -= 360.f;
++ else if (angle <=0)
++ angle += 360.f;
++
++ return angle;
++}
++
++/***********************************************************
++ * Name: inc_and_clip_distance
++ *
++ * Arguments:
++ * GLfloat distance current distance
++ * GLfloat distance_inc distance increment
++ *
++ * Description: Increments or decrements distance by distance_inc units
++ * Clips to range
++ *
++ * Returns: new value of angle
++ *
++ ***********************************************************/
++static GLfloat inc_and_clip_distance(GLfloat distance, GLfloat distance_inc)
++{
++ distance += distance_inc;
++
++ if (distance >= 120.0f)
++ distance = 120.f;
++ else if (distance <= 40.0f)
++ distance = 40.0f;
++
++ return distance;
++}
++
++static pid_t get_server_pid(CUBE_STATE_T *state)
++{
++ struct ucred ucred;
++ socklen_t len;
++ int fd;
++
++ fd = wl_display_get_fd(state->wl_display);
++ len = sizeof ucred;
++ getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &ucred, &len);
++
++ return ucred.pid;
++}
++
++static void
++frame(void *data, struct wl_callback *callback, uint32_t time)
++{
++ CUBE_STATE_T *state = (CUBE_STATE_T *) data;
++
++ state->needs_update = 1;
++}
++
++static const struct wl_callback_listener frame_listener = {
++ frame
++};
++
++static void
++update(CUBE_STATE_T *state)
++{
++ if (!state->single_frame || state->ellapsed_frames == 0) {
++ update_model(state);
++ redraw_scene(state);
++ }
++
++ state->wl_callback = wl_surface_frame(state->wl_surface);
++ wl_callback_add_listener(state->wl_callback, &frame_listener, state);
++
++ if (state->ellapsed_frames == 100) {
++ if (state->kill_compositor) {
++ fprintf(stderr, "reached frame 100, killing compositor\n");
++ pid_t pid = get_server_pid(state);
++ kill(pid, SIGTERM);
++ } else if (state->terminate_abruptly) {
++ fprintf(stderr, "reached frame 100, terminating right away\n");
++ exit_func(state);
++ exit(0);
++ }
++ }
++
++ if (!state->single_frame || state->ellapsed_frames == 0)
++ eglSwapBuffers(state->display, state->surface);
++ else {
++ wl_surface_damage(state->wl_surface, 0, 0, state->screen_width,
++ state->screen_height);
++ wl_surface_commit(state->wl_surface);
++ }
++
++ state->ellapsed_frames++;
++}
++
++/***********************************************************
++ * Name: redraw_scene
++ *
++ * Arguments:
++ * CUBE_STATE_T *state - holds OGLES model info
++ *
++ * Description: Draws the model and calls eglSwapBuffers
++ * to render to screen
++ *
++ * Returns: void
++ *
++ ***********************************************************/
++static void redraw_scene(CUBE_STATE_T *state)
++{
++ // Start with a clear screen
++ glClear( GL_COLOR_BUFFER_BIT );
++
++ // Draw first (front) face:
++ // Bind texture surface to current vertices
++ glBindTexture(GL_TEXTURE_2D, state->tex[0]);
++
++ // Need to rotate textures - do this by rotating each cube face
++ glRotatef(270.f, 0.f, 0.f, 1.f ); // front face normal along z axis
++
++ // draw first 4 vertices
++ glDrawArrays( GL_TRIANGLE_STRIP, 0, 4);
++
++ // same pattern for other 5 faces - rotation chosen to make image orientation 'nice'
++ glBindTexture(GL_TEXTURE_2D, state->tex[1]);
++ glRotatef(90.f, 0.f, 0.f, 1.f ); // back face normal along z axis
++ glDrawArrays( GL_TRIANGLE_STRIP, 4, 4);
++
++ glBindTexture(GL_TEXTURE_2D, state->tex[2]);
++ glRotatef(90.f, 1.f, 0.f, 0.f ); // left face normal along x axis
++ glDrawArrays( GL_TRIANGLE_STRIP, 8, 4);
++
++ glBindTexture(GL_TEXTURE_2D, state->tex[3]);
++ glRotatef(90.f, 1.f, 0.f, 0.f ); // right face normal along x axis
++ glDrawArrays( GL_TRIANGLE_STRIP, 12, 4);
++
++ glBindTexture(GL_TEXTURE_2D, state->tex[4]);
++ glRotatef(270.f, 0.f, 1.f, 0.f ); // top face normal along y axis
++ glDrawArrays( GL_TRIANGLE_STRIP, 16, 4);
++
++ glBindTexture(GL_TEXTURE_2D, state->tex[5]);
++ glRotatef(90.f, 0.f, 1.f, 0.f ); // bottom face normal along y axis
++ glDrawArrays( GL_TRIANGLE_STRIP, 20, 4);
++}
++
++/***********************************************************
++ * Name: init_textures
++ *
++ * Arguments:
++ * CUBE_STATE_T *state - holds OGLES model info
++ *
++ * Description: Initialise OGL|ES texture surfaces to use image
++ * buffers
++ *
++ * Returns: void
++ *
++ ***********************************************************/
++static void init_textures(CUBE_STATE_T *state)
++{
++ // load three texture buffers but use them on six OGL|ES texture surfaces
++ load_tex_images(state);
++ glGenTextures(6, &state->tex[0]);
++
++ // setup first texture
++ glBindTexture(GL_TEXTURE_2D, state->tex[0]);
++ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, IMAGE_SIZE, IMAGE_SIZE, 0,
++ GL_RGB, GL_UNSIGNED_BYTE, state->tex_buf1);
++ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (GLfloat)GL_NEAREST);
++ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, (GLfloat)GL_NEAREST);
++
++ // setup second texture - reuse first image
++ glBindTexture(GL_TEXTURE_2D, state->tex[1]);
++ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, IMAGE_SIZE, IMAGE_SIZE, 0,
++ GL_RGB, GL_UNSIGNED_BYTE, state->tex_buf1);
++ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (GLfloat)GL_NEAREST);
++ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, (GLfloat)GL_NEAREST);
++
++ // third texture
++ glBindTexture(GL_TEXTURE_2D, state->tex[2]);
++ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, IMAGE_SIZE, IMAGE_SIZE, 0,
++ GL_RGB, GL_UNSIGNED_BYTE, state->tex_buf2);
++ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (GLfloat)GL_NEAREST);
++ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, (GLfloat)GL_NEAREST);
++
++ // fourth texture - reuse second image
++ glBindTexture(GL_TEXTURE_2D, state->tex[3]);
++ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, IMAGE_SIZE, IMAGE_SIZE, 0,
++ GL_RGB, GL_UNSIGNED_BYTE, state->tex_buf2);
++ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (GLfloat)GL_NEAREST);
++ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, (GLfloat)GL_NEAREST);
++
++ //fifth texture
++ glBindTexture(GL_TEXTURE_2D, state->tex[4]);
++ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, IMAGE_SIZE, IMAGE_SIZE, 0,
++ GL_RGB, GL_UNSIGNED_BYTE, state->tex_buf3);
++ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (GLfloat)GL_NEAREST);
++ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, (GLfloat)GL_NEAREST);
++
++ // sixth texture - reuse third image
++ glBindTexture(GL_TEXTURE_2D, state->tex[5]);
++ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, IMAGE_SIZE, IMAGE_SIZE, 0,
++ GL_RGB, GL_UNSIGNED_BYTE, state->tex_buf3);
++ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (GLfloat)GL_NEAREST);
++ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, (GLfloat)GL_NEAREST);
++
++ // setup overall texture environment
++ glTexCoordPointer(2, GL_FLOAT, 0, texCoords);
++ glEnableClientState(GL_TEXTURE_COORD_ARRAY);
++
++ glEnable(GL_TEXTURE_2D);
++}
++
++/***********************************************************
++ * Name: load_tex_images
++ *
++ * Arguments:
++ * void
++ *
++ * Description: Loads three raw images to use as textures on faces
++ *
++ * Returns: void
++ *
++ ***********************************************************/
++static void load_tex_images(CUBE_STATE_T *state)
++{
++ FILE *tex_file1 = NULL, *tex_file2=NULL, *tex_file3 = NULL;
++ int bytes_read, image_sz = IMAGE_SIZE*IMAGE_SIZE*3;
++
++ state->tex_buf1 = malloc(image_sz);
++ state->tex_buf2 = malloc(image_sz);
++ state->tex_buf3 = malloc(image_sz);
++
++ tex_file1 = fopen(PATH "Lucca_128_128.raw", "rb");
++ if (tex_file1 && state->tex_buf1)
++ {
++ bytes_read=fread(state->tex_buf1, 1, image_sz, tex_file1);
++ assert(bytes_read == image_sz); // some problem with file?
++ fclose(tex_file1);
++ }
++
++ tex_file2 = fopen(PATH "Djenne_128_128.raw", "rb");
++ if (tex_file2 && state->tex_buf2)
++ {
++ bytes_read=fread(state->tex_buf2, 1, image_sz, tex_file2);
++ assert(bytes_read == image_sz); // some problem with file?
++ fclose(tex_file2);
++ }
++
++ tex_file3 = fopen(PATH "Gaudi_128_128.raw", "rb");
++ if (tex_file3 && state->tex_buf3)
++ {
++ bytes_read=fread(state->tex_buf3, 1, image_sz, tex_file3);
++ assert(bytes_read == image_sz); // some problem with file?
++ fclose(tex_file3);
++ }
++}
++
++//------------------------------------------------------------------------------
++
++static void exit_func(CUBE_STATE_T *state)
++{
++ // clear screen
++ glClear( GL_COLOR_BUFFER_BIT );
++ eglSwapBuffers(state->display, state->surface);
++
++ // Release OpenGL resources
++ eglMakeCurrent( state->display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT );
++
++ wl_egl_window_destroy(state->wl_egl_window);
++ wl_shell_surface_destroy(state->wl_shell_surface);
++ wl_surface_destroy(state->wl_surface);
++
++ eglDestroySurface( state->display, state->surface );
++ eglDestroyContext( state->display, state->context );
++ eglTerminate( state->display );
++
++ wl_display_flush(state->wl_display);
++
++ // release texture buffers
++ free(state->tex_buf1);
++ free(state->tex_buf2);
++ free(state->tex_buf3);
++
++ printf("\ncube closed\n");
++} // exit_func()
++
++static int running = 1;
++
++static void
++signal_int(int signum)
++{
++ running = 0;
++}
++
++//==============================================================================
++
++int main (int argc, char *argv[])
++{
++ struct sigaction sigint;
++ CUBE_STATE_T state = {0,};
++ int ret = 0;
++ int i;
++
++ for (i = 0; i < argc; i++) {
++ if (strcmp(argv[i], "--kill-compositor") == 0)
++ state.kill_compositor = 1;
++ if (strcmp(argv[i], "--single-frame") == 0)
++ state.single_frame = 1;
++ if (strcmp(argv[i], "--terminate-abruptly") == 0)
++ state.terminate_abruptly = 1;
++ else if (strcmp(argv[i], "--help") == 0 ||
++ strcmp(argv[i], "-h") == 0) {
++ printf("Usage: hello_wayland.bin [OPTION]\n\n");
++ printf("\t--kill-compositor\tkill the Wayland compositor after 100 frames\n");
++ printf("\t-h, --help\t\tshow this text\n");
++ printf("\t--single-frame\t\tupdate the display only once\n");
++ printf("\t--terminate-abruptly\texit right after rendering the 100th frame\n");
++ return 0;
++ }
++ }
++
++ // Start OGLES
++ init_ogl(&state);
++
++ // Setup the model world
++ init_model_proj(&state);
++
++ // initialise the OGLES texture(s)
++ init_textures(&state);
++
++ sigint.sa_handler = signal_int;
++ sigemptyset(&sigint.sa_mask);
++ sigint.sa_flags = SA_RESETHAND;
++ sigaction(SIGINT, &sigint, NULL);
++
++ state.needs_update = 1;
++ while (running && ret != -1) {
++ if (state.needs_update) {
++ update(&state);
++ state.needs_update = 0;
++ }
++
++ ret = wl_display_dispatch(state.wl_display);
++ }
++
++ exit_func(&state);
++
++ return 0;
++}
++
+diff --git a/host_applications/linux/apps/hello_pi/rebuild.sh b/host_applications/linux/apps/hello_pi/rebuild.sh
+index fa4539e..37120ac 100755
+--- a/host_applications/linux/apps/hello_pi/rebuild.sh
++++ b/host_applications/linux/apps/hello_pi/rebuild.sh
+@@ -13,6 +13,7 @@ make -C hello_jpeg clean
+ make -C hello_videocube clean
+ make -C hello_teapot clean
+ make -C hello_fft clean
++make -C hello_wayland clean
+
+ make -C libs/ilclient
+ make -C libs/vgfont
+@@ -29,4 +30,4 @@ make -C hello_jpeg
+ make -C hello_videocube
+ make -C hello_teapot
+ make -C hello_fft
+-
++make -C hello_wayland
+--
+2.7.0
+
diff --git a/recipes-graphics/userland/userland/0011-wayland-egl-Add-bcm_host-to-dependencies.patch b/recipes-graphics/userland/userland/0011-wayland-egl-Add-bcm_host-to-dependencies.patch
new file mode 100644
index 0000000..386ddf3
--- /dev/null
+++ b/recipes-graphics/userland/userland/0011-wayland-egl-Add-bcm_host-to-dependencies.patch
@@ -0,0 +1,28 @@
+From 071771f1c2eb73c1f9083abb3a9f3a7712e20cdf Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 10 Aug 2015 02:38:27 -0700
+Subject: [PATCH 11/16] wayland-egl: Add bcm_host to dependencies
+
+It uses headers like vcos_platform_types.h but does not
+depend on module which should add the required include paths
+lets add the dependency on bcm_host module which should do it
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/khronos/wayland-egl/wayland-egl.pc.in | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/interface/khronos/wayland-egl/wayland-egl.pc.in b/interface/khronos/wayland-egl/wayland-egl.pc.in
+index 8bafc15..fd259c9 100644
+--- a/interface/khronos/wayland-egl/wayland-egl.pc.in
++++ b/interface/khronos/wayland-egl/wayland-egl.pc.in
+@@ -6,5 +6,6 @@ includedir=${prefix}/include
+ Name: wayland-egl
+ Description: VideoCore wayland-egl library
+ Version: @PROJECT_APIVER@
++Requires: bcm_host
+ Libs: -L${libdir} -lwayland-egl
+ Cflags: -I${includedir}
+--
+2.7.0
+
diff --git a/recipes-graphics/userland/userland/0012-interface-remove-faulty-assert-to-make-weston-happy-.patch b/recipes-graphics/userland/userland/0012-interface-remove-faulty-assert-to-make-weston-happy-.patch
new file mode 100644
index 0000000..74374fc
--- /dev/null
+++ b/recipes-graphics/userland/userland/0012-interface-remove-faulty-assert-to-make-weston-happy-.patch
@@ -0,0 +1,29 @@
+From fb577f53f9a91745557194b0422504e2cc93a637 Mon Sep 17 00:00:00 2001
+From: "Yann E. MORIN" <yann.morin.1998@free.fr>
+Date: Sat, 24 Jan 2015 22:07:19 +0100
+Subject: [PATCH 12/16] interface: remove faulty assert() to make weston happy
+ at runtime
+
+This was removed after a discussion on IRC with the weston guys
+('daniels' on irc.freenode.net/#wayland).
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+---
+ interface/vmcs_host/vc_vchi_dispmanx.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/interface/vmcs_host/vc_vchi_dispmanx.c b/interface/vmcs_host/vc_vchi_dispmanx.c
+index 1d24b6e..e2e7ccc 100755
+--- a/interface/vmcs_host/vc_vchi_dispmanx.c
++++ b/interface/vmcs_host/vc_vchi_dispmanx.c
+@@ -1304,7 +1304,6 @@ static void *dispmanx_notify_func( void *arg ) {
+ // Decrement the use count - the corresponding "use" is in vc_dispmanx_update_submit.
+ vchi_service_release(dispmanx_client.notify_handle[0]);
+ if (dispmanx_client.update_callback ) {
+- vcos_assert( dispmanx_client.pending_update_handle == handle);
+ dispmanx_client.update_callback(handle, dispmanx_client.update_callback_param);
+ }
+ } else {
+--
+2.7.0
+
diff --git a/recipes-graphics/userland/userland/0013-zero-out-wl-buffers-in-egl_surface_free.patch b/recipes-graphics/userland/userland/0013-zero-out-wl-buffers-in-egl_surface_free.patch
new file mode 100644
index 0000000..af291dc
--- /dev/null
+++ b/recipes-graphics/userland/userland/0013-zero-out-wl-buffers-in-egl_surface_free.patch
@@ -0,0 +1,33 @@
+From 2d91c1fded75b3207743e058b0d5ca9eb98dce58 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Feb 2016 11:10:47 -0800
+Subject: [PATCH 13/16] zero-out wl buffers in egl_surface_free
+
+origins from buildroot
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/khronos/egl/egl_client_surface.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/interface/khronos/egl/egl_client_surface.c b/interface/khronos/egl/egl_client_surface.c
+index 49cf7e5..512c83b 100644
+--- a/interface/khronos/egl/egl_client_surface.c
++++ b/interface/khronos/egl/egl_client_surface.c
+@@ -690,11 +690,13 @@ void egl_surface_free(EGL_SURFACE_T *surface)
+ if (surface->back_wl_buffer) {
+ wl_buffer_destroy(surface->back_wl_buffer->wl_buffer);
+ free(surface->back_wl_buffer);
++ surface->back_wl_buffer = 0;
+ }
+
+ if (surface->front_wl_buffer) {
+ wl_buffer_destroy(surface->front_wl_buffer->wl_buffer);
+ free(surface->front_wl_buffer);
++ surface->front_wl_buffer = 0;
+ }
+ #endif
+ }
+--
+2.7.0
+
diff --git a/recipes-graphics/userland/userland/0014-initialize-front-back-wayland-buffers.patch b/recipes-graphics/userland/userland/0014-initialize-front-back-wayland-buffers.patch
new file mode 100644
index 0000000..26cae0a
--- /dev/null
+++ b/recipes-graphics/userland/userland/0014-initialize-front-back-wayland-buffers.patch
@@ -0,0 +1,34 @@
+From 2c1574b2e867bb5dad028784642a9ad88df6b16c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Feb 2016 11:11:41 -0800
+Subject: [PATCH 14/16] initialize front back wayland buffers
+
+origins from metrological wayland support
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/khronos/egl/egl_client_surface.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/interface/khronos/egl/egl_client_surface.c b/interface/khronos/egl/egl_client_surface.c
+index 512c83b..a429724 100644
+--- a/interface/khronos/egl/egl_client_surface.c
++++ b/interface/khronos/egl/egl_client_surface.c
+@@ -401,11 +401,14 @@ EGL_SURFACE_T *egl_surface_create(
+ #ifdef BUILD_WAYLAND
+ if (type == WINDOW && wl_display) {
+ surface->wl_egl_window = (struct wl_egl_window*)win;
++ surface->front_wl_buffer = NULL;
+ surface->back_wl_buffer = allocate_wl_buffer(
+ surface->wl_egl_window, color);
+ resource = surface->back_wl_buffer->resource;
+ } else {
+ surface->wl_egl_window = NULL;
++ surface->front_wl_buffer = NULL;
++ surface->back_wl_buffer = NULL;
+ resource = DISPMANX_NO_HANDLE;
+ }
+ #endif
+--
+2.7.0
+
diff --git a/recipes-graphics/userland/userland_git.bb b/recipes-graphics/userland/userland_git.bb
index bbba080..75e437f 100644
--- a/recipes-graphics/userland/userland_git.bb
+++ b/recipes-graphics/userland/userland_git.bb
@@ -25,12 +25,25 @@ SRC_URI = "\
file://0005-user-vcsm-Fix-build-with-clang.patch \
file://0006-Fix-enum-type-conversion-warnings.patch \
file://0007-vcos_platform_types-Dont-use-extern-inline-with-clan.patch \
+ file://0008-Allow-applications-to-set-next-resource-handle.patch \
+ file://0009-wayland-Add-support-for-the-Wayland-winsys.patch \
+ file://0010-wayland-Add-Wayland-example.patch \
+ file://0011-wayland-egl-Add-bcm_host-to-dependencies.patch \
+ file://0012-interface-remove-faulty-assert-to-make-weston-happy-.patch \
+ file://0013-zero-out-wl-buffers-in-egl_surface_free.patch \
+ file://0014-initialize-front-back-wayland-buffers.patch \
"
S = "${WORKDIR}/git"
inherit cmake pkgconfig
-EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release -DCMAKE_EXE_LINKER_FLAGS='-Wl,--no-as-needed'"
+EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release -DCMAKE_EXE_LINKER_FLAGS='-Wl,--no-as-needed' \
+ "
+
+PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}"
+
+PACKAGECONFIG[wayland] = "-DBUILD_WAYLAND=TRUE,,wayland,"
+
CFLAGS_append = " -fPIC"
do_install_append () {
@@ -45,6 +58,7 @@ do_install_append () {
# to force the .so files into the runtime package (and keep them
# out of -dev package).
FILES_SOLIBSDEV = ""
+INSANE_SKIP_${PN} += "dev-so"
FILES_${PN} += " \
${libdir}/*.so \
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 04/23] weston: Enable rpi compositor backend
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (2 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 03/23] userland: Add wayland support Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 05/23] rpi-gpio: Upgrade to 0.6.1 and fix build with clang Khem Raj
` (19 subsequent siblings)
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
oe-core default configure options disables it
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
recipes-graphics/wayland/weston_%.bbappend | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 recipes-graphics/wayland/weston_%.bbappend
diff --git a/recipes-graphics/wayland/weston_%.bbappend b/recipes-graphics/wayland/weston_%.bbappend
new file mode 100644
index 0000000..c3a7421
--- /dev/null
+++ b/recipes-graphics/wayland/weston_%.bbappend
@@ -0,0 +1,4 @@
+EXTRA_OECONF_append_rpi = "\
+ --enable-rpi-compositor \
+ WESTON_NATIVE_BACKEND=rpi-backend.so \
+ "
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 05/23] rpi-gpio: Upgrade to 0.6.1 and fix build with clang
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (3 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 04/23] weston: Enable rpi compositor backend Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 06/23] eglinfo-x11, eglinfo-fb: Add EGLINFO_DEVICE via bbappends Khem Raj
` (18 subsequent siblings)
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
.../rpi-gpio/0001-Remove-nested-functions.patch | 294 +++++++++++++++++++++
.../{rpi-gpio_0.5.11.bb => rpi-gpio_0.6.1.bb} | 6 +-
2 files changed, 298 insertions(+), 2 deletions(-)
create mode 100644 recipes-devtools/python/rpi-gpio/0001-Remove-nested-functions.patch
rename recipes-devtools/python/{rpi-gpio_0.5.11.bb => rpi-gpio_0.6.1.bb} (70%)
diff --git a/recipes-devtools/python/rpi-gpio/0001-Remove-nested-functions.patch b/recipes-devtools/python/rpi-gpio/0001-Remove-nested-functions.patch
new file mode 100644
index 0000000..bd97179
--- /dev/null
+++ b/recipes-devtools/python/rpi-gpio/0001-Remove-nested-functions.patch
@@ -0,0 +1,294 @@
+From 23d7ab77865f8b17042f5cd4c6720cca475e0eb5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 13 Jan 2016 14:27:10 -0800
+Subject: [PATCH] Remove nested functions
+
+nested functions are not supported on llvm/clang compiler, replacing
+them helps make code portable and be compilable with non-gcc compilers
+additionally fix the diagnostic messages clang reported
+
+source/c_gpio.c:130:18: warning: comparison of distinct pointer types
+('volatile uint32_t *' (aka 'volatile unsigned int *') an
+d 'void *') [-Wcompare-distinct-pointer-types]
+ if (gpio_map < MAP_FAILED)
+ ~~~~~~~~ ^ ~~~~~~~~~~
+
+ source/c_gpio.c:89:13: warning: variable 'peri_base' is used
+uninitialized whenever 'if' condition is false [-Wsometimes-uninit
+ialized]
+ if (fread(buf, 1, sizeof buf, fp) == sizeof buf) {
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+source/c_gpio.c:116:17: note: uninitialized use occurs here
+ gpio_base = peri_base + GPIO_BASE_OFFSET;
+ ^~~~~~~~~
+source/c_gpio.c:89:9: note: remove the 'if' if its condition is always
+true
+ if (fread(buf, 1, sizeof buf, fp) == sizeof buf) {
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+source/c_gpio.c:64:23: note: initialize the variable 'peri_base' to
+silence this warning
+ uint32_t peri_base;
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted
+
+ source/c_gpio.c | 6 +--
+ source/py_gpio.c | 135 ++++++++++++++++++++++++++++---------------------------
+ 2 files changed, 71 insertions(+), 70 deletions(-)
+
+diff --git a/source/c_gpio.c b/source/c_gpio.c
+index c96a2b0..b69880f 100644
+--- a/source/c_gpio.c
++++ b/source/c_gpio.c
+@@ -61,7 +61,7 @@ int setup(void)
+ {
+ int mem_fd;
+ uint8_t *gpio_mem;
+- uint32_t peri_base;
++ uint32_t peri_base = 0;
+ uint32_t gpio_base;
+ unsigned char buf[4];
+ FILE *fp;
+@@ -73,7 +73,7 @@ int setup(void)
+ if ((mem_fd = open("/dev/gpiomem", O_RDWR|O_SYNC)) > 0)
+ {
+ gpio_map = (uint32_t *)mmap(NULL, BLOCK_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, mem_fd, 0);
+- if ((uint32_t)gpio_map < 0) {
++ if (gpio_map == MAP_FAILED) {
+ return SETUP_MMAP_FAIL;
+ } else {
+ return SETUP_OK;
+@@ -127,7 +127,7 @@ int setup(void)
+
+ gpio_map = (uint32_t *)mmap( (void *)gpio_mem, BLOCK_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, mem_fd, gpio_base);
+
+- if ((uint32_t)gpio_map < 0)
++ if (gpio_map == MAP_FAILED)
+ return SETUP_MMAP_FAIL;
+
+ return SETUP_OK;
+diff --git a/source/py_gpio.c b/source/py_gpio.c
+index d54cc7f..007bad5 100644
+--- a/source/py_gpio.c
++++ b/source/py_gpio.c
+@@ -69,6 +69,20 @@ static int mmap_gpio_mem(void)
+ return 0;
+ }
+ }
++static inline int cleanup_one(unsigned int gpio)
++{
++ // clean up any /sys/class exports
++ event_cleanup(gpio);
++
++ // set everything back to input
++ if (gpio_direction[gpio] != -1) {
++ setup_gpio(gpio, INPUT, PUD_OFF);
++ gpio_direction[gpio] = -1;
++ return 1;
++ }
++ return 0;
++}
++
+
+ // python function cleanup(channel=None)
+ static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
+@@ -83,19 +97,6 @@ static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
+ PyObject *tempobj;
+ static char *kwlist[] = {"channel", NULL};
+
+- void cleanup_one(void)
+- {
+- // clean up any /sys/class exports
+- event_cleanup(gpio);
+-
+- // set everything back to input
+- if (gpio_direction[gpio] != -1) {
+- setup_gpio(gpio, INPUT, PUD_OFF);
+- gpio_direction[gpio] = -1;
+- found = 1;
+- }
+- }
+-
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O", kwlist, &chanlist))
+ return NULL;
+
+@@ -140,7 +141,7 @@ static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
+ } else if (channel != -666) { // channel was an int indicating single channel
+ if (get_gpio_number(channel, &gpio))
+ return NULL;
+- cleanup_one();
++ found = cleanup_one(gpio);
+ } else { // channel was a list/tuple
+ for (i=0; i<chancount; i++) {
+ if (chanlist) {
+@@ -169,7 +170,7 @@ static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
+
+ if (get_gpio_number(channel, &gpio))
+ return NULL;
+- cleanup_one();
++ found = cleanup_one(gpio);
+ }
+ }
+ }
+@@ -182,6 +183,37 @@ static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
+ Py_RETURN_NONE;
+ }
+
++static inline int setup_one(unsigned int *gpio, int channel, int pud, int direction, int initial) {
++ if (get_gpio_number(channel, gpio))
++ return 0;
++
++ int func = gpio_function(*gpio);
++ if (gpio_warnings && // warnings enabled and
++ ((func != 0 && func != 1) || // (already one of the alt functions or
++ (gpio_direction[*gpio] == -1 && func == 1))) // already an output not set from this program)
++ {
++ PyErr_WarnEx(NULL, "This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.", 1);
++ }
++
++ // warn about pull/up down on i2c channels
++ if (gpio_warnings) {
++ if (rpiinfo.p1_revision == 0) { // compute module - do nothing
++ } else if ((rpiinfo.p1_revision == 1 && (*gpio == 0 || *gpio == 1)) ||
++ (*gpio == 2 || *gpio == 3)) {
++ if (pud == PUD_UP || pud == PUD_DOWN)
++ PyErr_WarnEx(NULL, "A physical pull up resistor is fitted on this channel!", 1);
++ }
++ }
++
++ if (direction == OUTPUT && (initial == LOW || initial == HIGH)) {
++ output_gpio(*gpio, initial);
++ }
++ setup_gpio(*gpio, direction, pud);
++ gpio_direction[*gpio] = direction;
++ return 1;
++}
++
++
+ // python function setup(channel(s), direction, pull_up_down=PUD_OFF, initial=None)
+ static PyObject *py_setup_channel(PyObject *self, PyObject *args, PyObject *kwargs)
+ {
+@@ -195,37 +227,6 @@ static PyObject *py_setup_channel(PyObject *self, PyObject *args, PyObject *kwar
+ int pud = PUD_OFF + PY_PUD_CONST_OFFSET;
+ int initial = -1;
+ static char *kwlist[] = {"channel", "direction", "pull_up_down", "initial", NULL};
+- int func;
+-
+- int setup_one(void) {
+- if (get_gpio_number(channel, &gpio))
+- return 0;
+-
+- func = gpio_function(gpio);
+- if (gpio_warnings && // warnings enabled and
+- ((func != 0 && func != 1) || // (already one of the alt functions or
+- (gpio_direction[gpio] == -1 && func == 1))) // already an output not set from this program)
+- {
+- PyErr_WarnEx(NULL, "This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.", 1);
+- }
+-
+- // warn about pull/up down on i2c channels
+- if (gpio_warnings) {
+- if (rpiinfo.p1_revision == 0) { // compute module - do nothing
+- } else if ((rpiinfo.p1_revision == 1 && (gpio == 0 || gpio == 1)) ||
+- (gpio == 2 || gpio == 3)) {
+- if (pud == PUD_UP || pud == PUD_DOWN)
+- PyErr_WarnEx(NULL, "A physical pull up resistor is fitted on this channel!", 1);
+- }
+- }
+-
+- if (direction == OUTPUT && (initial == LOW || initial == HIGH)) {
+- output_gpio(gpio, initial);
+- }
+- setup_gpio(gpio, direction, pud);
+- gpio_direction[gpio] = direction;
+- return 1;
+- }
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Oi|ii", kwlist, &chanlist, &direction, &pud, &initial))
+ return NULL;
+@@ -290,7 +291,7 @@ static PyObject *py_setup_channel(PyObject *self, PyObject *args, PyObject *kwar
+ } else if (chantuple) {
+ chancount = PyTuple_Size(chantuple);
+ } else {
+- if (!setup_one())
++ if (!setup_one(&gpio, channel, pud, direction, initial))
+ return NULL;
+ Py_RETURN_NONE;
+ }
+@@ -320,12 +321,29 @@ static PyObject *py_setup_channel(PyObject *self, PyObject *args, PyObject *kwar
+ return NULL;
+ }
+
+- if (!setup_one())
++ if (!setup_one(&gpio, channel, pud, direction, initial))
+ return NULL;
+ }
+
+ Py_RETURN_NONE;
+ }
++static inline int output_val(unsigned int *gpio, int channel, int value) {
++ if (get_gpio_number(channel, gpio))
++ return 0;
++
++ if (gpio_direction[*gpio] != OUTPUT)
++ {
++ PyErr_SetString(PyExc_RuntimeError, "The GPIO channel has not been set up as an OUTPUT");
++ return 0;
++ }
++
++ if (check_gpio_priv())
++ return 0;
++
++ output_gpio(*gpio, value);
++ return 1;
++}
++
+
+ // python function output(channel(s), value(s))
+ static PyObject *py_output_gpio(PyObject *self, PyObject *args)
+@@ -342,23 +360,6 @@ static PyObject *py_output_gpio(PyObject *self, PyObject *args)
+ int chancount = -1;
+ int valuecount = -1;
+
+- int output(void) {
+- if (get_gpio_number(channel, &gpio))
+- return 0;
+-
+- if (gpio_direction[gpio] != OUTPUT)
+- {
+- PyErr_SetString(PyExc_RuntimeError, "The GPIO channel has not been set up as an OUTPUT");
+- return 0;
+- }
+-
+- if (check_gpio_priv())
+- return 0;
+-
+- output_gpio(gpio, value);
+- return 1;
+- }
+-
+ if (!PyArg_ParseTuple(args, "OO", &chanlist, &valuelist))
+ return NULL;
+
+@@ -416,7 +417,7 @@ static PyObject *py_output_gpio(PyObject *self, PyObject *args)
+ }
+
+ if (chancount == -1) {
+- if (!output())
++ if (!output_val(&gpio, channel, value))
+ return NULL;
+ Py_RETURN_NONE;
+ }
+@@ -472,7 +473,7 @@ static PyObject *py_output_gpio(PyObject *self, PyObject *args)
+ return NULL;
+ }
+ }
+- if (!output())
++ if (!output_val(&gpio, channel, value))
+ return NULL;
+ }
+
+--
+2.7.0
+
diff --git a/recipes-devtools/python/rpi-gpio_0.5.11.bb b/recipes-devtools/python/rpi-gpio_0.6.1.bb
similarity index 70%
rename from recipes-devtools/python/rpi-gpio_0.5.11.bb
rename to recipes-devtools/python/rpi-gpio_0.6.1.bb
index bca31cc..89f601b 100644
--- a/recipes-devtools/python/rpi-gpio_0.5.11.bb
+++ b/recipes-devtools/python/rpi-gpio_0.6.1.bb
@@ -8,12 +8,14 @@ SRCNAME = "RPi.GPIO"
SRC_URI = "\
http://pypi.python.org/packages/source/R/RPi.GPIO/${SRCNAME}-${PV}.tar.gz \
+ file://0001-Remove-nested-functions.patch \
"
+SRC_URI[md5sum] = "254d0443a436eb241367c487274e7197"
+SRC_URI[sha256sum] = "54e5fb06d9ea1a1389a497fb5a06dfa950c86303b0f4ba89b68c55999d1df064"
+
S = "${WORKDIR}/${SRCNAME}-${PV}"
inherit distutils
COMPATIBLE_MACHINE = "raspberrypi"
-SRC_URI[md5sum] = "9dc3dab6ce2b7ccb833a866efb392821"
-SRC_URI[sha256sum] = "8d6f02da7f90e24512ad80ee4ccf34ef33687c88c47326f100cf7ac4d7ae4bf3"
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 06/23] eglinfo-x11, eglinfo-fb: Add EGLINFO_DEVICE via bbappends
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (4 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 05/23] rpi-gpio: Upgrade to 0.6.1 and fix build with clang Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 07/23] python-rtimu: Fix build with musl Khem Raj
` (17 subsequent siblings)
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
recipes-graphics/eglinfo/eglinfo-fb_%.bbappend | 1 +
recipes-graphics/eglinfo/eglinfo-x11_%.bbappend | 1 +
2 files changed, 2 insertions(+)
create mode 100644 recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
create mode 100644 recipes-graphics/eglinfo/eglinfo-x11_%.bbappend
diff --git a/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend b/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
new file mode 100644
index 0000000..7f8b600
--- /dev/null
+++ b/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
@@ -0,0 +1 @@
+EGLINFO_DEVICE_rpi = "raspberrypi"
diff --git a/recipes-graphics/eglinfo/eglinfo-x11_%.bbappend b/recipes-graphics/eglinfo/eglinfo-x11_%.bbappend
new file mode 100644
index 0000000..7f8b600
--- /dev/null
+++ b/recipes-graphics/eglinfo/eglinfo-x11_%.bbappend
@@ -0,0 +1 @@
+EGLINFO_DEVICE_rpi = "raspberrypi"
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 07/23] python-rtimu: Fix build with musl
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (5 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 06/23] eglinfo-x11, eglinfo-fb: Add EGLINFO_DEVICE via bbappends Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-29 21:21 ` Andrei Gherzan
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 08/23] wiringPi: " Khem Raj
` (16 subsequent siblings)
23 siblings, 1 reply; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
ioctl(3) needs to include asm/ioctl.h for its signature
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
...0001-include-asm-ioctl.h-for-ioctl-define.patch | 33 ++++++++++++++++++++++
recipes-devtools/python/python-rtimu_git.bb | 4 ++-
2 files changed, 36 insertions(+), 1 deletion(-)
create mode 100644 recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch
diff --git a/recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch b/recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch
new file mode 100644
index 0000000..4a93a1c
--- /dev/null
+++ b/recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch
@@ -0,0 +1,33 @@
+From c3aa4af56652b403e304ea5f321acfe289e42922 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Jan 2016 16:07:14 -0800
+Subject: [PATCH] include asm/ioctl.h for ioctl() define
+
+also fixes errors e.g.
+
+../../RTIMULib/RTIMUHal.cpp:208:29: error: '_IOC_SIZEBITS' was not
+declared in this scope
+ return ioctl(m_SPI, SPI_IOC_MESSAGE(1), &wrIOC);
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted
+
+ RTIMULib/RTIMUHal.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/RTIMULib/RTIMUHal.cpp b/RTIMULib/RTIMUHal.cpp
+index f9c3d15..d968326 100644
+--- a/RTIMULib/RTIMUHal.cpp
++++ b/RTIMULib/RTIMUHal.cpp
+@@ -29,6 +29,7 @@
+ #if !defined(WIN32) && !defined(__APPLE__)
+
+ #include <linux/spi/spidev.h>
++#include <asm/ioctl.h>
+
+ RTIMUHal::RTIMUHal()
+ {
+--
+2.7.0
+
diff --git a/recipes-devtools/python/python-rtimu_git.bb b/recipes-devtools/python/python-rtimu_git.bb
index f51a234..63c92b3 100644
--- a/recipes-devtools/python/python-rtimu_git.bb
+++ b/recipes-devtools/python/python-rtimu_git.bb
@@ -5,7 +5,9 @@ SECTION = "devel/python"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://../../LICENSE;md5=96cdecb41125f498958e09b72faf318e"
-SRC_URI = "git://github.com/RPi-Distro/RTIMULib.git;protocol=http;branch=master"
+SRC_URI = "git://github.com/RPi-Distro/RTIMULib.git;protocol=http;branch=master \
+ file://0001-include-asm-ioctl.h-for-ioctl-define.patch;patchdir=../.. \
+ "
SRCREV = "b949681af69b45f0f7f4bb53b6770037b5b02178"
S = "${WORKDIR}/git/Linux/python/"
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 08/23] wiringPi: Fix build with musl
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (6 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 07/23] python-rtimu: Fix build with musl Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-29 21:20 ` Andrei Gherzan
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 09/23] Delete rpc flushing of thread in glEGLImageTargetTexture2DOES Khem Raj
` (15 subsequent siblings)
23 siblings, 1 reply; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
Include asm/ioctl.h for _IOC_SIZEBITS
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
...de-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch | 58 ++++++++++++++++++++++
recipes-devtools/wiringPi/wiringpi_git.bb | 8 +--
2 files changed, 62 insertions(+), 4 deletions(-)
create mode 100644 recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch
diff --git a/recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch b/recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch
new file mode 100644
index 0000000..5de5853
--- /dev/null
+++ b/recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch
@@ -0,0 +1,58 @@
+From 7f65eb37a82a6d9b095d9c8f262ad9dd205acd03 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Jan 2016 16:57:38 -0800
+Subject: [PATCH] include <asm/ioctl.h> directly for _IOC_SIZEBITS
+
+Fixes errors like
+| wiringPiSPI.c: In function 'wiringPiSPIDataRW':
+| wiringPiSPI.c:89:35: error: '_IOC_SIZEBITS' undeclared (first use in
+this function)
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted
+
+ wiringPi/wiringPi.c | 1 +
+ wiringPi/wiringPiI2C.c | 1 +
+ wiringPi/wiringPiSPI.c | 1 +
+ 3 files changed, 3 insertions(+)
+
+diff --git a/wiringPi/wiringPi.c b/wiringPi/wiringPi.c
+index 32e5100..cb5db9d 100644
+--- a/wiringPi/wiringPi.c
++++ b/wiringPi/wiringPi.c
+@@ -64,6 +64,7 @@
+ #include <time.h>
+ #include <fcntl.h>
+ #include <pthread.h>
++#include <asm/ioctl.h>
+ #include <sys/time.h>
+ #include <sys/mman.h>
+ #include <sys/stat.h>
+diff --git a/wiringPi/wiringPiI2C.c b/wiringPi/wiringPiI2C.c
+index c787bce..efdf53c 100644
+--- a/wiringPi/wiringPiI2C.c
++++ b/wiringPi/wiringPiI2C.c
+@@ -52,6 +52,7 @@
+ #include <string.h>
+ #include <fcntl.h>
+ #include <sys/ioctl.h>
++#include <asm/ioctl.h>
+
+ #include "wiringPi.h"
+ #include "wiringPiI2C.h"
+diff --git a/wiringPi/wiringPiSPI.c b/wiringPi/wiringPiSPI.c
+index 453df31..ae3c7d9 100644
+--- a/wiringPi/wiringPiSPI.c
++++ b/wiringPi/wiringPiSPI.c
+@@ -27,6 +27,7 @@
+ #include <fcntl.h>
+ #include <errno.h>
+ #include <string.h>
++#include <asm/ioctl.h>
+ #include <sys/ioctl.h>
+ #include <linux/spi/spidev.h>
+
+--
+2.7.0
+
diff --git a/recipes-devtools/wiringPi/wiringpi_git.bb b/recipes-devtools/wiringPi/wiringpi_git.bb
index 4254a0a..9d2206b 100644
--- a/recipes-devtools/wiringPi/wiringpi_git.bb
+++ b/recipes-devtools/wiringPi/wiringpi_git.bb
@@ -9,10 +9,10 @@ SRCREV = "d79506694d7ba1c3da865d095238289d6175057d"
S = "${WORKDIR}/git"
-SRC_URI = "\
- git://git.drogon.net/wiringPi \
- file://0001-Add-initial-cross-compile-support.patch \
- "
+SRC_URI = "git://git.drogon.net/wiringPi \
+ file://0001-Add-initial-cross-compile-support.patch \
+ file://0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch \
+ "
COMPATIBLE_MACHINE = "raspberrypi"
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 09/23] Delete rpc flushing of thread in glEGLImageTargetTexture2DOES
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (7 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 08/23] wiringPi: " Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 10/23] rpio: Include sys/types.h for caddr_t Khem Raj
` (14 subsequent siblings)
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
.../userland/userland/0015-Remove-RPC_FLUSH.patch | 27 ++++++++++++++++++++++
recipes-graphics/userland/userland_git.bb | 1 +
2 files changed, 28 insertions(+)
create mode 100644 recipes-graphics/userland/userland/0015-Remove-RPC_FLUSH.patch
diff --git a/recipes-graphics/userland/userland/0015-Remove-RPC_FLUSH.patch b/recipes-graphics/userland/userland/0015-Remove-RPC_FLUSH.patch
new file mode 100644
index 0000000..d90cb09
--- /dev/null
+++ b/recipes-graphics/userland/userland/0015-Remove-RPC_FLUSH.patch
@@ -0,0 +1,27 @@
+From a09249699cab4ffe6304aaf7e5936019c97f5a26 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Feb 2016 11:09:18 -0800
+Subject: [PATCH 15/16] Remove RPC_FLUSH
+
+Origins from buildroot
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/khronos/ext/gl_oes_egl_image_client.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/interface/khronos/ext/gl_oes_egl_image_client.c b/interface/khronos/ext/gl_oes_egl_image_client.c
+index f9b7287..b04ffef 100644
+--- a/interface/khronos/ext/gl_oes_egl_image_client.c
++++ b/interface/khronos/ext/gl_oes_egl_image_client.c
+@@ -107,7 +107,6 @@ GL_API void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageO
+ GLEGLIMAGETARGETTEXTURE2DOES_ID,
+ RPC_ENUM(target),
+ RPC_EGLID(image));
+- RPC_FLUSH(thread);
+ #if EGL_BRCM_global_image
+ }
+ #endif
+--
+2.7.0
+
diff --git a/recipes-graphics/userland/userland_git.bb b/recipes-graphics/userland/userland_git.bb
index 75e437f..d78a7c9 100644
--- a/recipes-graphics/userland/userland_git.bb
+++ b/recipes-graphics/userland/userland_git.bb
@@ -32,6 +32,7 @@ SRC_URI = "\
file://0012-interface-remove-faulty-assert-to-make-weston-happy-.patch \
file://0013-zero-out-wl-buffers-in-egl_surface_free.patch \
file://0014-initialize-front-back-wayland-buffers.patch \
+ file://0015-Remove-RPC_FLUSH.patch \
"
S = "${WORKDIR}/git"
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 10/23] rpio: Include sys/types.h for caddr_t
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (8 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 09/23] Delete rpc flushing of thread in glEGLImageTargetTexture2DOES Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-29 21:21 ` Andrei Gherzan
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 11/23] userland: Define PROJECT_APIVER and rprovide libgles2 libgl Khem Raj
` (13 subsequent siblings)
23 siblings, 1 reply; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
Fixes build with musl
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
...-types.h-explicitly-for-getting-caddr_t-d.patch | 30 ++++++++++++++++++++++
recipes-devtools/python/rpio_0.10.0.bb | 6 ++---
2 files changed, 33 insertions(+), 3 deletions(-)
create mode 100644 recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch
diff --git a/recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch b/recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch
new file mode 100644
index 0000000..bed9749
--- /dev/null
+++ b/recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch
@@ -0,0 +1,30 @@
+From c86bfacc98d58244f532626954ed00d84ecfa82d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Jan 2016 17:12:37 -0800
+Subject: [PATCH] include sys/types.h explicitly for getting caddr_t definition
+
+Helps fixing build on musl where sys/types.h is not included indirectly
+as happening on glibc
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted
+
+ source/c_gpio/c_gpio.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/source/c_gpio/c_gpio.c b/source/c_gpio/c_gpio.c
+index 25a04ca..70df632 100644
+--- a/source/c_gpio/c_gpio.c
++++ b/source/c_gpio/c_gpio.c
+@@ -29,6 +29,7 @@
+ #include <stdint.h>
+ #include <stdlib.h>
+ #include <fcntl.h>
++#include <sys/types.h>
+ #include <sys/mman.h>
+ #include "c_gpio.h"
+
+--
+2.7.0
+
diff --git a/recipes-devtools/python/rpio_0.10.0.bb b/recipes-devtools/python/rpio_0.10.0.bb
index 1cc1661..69ecb6f 100644
--- a/recipes-devtools/python/rpio_0.10.0.bb
+++ b/recipes-devtools/python/rpio_0.10.0.bb
@@ -7,9 +7,9 @@ LIC_FILES_CHKSUM = "file://README.rst;beginline=41;endline=53;md5=d5d95d7486a4d9
SRCNAME = "RPIO"
-SRC_URI = "\
- http://pypi.python.org/packages/source/R/RPIO/${SRCNAME}-${PV}.tar.gz \
- "
+SRC_URI = "http://pypi.python.org/packages/source/R/RPIO/${SRCNAME}-${PV}.tar.gz \
+ file://0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch \
+ "
S = "${WORKDIR}/${SRCNAME}-${PV}"
inherit setuptools
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 11/23] userland: Define PROJECT_APIVER and rprovide libgles2 libgl
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (9 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 10/23] rpio: Include sys/types.h for caddr_t Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 12/23] userland: Add wayland to deps if in DISTRO_FEATURES Khem Raj
` (12 subsequent siblings)
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
These are needed for pkgconfig to have correct version number which is
checked by many configure systems e.g. cogl to decide on support for
wayland-egl
rprovides are expected by cogl as well to define runtime deps on
libgles2 and libgl
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
.../userland/0016-define-PROJECT_APIVER.patch | 33 ++++++++++++++++++++++
recipes-graphics/userland/userland_git.bb | 3 ++
2 files changed, 36 insertions(+)
create mode 100644 recipes-graphics/userland/userland/0016-define-PROJECT_APIVER.patch
diff --git a/recipes-graphics/userland/userland/0016-define-PROJECT_APIVER.patch b/recipes-graphics/userland/userland/0016-define-PROJECT_APIVER.patch
new file mode 100644
index 0000000..63a35eb
--- /dev/null
+++ b/recipes-graphics/userland/userland/0016-define-PROJECT_APIVER.patch
@@ -0,0 +1,33 @@
+From 56072d7282e7daf65f58fa897f1f76268ae88121 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Feb 2016 11:06:26 -0800
+Subject: [PATCH 16/16] define PROJECT_APIVER
+
+this helps in compiling components which use packageconfig to poke for
+library versions and requiring minimum supported version
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b240ef6..aa5e14f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -2,6 +2,12 @@ cmake_minimum_required(VERSION 2.8)
+
+ project(vmcs_host_apps)
+
++SET(PROJECT_VER_MAJOR 1)
++SET(PROJECT_VER_MINOR 0)
++SET(PROJECT_VER_PATCH 0)
++SET(PROJECT_VER "${PROJECT_VER_MAJOR}.${PROJECT_VER_MINOR}.${PROJECT_VER_PATCH}")
++SET(PROJECT_APIVER "${PROJECT_VER}")
++
+ set(BUILD_MMAL TRUE)
+ set(BUILD_MMAL_APPS TRUE)
+ set(vmcs_root ${PROJECT_SOURCE_DIR})
+--
+2.7.0
+
diff --git a/recipes-graphics/userland/userland_git.bb b/recipes-graphics/userland/userland_git.bb
index d78a7c9..5ea48e1 100644
--- a/recipes-graphics/userland/userland_git.bb
+++ b/recipes-graphics/userland/userland_git.bb
@@ -10,6 +10,8 @@ PR = "r5"
PROVIDES = "virtual/libgles2 \
virtual/egl"
+RPROVIDES_${PN} += "libgles2 libgl"
+
COMPATIBLE_MACHINE = "raspberrypi"
SRCBRANCH = "master"
@@ -33,6 +35,7 @@ SRC_URI = "\
file://0013-zero-out-wl-buffers-in-egl_surface_free.patch \
file://0014-initialize-front-back-wayland-buffers.patch \
file://0015-Remove-RPC_FLUSH.patch \
+ file://0016-define-PROJECT_APIVER.patch \
"
S = "${WORKDIR}/git"
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 12/23] userland: Add wayland to deps if in DISTRO_FEATURES
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (10 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 11/23] userland: Define PROJECT_APIVER and rprovide libgles2 libgl Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 13/23] userland: Fix build race with wayland support Khem Raj
` (11 subsequent siblings)
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
recipes-graphics/userland/userland_git.bb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/recipes-graphics/userland/userland_git.bb b/recipes-graphics/userland/userland_git.bb
index 5ea48e1..7ec02e7 100644
--- a/recipes-graphics/userland/userland_git.bb
+++ b/recipes-graphics/userland/userland_git.bb
@@ -46,7 +46,7 @@ EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release -DCMAKE_EXE_LINKER_FLAGS='-Wl,--no-a
PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}"
-PACKAGECONFIG[wayland] = "-DBUILD_WAYLAND=TRUE,,wayland,"
+PACKAGECONFIG[wayland] = "-DBUILD_WAYLAND=TRUE -DWAYLAND_SCANNER_EXECUTABLE:FILEPATH=${STAGING_BINDIR_NATIVE}/wayland-scanner,,wayland"
CFLAGS_append = " -fPIC"
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 13/23] userland: Fix build race with wayland support
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (11 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 12/23] userland: Add wayland to deps if in DISTRO_FEATURES Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 14/23] gstreamer1.0-omx: Add raspberry pi optimization patches and config options Khem Raj
` (10 subsequent siblings)
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
.../userland/0017-fix-cmake-dependency-race.patch | 78 ++++++++++++++++++++++
recipes-graphics/userland/userland_git.bb | 1 +
2 files changed, 79 insertions(+)
create mode 100644 recipes-graphics/userland/userland/0017-fix-cmake-dependency-race.patch
diff --git a/recipes-graphics/userland/userland/0017-fix-cmake-dependency-race.patch b/recipes-graphics/userland/userland/0017-fix-cmake-dependency-race.patch
new file mode 100644
index 0000000..face946
--- /dev/null
+++ b/recipes-graphics/userland/userland/0017-fix-cmake-dependency-race.patch
@@ -0,0 +1,78 @@
+From e2df72943951feb2c2a0899d4a1a00d24d7a3ccc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Feb 2016 13:12:47 -0800
+Subject: [PATCH 17/17] fix cmake dependency race
+
+Fixes errors like
+
+/a/builder/mnt/build-oe/tmp-glibc/work/raspberrypi2-oe-linux-gnueabi/userland/git-r5/git/interface/vmcs_host/vc_vchi_dispmanx.h:72:66:
+fatal error: interface/vmcs_host/wayland-dispmanx-server-protocol.h: No
+such file or directory
+compilation terminated.
+interface/khronos/CMakeFiles/EGL_static.dir/build.make:773: recipe for
+target 'interface/khronos/CMakeFiles/EGL_static.dir/ext/egl_wayland.c.o'
+failed
+make[2]: ***
+[interface/khronos/CMakeFiles/EGL_static.dir/ext/egl_wayland.c.o] Error 1
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/vcos/pthreads/CMakeLists.txt | 8 ++++++++
+ interface/vmcs_host/CMakeLists.txt | 8 --------
+ interface/vmcs_host/vc_vchi_dispmanx.h | 2 +-
+ 3 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/interface/vcos/pthreads/CMakeLists.txt b/interface/vcos/pthreads/CMakeLists.txt
+index 1d81ca3..d6cd415 100644
+--- a/interface/vcos/pthreads/CMakeLists.txt
++++ b/interface/vcos/pthreads/CMakeLists.txt
+@@ -33,6 +33,14 @@ set (SOURCES
+ ../generic/vcos_generic_blockpool.c
+ )
+
++if (BUILD_WAYLAND)
++wayland_add_protocol_server(
++ SOURCES
++ ../../../interface/wayland/dispmanx.xml
++ dispmanx
++)
++endif ()
++
+ if (VCOS_PTHREADS_BUILD_SHARED)
+ add_library (vcos SHARED ${SOURCES})
+ target_link_libraries (vcos pthread dl rt)
+diff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt
+index 35150ed..22949a8 100755
+--- a/interface/vmcs_host/CMakeLists.txt
++++ b/interface/vmcs_host/CMakeLists.txt
+@@ -17,14 +17,6 @@ set(VCHOSTIF_SOURCE
+ # ${VMCS_TARGET}/vmcs_main.c
+ # vc_vchi_haud.c
+
+-if (BUILD_WAYLAND)
+-wayland_add_protocol_server(
+- VCHOSTIF_SOURCE
+- ../../interface/wayland/dispmanx.xml
+- dispmanx
+-)
+-endif ()
+-
+ add_library(vchostif ${VCHOSTIF_SOURCE})
+
+ #add_library(bufman vc_vchi_bufman.c )
+diff --git a/interface/vmcs_host/vc_vchi_dispmanx.h b/interface/vmcs_host/vc_vchi_dispmanx.h
+index f0bae30..8c44c58 100644
+--- a/interface/vmcs_host/vc_vchi_dispmanx.h
++++ b/interface/vmcs_host/vc_vchi_dispmanx.h
+@@ -69,7 +69,7 @@ typedef struct {
+ #ifdef BUILD_WAYLAND
+ /* XXX: This should be in a private header that can be included from EGL and vc_* */
+ #include <wayland-server.h>
+-#include "interface/vmcs_host/wayland-dispmanx-server-protocol.h"
++#include "interface/vcos/pthreads/wayland-dispmanx-server-protocol.h"
+ struct wl_dispmanx_server_buffer {
+ struct wl_resource *resource;
+ struct wl_dispmanx *dispmanx;
+--
+2.7.0
+
diff --git a/recipes-graphics/userland/userland_git.bb b/recipes-graphics/userland/userland_git.bb
index 7ec02e7..c59b5f3 100644
--- a/recipes-graphics/userland/userland_git.bb
+++ b/recipes-graphics/userland/userland_git.bb
@@ -36,6 +36,7 @@ SRC_URI = "\
file://0014-initialize-front-back-wayland-buffers.patch \
file://0015-Remove-RPC_FLUSH.patch \
file://0016-define-PROJECT_APIVER.patch \
+ file://0017-fix-cmake-dependency-race.patch \
"
S = "${WORKDIR}/git"
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 14/23] gstreamer1.0-omx: Add raspberry pi optimization patches and config options
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (12 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 13/23] userland: Fix build race with wayland support Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 15/23] weston: Specify egl and compositor options for rpi Khem Raj
` (9 subsequent siblings)
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
Patches from Hong Li <honglh@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
.../gstreamer1.0-omx/0001-config-files-path.patch | 137 +++++++++++++++++++++
...o-acquire-buffer-when-src-pad-isn-t-activ.patch | 47 +++++++
.../0003-fix-decoder-flushing.patch | 15 +++
.../gstreamer/gstreamer1.0-omx_%.bbappend | 19 +++
4 files changed, 218 insertions(+)
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0001-config-files-path.patch
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-fix-decoder-flushing.patch
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx/0001-config-files-path.patch b/recipes-multimedia/gstreamer/gstreamer1.0-omx/0001-config-files-path.patch
new file mode 100644
index 0000000..a7da922
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-omx/0001-config-files-path.patch
@@ -0,0 +1,137 @@
+--- a/config/bellagio/gstomx.conf
++++ b/config/bellagio/gstomx.conf
+@@ -1,6 +1,6 @@
+ [omxmpeg4videodec]
+ type-name=GstOMXMPEG4VideoDec
+-core-name=/usr/local/lib/libomxil-bellagio.so.0
++core-name=/usr/lib/libomxil-bellagio.so.0
+ component-name=OMX.st.video_decoder.mpeg4
+ rank=256
+ in-port-index=0
+@@ -9,7 +9,7 @@
+
+ [omxh264dec]
+ type-name=GstOMXH264Dec
+-core-name=/usr/local/lib/libomxil-bellagio.so.0
++core-name=/usr/lib/libomxil-bellagio.so.0
+ component-name=OMX.st.video_decoder.avc
+ rank=256
+ in-port-index=0
+@@ -18,7 +18,7 @@
+
+ [omxmpeg4videoenc]
+ type-name=GstOMXMPEG4VideoEnc
+-core-name=/usr/local/lib/libomxil-bellagio.so.0
++core-name=/usr/lib/libomxil-bellagio.so.0
+ component-name=OMX.st.video_encoder.mpeg4
+ rank=0
+ in-port-index=0
+@@ -27,7 +27,7 @@
+
+ [omxaacenc]
+ type-name=GstOMXAACEnc
+-core-name=/usr/local/lib/libomxil-bellagio.so.0
++core-name=/usr/lib/libomxil-bellagio.so.0
+ component-name=OMX.st.audio_encoder.aac
+ rank=0
+ in-port-index=0
+--- a/config/rpi/gstomx.conf
++++ b/config/rpi/gstomx.conf
+@@ -1,6 +1,6 @@
+ [omxmpeg2videodec]
+ type-name=GstOMXMPEG2VideoDec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -9,7 +9,7 @@
+
+ [omxmpeg4videodec]
+ type-name=GstOMXMPEG4VideoDec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -18,7 +18,7 @@
+
+ [omxh263dec]
+ type-name=GstOMXH263Dec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -27,7 +27,7 @@
+
+ [omxh264dec]
+ type-name=GstOMXH264Dec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -36,7 +36,7 @@
+
+ [omxtheoradec]
+ type-name=GstOMXTheoraDec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -45,7 +45,7 @@
+
+ [omxvp8dec]
+ type-name=GstOMXVP8Dec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -54,7 +54,7 @@
+
+ [omxmjpegdec]
+ type-name=GstOMXMJPEGDec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=257
+ in-port-index=130
+@@ -63,7 +63,7 @@
+
+ [omxvc1dec]
+ type-name=GstOMXWMVDec
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_decode
+ rank=256
+ in-port-index=130
+@@ -73,7 +73,7 @@
+
+ [omxh264enc]
+ type-name=GstOMXH264Enc
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.video_encode
+ rank=257
+ in-port-index=200
+@@ -82,7 +82,7 @@
+
+ [omxanalogaudiosink]
+ type-name=GstOMXAnalogAudioSink
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.audio_render
+ rank=256
+ in-port-index=100
+@@ -92,7 +92,7 @@
+
+ [omxhdmiaudiosink]
+ type-name=GstOMXHdmiAudioSink
+-core-name=/opt/vc/lib/libopenmaxil.so
++core-name=/usr/lib/libopenmaxil.so
+ component-name=OMX.broadcom.audio_render
+ rank=257
+ in-port-index=100
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx/0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch b/recipes-multimedia/gstreamer/gstreamer1.0-omx/0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch
new file mode 100644
index 0000000..aef21a5
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-omx/0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch
@@ -0,0 +1,47 @@
+From 2e111e52f96f0b942abda120c30a876629bd73fc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
+Date: Mon, 25 May 2015 14:53:35 +0200
+Subject: [PATCH] Don't try to acquire buffer when src pad isn't active
+
+This solves a race condition when setting the pipeline from PAUSE to
+NULL while the decoder loop is still running. Without this patch, the
+thread which interacts with the decode sink pad gets blocked here:
+
+ gst_element_change_state()
+ gst_element_change_state_func()
+ gst_element_pads_activate() --> Deactivating pads
+ activate_pads()
+ gst_pad_set_active()
+ gst_pad_activate_mode()
+ post_activate()
+ GST_PAD_STREAM_LOCK()
+
+while gst_omx_port_acquire_buffer() gets stalled forever in
+gst_omx_component_wait_message() waiting for a message that will never
+arrive:
+
+ gst_omx_video_dec_loop()
+ gst_omx_port_acquire_buffer()
+ gst_omx_component_wait_message()
+---
+ omx/gstomxvideodec.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
+index cd24944..57a61dd 100644
+--- a/omx/gstomxvideodec.c
++++ b/omx/gstomxvideodec.c
+@@ -1247,6 +1247,11 @@ gst_omx_video_dec_loop (GstOMXVideoDec * self)
+ GstClockTimeDiff deadline;
+ OMX_ERRORTYPE err;
+
++ if (!gst_pad_is_active(GST_VIDEO_DECODER_SRC_PAD (self))) {
++ GST_DEBUG_OBJECT (self, "Src pad not active, not acquiring buffer and flushing instead");
++ goto flushing;
++ }
++
+ #if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL)
+ port = self->eglimage ? self->egl_out_port : self->dec_out_port;
+ #else
+--
+1.8.3.2
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-fix-decoder-flushing.patch b/recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-fix-decoder-flushing.patch
new file mode 100644
index 0000000..a244b09
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-fix-decoder-flushing.patch
@@ -0,0 +1,15 @@
+diff --git a/omx/gstomx.c b/omx/gstomx.c
+index 69696c4..c382019 100644
+--- a/omx/gstomx.c
++++ b/omx/gstomx.c
+@@ -1508,8 +1508,8 @@ gst_omx_port_set_flushing (GstOMXPort * port, GstClockTime timeout,
+ last_error = OMX_ErrorNone;
+ gst_omx_component_handle_messages (comp);
+ while (signalled && last_error == OMX_ErrorNone && !port->flushed
+- && port->buffers
+- && port->buffers->len > g_queue_get_length (&port->pending_buffers)) {
++ /* && port->buffers
++ && port->buffers->len > g_queue_get_length (&port->pending_buffers) */) {
+ signalled = gst_omx_component_wait_message (comp, timeout);
+ if (signalled)
+ gst_omx_component_handle_messages (comp);
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend
new file mode 100644
index 0000000..b313acd
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend
@@ -0,0 +1,19 @@
+#
+# Need to make this conditional to gstreamer1
+#
+SRC_URI_append_rpi = " \
+ file://0001-config-files-path.patch \
+ file://0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch \
+ file://0003-fix-decoder-flushing.patch \
+"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/gstreamer1.0-omx:"
+
+GSTREAMER_1_0_OMX_TARGET_rpi = "rpi"
+GSTREAMER_1_0_OMX_CORE_NAME_rpi = "${libdir}/libopenmaxil.so"
+
+
+# How to make this RPI specific?
+EXTRA_OECONF_append_rpi = " CFLAGS="$CFLAGS -I${STAGING_DIR_TARGET}/usr/include/IL -I${STAGING_DIR_TARGET}/usr/include/interface/vcos/pthreads -I${STAGING_DIR_TARGET}/usr/include/interface/vmcs_host/linux""
+#examples only build with GL but not GLES, so disable it for RPI
+EXTRA_OECONF_append_rpi = " --disable-examples"
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 15/23] weston: Specify egl and compositor options for rpi
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (13 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 14/23] gstreamer1.0-omx: Add raspberry pi optimization patches and config options Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 16/23] gstreamer1.0-omx: Backports and fixes for smooth video playback Khem Raj
` (8 subsequent siblings)
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
recipes-graphics/weston/weston_%.bbappend | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 recipes-graphics/weston/weston_%.bbappend
diff --git a/recipes-graphics/weston/weston_%.bbappend b/recipes-graphics/weston/weston_%.bbappend
new file mode 100644
index 0000000..3ec311d
--- /dev/null
+++ b/recipes-graphics/weston/weston_%.bbappend
@@ -0,0 +1,7 @@
+EXTRA_OECONF += "--enable-rpi-compositor \
+ --disable-resize-optimization \
+ --disable-setuid-install \
+ --disable-xwayland-test \
+ --disable-simple-egl-clients \
+ WESTON_NATIVE_BACKEND=rpi-backend.so \
+"
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 16/23] gstreamer1.0-omx: Backports and fixes for smooth video playback
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (14 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 15/23] weston: Specify egl and compositor options for rpi Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 17/23] linux-raspberrypi: Upgrade 4.1 kernel to 4.1.17 Khem Raj
` (7 subsequent siblings)
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
.../0003-no-timeout-on-get-state.patch | 16 +++++
...erly-handle-drain-requests-while-flushing.patch | 69 ++++++++++++++++++++++
...-gst_omx_video_dec_set_format-if-there-s-.patch | 30 ++++++++++
.../gstreamer/gstreamer1.0-omx_%.bbappend | 3 +
4 files changed, 118 insertions(+)
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-no-timeout-on-get-state.patch
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0004-Properly-handle-drain-requests-while-flushing.patch
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-no-timeout-on-get-state.patch b/recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-no-timeout-on-get-state.patch
new file mode 100644
index 0000000..0a0050d
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-no-timeout-on-get-state.patch
@@ -0,0 +1,16 @@
+diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
+index 0d4e7a1..a0d9c74 100644
+--- a/omx/gstomxvideodec.c
++++ b/omx/gstomxvideodec.c
+@@ -1697,9 +1697,9 @@ gst_omx_video_dec_stop (GstVideoDecoder * decoder)
+ g_cond_broadcast (&self->drain_cond);
+ g_mutex_unlock (&self->drain_lock);
+
+- gst_omx_component_get_state (self->dec, 5 * GST_SECOND);
++ gst_omx_component_get_state (self->dec, 0);
+ #if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL)
+- gst_omx_component_get_state (self->egl_render, 1 * GST_SECOND);
++ gst_omx_component_get_state (self->egl_render, 0);
+ #endif
+
+ gst_buffer_replace (&self->codec_data, NULL);
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx/0004-Properly-handle-drain-requests-while-flushing.patch b/recipes-multimedia/gstreamer/gstreamer1.0-omx/0004-Properly-handle-drain-requests-while-flushing.patch
new file mode 100644
index 0000000..98689f3
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-omx/0004-Properly-handle-drain-requests-while-flushing.patch
@@ -0,0 +1,69 @@
+From 80dddfd13aaf2fe7272765f8cf291215fe375e28 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
+Date: Tue, 17 Nov 2015 16:51:27 +0000
+Subject: [PATCH] Properly handle drain requests while flushing
+
+Without this commit the decoder streaming thread stops without ever attending
+the drain request, leaving the decoder input thread waiting forever.
+---
+ omx/gstomx.c | 7 +++++++
+ omx/gstomxvideodec.c | 13 +++++++++++++
+ 2 files changed, 20 insertions(+)
+
+diff --git a/omx/gstomx.c b/omx/gstomx.c
+index 69696c4..f0cd890 100644
+--- a/omx/gstomx.c
++++ b/omx/gstomx.c
+@@ -830,6 +830,13 @@ gst_omx_component_set_state (GstOMXComponent * comp, OMX_STATETYPE state)
+ done:
+
+ gst_omx_component_handle_messages (comp);
++
++ if (err != OMX_ErrorNone && comp->last_error == OMX_ErrorNone) {
++ GST_ERROR_OBJECT (comp->parent,
++ "Last operation returned an error. Setting last_error manually.");
++ comp->last_error = err;
++ }
++
+ g_mutex_unlock (&comp->lock);
+
+ if (err != OMX_ErrorNone) {
+diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
+index d531f75..a26c4a6 100644
+--- a/omx/gstomxvideodec.c
++++ b/omx/gstomxvideodec.c
+@@ -1539,9 +1539,16 @@ component_error:
+ flushing:
+ {
+ GST_DEBUG_OBJECT (self, "Flushing -- stopping task");
++
++ g_mutex_lock (&self->drain_lock);
++ if (self->draining) {
++ self->draining = FALSE;
++ g_cond_broadcast (&self->drain_cond);
++ }
+ gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
+ self->downstream_flow_ret = GST_FLOW_FLUSHING;
+ self->started = FALSE;
++ g_mutex_unlock (&self->drain_lock);
+ return;
+ }
+
+@@ -1599,8 +1606,14 @@ flow_error:
+ self->started = FALSE;
+ } else if (flow_ret == GST_FLOW_FLUSHING) {
+ GST_DEBUG_OBJECT (self, "Flushing -- stopping task");
++ g_mutex_lock (&self->drain_lock);
++ if (self->draining) {
++ self->draining = FALSE;
++ g_cond_broadcast (&self->drain_cond);
++ }
+ gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
+ self->started = FALSE;
++ g_mutex_unlock (&self->drain_lock);
+ }
+ GST_VIDEO_DECODER_STREAM_UNLOCK (self);
+ return;
+--
+1.8.3.2
+
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch b/recipes-multimedia/gstreamer/gstreamer1.0-omx/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch
new file mode 100644
index 0000000..b7a8753
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-omx/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch
@@ -0,0 +1,30 @@
+From 12103842d5f347cf245e71071d0c44297bcdb1f9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
+Date: Fri, 4 Dec 2015 18:39:59 +0100
+Subject: [PATCH] Don't abort gst_omx_video_dec_set_format() if there's a
+ timeout releasing the buffers taken by the egl_render out port
+
+---
+ omx/gstomxvideodec.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
+index 2368f34..da35e0d 100644
+--- a/omx/gstomxvideodec.c
++++ b/omx/gstomxvideodec.c
+@@ -1905,8 +1905,11 @@ gst_omx_video_dec_set_format (GstVideoDecoder * decoder,
+ 5 * GST_SECOND) != OMX_ErrorNone)
+ return FALSE;
+ if (gst_omx_port_wait_buffers_released (out_port,
+- 1 * GST_SECOND) != OMX_ErrorNone)
++ 1 * GST_SECOND) != OMX_ErrorNone) {
++#if !(defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL))
+ return FALSE;
++#endif
++ }
+ if (gst_omx_port_deallocate_buffers (self->dec_in_port) != OMX_ErrorNone)
+ return FALSE;
+ if (gst_omx_video_dec_deallocate_output_buffers (self) != OMX_ErrorNone)
+--
+2.1.4
+
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend
index b313acd..a13aad7 100644
--- a/recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend
@@ -5,6 +5,9 @@ SRC_URI_append_rpi = " \
file://0001-config-files-path.patch \
file://0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch \
file://0003-fix-decoder-flushing.patch \
+ file://0003-no-timeout-on-get-state.patch \
+ file://0004-Properly-handle-drain-requests-while-flushing.patch \
+ file://0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch \
"
FILESEXTRAPATHS_prepend := "${THISDIR}/gstreamer1.0-omx:"
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 17/23] linux-raspberrypi: Upgrade 4.1 kernel to 4.1.17
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (15 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 16/23] gstreamer1.0-omx: Backports and fixes for smooth video playback Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-29 21:18 ` Andrei Gherzan
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 18/23] firmware: Upgrade to latest stable 20160209 Khem Raj
` (6 subsequent siblings)
23 siblings, 1 reply; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
recipes-kernel/linux/linux-raspberrypi_4.1.bb | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/recipes-kernel/linux/linux-raspberrypi_4.1.bb b/recipes-kernel/linux/linux-raspberrypi_4.1.bb
index 3a3cf40..d5bfa45 100644
--- a/recipes-kernel/linux/linux-raspberrypi_4.1.bb
+++ b/recipes-kernel/linux/linux-raspberrypi_4.1.bb
@@ -1,6 +1,6 @@
-LINUX_VERSION ?= "4.1.10"
+LINUX_VERSION ?= "4.1.17"
-SRCREV = "b74df9228c27f55361c065bc5dbfba88861cc771"
+SRCREV = "cb2f10196a9b718a2d94bb4ac0887c2ea14988ae"
SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=rpi-4.1.y"
require linux-raspberrypi.inc
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 18/23] firmware: Upgrade to latest stable 20160209
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (16 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 17/23] linux-raspberrypi: Upgrade 4.1 kernel to 4.1.17 Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-03-10 14:10 ` Andrei Gherzan
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 19/23] rpi-config: Upgrade to tip of tree to get GPU_MEM_1024 Khem Raj
` (5 subsequent siblings)
23 siblings, 1 reply; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
Readme change a bit thats why LIC_FILES_CHKSUM changed
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
recipes-bsp/bootfiles/bcm2835-bootfiles.bb | 2 +-
recipes-bsp/common/firmware.inc | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/recipes-bsp/bootfiles/bcm2835-bootfiles.bb b/recipes-bsp/bootfiles/bcm2835-bootfiles.bb
index 0665944..b279e15 100644
--- a/recipes-bsp/bootfiles/bcm2835-bootfiles.bb
+++ b/recipes-bsp/bootfiles/bcm2835-bootfiles.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Closed source binary files to help boot the ARM on the BCM2835."
LICENSE = "Proprietary"
-LIC_FILES_CHKSUM = "file://LICENCE.broadcom;md5=e86e693d19572ee64cc8b17fb062faa9"
+LIC_FILES_CHKSUM = "file://LICENCE.broadcom;md5=4a4d169737c0786fb9482bb6d30401d1"
inherit deploy
diff --git a/recipes-bsp/common/firmware.inc b/recipes-bsp/common/firmware.inc
index 020f0ed..2e0864e 100644
--- a/recipes-bsp/common/firmware.inc
+++ b/recipes-bsp/common/firmware.inc
@@ -1,5 +1,5 @@
-RPIFW_SRCREV ?= "f7108cfdc715f79c5fd051fb4c3ae6f4b1b01f23"
-RPIFW_DATE ?= "20151021"
+RPIFW_SRCREV ?= "3442862c10fab68c2e88d660d2e69c143bb1f00c"
+RPIFW_DATE ?= "20160209"
RPIFW_SRC_URI ?= "git://github.com/raspberrypi/firmware.git;protocol=git;branch=master"
RPIFW_S ?= "${WORKDIR}/git"
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 19/23] rpi-config: Upgrade to tip of tree to get GPU_MEM_1024
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (17 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 18/23] firmware: Upgrade to latest stable 20160209 Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-02-29 21:19 ` Andrei Gherzan
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 20/23] linux-raspberrypi: Add recipe for 4.4 release Khem Raj
` (4 subsequent siblings)
23 siblings, 1 reply; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
Document it in README
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
README | 2 ++
recipes-bsp/bootfiles/rpi-config_git.bb | 5 ++++-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/README b/README
index 16ac1cb..efe885b 100644
--- a/README
+++ b/README
@@ -90,6 +90,8 @@ GPU_MEM_256 : GPU memory in megabyte for the 256MB Raspberry Pi. Ignored by the
512MB RP. Overrides gpu_mem. Max 192. Default not set.
GPU_MEM_512 : GPU memory in megabyte for the 512MB Raspberry Pi. Ignored by the
256MB RP. Overrides gpu_mem. Max 448. Default not set.
+GPU_MEM_1024: GPU memory in megabyte for the 1024MB Raspberry Pi. Ignored by the
+ 256MB/512MB RP. Overrides gpu_mem. Max 944. Default not set.
2.C.Optional - Add purchased license codecs:
============================================
diff --git a/recipes-bsp/bootfiles/rpi-config_git.bb b/recipes-bsp/bootfiles/rpi-config_git.bb
index aa11b25..4cdffca 100644
--- a/recipes-bsp/bootfiles/rpi-config_git.bb
+++ b/recipes-bsp/bootfiles/rpi-config_git.bb
@@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384
COMPATIBLE_MACHINE = "raspberrypi"
-SRCREV = "5d2ca5f9bcb1b239c051e20c05a233fd79cf09d5"
+SRCREV = "648ffc470824c43eb0d16c485f4c24816b32cd6f"
SRC_URI = "git://github.com/Evilpaul/RPi-config.git;protocol=git;branch=master \
"
@@ -54,6 +54,9 @@ do_deploy() {
if [ -n "${GPU_MEM_512}" ]; then
sed -i '/#gpu_mem_512/ c\gpu_mem_512=${GPU_MEM_512}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
+ if [ -n "${GPU_MEM_1024}" ]; then
+ sed -i '/#gpu_mem_1024/ c\gpu_mem_1024=${GPU_MEM_1024}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+ fi
# Video camera support
if [ -n "${VIDEO_CAMERA}" ]; then
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 20/23] linux-raspberrypi: Add recipe for 4.4 release
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (18 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 19/23] rpi-config: Upgrade to tip of tree to get GPU_MEM_1024 Khem Raj
@ 2016-02-27 15:26 ` Khem Raj
2016-03-10 14:17 ` Andrei Gherzan
2016-02-27 15:27 ` [meta-raspberrypi][PATCH 21/23] userland: Upgrade to latest Khem Raj
` (3 subsequent siblings)
23 siblings, 1 reply; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:26 UTC (permalink / raw)
To: yocto
Make it default kernel as well
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
conf/machine/include/rpi-default-versions.inc | 2 +-
recipes-kernel/linux/linux-raspberrypi_4.4.bb | 6 ++++++
2 files changed, 7 insertions(+), 1 deletion(-)
create mode 100644 recipes-kernel/linux/linux-raspberrypi_4.4.bb
diff --git a/conf/machine/include/rpi-default-versions.inc b/conf/machine/include/rpi-default-versions.inc
index c879dde..e65a4ae 100644
--- a/conf/machine/include/rpi-default-versions.inc
+++ b/conf/machine/include/rpi-default-versions.inc
@@ -1,3 +1,3 @@
# RaspberryPi BSP default versions
-PREFERRED_VERSION_linux-raspberrypi ?= "4.1.%"
+PREFERRED_VERSION_linux-raspberrypi ?= "4.4.%"
diff --git a/recipes-kernel/linux/linux-raspberrypi_4.4.bb b/recipes-kernel/linux/linux-raspberrypi_4.4.bb
new file mode 100644
index 0000000..47084e4
--- /dev/null
+++ b/recipes-kernel/linux/linux-raspberrypi_4.4.bb
@@ -0,0 +1,6 @@
+LINUX_VERSION ?= "4.4.1"
+
+SRCREV = "52d3149aba3c684db1b6c739ca794dc330d92929"
+SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=rpi-4.4.y"
+
+require linux-raspberrypi.inc
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 21/23] userland: Upgrade to latest
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (19 preceding siblings ...)
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 20/23] linux-raspberrypi: Add recipe for 4.4 release Khem Raj
@ 2016-02-27 15:27 ` Khem Raj
2016-02-27 15:27 ` [meta-raspberrypi][PATCH 22/23] linux-raspberrypi: Upgrade 4.4.1 -> 4.4.2 Khem Raj
` (2 subsequent siblings)
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:27 UTC (permalink / raw)
To: yocto
Drop upstreamed patches
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
...LINE_DECL-to-not-use-extern-inlines-in-de.patch | 6 +-
.../userland/0002-musl-inspired-fixed.patch | 29 ----
...h => 0002-set-VMCS_INSTALL_PREFIX-to-usr.patch} | 6 +-
...ake-generate-and-install-pkgconfig-files.patch} | 8 +-
...m_types-Dont-use-extern-inline-with-clan.patch} | 6 +-
...applications-to-set-next-resource-handle.patch} | 6 +-
.../0005-user-vcsm-Fix-build-with-clang.patch | 44 ------
.../0006-Fix-enum-type-conversion-warnings.patch | 166 ---------------------
...yland-Add-support-for-the-Wayland-winsys.patch} | 10 +-
...atch => 0007-wayland-Add-Wayland-example.patch} | 6 +-
...wayland-egl-Add-bcm_host-to-dependencies.patch} | 6 +-
...move-faulty-assert-to-make-weston-happy-.patch} | 6 +-
...-zero-out-wl-buffers-in-egl_surface_free.patch} | 6 +-
...11-initialize-front-back-wayland-buffers.patch} | 6 +-
...RPC_FLUSH.patch => 0012-Remove-RPC_FLUSH.patch} | 6 +-
....patch => 0013-fix-cmake-dependency-race.patch} | 6 +-
.../0014-Fix-enum-conversion-warnings.patch | 99 ++++++++++++
.../userland/0016-define-PROJECT_APIVER.patch | 33 ----
recipes-graphics/userland/userland_git.bb | 31 ++--
19 files changed, 155 insertions(+), 331 deletions(-)
delete mode 100644 recipes-graphics/userland/userland/0002-musl-inspired-fixed.patch
rename recipes-graphics/userland/userland/{0003-set-VMCS_INSTALL_PREFIX-to-usr.patch => 0002-set-VMCS_INSTALL_PREFIX-to-usr.patch} (87%)
rename recipes-graphics/userland/userland/{0004-cmake-generate-and-install-pkgconfig-files.patch => 0003-cmake-generate-and-install-pkgconfig-files.patch} (93%)
rename recipes-graphics/userland/userland/{0007-vcos_platform_types-Dont-use-extern-inline-with-clan.patch => 0004-vcos_platform_types-Dont-use-extern-inline-with-clan.patch} (95%)
rename recipes-graphics/userland/userland/{0008-Allow-applications-to-set-next-resource-handle.patch => 0005-Allow-applications-to-set-next-resource-handle.patch} (98%)
delete mode 100644 recipes-graphics/userland/userland/0005-user-vcsm-Fix-build-with-clang.patch
delete mode 100644 recipes-graphics/userland/userland/0006-Fix-enum-type-conversion-warnings.patch
rename recipes-graphics/userland/userland/{0009-wayland-Add-support-for-the-Wayland-winsys.patch => 0006-wayland-Add-support-for-the-Wayland-winsys.patch} (99%)
rename recipes-graphics/userland/userland/{0010-wayland-Add-Wayland-example.patch => 0007-wayland-Add-Wayland-example.patch} (99%)
rename recipes-graphics/userland/userland/{0011-wayland-egl-Add-bcm_host-to-dependencies.patch => 0008-wayland-egl-Add-bcm_host-to-dependencies.patch} (86%)
rename recipes-graphics/userland/userland/{0012-interface-remove-faulty-assert-to-make-weston-happy-.patch => 0009-interface-remove-faulty-assert-to-make-weston-happy-.patch} (88%)
rename recipes-graphics/userland/userland/{0013-zero-out-wl-buffers-in-egl_surface_free.patch => 0010-zero-out-wl-buffers-in-egl_surface_free.patch} (87%)
rename recipes-graphics/userland/userland/{0014-initialize-front-back-wayland-buffers.patch => 0011-initialize-front-back-wayland-buffers.patch} (88%)
rename recipes-graphics/userland/userland/{0015-Remove-RPC_FLUSH.patch => 0012-Remove-RPC_FLUSH.patch} (87%)
rename recipes-graphics/userland/userland/{0017-fix-cmake-dependency-race.patch => 0013-fix-cmake-dependency-race.patch} (95%)
create mode 100644 recipes-graphics/userland/userland/0014-Fix-enum-conversion-warnings.patch
delete mode 100644 recipes-graphics/userland/userland/0016-define-PROJECT_APIVER.patch
diff --git a/recipes-graphics/userland/userland/0001-Fix-VCOS_INLINE_DECL-to-not-use-extern-inlines-in-de.patch b/recipes-graphics/userland/userland/0001-Fix-VCOS_INLINE_DECL-to-not-use-extern-inlines-in-de.patch
index 4824d1a..ebeefd3 100644
--- a/recipes-graphics/userland/userland/0001-Fix-VCOS_INLINE_DECL-to-not-use-extern-inlines-in-de.patch
+++ b/recipes-graphics/userland/userland/0001-Fix-VCOS_INLINE_DECL-to-not-use-extern-inlines-in-de.patch
@@ -1,7 +1,7 @@
-From d0b146e6571585989e7149a512533fcd6532545a Mon Sep 17 00:00:00 2001
+From 58e03d60603baabf63137cdc81ed774cc94d26d6 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 6 Feb 2016 11:00:25 -0800
-Subject: [PATCH 01/16] Fix VCOS_INLINE_DECL to not use extern inlines in
+Subject: [PATCH 01/13] Fix VCOS_INLINE_DECL to not use extern inlines in
declarations
Signed-off-by: Khem Raj <raj.khem@gmail.com>
@@ -41,5 +41,5 @@ index 6feb4d2..e64fd99 100644
#endif
--
-2.7.0
+2.7.1
diff --git a/recipes-graphics/userland/userland/0002-musl-inspired-fixed.patch b/recipes-graphics/userland/userland/0002-musl-inspired-fixed.patch
deleted file mode 100644
index bbb670d..0000000
--- a/recipes-graphics/userland/userland/0002-musl-inspired-fixed.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 9856330f54c181e388df6f261c705e01500cf0bb Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 6 Feb 2016 11:03:10 -0800
-Subject: [PATCH 02/16] musl inspired fixed
-
-stderr and stdout are not FILE pointers as per standards
-define PAGE_MASK if its not defined already
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- host_applications/linux/libs/debug_sym/debug_sym.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/host_applications/linux/libs/debug_sym/debug_sym.c b/host_applications/linux/libs/debug_sym/debug_sym.c
-index 8886f99..c7ace37 100755
---- a/host_applications/linux/libs/debug_sym/debug_sym.c
-+++ b/host_applications/linux/libs/debug_sym/debug_sym.c
-@@ -67,6 +67,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- # else
- # define PAGE_SIZE 4096
- # endif
-+#endif
-+#ifndef PAGE_MASK
- #define PAGE_MASK (~(PAGE_SIZE - 1))
- #endif
-
---
-2.7.0
-
diff --git a/recipes-graphics/userland/userland/0003-set-VMCS_INSTALL_PREFIX-to-usr.patch b/recipes-graphics/userland/userland/0002-set-VMCS_INSTALL_PREFIX-to-usr.patch
similarity index 87%
rename from recipes-graphics/userland/userland/0003-set-VMCS_INSTALL_PREFIX-to-usr.patch
rename to recipes-graphics/userland/userland/0002-set-VMCS_INSTALL_PREFIX-to-usr.patch
index 2829196..857b6c5 100644
--- a/recipes-graphics/userland/userland/0003-set-VMCS_INSTALL_PREFIX-to-usr.patch
+++ b/recipes-graphics/userland/userland/0002-set-VMCS_INSTALL_PREFIX-to-usr.patch
@@ -1,7 +1,7 @@
-From 8792a3645822c3ee2cea74def2a48e3e7f247ee1 Mon Sep 17 00:00:00 2001
+From 8b114166f800df09e10de82b50e4856fe7104bbf Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 9 Aug 2015 23:58:17 -0700
-Subject: [PATCH 03/16] set VMCS_INSTALL_PREFIX to /usr
+Subject: [PATCH 02/13] set VMCS_INSTALL_PREFIX to /usr
in OE we dont use /opt/vc but standard prefix
@@ -24,5 +24,5 @@ index 0f8641b..e9d576d 100644
SET(CMAKE_INSTALL_PREFIX "${VMCS_INSTALL_PREFIX}" CACHE INTERNAL "Prefix
--
-2.7.0
+2.7.1
diff --git a/recipes-graphics/userland/userland/0004-cmake-generate-and-install-pkgconfig-files.patch b/recipes-graphics/userland/userland/0003-cmake-generate-and-install-pkgconfig-files.patch
similarity index 93%
rename from recipes-graphics/userland/userland/0004-cmake-generate-and-install-pkgconfig-files.patch
rename to recipes-graphics/userland/userland/0003-cmake-generate-and-install-pkgconfig-files.patch
index aa209b2..e229c8e 100644
--- a/recipes-graphics/userland/userland/0004-cmake-generate-and-install-pkgconfig-files.patch
+++ b/recipes-graphics/userland/userland/0003-cmake-generate-and-install-pkgconfig-files.patch
@@ -1,7 +1,7 @@
-From 59fd98d2ee9076c08d020167e5176e2e3e669917 Mon Sep 17 00:00:00 2001
+From 91c1eceb27ce3ff8d8943028968cd860683d7905 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 9 Aug 2015 23:59:32 -0700
-Subject: [PATCH 04/17] cmake: generate and install pkgconfig files
+Subject: [PATCH 03/13] cmake: generate and install pkgconfig files
many packages expect packageconfig support especially for detecting EGL
libraries. This patch helps in compiling those packages on RPi
@@ -20,10 +20,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
create mode 100644 pkgconfig/vg.pc.in
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index d8f776c..f15dc2b 100644
+index fbb27f6..5e211b4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -105,6 +105,14 @@ set(vmcs_host_apps_VERSION_MAJOR 1)
+@@ -111,6 +111,14 @@ set(vmcs_host_apps_VERSION_MAJOR 1)
set(vmcs_host_apps_VERSION_MINOR 0)
include_directories("${PROJECT_BINARY_DIR}")
diff --git a/recipes-graphics/userland/userland/0007-vcos_platform_types-Dont-use-extern-inline-with-clan.patch b/recipes-graphics/userland/userland/0004-vcos_platform_types-Dont-use-extern-inline-with-clan.patch
similarity index 95%
rename from recipes-graphics/userland/userland/0007-vcos_platform_types-Dont-use-extern-inline-with-clan.patch
rename to recipes-graphics/userland/userland/0004-vcos_platform_types-Dont-use-extern-inline-with-clan.patch
index 53a2a26..4d508d2 100644
--- a/recipes-graphics/userland/userland/0007-vcos_platform_types-Dont-use-extern-inline-with-clan.patch
+++ b/recipes-graphics/userland/userland/0004-vcos_platform_types-Dont-use-extern-inline-with-clan.patch
@@ -1,7 +1,7 @@
-From e60f708bef880542fbe45df7dba982c886852dd4 Mon Sep 17 00:00:00 2001
+From 7c07db6c640ec4dfc6baec23f86c7b312028c9c6 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 23 Aug 2015 13:41:33 -0700
-Subject: [PATCH 07/16] vcos_platform_types: Dont use extern inline with clang
+Subject: [PATCH 04/13] vcos_platform_types: Dont use extern inline with clang
Its very gcc specific implementation here in this code, we cant use
it with clang as such, so we will use static inline instead which is
@@ -80,5 +80,5 @@ index e64fd99..7d86742 100644
# define VCOS_INLINE_IMPL static __inline__
#else
--
-2.7.0
+2.7.1
diff --git a/recipes-graphics/userland/userland/0008-Allow-applications-to-set-next-resource-handle.patch b/recipes-graphics/userland/userland/0005-Allow-applications-to-set-next-resource-handle.patch
similarity index 98%
rename from recipes-graphics/userland/userland/0008-Allow-applications-to-set-next-resource-handle.patch
rename to recipes-graphics/userland/userland/0005-Allow-applications-to-set-next-resource-handle.patch
index bf6511d..95154dc 100644
--- a/recipes-graphics/userland/userland/0008-Allow-applications-to-set-next-resource-handle.patch
+++ b/recipes-graphics/userland/userland/0005-Allow-applications-to-set-next-resource-handle.patch
@@ -1,7 +1,7 @@
-From b5295cb247dfb062843f4a4c9996186e865d0cc2 Mon Sep 17 00:00:00 2001
+From 1c2d411949890a42a99a51941ea4e5e0a3d27d3e Mon Sep 17 00:00:00 2001
From: Dom Cobley <dc4@broadcom.com>
Date: Tue, 9 Jul 2013 09:26:26 -0400
-Subject: [PATCH 08/16] Allow applications to set next resource handle
+Subject: [PATCH 05/13] Allow applications to set next resource handle
This patch adds provisions in userland to
let apps callers set the next rendereing dispmanx resource.
@@ -204,5 +204,5 @@ index 8a5734c..51b3580 100644
FN(void, eglIntGetColorData_impl, (EGL_SURFACE_ID_T s, KHRN_IMAGE_FORMAT_T format, uint32_t width, uint32_t height, int32_t stride, uint32_t y_offset, void *data))
--
-2.7.0
+2.7.1
diff --git a/recipes-graphics/userland/userland/0005-user-vcsm-Fix-build-with-clang.patch b/recipes-graphics/userland/userland/0005-user-vcsm-Fix-build-with-clang.patch
deleted file mode 100644
index dd07798..0000000
--- a/recipes-graphics/userland/userland/0005-user-vcsm-Fix-build-with-clang.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 5cfb274f036726a85bb45fd82652d55f50208954 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 23 Aug 2015 13:17:33 -0700
-Subject: [PATCH 05/16] user-vcsm: Fix build with clang
-
-/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/host_applications/linux/libs/sm/user-vcsm.c:316:36: error: implicit conversion from enumeration
- type 'enum vmcs_sm_cache_e' to different enumeration type 'VCSM_CACHE_TYPE_T' [-Werror,-Wenum-conversion]
- return vcsm_malloc_cache( size, VMCS_SM_CACHE_NONE, name );
- ~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~
-/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/host_applications/linux/libs/sm/user-vcsm.c:339:22: error: equality comparison with extraneous
- parentheses [-Werror,-Wparentheses-equality]
- if ( (vcsm_handle == VCSM_INVALID_HANDLE) )
- ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- host_applications/linux/libs/sm/user-vcsm.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/host_applications/linux/libs/sm/user-vcsm.c b/host_applications/linux/libs/sm/user-vcsm.c
-index 4e78dc4..5298f25 100644
---- a/host_applications/linux/libs/sm/user-vcsm.c
-+++ b/host_applications/linux/libs/sm/user-vcsm.c
-@@ -313,7 +313,7 @@ unsigned int vcsm_malloc_cache( unsigned int size, VCSM_CACHE_TYPE_T cache, char
- */
- unsigned int vcsm_malloc( unsigned int size, char *name )
- {
-- return vcsm_malloc_cache( size, VMCS_SM_CACHE_NONE, name );
-+ return vcsm_malloc_cache( size, (VCSM_CACHE_TYPE_T)VMCS_SM_CACHE_NONE, name );
- }
-
- /* Shares an allocated block of memory.
-@@ -336,7 +336,7 @@ unsigned int vcsm_malloc_share( unsigned int handle )
- void *usr_ptr = NULL;
- int rc;
-
-- if ( (vcsm_handle == VCSM_INVALID_HANDLE) )
-+ if ( vcsm_handle == VCSM_INVALID_HANDLE )
- {
- vcos_log_error( "[%s]: [%d]: NULL size or invalid device!",
- __func__,
---
-2.7.0
-
diff --git a/recipes-graphics/userland/userland/0006-Fix-enum-type-conversion-warnings.patch b/recipes-graphics/userland/userland/0006-Fix-enum-type-conversion-warnings.patch
deleted file mode 100644
index cabaf97..0000000
--- a/recipes-graphics/userland/userland/0006-Fix-enum-type-conversion-warnings.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From ecfa07e3b8019983f3c0f3317d27785666b35f04 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 23 Aug 2015 10:43:37 -0700
-Subject: [PATCH 06/16] Fix enum type conversion warnings
-
-/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_util_params_video.c:59:30: error: implicit conversion from enumeration type 'OMX_DISPLAYTRANSFORMTYPE' (aka 'enum OMX_DISPLAYTRANSFORMTYPE') to different enumeration type 'MMAL_DISPLAYTRANSFORM_T' (aka 'enum MMAL_DISPLAYTRANSFORM_T') [-Werror,-Wenum-conversion]
- mmal->transform = omx->transform;
- ~ ~~~~~^~~~~~~~~
-/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_util_params_video.c:63:25: error: implicit conversion from enumeration type 'OMX_DISPLAYMODETYPE' (aka 'enum OMX_DISPLAYMODETYPE') to different enumeration type 'MMAL_DISPLAYMODE_T' (aka 'enum MMAL_DISPLAYMODE_T') [-Werror,-Wenum-conversion]
- mmal->mode = omx->mode;
- ~ ~~~~~^~~~
-/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_util_params_video.c:75:31: error: implicit conversion from enumeration type 'MMAL_DISPLAYTRANSFORM_T' (aka 'enum MMAL_DISPLAYTRANSFORM_T') to different enumeration type 'OMX_DISPLAYTRANSFORMTYPE' (aka 'enum OMX_DISPLAYTRANSFORMTYPE') [-Werror,-Wenum-conversion]
- omx->transform = mmal->transform;
- ~ ~~~~~~^~~~~~~~~
-/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_util_params_video.c:79:31: error: implicit conversion from enumeration type 'MMAL_DISPLAYMODE_T' (aka 'enum MMAL_DISPLAYMODE_T') to different enumeration type 'OMX_DISPLAYMODETYPE' (aka 'enum OMX_DISPLAYMODETYPE') [-Werror,-Wenum-conversion]
- omx->mode = mmal->mode;
- ~ ~~~~~~^~~~
-
-/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/vc/mmal_vc_client.c:102:13: error: implicit conversion from enumeration type
- 'VCOS_STATUS_T' to different enumeration type 'MMAL_STATUS_T' [-Werror,-Wenum-conversion]
- status = vcos_semaphore_create(&waitpool->sem, VCOS_FUNCTION,
- ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/vc/mmal_vc_client.c:110:16: error: implicit conversion from enumeration type
- 'VCOS_STATUS_T' to different enumeration type 'MMAL_STATUS_T' [-Werror,-Wenum-conversion]
- status = vcos_semaphore_create(&waitpool->waiters[i].sem,
- ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_core.c:284:17: error: implicit conversion from enumeration
- type 'MMAL_STATUS_T' to different enumeration type 'OMX_ERRORTYPE' (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
- return mmalomx_get_port_settings(port, param);
- ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_core.c:478:17: error: implicit conversion from enumeration
- type 'MMAL_STATUS_T' to different enumeration type 'OMX_ERRORTYPE' (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
- return mmalomx_set_port_settings(port, param);
- ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_parameters.c:173:14: error: implicit conversion from
- enumeration type 'MMAL_STATUS_T' to different enumeration type 'OMX_ERRORTYPE' (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
- return xlat->fn.custom(MMALOMX_PARAM_MAPPING_TO_OMX, xlat, mmal_header,
- ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_parameters.c:557:17: error: implicit conversion from
- enumeration type 'MMAL_STATUS_T' to different enumeration type 'OMX_ERRORTYPE' (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
- return mmal_port_format_commit(port->mmal);
- ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/raspberrypi2-angstrom-linux-gnueabi/userland/git-r5/git/interface/mmal/openmaxil/mmalomx_parameters.c:564:17: error: implicit conversion from
- enumeration type 'MMAL_STATUS_T' to different enumeration type 'OMX_ERRORTYPE' (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
- return mmal_port_format_commit(port->mmal);
- ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- interface/mmal/openmaxil/mmalomx_core.c | 4 ++--
- interface/mmal/openmaxil/mmalomx_parameters.c | 6 +++---
- interface/mmal/openmaxil/mmalomx_util_params_video.c | 8 ++++----
- interface/mmal/vc/mmal_vc_client.c | 4 ++--
- 4 files changed, 11 insertions(+), 11 deletions(-)
-
-diff --git a/interface/mmal/openmaxil/mmalomx_core.c b/interface/mmal/openmaxil/mmalomx_core.c
-index da66b0b..3a72a2e 100644
---- a/interface/mmal/openmaxil/mmalomx_core.c
-+++ b/interface/mmal/openmaxil/mmalomx_core.c
-@@ -281,7 +281,7 @@ static OMX_ERRORTYPE mmalomx_ComponentGetParameter(
- {
- OMX_PARAM_PORTDEFINITIONTYPE *param = (OMX_PARAM_PORTDEFINITIONTYPE *)pParam;
- PARAM_GET_PORT(port, component, param->nPortIndex);
-- return mmalomx_get_port_settings(port, param);
-+ return (OMX_ERRORTYPE)mmalomx_get_port_settings(port, param);
- }
- return OMX_ErrorNone;
- break;
-@@ -475,7 +475,7 @@ static OMX_ERRORTYPE mmalomx_ComponentSetParameter(
- {
- OMX_PARAM_PORTDEFINITIONTYPE *param = (OMX_PARAM_PORTDEFINITIONTYPE *)pParam;
- PARAM_GET_PORT(port, component, param->nPortIndex);
-- return mmalomx_set_port_settings(port, param);
-+ return (OMX_ERRORTYPE)mmalomx_set_port_settings(port, param);
- }
- return OMX_ErrorNone;
- break;
-diff --git a/interface/mmal/openmaxil/mmalomx_parameters.c b/interface/mmal/openmaxil/mmalomx_parameters.c
-index a91b68c..f0bd17f 100644
---- a/interface/mmal/openmaxil/mmalomx_parameters.c
-+++ b/interface/mmal/openmaxil/mmalomx_parameters.c
-@@ -170,7 +170,7 @@ static OMX_ERRORTYPE mmalomx_parameter_get_xlat(MMALOMX_COMPONENT_T *component,
-
- if (xlat->fn.custom)
- {
-- return xlat->fn.custom(MMALOMX_PARAM_MAPPING_TO_OMX, xlat, mmal_header,
-+ return (OMX_ERRORTYPE)xlat->fn.custom(MMALOMX_PARAM_MAPPING_TO_OMX, xlat, mmal_header,
- pParam, mmal_port);
- }
-
-@@ -554,14 +554,14 @@ OMX_ERRORTYPE mmalomx_parameter_set(MMALOMX_COMPONENT_T *component,
- port->mmal->format->es->video.par.num = param->nX;
- port->mmal->format->es->video.par.den = param->nY;
- mmal_rational_simplify(&port->mmal->format->es->video.par);
-- return mmal_port_format_commit(port->mmal);
-+ return (OMX_ERRORTYPE)mmal_port_format_commit(port->mmal);
- }
- case OMX_IndexParamColorSpace:
- {
- OMX_PARAM_COLORSPACETYPE *param = (OMX_PARAM_COLORSPACETYPE *)pParam;
- PARAM_GET_PORT(port, component, param->nPortIndex);
- port->mmal->format->es->video.color_space = mmalil_omx_color_space_to_mmal(param->eColorSpace);
-- return mmal_port_format_commit(port->mmal);
-+ return (OMX_ERRORTYPE)mmal_port_format_commit(port->mmal);
- }
- case OMX_IndexParamBrcmVideoCroppingDisable:
- {
-diff --git a/interface/mmal/openmaxil/mmalomx_util_params_video.c b/interface/mmal/openmaxil/mmalomx_util_params_video.c
-index f088296..83e3724 100644
---- a/interface/mmal/openmaxil/mmalomx_util_params_video.c
-+++ b/interface/mmal/openmaxil/mmalomx_util_params_video.c
-@@ -56,11 +56,11 @@ static MMAL_STATUS_T mmalomx_param_mapping_displayregion(MMALOMX_PARAM_MAPPING_D
- mmal->set = omx->set;
- mmal->display_num = omx->num;
- mmal->fullscreen = omx->fullscreen;
-- mmal->transform = omx->transform;
-+ mmal->transform = (MMAL_DISPLAYTRANSFORM_T)omx->transform;
- rect_to_mmal(&mmal->dest_rect, &omx->dest_rect);
- rect_to_mmal(&mmal->src_rect, &omx->src_rect);
- mmal->noaspect = omx->noaspect;
-- mmal->mode = omx->mode;
-+ mmal->mode = (MMAL_DISPLAYMODE_T)omx->mode;
- mmal->pixel_x = omx->pixel_x;
- mmal->pixel_y = omx->pixel_y;
- mmal->layer = omx->layer;
-@@ -72,11 +72,11 @@ static MMAL_STATUS_T mmalomx_param_mapping_displayregion(MMALOMX_PARAM_MAPPING_D
- omx->set = mmal->set;
- omx->num = mmal->display_num;
- omx->fullscreen = mmal->fullscreen;
-- omx->transform = mmal->transform;
-+ omx->transform = (OMX_DISPLAYTRANSFORMTYPE)mmal->transform;
- rect_to_omx(&omx->dest_rect, &mmal->dest_rect);
- rect_to_omx(&omx->src_rect, &mmal->src_rect);
- omx->noaspect = mmal->noaspect;
-- omx->mode = mmal->mode;
-+ omx->mode = (OMX_DISPLAYMODETYPE)mmal->mode;
- omx->pixel_x = mmal->pixel_x;
- omx->pixel_y = mmal->pixel_y;
- omx->layer = mmal->layer;
-diff --git a/interface/mmal/vc/mmal_vc_client.c b/interface/mmal/vc/mmal_vc_client.c
-index b60544b..bd27fc5 100644
---- a/interface/mmal/vc/mmal_vc_client.c
-+++ b/interface/mmal/vc/mmal_vc_client.c
-@@ -99,7 +99,7 @@ static MMAL_STATUS_T create_waitpool(MMAL_WAITPOOL_T *waitpool)
- MMAL_STATUS_T status;
- int i;
-
-- status = vcos_semaphore_create(&waitpool->sem, VCOS_FUNCTION,
-+ status = (MMAL_STATUS_T)vcos_semaphore_create(&waitpool->sem, VCOS_FUNCTION,
- MAX_WAITERS);
- if (status != MMAL_SUCCESS)
- return status;
-@@ -107,7 +107,7 @@ static MMAL_STATUS_T create_waitpool(MMAL_WAITPOOL_T *waitpool)
- for (i=0; i<MAX_WAITERS; i++)
- {
- waitpool->waiters[i].inuse = 0;
-- status = vcos_semaphore_create(&waitpool->waiters[i].sem,
-+ status = (MMAL_STATUS_T)vcos_semaphore_create(&waitpool->waiters[i].sem,
- "mmal waiter", 0);
- if (status != MMAL_SUCCESS)
- break;
---
-2.7.0
-
diff --git a/recipes-graphics/userland/userland/0009-wayland-Add-support-for-the-Wayland-winsys.patch b/recipes-graphics/userland/userland/0006-wayland-Add-support-for-the-Wayland-winsys.patch
similarity index 99%
rename from recipes-graphics/userland/userland/0009-wayland-Add-support-for-the-Wayland-winsys.patch
rename to recipes-graphics/userland/userland/0006-wayland-Add-support-for-the-Wayland-winsys.patch
index c6e175e..6426a5c 100644
--- a/recipes-graphics/userland/userland/0009-wayland-Add-support-for-the-Wayland-winsys.patch
+++ b/recipes-graphics/userland/userland/0006-wayland-Add-support-for-the-Wayland-winsys.patch
@@ -1,7 +1,7 @@
-From dba72dbc97a07509befc3072cc4dc5184913b5a7 Mon Sep 17 00:00:00 2001
+From 16edb74ea67abe95b1c1ff629aa65c969b871403 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Date: Tue, 1 Oct 2013 13:19:20 +0200
-Subject: [PATCH 09/16] wayland: Add support for the Wayland winsys
+Subject: [PATCH 06/13] wayland: Add support for the Wayland winsys
* Adds EGL_WL_bind_wayland_display extension
* Adds wayland-egl library
@@ -67,10 +67,10 @@ index 8df9393..d0d1387 100644
+
+*~
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index f15dc2b..b240ef6 100644
+index 5e211b4..aa5e14f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -13,6 +13,17 @@ include(makefiles/cmake/global_settings.cmake)
+@@ -19,6 +19,17 @@ include(makefiles/cmake/global_settings.cmake)
include(makefiles/cmake/arm-linux.cmake)
include(makefiles/cmake/vmcs.cmake)
@@ -1876,5 +1876,5 @@ index 0000000..ad90d30
+ set(${_sources} ${${_sources}} PARENT_SCOPE)
+endfunction()
--
-2.7.0
+2.7.1
diff --git a/recipes-graphics/userland/userland/0010-wayland-Add-Wayland-example.patch b/recipes-graphics/userland/userland/0007-wayland-Add-Wayland-example.patch
similarity index 99%
rename from recipes-graphics/userland/userland/0010-wayland-Add-Wayland-example.patch
rename to recipes-graphics/userland/userland/0007-wayland-Add-Wayland-example.patch
index f468ef3..8f4bd0b 100644
--- a/recipes-graphics/userland/userland/0010-wayland-Add-Wayland-example.patch
+++ b/recipes-graphics/userland/userland/0007-wayland-Add-Wayland-example.patch
@@ -1,7 +1,7 @@
-From b853c05f425775a65cfc5a2d64b3491ab3673e36 Mon Sep 17 00:00:00 2001
+From 48591add15951b0adb1da8b0bfad05c49d26a5e6 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Date: Tue, 1 Oct 2013 13:19:20 +0200
-Subject: [PATCH 10/16] wayland: Add Wayland example
+Subject: [PATCH 07/13] wayland: Add Wayland example
---
.../linux/apps/hello_pi/CMakeLists.txt | 1 +
@@ -862,5 +862,5 @@ index fa4539e..37120ac 100755
-
+make -C hello_wayland
--
-2.7.0
+2.7.1
diff --git a/recipes-graphics/userland/userland/0011-wayland-egl-Add-bcm_host-to-dependencies.patch b/recipes-graphics/userland/userland/0008-wayland-egl-Add-bcm_host-to-dependencies.patch
similarity index 86%
rename from recipes-graphics/userland/userland/0011-wayland-egl-Add-bcm_host-to-dependencies.patch
rename to recipes-graphics/userland/userland/0008-wayland-egl-Add-bcm_host-to-dependencies.patch
index 386ddf3..f9631df 100644
--- a/recipes-graphics/userland/userland/0011-wayland-egl-Add-bcm_host-to-dependencies.patch
+++ b/recipes-graphics/userland/userland/0008-wayland-egl-Add-bcm_host-to-dependencies.patch
@@ -1,7 +1,7 @@
-From 071771f1c2eb73c1f9083abb3a9f3a7712e20cdf Mon Sep 17 00:00:00 2001
+From 4201f2777cfc816df415286bd137f140d856fc95 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 10 Aug 2015 02:38:27 -0700
-Subject: [PATCH 11/16] wayland-egl: Add bcm_host to dependencies
+Subject: [PATCH 08/13] wayland-egl: Add bcm_host to dependencies
It uses headers like vcos_platform_types.h but does not
depend on module which should add the required include paths
@@ -24,5 +24,5 @@ index 8bafc15..fd259c9 100644
Libs: -L${libdir} -lwayland-egl
Cflags: -I${includedir}
--
-2.7.0
+2.7.1
diff --git a/recipes-graphics/userland/userland/0012-interface-remove-faulty-assert-to-make-weston-happy-.patch b/recipes-graphics/userland/userland/0009-interface-remove-faulty-assert-to-make-weston-happy-.patch
similarity index 88%
rename from recipes-graphics/userland/userland/0012-interface-remove-faulty-assert-to-make-weston-happy-.patch
rename to recipes-graphics/userland/userland/0009-interface-remove-faulty-assert-to-make-weston-happy-.patch
index 74374fc..58babb9 100644
--- a/recipes-graphics/userland/userland/0012-interface-remove-faulty-assert-to-make-weston-happy-.patch
+++ b/recipes-graphics/userland/userland/0009-interface-remove-faulty-assert-to-make-weston-happy-.patch
@@ -1,7 +1,7 @@
-From fb577f53f9a91745557194b0422504e2cc93a637 Mon Sep 17 00:00:00 2001
+From 54d2fdfd997a7f1f64575d6a4a03c74b89b2dbe0 Mon Sep 17 00:00:00 2001
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
Date: Sat, 24 Jan 2015 22:07:19 +0100
-Subject: [PATCH 12/16] interface: remove faulty assert() to make weston happy
+Subject: [PATCH 09/13] interface: remove faulty assert() to make weston happy
at runtime
This was removed after a discussion on IRC with the weston guys
@@ -25,5 +25,5 @@ index 1d24b6e..e2e7ccc 100755
}
} else {
--
-2.7.0
+2.7.1
diff --git a/recipes-graphics/userland/userland/0013-zero-out-wl-buffers-in-egl_surface_free.patch b/recipes-graphics/userland/userland/0010-zero-out-wl-buffers-in-egl_surface_free.patch
similarity index 87%
rename from recipes-graphics/userland/userland/0013-zero-out-wl-buffers-in-egl_surface_free.patch
rename to recipes-graphics/userland/userland/0010-zero-out-wl-buffers-in-egl_surface_free.patch
index af291dc..517b4ee 100644
--- a/recipes-graphics/userland/userland/0013-zero-out-wl-buffers-in-egl_surface_free.patch
+++ b/recipes-graphics/userland/userland/0010-zero-out-wl-buffers-in-egl_surface_free.patch
@@ -1,7 +1,7 @@
-From 2d91c1fded75b3207743e058b0d5ca9eb98dce58 Mon Sep 17 00:00:00 2001
+From bf3e7ded0ccb95ec0fed13483525a43175028485 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 6 Feb 2016 11:10:47 -0800
-Subject: [PATCH 13/16] zero-out wl buffers in egl_surface_free
+Subject: [PATCH 10/13] zero-out wl buffers in egl_surface_free
origins from buildroot
@@ -29,5 +29,5 @@ index 49cf7e5..512c83b 100644
#endif
}
--
-2.7.0
+2.7.1
diff --git a/recipes-graphics/userland/userland/0014-initialize-front-back-wayland-buffers.patch b/recipes-graphics/userland/userland/0011-initialize-front-back-wayland-buffers.patch
similarity index 88%
rename from recipes-graphics/userland/userland/0014-initialize-front-back-wayland-buffers.patch
rename to recipes-graphics/userland/userland/0011-initialize-front-back-wayland-buffers.patch
index 26cae0a..1b39136 100644
--- a/recipes-graphics/userland/userland/0014-initialize-front-back-wayland-buffers.patch
+++ b/recipes-graphics/userland/userland/0011-initialize-front-back-wayland-buffers.patch
@@ -1,7 +1,7 @@
-From 2c1574b2e867bb5dad028784642a9ad88df6b16c Mon Sep 17 00:00:00 2001
+From fb4ec94e8c27fba57f04c28f9012ec67af505083 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 6 Feb 2016 11:11:41 -0800
-Subject: [PATCH 14/16] initialize front back wayland buffers
+Subject: [PATCH 11/13] initialize front back wayland buffers
origins from metrological wayland support
@@ -30,5 +30,5 @@ index 512c83b..a429724 100644
}
#endif
--
-2.7.0
+2.7.1
diff --git a/recipes-graphics/userland/userland/0015-Remove-RPC_FLUSH.patch b/recipes-graphics/userland/userland/0012-Remove-RPC_FLUSH.patch
similarity index 87%
rename from recipes-graphics/userland/userland/0015-Remove-RPC_FLUSH.patch
rename to recipes-graphics/userland/userland/0012-Remove-RPC_FLUSH.patch
index d90cb09..5c9b49a 100644
--- a/recipes-graphics/userland/userland/0015-Remove-RPC_FLUSH.patch
+++ b/recipes-graphics/userland/userland/0012-Remove-RPC_FLUSH.patch
@@ -1,7 +1,7 @@
-From a09249699cab4ffe6304aaf7e5936019c97f5a26 Mon Sep 17 00:00:00 2001
+From fa2beec8f792af577053340da914ef38b51535cb Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 6 Feb 2016 11:09:18 -0800
-Subject: [PATCH 15/16] Remove RPC_FLUSH
+Subject: [PATCH 12/13] Remove RPC_FLUSH
Origins from buildroot
@@ -23,5 +23,5 @@ index f9b7287..b04ffef 100644
}
#endif
--
-2.7.0
+2.7.1
diff --git a/recipes-graphics/userland/userland/0017-fix-cmake-dependency-race.patch b/recipes-graphics/userland/userland/0013-fix-cmake-dependency-race.patch
similarity index 95%
rename from recipes-graphics/userland/userland/0017-fix-cmake-dependency-race.patch
rename to recipes-graphics/userland/userland/0013-fix-cmake-dependency-race.patch
index face946..20c9e6d 100644
--- a/recipes-graphics/userland/userland/0017-fix-cmake-dependency-race.patch
+++ b/recipes-graphics/userland/userland/0013-fix-cmake-dependency-race.patch
@@ -1,7 +1,7 @@
-From e2df72943951feb2c2a0899d4a1a00d24d7a3ccc Mon Sep 17 00:00:00 2001
+From 723478a07b69966ee606ba2435be736a1666eb5c Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 6 Feb 2016 13:12:47 -0800
-Subject: [PATCH 17/17] fix cmake dependency race
+Subject: [PATCH 13/13] fix cmake dependency race
Fixes errors like
@@ -74,5 +74,5 @@ index f0bae30..8c44c58 100644
struct wl_resource *resource;
struct wl_dispmanx *dispmanx;
--
-2.7.0
+2.7.1
diff --git a/recipes-graphics/userland/userland/0014-Fix-enum-conversion-warnings.patch b/recipes-graphics/userland/userland/0014-Fix-enum-conversion-warnings.patch
new file mode 100644
index 0000000..1a32c29
--- /dev/null
+++ b/recipes-graphics/userland/userland/0014-Fix-enum-conversion-warnings.patch
@@ -0,0 +1,99 @@
+From 7574595454ba749029e75176e85959631335f53b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 18 Feb 2016 09:04:46 +0000
+Subject: [PATCH] Fix enum conversion warnings
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/mmal/openmaxil/mmalomx_core.c | 4 ++--
+ interface/mmal/openmaxil/mmalomx_parameters.c | 6 +++---
+ interface/mmal/openmaxil/mmalomx_util_params_video.c | 8 ++++----
+ 3 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/interface/mmal/openmaxil/mmalomx_core.c b/interface/mmal/openmaxil/mmalomx_core.c
+index 9bc632b..20d4fc7 100644
+--- a/interface/mmal/openmaxil/mmalomx_core.c
++++ b/interface/mmal/openmaxil/mmalomx_core.c
+@@ -281,7 +281,7 @@ static OMX_ERRORTYPE mmalomx_ComponentGetParameter(
+ {
+ OMX_PARAM_PORTDEFINITIONTYPE *param = (OMX_PARAM_PORTDEFINITIONTYPE *)pParam;
+ PARAM_GET_PORT(port, component, param->nPortIndex);
+- return mmalil_error_to_mmal(mmalomx_get_port_settings(port, param));
++ return mmalil_error_to_omx(mmalomx_get_port_settings(port, param));
+ }
+ return OMX_ErrorNone;
+ break;
+@@ -475,7 +475,7 @@ static OMX_ERRORTYPE mmalomx_ComponentSetParameter(
+ {
+ OMX_PARAM_PORTDEFINITIONTYPE *param = (OMX_PARAM_PORTDEFINITIONTYPE *)pParam;
+ PARAM_GET_PORT(port, component, param->nPortIndex);
+- return mmalil_error_to_mmal(mmalomx_set_port_settings(port, param));
++ return mmalil_error_to_omx(mmalomx_set_port_settings(port, param));
+ }
+ return OMX_ErrorNone;
+ break;
+diff --git a/interface/mmal/openmaxil/mmalomx_parameters.c b/interface/mmal/openmaxil/mmalomx_parameters.c
+index a20a5bd..c4f97d4 100644
+--- a/interface/mmal/openmaxil/mmalomx_parameters.c
++++ b/interface/mmal/openmaxil/mmalomx_parameters.c
+@@ -170,7 +170,7 @@ static OMX_ERRORTYPE mmalomx_parameter_get_xlat(MMALOMX_COMPONENT_T *component,
+
+ if (xlat->fn.custom)
+ {
+- return mmalil_error_to_mmal(xlat->fn.custom(MMALOMX_PARAM_MAPPING_TO_OMX, xlat, mmal_header,
++ return mmalil_error_to_omx(xlat->fn.custom(MMALOMX_PARAM_MAPPING_TO_OMX, xlat, mmal_header,
+ pParam, mmal_port));
+ }
+
+@@ -554,14 +554,14 @@ OMX_ERRORTYPE mmalomx_parameter_set(MMALOMX_COMPONENT_T *component,
+ port->mmal->format->es->video.par.num = param->nX;
+ port->mmal->format->es->video.par.den = param->nY;
+ mmal_rational_simplify(&port->mmal->format->es->video.par);
+- return mmalil_error_to_mmal(mmal_port_format_commit(port->mmal));
++ return mmalil_error_to_omx(mmal_port_format_commit(port->mmal));
+ }
+ case OMX_IndexParamColorSpace:
+ {
+ OMX_PARAM_COLORSPACETYPE *param = (OMX_PARAM_COLORSPACETYPE *)pParam;
+ PARAM_GET_PORT(port, component, param->nPortIndex);
+ port->mmal->format->es->video.color_space = mmalil_omx_color_space_to_mmal(param->eColorSpace);
+- return mmalil_error_to_mmal(mmal_port_format_commit(port->mmal));
++ return mmalil_error_to_omx(mmal_port_format_commit(port->mmal));
+ }
+ case OMX_IndexParamBrcmVideoCroppingDisable:
+ {
+diff --git a/interface/mmal/openmaxil/mmalomx_util_params_video.c b/interface/mmal/openmaxil/mmalomx_util_params_video.c
+index f088296..83e3724 100644
+--- a/interface/mmal/openmaxil/mmalomx_util_params_video.c
++++ b/interface/mmal/openmaxil/mmalomx_util_params_video.c
+@@ -56,11 +56,11 @@ static MMAL_STATUS_T mmalomx_param_mapping_displayregion(MMALOMX_PARAM_MAPPING_D
+ mmal->set = omx->set;
+ mmal->display_num = omx->num;
+ mmal->fullscreen = omx->fullscreen;
+- mmal->transform = omx->transform;
++ mmal->transform = (MMAL_DISPLAYTRANSFORM_T)omx->transform;
+ rect_to_mmal(&mmal->dest_rect, &omx->dest_rect);
+ rect_to_mmal(&mmal->src_rect, &omx->src_rect);
+ mmal->noaspect = omx->noaspect;
+- mmal->mode = omx->mode;
++ mmal->mode = (MMAL_DISPLAYMODE_T)omx->mode;
+ mmal->pixel_x = omx->pixel_x;
+ mmal->pixel_y = omx->pixel_y;
+ mmal->layer = omx->layer;
+@@ -72,11 +72,11 @@ static MMAL_STATUS_T mmalomx_param_mapping_displayregion(MMALOMX_PARAM_MAPPING_D
+ omx->set = mmal->set;
+ omx->num = mmal->display_num;
+ omx->fullscreen = mmal->fullscreen;
+- omx->transform = mmal->transform;
++ omx->transform = (OMX_DISPLAYTRANSFORMTYPE)mmal->transform;
+ rect_to_omx(&omx->dest_rect, &mmal->dest_rect);
+ rect_to_omx(&omx->src_rect, &mmal->src_rect);
+ omx->noaspect = mmal->noaspect;
+- omx->mode = mmal->mode;
++ omx->mode = (OMX_DISPLAYMODETYPE)mmal->mode;
+ omx->pixel_x = mmal->pixel_x;
+ omx->pixel_y = mmal->pixel_y;
+ omx->layer = mmal->layer;
+--
+1.9.1
+
diff --git a/recipes-graphics/userland/userland/0016-define-PROJECT_APIVER.patch b/recipes-graphics/userland/userland/0016-define-PROJECT_APIVER.patch
deleted file mode 100644
index 63a35eb..0000000
--- a/recipes-graphics/userland/userland/0016-define-PROJECT_APIVER.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 56072d7282e7daf65f58fa897f1f76268ae88121 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 6 Feb 2016 11:06:26 -0800
-Subject: [PATCH 16/16] define PROJECT_APIVER
-
-this helps in compiling components which use packageconfig to poke for
-library versions and requiring minimum supported version
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- CMakeLists.txt | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index b240ef6..aa5e14f 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -2,6 +2,12 @@ cmake_minimum_required(VERSION 2.8)
-
- project(vmcs_host_apps)
-
-+SET(PROJECT_VER_MAJOR 1)
-+SET(PROJECT_VER_MINOR 0)
-+SET(PROJECT_VER_PATCH 0)
-+SET(PROJECT_VER "${PROJECT_VER_MAJOR}.${PROJECT_VER_MINOR}.${PROJECT_VER_PATCH}")
-+SET(PROJECT_APIVER "${PROJECT_VER}")
-+
- set(BUILD_MMAL TRUE)
- set(BUILD_MMAL_APPS TRUE)
- set(vmcs_root ${PROJECT_SOURCE_DIR})
---
-2.7.0
-
diff --git a/recipes-graphics/userland/userland_git.bb b/recipes-graphics/userland/userland_git.bb
index c59b5f3..4eb67fe 100644
--- a/recipes-graphics/userland/userland_git.bb
+++ b/recipes-graphics/userland/userland_git.bb
@@ -16,27 +16,24 @@ COMPATIBLE_MACHINE = "raspberrypi"
SRCBRANCH = "master"
SRCFORK = "raspberrypi"
-SRCREV = "2a4af2192c0e161555fdb2a12e902b587166c4a6"
+SRCREV = "748b2ba6112435063352d72f48d1d6dcc124bd6f"
SRC_URI = "\
git://github.com/${SRCFORK}/userland.git;protocol=git;branch=${SRCBRANCH} \
file://0001-Fix-VCOS_INLINE_DECL-to-not-use-extern-inlines-in-de.patch \
- file://0002-musl-inspired-fixed.patch \
- file://0003-set-VMCS_INSTALL_PREFIX-to-usr.patch \
- file://0004-cmake-generate-and-install-pkgconfig-files.patch \
- file://0005-user-vcsm-Fix-build-with-clang.patch \
- file://0006-Fix-enum-type-conversion-warnings.patch \
- file://0007-vcos_platform_types-Dont-use-extern-inline-with-clan.patch \
- file://0008-Allow-applications-to-set-next-resource-handle.patch \
- file://0009-wayland-Add-support-for-the-Wayland-winsys.patch \
- file://0010-wayland-Add-Wayland-example.patch \
- file://0011-wayland-egl-Add-bcm_host-to-dependencies.patch \
- file://0012-interface-remove-faulty-assert-to-make-weston-happy-.patch \
- file://0013-zero-out-wl-buffers-in-egl_surface_free.patch \
- file://0014-initialize-front-back-wayland-buffers.patch \
- file://0015-Remove-RPC_FLUSH.patch \
- file://0016-define-PROJECT_APIVER.patch \
- file://0017-fix-cmake-dependency-race.patch \
+ file://0002-set-VMCS_INSTALL_PREFIX-to-usr.patch \
+ file://0003-cmake-generate-and-install-pkgconfig-files.patch \
+ file://0004-vcos_platform_types-Dont-use-extern-inline-with-clan.patch \
+ file://0005-Allow-applications-to-set-next-resource-handle.patch \
+ file://0006-wayland-Add-support-for-the-Wayland-winsys.patch \
+ file://0007-wayland-Add-Wayland-example.patch \
+ file://0008-wayland-egl-Add-bcm_host-to-dependencies.patch \
+ file://0009-interface-remove-faulty-assert-to-make-weston-happy-.patch \
+ file://0010-zero-out-wl-buffers-in-egl_surface_free.patch \
+ file://0011-initialize-front-back-wayland-buffers.patch \
+ file://0012-Remove-RPC_FLUSH.patch \
+ file://0013-fix-cmake-dependency-race.patch \
+ file://0014-Fix-enum-conversion-warnings.patch \
"
S = "${WORKDIR}/git"
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 22/23] linux-raspberrypi: Upgrade 4.4.1 -> 4.4.2
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (20 preceding siblings ...)
2016-02-27 15:27 ` [meta-raspberrypi][PATCH 21/23] userland: Upgrade to latest Khem Raj
@ 2016-02-27 15:27 ` Khem Raj
2016-02-27 15:27 ` [meta-raspberrypi][PATCH 23/23] userland: Drop extern inline patches Khem Raj
2016-03-02 14:21 ` [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:27 UTC (permalink / raw)
To: yocto
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
recipes-kernel/linux/linux-raspberrypi_4.4.bb | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/recipes-kernel/linux/linux-raspberrypi_4.4.bb b/recipes-kernel/linux/linux-raspberrypi_4.4.bb
index 47084e4..3503a1f 100644
--- a/recipes-kernel/linux/linux-raspberrypi_4.4.bb
+++ b/recipes-kernel/linux/linux-raspberrypi_4.4.bb
@@ -1,6 +1,6 @@
-LINUX_VERSION ?= "4.4.1"
+LINUX_VERSION ?= "4.4.2"
-SRCREV = "52d3149aba3c684db1b6c739ca794dc330d92929"
+SRCREV = "8941fe4985a1cc8f800be00224c6a2e741789d03"
SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=rpi-4.4.y"
require linux-raspberrypi.inc
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [meta-raspberrypi][PATCH 23/23] userland: Drop extern inline patches
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (21 preceding siblings ...)
2016-02-27 15:27 ` [meta-raspberrypi][PATCH 22/23] linux-raspberrypi: Upgrade 4.4.1 -> 4.4.2 Khem Raj
@ 2016-02-27 15:27 ` Khem Raj
2016-03-02 14:21 ` [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
23 siblings, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-02-27 15:27 UTC (permalink / raw)
To: yocto
Not needed since the issues have been fixed differently upstream
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
...LINE_DECL-to-not-use-extern-inlines-in-de.patch | 45 ------------
...rm_types-Dont-use-extern-inline-with-clan.patch | 84 ----------------------
recipes-graphics/userland/userland_git.bb | 2 -
3 files changed, 131 deletions(-)
delete mode 100644 recipes-graphics/userland/userland/0001-Fix-VCOS_INLINE_DECL-to-not-use-extern-inlines-in-de.patch
delete mode 100644 recipes-graphics/userland/userland/0004-vcos_platform_types-Dont-use-extern-inline-with-clan.patch
diff --git a/recipes-graphics/userland/userland/0001-Fix-VCOS_INLINE_DECL-to-not-use-extern-inlines-in-de.patch b/recipes-graphics/userland/userland/0001-Fix-VCOS_INLINE_DECL-to-not-use-extern-inlines-in-de.patch
deleted file mode 100644
index ebeefd3..0000000
--- a/recipes-graphics/userland/userland/0001-Fix-VCOS_INLINE_DECL-to-not-use-extern-inlines-in-de.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 58e03d60603baabf63137cdc81ed774cc94d26d6 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 6 Feb 2016 11:00:25 -0800
-Subject: [PATCH 01/13] Fix VCOS_INLINE_DECL to not use extern inlines in
- declarations
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- interface/vcos/pthreads/vcos_platform_types.h | 2 +-
- interface/vcos/vcos_types.h | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/interface/vcos/pthreads/vcos_platform_types.h b/interface/vcos/pthreads/vcos_platform_types.h
-index 17b422d..64fb381 100644
---- a/interface/vcos/pthreads/vcos_platform_types.h
-+++ b/interface/vcos/pthreads/vcos_platform_types.h
-@@ -61,7 +61,7 @@ vcos_pthreads_logging_assert(const char *file, const char *func, unsigned int li
- #define VCOS_ASSERT_MSG(...) ((VCOS_ASSERT_LOGGING && !VCOS_ASSERT_LOGGING_DISABLE) ? vcos_pthreads_logging_assert(__FILE__, __func__, __LINE__, __VA_ARGS__) : (void)0)
-
- #define VCOS_INLINE_BODIES
--#define VCOS_INLINE_DECL extern __inline__
-+#define VCOS_INLINE_DECL extern
- #define VCOS_INLINE_IMPL static __inline__
-
- #ifdef __cplusplus
-diff --git a/interface/vcos/vcos_types.h b/interface/vcos/vcos_types.h
-index 6feb4d2..e64fd99 100644
---- a/interface/vcos/vcos_types.h
-+++ b/interface/vcos/vcos_types.h
-@@ -121,10 +121,10 @@ typedef enum
- #if defined(NDEBUG)
-
- #ifdef __GNUC__
--# define VCOS_INLINE_DECL extern __inline__
-+# define VCOS_INLINE_DECL extern
- # define VCOS_INLINE_IMPL static __inline__
- #else
--# define VCOS_INLINE_DECL static _VCOS_INLINE /* declare a func */
-+# define VCOS_INLINE_DECL extern
- # define VCOS_INLINE_IMPL static _VCOS_INLINE /* implement a func inline */
- #endif
-
---
-2.7.1
-
diff --git a/recipes-graphics/userland/userland/0004-vcos_platform_types-Dont-use-extern-inline-with-clan.patch b/recipes-graphics/userland/userland/0004-vcos_platform_types-Dont-use-extern-inline-with-clan.patch
deleted file mode 100644
index 4d508d2..0000000
--- a/recipes-graphics/userland/userland/0004-vcos_platform_types-Dont-use-extern-inline-with-clan.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 7c07db6c640ec4dfc6baec23f86c7b312028c9c6 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 23 Aug 2015 13:41:33 -0700
-Subject: [PATCH 04/13] vcos_platform_types: Dont use extern inline with clang
-
-Its very gcc specific implementation here in this code, we cant use
-it with clang as such, so we will use static inline instead which is
-common across gcc and clang starting c99 std onwards
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- interface/vcos/pthreads/vcos_platform_types.h | 4 ----
- interface/vcos/vcos_timer.h | 5 -----
- interface/vcos/vcos_types.h | 2 +-
- 3 files changed, 1 insertion(+), 10 deletions(-)
-
-diff --git a/interface/vcos/pthreads/vcos_platform_types.h b/interface/vcos/pthreads/vcos_platform_types.h
-index 64fb381..6ebcaad 100644
---- a/interface/vcos/pthreads/vcos_platform_types.h
-+++ b/interface/vcos/pthreads/vcos_platform_types.h
-@@ -60,10 +60,6 @@ vcos_pthreads_logging_assert(const char *file, const char *func, unsigned int li
-
- #define VCOS_ASSERT_MSG(...) ((VCOS_ASSERT_LOGGING && !VCOS_ASSERT_LOGGING_DISABLE) ? vcos_pthreads_logging_assert(__FILE__, __func__, __LINE__, __VA_ARGS__) : (void)0)
-
--#define VCOS_INLINE_BODIES
--#define VCOS_INLINE_DECL extern
--#define VCOS_INLINE_IMPL static __inline__
--
- #ifdef __cplusplus
- }
- #endif
-diff --git a/interface/vcos/vcos_timer.h b/interface/vcos/vcos_timer.h
-index bdfa657..1de2d46 100644
---- a/interface/vcos/vcos_timer.h
-+++ b/interface/vcos/vcos_timer.h
-@@ -76,7 +76,6 @@ VCOSPRE_ VCOS_STATUS_T VCOSPOST_ vcos_timer_init(void);
- * @param context context passed to expiration routine
- *
- */
--VCOS_INLINE_DECL
- VCOS_STATUS_T vcos_timer_create(VCOS_TIMER_T *timer,
- const char *name,
- void (*expiration_routine)(void *context),
-@@ -91,24 +90,20 @@ VCOS_STATUS_T vcos_timer_create(VCOS_TIMER_T *timer,
- * @param timer timer handle
- * @param delay Delay to wait for, in ms
- */
--VCOS_INLINE_DECL
- void vcos_timer_set(VCOS_TIMER_T *timer, VCOS_UNSIGNED delay);
-
- /** Stop an already running timer.
- *
- * @param timer timer handle
- */
--VCOS_INLINE_DECL
- void vcos_timer_cancel(VCOS_TIMER_T *timer);
-
- /** Stop a timer and restart it.
- * @param timer timer handle
- * @param delay delay in ms
- */
--VCOS_INLINE_DECL
- void vcos_timer_reset(VCOS_TIMER_T *timer, VCOS_UNSIGNED delay);
-
--VCOS_INLINE_DECL
- void vcos_timer_delete(VCOS_TIMER_T *timer);
-
- #ifdef __cplusplus
-diff --git a/interface/vcos/vcos_types.h b/interface/vcos/vcos_types.h
-index e64fd99..7d86742 100644
---- a/interface/vcos/vcos_types.h
-+++ b/interface/vcos/vcos_types.h
-@@ -120,7 +120,7 @@ typedef enum
-
- #if defined(NDEBUG)
-
--#ifdef __GNUC__
-+#if defined(__GNUC__) && !defined(__clang__)
- # define VCOS_INLINE_DECL extern
- # define VCOS_INLINE_IMPL static __inline__
- #else
---
-2.7.1
-
diff --git a/recipes-graphics/userland/userland_git.bb b/recipes-graphics/userland/userland_git.bb
index 4eb67fe..accc707 100644
--- a/recipes-graphics/userland/userland_git.bb
+++ b/recipes-graphics/userland/userland_git.bb
@@ -20,10 +20,8 @@ SRCREV = "748b2ba6112435063352d72f48d1d6dcc124bd6f"
SRC_URI = "\
git://github.com/${SRCFORK}/userland.git;protocol=git;branch=${SRCBRANCH} \
- file://0001-Fix-VCOS_INLINE_DECL-to-not-use-extern-inlines-in-de.patch \
file://0002-set-VMCS_INSTALL_PREFIX-to-usr.patch \
file://0003-cmake-generate-and-install-pkgconfig-files.patch \
- file://0004-vcos_platform_types-Dont-use-extern-inline-with-clan.patch \
file://0005-Allow-applications-to-set-next-resource-handle.patch \
file://0006-wayland-Add-support-for-the-Wayland-winsys.patch \
file://0007-wayland-Add-Wayland-example.patch \
--
1.9.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* Re: [meta-raspberrypi][PATCH 17/23] linux-raspberrypi: Upgrade 4.1 kernel to 4.1.17
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 17/23] linux-raspberrypi: Upgrade 4.1 kernel to 4.1.17 Khem Raj
@ 2016-02-29 21:18 ` Andrei Gherzan
0 siblings, 0 replies; 36+ messages in thread
From: Andrei Gherzan @ 2016-02-29 21:18 UTC (permalink / raw)
To: Khem Raj; +Cc: yocto
On Sat, Feb 27, 2016 at 03:26:56PM +0000, Khem Raj wrote:
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
> recipes-kernel/linux/linux-raspberrypi_4.1.bb | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/recipes-kernel/linux/linux-raspberrypi_4.1.bb b/recipes-kernel/linux/linux-raspberrypi_4.1.bb
> index 3a3cf40..d5bfa45 100644
> --- a/recipes-kernel/linux/linux-raspberrypi_4.1.bb
> +++ b/recipes-kernel/linux/linux-raspberrypi_4.1.bb
> @@ -1,6 +1,6 @@
> -LINUX_VERSION ?= "4.1.10"
> +LINUX_VERSION ?= "4.1.17"
>
> -SRCREV = "b74df9228c27f55361c065bc5dbfba88861cc771"
> +SRCREV = "cb2f10196a9b718a2d94bb4ac0887c2ea14988ae"
> SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=rpi-4.1.y"
>
> require linux-raspberrypi.inc
Hi Raj,
Merged to master. Thank you.
--
Andrei Gherzan
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [meta-raspberrypi][PATCH 19/23] rpi-config: Upgrade to tip of tree to get GPU_MEM_1024
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 19/23] rpi-config: Upgrade to tip of tree to get GPU_MEM_1024 Khem Raj
@ 2016-02-29 21:19 ` Andrei Gherzan
0 siblings, 0 replies; 36+ messages in thread
From: Andrei Gherzan @ 2016-02-29 21:19 UTC (permalink / raw)
To: Khem Raj; +Cc: yocto
On Sat, Feb 27, 2016 at 03:26:58PM +0000, Khem Raj wrote:
> Document it in README
>
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
> README | 2 ++
> recipes-bsp/bootfiles/rpi-config_git.bb | 5 ++++-
> 2 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/README b/README
> index 16ac1cb..efe885b 100644
> --- a/README
> +++ b/README
> @@ -90,6 +90,8 @@ GPU_MEM_256 : GPU memory in megabyte for the 256MB Raspberry Pi. Ignored by the
> 512MB RP. Overrides gpu_mem. Max 192. Default not set.
> GPU_MEM_512 : GPU memory in megabyte for the 512MB Raspberry Pi. Ignored by the
> 256MB RP. Overrides gpu_mem. Max 448. Default not set.
> +GPU_MEM_1024: GPU memory in megabyte for the 1024MB Raspberry Pi. Ignored by the
> + 256MB/512MB RP. Overrides gpu_mem. Max 944. Default not set.
>
> 2.C.Optional - Add purchased license codecs:
> ============================================
> diff --git a/recipes-bsp/bootfiles/rpi-config_git.bb b/recipes-bsp/bootfiles/rpi-config_git.bb
> index aa11b25..4cdffca 100644
> --- a/recipes-bsp/bootfiles/rpi-config_git.bb
> +++ b/recipes-bsp/bootfiles/rpi-config_git.bb
> @@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384
>
> COMPATIBLE_MACHINE = "raspberrypi"
>
> -SRCREV = "5d2ca5f9bcb1b239c051e20c05a233fd79cf09d5"
> +SRCREV = "648ffc470824c43eb0d16c485f4c24816b32cd6f"
> SRC_URI = "git://github.com/Evilpaul/RPi-config.git;protocol=git;branch=master \
> "
>
> @@ -54,6 +54,9 @@ do_deploy() {
> if [ -n "${GPU_MEM_512}" ]; then
> sed -i '/#gpu_mem_512/ c\gpu_mem_512=${GPU_MEM_512}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
> fi
> + if [ -n "${GPU_MEM_1024}" ]; then
> + sed -i '/#gpu_mem_1024/ c\gpu_mem_1024=${GPU_MEM_1024}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
> + fi
>
> # Video camera support
> if [ -n "${VIDEO_CAMERA}" ]; then
Hi Raj,
Merged to master. Thank you.
--
Andrei Gherzan
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [meta-raspberrypi][PATCH 08/23] wiringPi: Fix build with musl
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 08/23] wiringPi: " Khem Raj
@ 2016-02-29 21:20 ` Andrei Gherzan
0 siblings, 0 replies; 36+ messages in thread
From: Andrei Gherzan @ 2016-02-29 21:20 UTC (permalink / raw)
To: Khem Raj; +Cc: yocto
On Sat, Feb 27, 2016 at 03:26:47PM +0000, Khem Raj wrote:
> Include asm/ioctl.h for _IOC_SIZEBITS
>
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
> ...de-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch | 58 ++++++++++++++++++++++
> recipes-devtools/wiringPi/wiringpi_git.bb | 8 +--
> 2 files changed, 62 insertions(+), 4 deletions(-)
> create mode 100644 recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch
>
> diff --git a/recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch b/recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch
> new file mode 100644
> index 0000000..5de5853
> --- /dev/null
> +++ b/recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch
> @@ -0,0 +1,58 @@
> +From 7f65eb37a82a6d9b095d9c8f262ad9dd205acd03 Mon Sep 17 00:00:00 2001
> +From: Khem Raj <raj.khem@gmail.com>
> +Date: Sat, 30 Jan 2016 16:57:38 -0800
> +Subject: [PATCH] include <asm/ioctl.h> directly for _IOC_SIZEBITS
> +
> +Fixes errors like
> +| wiringPiSPI.c: In function 'wiringPiSPIDataRW':
> +| wiringPiSPI.c:89:35: error: '_IOC_SIZEBITS' undeclared (first use in
> +this function)
> +
> +Signed-off-by: Khem Raj <raj.khem@gmail.com>
> +---
> +Upstream-Status: Submitted
> +
> + wiringPi/wiringPi.c | 1 +
> + wiringPi/wiringPiI2C.c | 1 +
> + wiringPi/wiringPiSPI.c | 1 +
> + 3 files changed, 3 insertions(+)
> +
> +diff --git a/wiringPi/wiringPi.c b/wiringPi/wiringPi.c
> +index 32e5100..cb5db9d 100644
> +--- a/wiringPi/wiringPi.c
> ++++ b/wiringPi/wiringPi.c
> +@@ -64,6 +64,7 @@
> + #include <time.h>
> + #include <fcntl.h>
> + #include <pthread.h>
> ++#include <asm/ioctl.h>
> + #include <sys/time.h>
> + #include <sys/mman.h>
> + #include <sys/stat.h>
> +diff --git a/wiringPi/wiringPiI2C.c b/wiringPi/wiringPiI2C.c
> +index c787bce..efdf53c 100644
> +--- a/wiringPi/wiringPiI2C.c
> ++++ b/wiringPi/wiringPiI2C.c
> +@@ -52,6 +52,7 @@
> + #include <string.h>
> + #include <fcntl.h>
> + #include <sys/ioctl.h>
> ++#include <asm/ioctl.h>
> +
> + #include "wiringPi.h"
> + #include "wiringPiI2C.h"
> +diff --git a/wiringPi/wiringPiSPI.c b/wiringPi/wiringPiSPI.c
> +index 453df31..ae3c7d9 100644
> +--- a/wiringPi/wiringPiSPI.c
> ++++ b/wiringPi/wiringPiSPI.c
> +@@ -27,6 +27,7 @@
> + #include <fcntl.h>
> + #include <errno.h>
> + #include <string.h>
> ++#include <asm/ioctl.h>
> + #include <sys/ioctl.h>
> + #include <linux/spi/spidev.h>
> +
> +--
> +2.7.0
> +
> diff --git a/recipes-devtools/wiringPi/wiringpi_git.bb b/recipes-devtools/wiringPi/wiringpi_git.bb
> index 4254a0a..9d2206b 100644
> --- a/recipes-devtools/wiringPi/wiringpi_git.bb
> +++ b/recipes-devtools/wiringPi/wiringpi_git.bb
> @@ -9,10 +9,10 @@ SRCREV = "d79506694d7ba1c3da865d095238289d6175057d"
>
> S = "${WORKDIR}/git"
>
> -SRC_URI = "\
> - git://git.drogon.net/wiringPi \
> - file://0001-Add-initial-cross-compile-support.patch \
> - "
> +SRC_URI = "git://git.drogon.net/wiringPi \
> + file://0001-Add-initial-cross-compile-support.patch \
> + file://0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch \
> + "
>
> COMPATIBLE_MACHINE = "raspberrypi"
>
Hi Raj! Merged to master. Thank you.
--
Andrei Gherzan
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [meta-raspberrypi][PATCH 07/23] python-rtimu: Fix build with musl
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 07/23] python-rtimu: Fix build with musl Khem Raj
@ 2016-02-29 21:21 ` Andrei Gherzan
0 siblings, 0 replies; 36+ messages in thread
From: Andrei Gherzan @ 2016-02-29 21:21 UTC (permalink / raw)
To: Khem Raj; +Cc: yocto
On Sat, Feb 27, 2016 at 03:26:46PM +0000, Khem Raj wrote:
> ioctl(3) needs to include asm/ioctl.h for its signature
>
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
> ...0001-include-asm-ioctl.h-for-ioctl-define.patch | 33 ++++++++++++++++++++++
> recipes-devtools/python/python-rtimu_git.bb | 4 ++-
> 2 files changed, 36 insertions(+), 1 deletion(-)
> create mode 100644 recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch
>
> diff --git a/recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch b/recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch
> new file mode 100644
> index 0000000..4a93a1c
> --- /dev/null
> +++ b/recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch
> @@ -0,0 +1,33 @@
> +From c3aa4af56652b403e304ea5f321acfe289e42922 Mon Sep 17 00:00:00 2001
> +From: Khem Raj <raj.khem@gmail.com>
> +Date: Sat, 30 Jan 2016 16:07:14 -0800
> +Subject: [PATCH] include asm/ioctl.h for ioctl() define
> +
> +also fixes errors e.g.
> +
> +../../RTIMULib/RTIMUHal.cpp:208:29: error: '_IOC_SIZEBITS' was not
> +declared in this scope
> + return ioctl(m_SPI, SPI_IOC_MESSAGE(1), &wrIOC);
> +
> +Signed-off-by: Khem Raj <raj.khem@gmail.com>
> +---
> +Upstream-Status: Submitted
> +
> + RTIMULib/RTIMUHal.cpp | 1 +
> + 1 file changed, 1 insertion(+)
> +
> +diff --git a/RTIMULib/RTIMUHal.cpp b/RTIMULib/RTIMUHal.cpp
> +index f9c3d15..d968326 100644
> +--- a/RTIMULib/RTIMUHal.cpp
> ++++ b/RTIMULib/RTIMUHal.cpp
> +@@ -29,6 +29,7 @@
> + #if !defined(WIN32) && !defined(__APPLE__)
> +
> + #include <linux/spi/spidev.h>
> ++#include <asm/ioctl.h>
> +
> + RTIMUHal::RTIMUHal()
> + {
> +--
> +2.7.0
> +
> diff --git a/recipes-devtools/python/python-rtimu_git.bb b/recipes-devtools/python/python-rtimu_git.bb
> index f51a234..63c92b3 100644
> --- a/recipes-devtools/python/python-rtimu_git.bb
> +++ b/recipes-devtools/python/python-rtimu_git.bb
> @@ -5,7 +5,9 @@ SECTION = "devel/python"
> LICENSE = "MIT"
> LIC_FILES_CHKSUM = "file://../../LICENSE;md5=96cdecb41125f498958e09b72faf318e"
>
> -SRC_URI = "git://github.com/RPi-Distro/RTIMULib.git;protocol=http;branch=master"
> +SRC_URI = "git://github.com/RPi-Distro/RTIMULib.git;protocol=http;branch=master \
> + file://0001-include-asm-ioctl.h-for-ioctl-define.patch;patchdir=../.. \
> + "
> SRCREV = "b949681af69b45f0f7f4bb53b6770037b5b02178"
>
> S = "${WORKDIR}/git/Linux/python/"
Hi Raj! Merged to master. Thank you.
--
Andrei Gherzan
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [meta-raspberrypi][PATCH 10/23] rpio: Include sys/types.h for caddr_t
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 10/23] rpio: Include sys/types.h for caddr_t Khem Raj
@ 2016-02-29 21:21 ` Andrei Gherzan
0 siblings, 0 replies; 36+ messages in thread
From: Andrei Gherzan @ 2016-02-29 21:21 UTC (permalink / raw)
To: Khem Raj; +Cc: yocto
On Sat, Feb 27, 2016 at 03:26:49PM +0000, Khem Raj wrote:
> Fixes build with musl
>
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
> ...-types.h-explicitly-for-getting-caddr_t-d.patch | 30 ++++++++++++++++++++++
> recipes-devtools/python/rpio_0.10.0.bb | 6 ++---
> 2 files changed, 33 insertions(+), 3 deletions(-)
> create mode 100644 recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch
>
> diff --git a/recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch b/recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch
> new file mode 100644
> index 0000000..bed9749
> --- /dev/null
> +++ b/recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch
> @@ -0,0 +1,30 @@
> +From c86bfacc98d58244f532626954ed00d84ecfa82d Mon Sep 17 00:00:00 2001
> +From: Khem Raj <raj.khem@gmail.com>
> +Date: Sat, 30 Jan 2016 17:12:37 -0800
> +Subject: [PATCH] include sys/types.h explicitly for getting caddr_t definition
> +
> +Helps fixing build on musl where sys/types.h is not included indirectly
> +as happening on glibc
> +
> +Signed-off-by: Khem Raj <raj.khem@gmail.com>
> +---
> +Upstream-Status: Submitted
> +
> + source/c_gpio/c_gpio.c | 1 +
> + 1 file changed, 1 insertion(+)
> +
> +diff --git a/source/c_gpio/c_gpio.c b/source/c_gpio/c_gpio.c
> +index 25a04ca..70df632 100644
> +--- a/source/c_gpio/c_gpio.c
> ++++ b/source/c_gpio/c_gpio.c
> +@@ -29,6 +29,7 @@
> + #include <stdint.h>
> + #include <stdlib.h>
> + #include <fcntl.h>
> ++#include <sys/types.h>
> + #include <sys/mman.h>
> + #include "c_gpio.h"
> +
> +--
> +2.7.0
> +
> diff --git a/recipes-devtools/python/rpio_0.10.0.bb b/recipes-devtools/python/rpio_0.10.0.bb
> index 1cc1661..69ecb6f 100644
> --- a/recipes-devtools/python/rpio_0.10.0.bb
> +++ b/recipes-devtools/python/rpio_0.10.0.bb
> @@ -7,9 +7,9 @@ LIC_FILES_CHKSUM = "file://README.rst;beginline=41;endline=53;md5=d5d95d7486a4d9
>
> SRCNAME = "RPIO"
>
> -SRC_URI = "\
> - http://pypi.python.org/packages/source/R/RPIO/${SRCNAME}-${PV}.tar.gz \
> - "
> +SRC_URI = "http://pypi.python.org/packages/source/R/RPIO/${SRCNAME}-${PV}.tar.gz \
> + file://0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch \
> + "
> S = "${WORKDIR}/${SRCNAME}-${PV}"
>
> inherit setuptools
Merged to master. Thank you.
--
Andrei Gherzan
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
` (22 preceding siblings ...)
2016-02-27 15:27 ` [meta-raspberrypi][PATCH 23/23] userland: Drop extern inline patches Khem Raj
@ 2016-03-02 14:21 ` Khem Raj
2016-03-02 15:47 ` Andrei Gherzan
23 siblings, 1 reply; 36+ messages in thread
From: Khem Raj @ 2016-03-02 14:21 UTC (permalink / raw)
To: yocto@yoctoproject.org
Andrei
I see you merged few of patches from here
What is status of rest of series ?
This series has been tested to work with Webkit and weston images
on Pi2
On Sat, Feb 27, 2016 at 7:26 AM, Khem Raj <raj.khem@gmail.com> wrote:
> This patchset has been growing for a while, Adds recipes for kenrel 4.4 and switches
> to use kernel 4.4
> Fixes userland to compile with clang
> Upgrade userland to latest
> Add option to support GPU_MEM_1024
> Upgrade firmware to latest
>
> Khem Raj (23):
> userland: Upgrade to latest git master
> userland: Fix build with clang compiler
> userland: Add wayland support
> weston: Enable rpi compositor backend
> rpi-gpio: Upgrade to 0.6.1 and fix build with clang
> eglinfo-x11,eglinfo-fb: Add EGLINFO_DEVICE via bbappends
> python-rtimu: Fix build with musl
> wiringPi: Fix build with musl
> Delete rpc flushing of thread in glEGLImageTargetTexture2DOES
> rpio: Include sys/types.h for caddr_t
> userland: Define PROJECT_APIVER and rprovide libgles2 libgl
> userland: Add wayland to deps if in DISTRO_FEATURES
> userland: Fix build race with wayland support
> gstreamer1.0-omx: Add raspberry pi optimization patches and config
> options
> weston: Specify egl and compositor options for rpi
> gstreamer1.0-omx: Backports and fixes for smooth video playback
> linux-raspberrypi: Upgrade 4.1 kernel to 4.1.17
> firmware: Upgrade to latest stable 20160209
> rpi-config: Upgrade to tip of tree to get GPU_MEM_1024
> linux-raspberrypi: Add recipe for 4.4 release
> userland: Upgrade to latest
> linux-raspberrypi: Upgrade 4.4.1 -> 4.4.2
> userland: Drop extern inline patches
>
> README | 2 +
> conf/machine/include/rpi-default-versions.inc | 2 +-
> recipes-bsp/bootfiles/bcm2835-bootfiles.bb | 2 +-
> recipes-bsp/bootfiles/rpi-config_git.bb | 5 +-
> recipes-bsp/common/firmware.inc | 4 +-
> ...0001-include-asm-ioctl.h-for-ioctl-define.patch | 33 +
> recipes-devtools/python/python-rtimu_git.bb | 4 +-
> .../rpi-gpio/0001-Remove-nested-functions.patch | 294 +++
> .../{rpi-gpio_0.5.11.bb => rpi-gpio_0.6.1.bb} | 6 +-
> ...-types.h-explicitly-for-getting-caddr_t-d.patch | 30 +
> recipes-devtools/python/rpio_0.10.0.bb | 6 +-
> ...de-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch | 58 +
> recipes-devtools/wiringPi/wiringpi_git.bb | 8 +-
> recipes-graphics/eglinfo/eglinfo-fb_%.bbappend | 1 +
> recipes-graphics/eglinfo/eglinfo-x11_%.bbappend | 1 +
> .../userland/0001-fix-gcc-5.x-inlines.patch | 26 -
> .../userland/userland/0002-fix-musl-build.patch | 22 -
> .../0002-set-VMCS_INSTALL_PREFIX-to-usr.patch | 7 +-
> ...make-generate-and-install-pkgconfig-files.patch | 24 +-
> .../0003-fix-alloc-size-uninitialized.patch | 13 -
> ...-applications-to-set-next-resource-handle.patch | 208 +++
> ...ayland-Add-support-for-the-Wayland-winsys.patch | 1880 ++++++++++++++++++++
> .../0007-wayland-Add-Wayland-example.patch | 866 +++++++++
> ...-wayland-egl-Add-bcm_host-to-dependencies.patch | 28 +
> ...emove-faulty-assert-to-make-weston-happy-.patch | 29 +
> ...0-zero-out-wl-buffers-in-egl_surface_free.patch | 33 +
> ...011-initialize-front-back-wayland-buffers.patch | 34 +
> .../userland/userland/0012-Remove-RPC_FLUSH.patch | 27 +
> .../userland/0013-fix-cmake-dependency-race.patch | 78 +
> .../0014-Fix-enum-conversion-warnings.patch | 99 ++
> recipes-graphics/userland/userland_git.bb | 33 +-
> recipes-graphics/wayland/weston_%.bbappend | 4 +
> recipes-graphics/weston/weston_%.bbappend | 7 +
> recipes-kernel/linux/linux-raspberrypi_4.1.bb | 4 +-
> ...raspberrypi_4.1.bb => linux-raspberrypi_4.4.bb} | 6 +-
> .../gstreamer1.0-omx/0001-config-files-path.patch | 137 ++
> ...o-acquire-buffer-when-src-pad-isn-t-activ.patch | 47 +
> .../0003-fix-decoder-flushing.patch | 15 +
> .../0003-no-timeout-on-get-state.patch | 16 +
> ...erly-handle-drain-requests-while-flushing.patch | 69 +
> ...-gst_omx_video_dec_set_format-if-there-s-.patch | 30 +
> .../gstreamer/gstreamer1.0-omx_%.bbappend | 22 +
> 42 files changed, 4114 insertions(+), 106 deletions(-)
> create mode 100644 recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch
> create mode 100644 recipes-devtools/python/rpi-gpio/0001-Remove-nested-functions.patch
> rename recipes-devtools/python/{rpi-gpio_0.5.11.bb => rpi-gpio_0.6.1.bb} (70%)
> create mode 100644 recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch
> create mode 100644 recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch
> create mode 100644 recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
> create mode 100644 recipes-graphics/eglinfo/eglinfo-x11_%.bbappend
> delete mode 100644 recipes-graphics/userland/userland/0001-fix-gcc-5.x-inlines.patch
> delete mode 100644 recipes-graphics/userland/userland/0002-fix-musl-build.patch
> delete mode 100644 recipes-graphics/userland/userland/0003-fix-alloc-size-uninitialized.patch
> create mode 100644 recipes-graphics/userland/userland/0005-Allow-applications-to-set-next-resource-handle.patch
> create mode 100644 recipes-graphics/userland/userland/0006-wayland-Add-support-for-the-Wayland-winsys.patch
> create mode 100644 recipes-graphics/userland/userland/0007-wayland-Add-Wayland-example.patch
> create mode 100644 recipes-graphics/userland/userland/0008-wayland-egl-Add-bcm_host-to-dependencies.patch
> create mode 100644 recipes-graphics/userland/userland/0009-interface-remove-faulty-assert-to-make-weston-happy-.patch
> create mode 100644 recipes-graphics/userland/userland/0010-zero-out-wl-buffers-in-egl_surface_free.patch
> create mode 100644 recipes-graphics/userland/userland/0011-initialize-front-back-wayland-buffers.patch
> create mode 100644 recipes-graphics/userland/userland/0012-Remove-RPC_FLUSH.patch
> create mode 100644 recipes-graphics/userland/userland/0013-fix-cmake-dependency-race.patch
> create mode 100644 recipes-graphics/userland/userland/0014-Fix-enum-conversion-warnings.patch
> create mode 100644 recipes-graphics/wayland/weston_%.bbappend
> create mode 100644 recipes-graphics/weston/weston_%.bbappend
> copy recipes-kernel/linux/{linux-raspberrypi_4.1.bb => linux-raspberrypi_4.4.bb} (50%)
> create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0001-config-files-path.patch
> create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch
> create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-fix-decoder-flushing.patch
> create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-no-timeout-on-get-state.patch
> create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0004-Properly-handle-drain-requests-while-flushing.patch
> create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch
> create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend
>
> --
> 1.9.1
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes
2016-03-02 14:21 ` [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
@ 2016-03-02 15:47 ` Andrei Gherzan
2016-03-02 16:34 ` Khem Raj
0 siblings, 1 reply; 36+ messages in thread
From: Andrei Gherzan @ 2016-03-02 15:47 UTC (permalink / raw)
To: Khem Raj; +Cc: yocto@yoctoproject.org
[-- Attachment #1: Type: text/plain, Size: 8297 bytes --]
Hi Khen,
I started to merge the ones that were obvious. The rest need rebasing,
conflict fixing and so on. And then I test them locally. So it will take a
while. But I'll merge as I test. So you can easily see the progress.
--
Andrei Gherzan
On Wed, Mar 2, 2016 at 3:21 PM, Khem Raj <raj.khem@gmail.com> wrote:
> Andrei
>
> I see you merged few of patches from here
> What is status of rest of series ?
>
> This series has been tested to work with Webkit and weston images
> on Pi2
>
>
>
> On Sat, Feb 27, 2016 at 7:26 AM, Khem Raj <raj.khem@gmail.com> wrote:
> > This patchset has been growing for a while, Adds recipes for kenrel 4.4
> and switches
> > to use kernel 4.4
> > Fixes userland to compile with clang
> > Upgrade userland to latest
> > Add option to support GPU_MEM_1024
> > Upgrade firmware to latest
> >
> > Khem Raj (23):
> > userland: Upgrade to latest git master
> > userland: Fix build with clang compiler
> > userland: Add wayland support
> > weston: Enable rpi compositor backend
> > rpi-gpio: Upgrade to 0.6.1 and fix build with clang
> > eglinfo-x11,eglinfo-fb: Add EGLINFO_DEVICE via bbappends
> > python-rtimu: Fix build with musl
> > wiringPi: Fix build with musl
> > Delete rpc flushing of thread in glEGLImageTargetTexture2DOES
> > rpio: Include sys/types.h for caddr_t
> > userland: Define PROJECT_APIVER and rprovide libgles2 libgl
> > userland: Add wayland to deps if in DISTRO_FEATURES
> > userland: Fix build race with wayland support
> > gstreamer1.0-omx: Add raspberry pi optimization patches and config
> > options
> > weston: Specify egl and compositor options for rpi
> > gstreamer1.0-omx: Backports and fixes for smooth video playback
> > linux-raspberrypi: Upgrade 4.1 kernel to 4.1.17
> > firmware: Upgrade to latest stable 20160209
> > rpi-config: Upgrade to tip of tree to get GPU_MEM_1024
> > linux-raspberrypi: Add recipe for 4.4 release
> > userland: Upgrade to latest
> > linux-raspberrypi: Upgrade 4.4.1 -> 4.4.2
> > userland: Drop extern inline patches
> >
> > README | 2 +
> > conf/machine/include/rpi-default-versions.inc | 2 +-
> > recipes-bsp/bootfiles/bcm2835-bootfiles.bb | 2 +-
> > recipes-bsp/bootfiles/rpi-config_git.bb | 5 +-
> > recipes-bsp/common/firmware.inc | 4 +-
> > ...0001-include-asm-ioctl.h-for-ioctl-define.patch | 33 +
> > recipes-devtools/python/python-rtimu_git.bb | 4 +-
> > .../rpi-gpio/0001-Remove-nested-functions.patch | 294 +++
> > .../{rpi-gpio_0.5.11.bb => rpi-gpio_0.6.1.bb} | 6 +-
> > ...-types.h-explicitly-for-getting-caddr_t-d.patch | 30 +
> > recipes-devtools/python/rpio_0.10.0.bb | 6 +-
> > ...de-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch | 58 +
> > recipes-devtools/wiringPi/wiringpi_git.bb | 8 +-
> > recipes-graphics/eglinfo/eglinfo-fb_%.bbappend | 1 +
> > recipes-graphics/eglinfo/eglinfo-x11_%.bbappend | 1 +
> > .../userland/0001-fix-gcc-5.x-inlines.patch | 26 -
> > .../userland/userland/0002-fix-musl-build.patch | 22 -
> > .../0002-set-VMCS_INSTALL_PREFIX-to-usr.patch | 7 +-
> > ...make-generate-and-install-pkgconfig-files.patch | 24 +-
> > .../0003-fix-alloc-size-uninitialized.patch | 13 -
> > ...-applications-to-set-next-resource-handle.patch | 208 +++
> > ...ayland-Add-support-for-the-Wayland-winsys.patch | 1880
> ++++++++++++++++++++
> > .../0007-wayland-Add-Wayland-example.patch | 866 +++++++++
> > ...-wayland-egl-Add-bcm_host-to-dependencies.patch | 28 +
> > ...emove-faulty-assert-to-make-weston-happy-.patch | 29 +
> > ...0-zero-out-wl-buffers-in-egl_surface_free.patch | 33 +
> > ...011-initialize-front-back-wayland-buffers.patch | 34 +
> > .../userland/userland/0012-Remove-RPC_FLUSH.patch | 27 +
> > .../userland/0013-fix-cmake-dependency-race.patch | 78 +
> > .../0014-Fix-enum-conversion-warnings.patch | 99 ++
> > recipes-graphics/userland/userland_git.bb | 33 +-
> > recipes-graphics/wayland/weston_%.bbappend | 4 +
> > recipes-graphics/weston/weston_%.bbappend | 7 +
> > recipes-kernel/linux/linux-raspberrypi_4.1.bb | 4 +-
> > ...raspberrypi_4.1.bb => linux-raspberrypi_4.4.bb} | 6 +-
> > .../gstreamer1.0-omx/0001-config-files-path.patch | 137 ++
> > ...o-acquire-buffer-when-src-pad-isn-t-activ.patch | 47 +
> > .../0003-fix-decoder-flushing.patch | 15 +
> > .../0003-no-timeout-on-get-state.patch | 16 +
> > ...erly-handle-drain-requests-while-flushing.patch | 69 +
> > ...-gst_omx_video_dec_set_format-if-there-s-.patch | 30 +
> > .../gstreamer/gstreamer1.0-omx_%.bbappend | 22 +
> > 42 files changed, 4114 insertions(+), 106 deletions(-)
> > create mode 100644
> recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch
> > create mode 100644
> recipes-devtools/python/rpi-gpio/0001-Remove-nested-functions.patch
> > rename recipes-devtools/python/{rpi-gpio_0.5.11.bb => rpi-gpio_0.6.1.bb}
> (70%)
> > create mode 100644
> recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch
> > create mode 100644
> recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch
> > create mode 100644 recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
> > create mode 100644 recipes-graphics/eglinfo/eglinfo-x11_%.bbappend
> > delete mode 100644
> recipes-graphics/userland/userland/0001-fix-gcc-5.x-inlines.patch
> > delete mode 100644
> recipes-graphics/userland/userland/0002-fix-musl-build.patch
> > delete mode 100644
> recipes-graphics/userland/userland/0003-fix-alloc-size-uninitialized.patch
> > create mode 100644
> recipes-graphics/userland/userland/0005-Allow-applications-to-set-next-resource-handle.patch
> > create mode 100644
> recipes-graphics/userland/userland/0006-wayland-Add-support-for-the-Wayland-winsys.patch
> > create mode 100644
> recipes-graphics/userland/userland/0007-wayland-Add-Wayland-example.patch
> > create mode 100644
> recipes-graphics/userland/userland/0008-wayland-egl-Add-bcm_host-to-dependencies.patch
> > create mode 100644
> recipes-graphics/userland/userland/0009-interface-remove-faulty-assert-to-make-weston-happy-.patch
> > create mode 100644
> recipes-graphics/userland/userland/0010-zero-out-wl-buffers-in-egl_surface_free.patch
> > create mode 100644
> recipes-graphics/userland/userland/0011-initialize-front-back-wayland-buffers.patch
> > create mode 100644
> recipes-graphics/userland/userland/0012-Remove-RPC_FLUSH.patch
> > create mode 100644
> recipes-graphics/userland/userland/0013-fix-cmake-dependency-race.patch
> > create mode 100644
> recipes-graphics/userland/userland/0014-Fix-enum-conversion-warnings.patch
> > create mode 100644 recipes-graphics/wayland/weston_%.bbappend
> > create mode 100644 recipes-graphics/weston/weston_%.bbappend
> > copy recipes-kernel/linux/{linux-raspberrypi_4.1.bb =>
> linux-raspberrypi_4.4.bb} (50%)
> > create mode 100644
> recipes-multimedia/gstreamer/gstreamer1.0-omx/0001-config-files-path.patch
> > create mode 100644
> recipes-multimedia/gstreamer/gstreamer1.0-omx/0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch
> > create mode 100644
> recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-fix-decoder-flushing.patch
> > create mode 100644
> recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-no-timeout-on-get-state.patch
> > create mode 100644
> recipes-multimedia/gstreamer/gstreamer1.0-omx/0004-Properly-handle-drain-requests-while-flushing.patch
> > create mode 100644
> recipes-multimedia/gstreamer/gstreamer1.0-omx/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch
> > create mode 100644
> recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend
> >
> > --
> > 1.9.1
> >
> --
> _______________________________________________
> yocto mailing list
> yocto@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
>
[-- Attachment #2: Type: text/html, Size: 10923 bytes --]
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes
2016-03-02 15:47 ` Andrei Gherzan
@ 2016-03-02 16:34 ` Khem Raj
2016-03-09 23:51 ` Khem Raj
2016-03-10 14:20 ` Andrei Gherzan
0 siblings, 2 replies; 36+ messages in thread
From: Khem Raj @ 2016-03-02 16:34 UTC (permalink / raw)
To: Andrei Gherzan; +Cc: yocto@yoctoproject.org
On Wed, Mar 2, 2016 at 7:47 AM, Andrei Gherzan <andrei@gherzan.ro> wrote:
> Hi Khen,
>
> I started to merge the ones that were obvious. The rest need rebasing,
> conflict fixing and so on. And then I test them locally. So it will take a
> while. But I'll merge as I test. So you can easily see the progress.
You can use kraj/master branch from
https://github.com/kraj/meta-raspberrypi/tree/kraj/master
This is fully rebased on top of master. Should have no coflicts
>
> --
> Andrei Gherzan
>
> On Wed, Mar 2, 2016 at 3:21 PM, Khem Raj <raj.khem@gmail.com> wrote:
>>
>> Andrei
>>
>> I see you merged few of patches from here
>> What is status of rest of series ?
>>
>> This series has been tested to work with Webkit and weston images
>> on Pi2
>>
>>
>>
>> On Sat, Feb 27, 2016 at 7:26 AM, Khem Raj <raj.khem@gmail.com> wrote:
>> > This patchset has been growing for a while, Adds recipes for kenrel 4.4
>> > and switches
>> > to use kernel 4.4
>> > Fixes userland to compile with clang
>> > Upgrade userland to latest
>> > Add option to support GPU_MEM_1024
>> > Upgrade firmware to latest
>> >
>> > Khem Raj (23):
>> > userland: Upgrade to latest git master
>> > userland: Fix build with clang compiler
>> > userland: Add wayland support
>> > weston: Enable rpi compositor backend
>> > rpi-gpio: Upgrade to 0.6.1 and fix build with clang
>> > eglinfo-x11,eglinfo-fb: Add EGLINFO_DEVICE via bbappends
>> > python-rtimu: Fix build with musl
>> > wiringPi: Fix build with musl
>> > Delete rpc flushing of thread in glEGLImageTargetTexture2DOES
>> > rpio: Include sys/types.h for caddr_t
>> > userland: Define PROJECT_APIVER and rprovide libgles2 libgl
>> > userland: Add wayland to deps if in DISTRO_FEATURES
>> > userland: Fix build race with wayland support
>> > gstreamer1.0-omx: Add raspberry pi optimization patches and config
>> > options
>> > weston: Specify egl and compositor options for rpi
>> > gstreamer1.0-omx: Backports and fixes for smooth video playback
>> > linux-raspberrypi: Upgrade 4.1 kernel to 4.1.17
>> > firmware: Upgrade to latest stable 20160209
>> > rpi-config: Upgrade to tip of tree to get GPU_MEM_1024
>> > linux-raspberrypi: Add recipe for 4.4 release
>> > userland: Upgrade to latest
>> > linux-raspberrypi: Upgrade 4.4.1 -> 4.4.2
>> > userland: Drop extern inline patches
>> >
>> > README | 2 +
>> > conf/machine/include/rpi-default-versions.inc | 2 +-
>> > recipes-bsp/bootfiles/bcm2835-bootfiles.bb | 2 +-
>> > recipes-bsp/bootfiles/rpi-config_git.bb | 5 +-
>> > recipes-bsp/common/firmware.inc | 4 +-
>> > ...0001-include-asm-ioctl.h-for-ioctl-define.patch | 33 +
>> > recipes-devtools/python/python-rtimu_git.bb | 4 +-
>> > .../rpi-gpio/0001-Remove-nested-functions.patch | 294 +++
>> > .../{rpi-gpio_0.5.11.bb => rpi-gpio_0.6.1.bb} | 6 +-
>> > ...-types.h-explicitly-for-getting-caddr_t-d.patch | 30 +
>> > recipes-devtools/python/rpio_0.10.0.bb | 6 +-
>> > ...de-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch | 58 +
>> > recipes-devtools/wiringPi/wiringpi_git.bb | 8 +-
>> > recipes-graphics/eglinfo/eglinfo-fb_%.bbappend | 1 +
>> > recipes-graphics/eglinfo/eglinfo-x11_%.bbappend | 1 +
>> > .../userland/0001-fix-gcc-5.x-inlines.patch | 26 -
>> > .../userland/userland/0002-fix-musl-build.patch | 22 -
>> > .../0002-set-VMCS_INSTALL_PREFIX-to-usr.patch | 7 +-
>> > ...make-generate-and-install-pkgconfig-files.patch | 24 +-
>> > .../0003-fix-alloc-size-uninitialized.patch | 13 -
>> > ...-applications-to-set-next-resource-handle.patch | 208 +++
>> > ...ayland-Add-support-for-the-Wayland-winsys.patch | 1880
>> > ++++++++++++++++++++
>> > .../0007-wayland-Add-Wayland-example.patch | 866 +++++++++
>> > ...-wayland-egl-Add-bcm_host-to-dependencies.patch | 28 +
>> > ...emove-faulty-assert-to-make-weston-happy-.patch | 29 +
>> > ...0-zero-out-wl-buffers-in-egl_surface_free.patch | 33 +
>> > ...011-initialize-front-back-wayland-buffers.patch | 34 +
>> > .../userland/userland/0012-Remove-RPC_FLUSH.patch | 27 +
>> > .../userland/0013-fix-cmake-dependency-race.patch | 78 +
>> > .../0014-Fix-enum-conversion-warnings.patch | 99 ++
>> > recipes-graphics/userland/userland_git.bb | 33 +-
>> > recipes-graphics/wayland/weston_%.bbappend | 4 +
>> > recipes-graphics/weston/weston_%.bbappend | 7 +
>> > recipes-kernel/linux/linux-raspberrypi_4.1.bb | 4 +-
>> > ...raspberrypi_4.1.bb => linux-raspberrypi_4.4.bb} | 6 +-
>> > .../gstreamer1.0-omx/0001-config-files-path.patch | 137 ++
>> > ...o-acquire-buffer-when-src-pad-isn-t-activ.patch | 47 +
>> > .../0003-fix-decoder-flushing.patch | 15 +
>> > .../0003-no-timeout-on-get-state.patch | 16 +
>> > ...erly-handle-drain-requests-while-flushing.patch | 69 +
>> > ...-gst_omx_video_dec_set_format-if-there-s-.patch | 30 +
>> > .../gstreamer/gstreamer1.0-omx_%.bbappend | 22 +
>> > 42 files changed, 4114 insertions(+), 106 deletions(-)
>> > create mode 100644
>> > recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch
>> > create mode 100644
>> > recipes-devtools/python/rpi-gpio/0001-Remove-nested-functions.patch
>> > rename recipes-devtools/python/{rpi-gpio_0.5.11.bb =>
>> > rpi-gpio_0.6.1.bb} (70%)
>> > create mode 100644
>> > recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch
>> > create mode 100644
>> > recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch
>> > create mode 100644 recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
>> > create mode 100644 recipes-graphics/eglinfo/eglinfo-x11_%.bbappend
>> > delete mode 100644
>> > recipes-graphics/userland/userland/0001-fix-gcc-5.x-inlines.patch
>> > delete mode 100644
>> > recipes-graphics/userland/userland/0002-fix-musl-build.patch
>> > delete mode 100644
>> > recipes-graphics/userland/userland/0003-fix-alloc-size-uninitialized.patch
>> > create mode 100644
>> > recipes-graphics/userland/userland/0005-Allow-applications-to-set-next-resource-handle.patch
>> > create mode 100644
>> > recipes-graphics/userland/userland/0006-wayland-Add-support-for-the-Wayland-winsys.patch
>> > create mode 100644
>> > recipes-graphics/userland/userland/0007-wayland-Add-Wayland-example.patch
>> > create mode 100644
>> > recipes-graphics/userland/userland/0008-wayland-egl-Add-bcm_host-to-dependencies.patch
>> > create mode 100644
>> > recipes-graphics/userland/userland/0009-interface-remove-faulty-assert-to-make-weston-happy-.patch
>> > create mode 100644
>> > recipes-graphics/userland/userland/0010-zero-out-wl-buffers-in-egl_surface_free.patch
>> > create mode 100644
>> > recipes-graphics/userland/userland/0011-initialize-front-back-wayland-buffers.patch
>> > create mode 100644
>> > recipes-graphics/userland/userland/0012-Remove-RPC_FLUSH.patch
>> > create mode 100644
>> > recipes-graphics/userland/userland/0013-fix-cmake-dependency-race.patch
>> > create mode 100644
>> > recipes-graphics/userland/userland/0014-Fix-enum-conversion-warnings.patch
>> > create mode 100644 recipes-graphics/wayland/weston_%.bbappend
>> > create mode 100644 recipes-graphics/weston/weston_%.bbappend
>> > copy recipes-kernel/linux/{linux-raspberrypi_4.1.bb =>
>> > linux-raspberrypi_4.4.bb} (50%)
>> > create mode 100644
>> > recipes-multimedia/gstreamer/gstreamer1.0-omx/0001-config-files-path.patch
>> > create mode 100644
>> > recipes-multimedia/gstreamer/gstreamer1.0-omx/0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch
>> > create mode 100644
>> > recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-fix-decoder-flushing.patch
>> > create mode 100644
>> > recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-no-timeout-on-get-state.patch
>> > create mode 100644
>> > recipes-multimedia/gstreamer/gstreamer1.0-omx/0004-Properly-handle-drain-requests-while-flushing.patch
>> > create mode 100644
>> > recipes-multimedia/gstreamer/gstreamer1.0-omx/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch
>> > create mode 100644
>> > recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend
>> >
>> > --
>> > 1.9.1
>> >
>> --
>> _______________________________________________
>> yocto mailing list
>> yocto@yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/yocto
>
>
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes
2016-03-02 16:34 ` Khem Raj
@ 2016-03-09 23:51 ` Khem Raj
2016-03-10 14:20 ` Andrei Gherzan
1 sibling, 0 replies; 36+ messages in thread
From: Khem Raj @ 2016-03-09 23:51 UTC (permalink / raw)
To: Andrei Gherzan; +Cc: yocto@yoctoproject.org
ping^2
On Wed, Mar 2, 2016 at 11:34 PM, Khem Raj <raj.khem@gmail.com> wrote:
> On Wed, Mar 2, 2016 at 7:47 AM, Andrei Gherzan <andrei@gherzan.ro> wrote:
>> Hi Khen,
>>
>> I started to merge the ones that were obvious. The rest need rebasing,
>> conflict fixing and so on. And then I test them locally. So it will take a
>> while. But I'll merge as I test. So you can easily see the progress.
>
> You can use kraj/master branch from
>
> https://github.com/kraj/meta-raspberrypi/tree/kraj/master
>
> This is fully rebased on top of master. Should have no coflicts
>
>>
>> --
>> Andrei Gherzan
>>
>> On Wed, Mar 2, 2016 at 3:21 PM, Khem Raj <raj.khem@gmail.com> wrote:
>>>
>>> Andrei
>>>
>>> I see you merged few of patches from here
>>> What is status of rest of series ?
>>>
>>> This series has been tested to work with Webkit and weston images
>>> on Pi2
>>>
>>>
>>>
>>> On Sat, Feb 27, 2016 at 7:26 AM, Khem Raj <raj.khem@gmail.com> wrote:
>>> > This patchset has been growing for a while, Adds recipes for kenrel 4.4
>>> > and switches
>>> > to use kernel 4.4
>>> > Fixes userland to compile with clang
>>> > Upgrade userland to latest
>>> > Add option to support GPU_MEM_1024
>>> > Upgrade firmware to latest
>>> >
>>> > Khem Raj (23):
>>> > userland: Upgrade to latest git master
>>> > userland: Fix build with clang compiler
>>> > userland: Add wayland support
>>> > weston: Enable rpi compositor backend
>>> > rpi-gpio: Upgrade to 0.6.1 and fix build with clang
>>> > eglinfo-x11,eglinfo-fb: Add EGLINFO_DEVICE via bbappends
>>> > python-rtimu: Fix build with musl
>>> > wiringPi: Fix build with musl
>>> > Delete rpc flushing of thread in glEGLImageTargetTexture2DOES
>>> > rpio: Include sys/types.h for caddr_t
>>> > userland: Define PROJECT_APIVER and rprovide libgles2 libgl
>>> > userland: Add wayland to deps if in DISTRO_FEATURES
>>> > userland: Fix build race with wayland support
>>> > gstreamer1.0-omx: Add raspberry pi optimization patches and config
>>> > options
>>> > weston: Specify egl and compositor options for rpi
>>> > gstreamer1.0-omx: Backports and fixes for smooth video playback
>>> > linux-raspberrypi: Upgrade 4.1 kernel to 4.1.17
>>> > firmware: Upgrade to latest stable 20160209
>>> > rpi-config: Upgrade to tip of tree to get GPU_MEM_1024
>>> > linux-raspberrypi: Add recipe for 4.4 release
>>> > userland: Upgrade to latest
>>> > linux-raspberrypi: Upgrade 4.4.1 -> 4.4.2
>>> > userland: Drop extern inline patches
>>> >
>>> > README | 2 +
>>> > conf/machine/include/rpi-default-versions.inc | 2 +-
>>> > recipes-bsp/bootfiles/bcm2835-bootfiles.bb | 2 +-
>>> > recipes-bsp/bootfiles/rpi-config_git.bb | 5 +-
>>> > recipes-bsp/common/firmware.inc | 4 +-
>>> > ...0001-include-asm-ioctl.h-for-ioctl-define.patch | 33 +
>>> > recipes-devtools/python/python-rtimu_git.bb | 4 +-
>>> > .../rpi-gpio/0001-Remove-nested-functions.patch | 294 +++
>>> > .../{rpi-gpio_0.5.11.bb => rpi-gpio_0.6.1.bb} | 6 +-
>>> > ...-types.h-explicitly-for-getting-caddr_t-d.patch | 30 +
>>> > recipes-devtools/python/rpio_0.10.0.bb | 6 +-
>>> > ...de-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch | 58 +
>>> > recipes-devtools/wiringPi/wiringpi_git.bb | 8 +-
>>> > recipes-graphics/eglinfo/eglinfo-fb_%.bbappend | 1 +
>>> > recipes-graphics/eglinfo/eglinfo-x11_%.bbappend | 1 +
>>> > .../userland/0001-fix-gcc-5.x-inlines.patch | 26 -
>>> > .../userland/userland/0002-fix-musl-build.patch | 22 -
>>> > .../0002-set-VMCS_INSTALL_PREFIX-to-usr.patch | 7 +-
>>> > ...make-generate-and-install-pkgconfig-files.patch | 24 +-
>>> > .../0003-fix-alloc-size-uninitialized.patch | 13 -
>>> > ...-applications-to-set-next-resource-handle.patch | 208 +++
>>> > ...ayland-Add-support-for-the-Wayland-winsys.patch | 1880
>>> > ++++++++++++++++++++
>>> > .../0007-wayland-Add-Wayland-example.patch | 866 +++++++++
>>> > ...-wayland-egl-Add-bcm_host-to-dependencies.patch | 28 +
>>> > ...emove-faulty-assert-to-make-weston-happy-.patch | 29 +
>>> > ...0-zero-out-wl-buffers-in-egl_surface_free.patch | 33 +
>>> > ...011-initialize-front-back-wayland-buffers.patch | 34 +
>>> > .../userland/userland/0012-Remove-RPC_FLUSH.patch | 27 +
>>> > .../userland/0013-fix-cmake-dependency-race.patch | 78 +
>>> > .../0014-Fix-enum-conversion-warnings.patch | 99 ++
>>> > recipes-graphics/userland/userland_git.bb | 33 +-
>>> > recipes-graphics/wayland/weston_%.bbappend | 4 +
>>> > recipes-graphics/weston/weston_%.bbappend | 7 +
>>> > recipes-kernel/linux/linux-raspberrypi_4.1.bb | 4 +-
>>> > ...raspberrypi_4.1.bb => linux-raspberrypi_4.4.bb} | 6 +-
>>> > .../gstreamer1.0-omx/0001-config-files-path.patch | 137 ++
>>> > ...o-acquire-buffer-when-src-pad-isn-t-activ.patch | 47 +
>>> > .../0003-fix-decoder-flushing.patch | 15 +
>>> > .../0003-no-timeout-on-get-state.patch | 16 +
>>> > ...erly-handle-drain-requests-while-flushing.patch | 69 +
>>> > ...-gst_omx_video_dec_set_format-if-there-s-.patch | 30 +
>>> > .../gstreamer/gstreamer1.0-omx_%.bbappend | 22 +
>>> > 42 files changed, 4114 insertions(+), 106 deletions(-)
>>> > create mode 100644
>>> > recipes-devtools/python/python-rtimu/0001-include-asm-ioctl.h-for-ioctl-define.patch
>>> > create mode 100644
>>> > recipes-devtools/python/rpi-gpio/0001-Remove-nested-functions.patch
>>> > rename recipes-devtools/python/{rpi-gpio_0.5.11.bb =>
>>> > rpi-gpio_0.6.1.bb} (70%)
>>> > create mode 100644
>>> > recipes-devtools/python/rpio/0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch
>>> > create mode 100644
>>> > recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch
>>> > create mode 100644 recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
>>> > create mode 100644 recipes-graphics/eglinfo/eglinfo-x11_%.bbappend
>>> > delete mode 100644
>>> > recipes-graphics/userland/userland/0001-fix-gcc-5.x-inlines.patch
>>> > delete mode 100644
>>> > recipes-graphics/userland/userland/0002-fix-musl-build.patch
>>> > delete mode 100644
>>> > recipes-graphics/userland/userland/0003-fix-alloc-size-uninitialized.patch
>>> > create mode 100644
>>> > recipes-graphics/userland/userland/0005-Allow-applications-to-set-next-resource-handle.patch
>>> > create mode 100644
>>> > recipes-graphics/userland/userland/0006-wayland-Add-support-for-the-Wayland-winsys.patch
>>> > create mode 100644
>>> > recipes-graphics/userland/userland/0007-wayland-Add-Wayland-example.patch
>>> > create mode 100644
>>> > recipes-graphics/userland/userland/0008-wayland-egl-Add-bcm_host-to-dependencies.patch
>>> > create mode 100644
>>> > recipes-graphics/userland/userland/0009-interface-remove-faulty-assert-to-make-weston-happy-.patch
>>> > create mode 100644
>>> > recipes-graphics/userland/userland/0010-zero-out-wl-buffers-in-egl_surface_free.patch
>>> > create mode 100644
>>> > recipes-graphics/userland/userland/0011-initialize-front-back-wayland-buffers.patch
>>> > create mode 100644
>>> > recipes-graphics/userland/userland/0012-Remove-RPC_FLUSH.patch
>>> > create mode 100644
>>> > recipes-graphics/userland/userland/0013-fix-cmake-dependency-race.patch
>>> > create mode 100644
>>> > recipes-graphics/userland/userland/0014-Fix-enum-conversion-warnings.patch
>>> > create mode 100644 recipes-graphics/wayland/weston_%.bbappend
>>> > create mode 100644 recipes-graphics/weston/weston_%.bbappend
>>> > copy recipes-kernel/linux/{linux-raspberrypi_4.1.bb =>
>>> > linux-raspberrypi_4.4.bb} (50%)
>>> > create mode 100644
>>> > recipes-multimedia/gstreamer/gstreamer1.0-omx/0001-config-files-path.patch
>>> > create mode 100644
>>> > recipes-multimedia/gstreamer/gstreamer1.0-omx/0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch
>>> > create mode 100644
>>> > recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-fix-decoder-flushing.patch
>>> > create mode 100644
>>> > recipes-multimedia/gstreamer/gstreamer1.0-omx/0003-no-timeout-on-get-state.patch
>>> > create mode 100644
>>> > recipes-multimedia/gstreamer/gstreamer1.0-omx/0004-Properly-handle-drain-requests-while-flushing.patch
>>> > create mode 100644
>>> > recipes-multimedia/gstreamer/gstreamer1.0-omx/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch
>>> > create mode 100644
>>> > recipes-multimedia/gstreamer/gstreamer1.0-omx_%.bbappend
>>> >
>>> > --
>>> > 1.9.1
>>> >
>>> --
>>> _______________________________________________
>>> yocto mailing list
>>> yocto@yoctoproject.org
>>> https://lists.yoctoproject.org/listinfo/yocto
>>
>>
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [meta-raspberrypi][PATCH 18/23] firmware: Upgrade to latest stable 20160209
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 18/23] firmware: Upgrade to latest stable 20160209 Khem Raj
@ 2016-03-10 14:10 ` Andrei Gherzan
0 siblings, 0 replies; 36+ messages in thread
From: Andrei Gherzan @ 2016-03-10 14:10 UTC (permalink / raw)
To: Khem Raj; +Cc: yocto
On Sat, Feb 27, 2016 at 03:26:57PM +0000, Khem Raj wrote:
> Readme change a bit thats why LIC_FILES_CHKSUM changed
>
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
> recipes-bsp/bootfiles/bcm2835-bootfiles.bb | 2 +-
> recipes-bsp/common/firmware.inc | 4 ++--
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/recipes-bsp/bootfiles/bcm2835-bootfiles.bb b/recipes-bsp/bootfiles/bcm2835-bootfiles.bb
> index 0665944..b279e15 100644
> --- a/recipes-bsp/bootfiles/bcm2835-bootfiles.bb
> +++ b/recipes-bsp/bootfiles/bcm2835-bootfiles.bb
> @@ -1,7 +1,7 @@
> DESCRIPTION = "Closed source binary files to help boot the ARM on the BCM2835."
> LICENSE = "Proprietary"
>
> -LIC_FILES_CHKSUM = "file://LICENCE.broadcom;md5=e86e693d19572ee64cc8b17fb062faa9"
> +LIC_FILES_CHKSUM = "file://LICENCE.broadcom;md5=4a4d169737c0786fb9482bb6d30401d1"
>
> inherit deploy
>
> diff --git a/recipes-bsp/common/firmware.inc b/recipes-bsp/common/firmware.inc
> index 020f0ed..2e0864e 100644
> --- a/recipes-bsp/common/firmware.inc
> +++ b/recipes-bsp/common/firmware.inc
> @@ -1,5 +1,5 @@
> -RPIFW_SRCREV ?= "f7108cfdc715f79c5fd051fb4c3ae6f4b1b01f23"
> -RPIFW_DATE ?= "20151021"
> +RPIFW_SRCREV ?= "3442862c10fab68c2e88d660d2e69c143bb1f00c"
> +RPIFW_DATE ?= "20160209"
> RPIFW_SRC_URI ?= "git://github.com/raspberrypi/firmware.git;protocol=git;branch=master"
> RPIFW_S ?= "${WORKDIR}/git"
>
> --
> 1.9.1
>
> --
> _______________________________________________
> yocto mailing list
> yocto@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
Dropped as rpi3 patch set updated firmware to a newer version. Thanks.
--
Andrei Gherzan
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [meta-raspberrypi][PATCH 20/23] linux-raspberrypi: Add recipe for 4.4 release
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 20/23] linux-raspberrypi: Add recipe for 4.4 release Khem Raj
@ 2016-03-10 14:17 ` Andrei Gherzan
0 siblings, 0 replies; 36+ messages in thread
From: Andrei Gherzan @ 2016-03-10 14:17 UTC (permalink / raw)
To: Khem Raj; +Cc: yocto
On Sat, Feb 27, 2016 at 03:26:59PM +0000, Khem Raj wrote:
> Make it default kernel as well
>
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
> conf/machine/include/rpi-default-versions.inc | 2 +-
> recipes-kernel/linux/linux-raspberrypi_4.4.bb | 6 ++++++
> 2 files changed, 7 insertions(+), 1 deletion(-)
> create mode 100644 recipes-kernel/linux/linux-raspberrypi_4.4.bb
>
> diff --git a/conf/machine/include/rpi-default-versions.inc b/conf/machine/include/rpi-default-versions.inc
> index c879dde..e65a4ae 100644
> --- a/conf/machine/include/rpi-default-versions.inc
> +++ b/conf/machine/include/rpi-default-versions.inc
> @@ -1,3 +1,3 @@
> # RaspberryPi BSP default versions
>
> -PREFERRED_VERSION_linux-raspberrypi ?= "4.1.%"
> +PREFERRED_VERSION_linux-raspberrypi ?= "4.4.%"
4.4 branch is not yet default branch in upstream so I will not yet set it.
> diff --git a/recipes-kernel/linux/linux-raspberrypi_4.4.bb b/recipes-kernel/linux/linux-raspberrypi_4.4.bb
> new file mode 100644
> index 0000000..47084e4
> --- /dev/null
> +++ b/recipes-kernel/linux/linux-raspberrypi_4.4.bb
> @@ -0,0 +1,6 @@
> +LINUX_VERSION ?= "4.4.1"
> +
> +SRCREV = "52d3149aba3c684db1b6c739ca794dc330d92929"
> +SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=rpi-4.4.y"
> +
> +require linux-raspberrypi.inc
> --
> 1.9.1
>
> --
> _______________________________________________
> yocto mailing list
> yocto@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
--
Andrei Gherzan
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes
2016-03-02 16:34 ` Khem Raj
2016-03-09 23:51 ` Khem Raj
@ 2016-03-10 14:20 ` Andrei Gherzan
1 sibling, 0 replies; 36+ messages in thread
From: Andrei Gherzan @ 2016-03-10 14:20 UTC (permalink / raw)
To: Khem Raj; +Cc: yocto@yoctoproject.org
On Wed, Mar 02, 2016 at 08:34:06AM -0800, Khem Raj wrote:
> On Wed, Mar 2, 2016 at 7:47 AM, Andrei Gherzan <andrei@gherzan.ro> wrote:
> > Hi Khen,
> >
> > I started to merge the ones that were obvious. The rest need rebasing,
> > conflict fixing and so on. And then I test them locally. So it will take a
> > while. But I'll merge as I test. So you can easily see the progress.
>
> You can use kraj/master branch from
>
> https://github.com/kraj/meta-raspberrypi/tree/kraj/master
>
> This is fully rebased on top of master. Should have no coflicts
>
Thank you Khem. I merged the patches to master.
--
Andrei Gherzan
^ permalink raw reply [flat|nested] 36+ messages in thread
end of thread, other threads:[~2016-03-10 14:20 UTC | newest]
Thread overview: 36+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-27 15:26 [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 01/23] userland: Upgrade to latest git master Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 02/23] userland: Fix build with clang compiler Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 03/23] userland: Add wayland support Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 04/23] weston: Enable rpi compositor backend Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 05/23] rpi-gpio: Upgrade to 0.6.1 and fix build with clang Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 06/23] eglinfo-x11, eglinfo-fb: Add EGLINFO_DEVICE via bbappends Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 07/23] python-rtimu: Fix build with musl Khem Raj
2016-02-29 21:21 ` Andrei Gherzan
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 08/23] wiringPi: " Khem Raj
2016-02-29 21:20 ` Andrei Gherzan
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 09/23] Delete rpc flushing of thread in glEGLImageTargetTexture2DOES Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 10/23] rpio: Include sys/types.h for caddr_t Khem Raj
2016-02-29 21:21 ` Andrei Gherzan
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 11/23] userland: Define PROJECT_APIVER and rprovide libgles2 libgl Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 12/23] userland: Add wayland to deps if in DISTRO_FEATURES Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 13/23] userland: Fix build race with wayland support Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 14/23] gstreamer1.0-omx: Add raspberry pi optimization patches and config options Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 15/23] weston: Specify egl and compositor options for rpi Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 16/23] gstreamer1.0-omx: Backports and fixes for smooth video playback Khem Raj
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 17/23] linux-raspberrypi: Upgrade 4.1 kernel to 4.1.17 Khem Raj
2016-02-29 21:18 ` Andrei Gherzan
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 18/23] firmware: Upgrade to latest stable 20160209 Khem Raj
2016-03-10 14:10 ` Andrei Gherzan
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 19/23] rpi-config: Upgrade to tip of tree to get GPU_MEM_1024 Khem Raj
2016-02-29 21:19 ` Andrei Gherzan
2016-02-27 15:26 ` [meta-raspberrypi][PATCH 20/23] linux-raspberrypi: Add recipe for 4.4 release Khem Raj
2016-03-10 14:17 ` Andrei Gherzan
2016-02-27 15:27 ` [meta-raspberrypi][PATCH 21/23] userland: Upgrade to latest Khem Raj
2016-02-27 15:27 ` [meta-raspberrypi][PATCH 22/23] linux-raspberrypi: Upgrade 4.4.1 -> 4.4.2 Khem Raj
2016-02-27 15:27 ` [meta-raspberrypi][PATCH 23/23] userland: Drop extern inline patches Khem Raj
2016-03-02 14:21 ` [meta-raspberrypi][PATCH 00/23] Kernel/userland upgrade wayland support and clang fixes Khem Raj
2016-03-02 15:47 ` Andrei Gherzan
2016-03-02 16:34 ` Khem Raj
2016-03-09 23:51 ` Khem Raj
2016-03-10 14:20 ` Andrei Gherzan
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.