userland: Update to latest master

Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Khem Raj 2018-11-20 23:43:41 -08:00 committed by Andrei Gherzan
parent 981376b1c4
commit 7c94afee2b
19 changed files with 345 additions and 305 deletions

View File

@ -1,7 +1,7 @@
From 0a64dc61d3d7db69389157ae757203b4b3afdbfa Mon Sep 17 00:00:00 2001
From 08d56c1174e27573ae8df2a7b9e6632afd0bfe86 Mon Sep 17 00:00:00 2001
From: Dom Cobley <dc4@broadcom.com>
Date: Tue, 9 Jul 2013 09:26:26 -0400
Subject: [PATCH 01/16] Allow applications to set next resource handle
Subject: [PATCH 01/18] Allow applications to set next resource handle
This patch adds provisions in userland to
let apps callers set the next rendereing dispmanx resource.
@ -9,10 +9,10 @@ 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.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 +++--
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
@ -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.16.1
2.19.1

View File

@ -1,7 +1,7 @@
From 5608ec8002be8370e78c9dbb1e07cee4cfb18b58 Mon Sep 17 00:00:00 2001
From da60a2a34a48e2b324fceae608964814488cc8fb 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 02/16] wayland: Add support for the Wayland winsys
Subject: [PATCH 02/18] wayland: Add support for the Wayland winsys
* Adds EGL_WL_bind_wayland_display extension
* Adds wayland-egl library
@ -16,38 +16,40 @@ 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
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
.gitignore | 1 +
CMakeLists.txt | 11 +
README.md | 4 +
buildme | 10 +-
.../linux/apps/raspicam/CMakeLists.txt | 2 +-
interface/khronos/CMakeLists.txt | 53 ++++-
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 ++++++
30 files changed, 1257 insertions(+), 98 deletions(-)
.gitignore | 1 +
CMakeLists.txt | 11 +
README.md | 4 +
buildme | 10 +-
.../linux/apps/raspicam/CMakeLists.txt | 2 +-
interface/khronos/CMakeLists.txt | 54 +++-
interface/khronos/common/khrn_client.c | 15 ++
interface/khronos/common/khrn_client.h | 10 +
interface/khronos/common/khrn_client_mangle.h | 3 +
.../khronos/common/khrn_client_platform.h | 8 +
.../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 ++
.../khronos/wayland-egl/wayland-egl-priv.h | 53 ++++
interface/khronos/wayland-egl/wayland-egl.c | 59 +++++
.../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 +++++
30 files changed, 1257 insertions(+), 99 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
@ -57,20 +59,20 @@ vc_vchi_dispmanx.h
create mode 100644 interface/wayland/dispmanx.xml
create mode 100644 makefiles/cmake/Wayland.cmake
Index: git/.gitignore
===================================================================
--- git.orig/.gitignore
+++ git/.gitignore
diff --git a/.gitignore b/.gitignore
index 63570f1..1459436 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,4 @@ build/
*.pts
*.ppm
*.mkv
+*~
Index: git/CMakeLists.txt
===================================================================
--- git.orig/CMakeLists.txt
+++ git/CMakeLists.txt
@@ -24,6 +24,17 @@ include(makefiles/cmake/global_settings.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cfc8ae5..673a5ad 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,6 +24,17 @@ include(makefiles/cmake/global_settings.cmake)
include(makefiles/cmake/arm-linux.cmake)
include(makefiles/cmake/vmcs.cmake)
@ -88,11 +90,11 @@ Index: git/CMakeLists.txt
enable_language(ASM)
# Global include paths
Index: git/README.md
===================================================================
--- git.orig/README.md
+++ git/README.md
@@ -6,3 +6,7 @@ Use buildme to build. It requires cmake
diff --git a/README.md b/README.md
index 94b93b8..50b90b1 100644
--- a/README.md
+++ b/README.md
@@ -6,3 +6,7 @@ Use buildme to build. It requires cmake to be installed and an arm cross compile
https://github.com/raspberrypi/tools/tree/master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian
Note that this repository does not contain the source for the edid_parser and vcdbg binaries due to licensing restrictions.
@ -100,10 +102,10 @@ Index: git/README.md
+To build support for the Wayland winsys in EGL, execute the buildme script like this:
+
+$ BUILD_WAYLAND=1 ./buildme.
Index: git/buildme
===================================================================
--- git.orig/buildme
+++ git/buildme
diff --git a/buildme b/buildme
index b8fd440..a780bb6 100755
--- a/buildme
+++ b/buildme
@@ -8,6 +8,10 @@ fi
BUILDSUBDIR=`echo $BUILDTYPE | tr '[A-Z]' '[a-z]'`;
@ -130,23 +132,23 @@ Index: git/buildme
make -j `nproc`
if [ "$1" != "" ]; then
Index: git/host_applications/linux/apps/raspicam/CMakeLists.txt
===================================================================
--- git.orig/host_applications/linux/apps/raspicam/CMakeLists.txt
+++ git/host_applications/linux/apps/raspicam/CMakeLists.txt
@@ -28,7 +28,7 @@ add_executable(raspividyuv ${COMMON_SOU
diff --git a/host_applications/linux/apps/raspicam/CMakeLists.txt b/host_applications/linux/apps/raspicam/CMakeLists.txt
index 42636e8..d47ad55 100644
--- a/host_applications/linux/apps/raspicam/CMakeLists.txt
+++ b/host_applications/linux/apps/raspicam/CMakeLists.txt
@@ -33,7 +33,7 @@ add_executable(raspividyuv ${COMMON_SOURCES} RaspiVidYUV.c)
set (MMAL_LIBS mmal_core mmal_util mmal_vc_client)
-target_link_libraries(raspistill ${MMAL_LIBS} vcos bcm_host brcmGLESv2 brcmEGL m)
+target_link_libraries(raspistill ${MMAL_LIBS} vcos bcm_host brcmGLESv2 brcmEGL m ${WAYLAND_SERVER_LIBRARIES} ${WAYLAND_CLIENT_LIBRARIES})
-target_link_libraries(raspistill ${MMAL_LIBS} vcos bcm_host brcmGLESv2 brcmEGL m dl)
+target_link_libraries(raspistill ${MMAL_LIBS} vcos bcm_host brcmGLESv2 brcmEGL m dl ${WAYLAND_SERVER_LIBRARIES} ${WAYLAND_CLIENT_LIBRARIES})
target_link_libraries(raspiyuv ${MMAL_LIBS} vcos bcm_host)
target_link_libraries(raspivid ${MMAL_LIBS} vcos bcm_host)
target_link_libraries(raspividyuv ${MMAL_LIBS} vcos bcm_host)
Index: git/interface/khronos/CMakeLists.txt
===================================================================
--- git.orig/interface/khronos/CMakeLists.txt
+++ git/interface/khronos/CMakeLists.txt
diff --git a/interface/khronos/CMakeLists.txt b/interface/khronos/CMakeLists.txt
index 9ad615b..95c0e11 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.
@ -216,7 +218,7 @@ Index: git/interface/khronos/CMakeLists.txt
# 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})
@@ -72,8 +121,7 @@ include_directories (../../host_applicat
@@ -72,8 +121,7 @@ include_directories (../../host_applications/linux/libs/sm )
set(VCSM_LIBS vcsm)
add_definitions(-DKHRONOS_HAVE_VCSM)
endif()
@ -226,7 +228,7 @@ Index: git/interface/khronos/CMakeLists.txt
target_link_libraries(GLESv2 EGL khrn_client vcos)
target_link_libraries(WFC EGL)
target_link_libraries(OpenVG EGL)
@@ -87,7 +135,7 @@ add_library(brcmGLESv2 ${SHARED} ${GLES_
@@ -87,7 +135,7 @@ add_library(brcmGLESv2 ${SHARED} ${GLES_SOURCE})
add_library(brcmOpenVG ${SHARED} ${VG_SOURCE})
add_library(brcmWFC ${SHARED} ${WFC_SOURCE})
@ -235,11 +237,11 @@ Index: git/interface/khronos/CMakeLists.txt
target_link_libraries(brcmGLESv2 brcmEGL khrn_client vcos)
target_link_libraries(brcmWFC brcmEGL)
target_link_libraries(brcmOpenVG brcmEGL)
Index: git/interface/khronos/common/khrn_client.c
===================================================================
--- git.orig/interface/khronos/common/khrn_client.c
+++ git/interface/khronos/common/khrn_client.c
@@ -54,6 +54,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
diff --git a/interface/khronos/common/khrn_client.c b/interface/khronos/common/khrn_client.c
index ef4babd..d7e798e 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
@ -250,7 +252,7 @@ Index: git/interface/khronos/common/khrn_client.c
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_PRO
@@ -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) {
@ -261,7 +263,7 @@ Index: git/interface/khronos/common/khrn_client.c
if (!khrn_pointer_map_init(&process->contexts, 64))
return false;
@@ -194,6 +202,13 @@ bool client_process_state_init(CLIENT_PR
@@ -194,6 +202,13 @@ bool client_process_state_init(CLIENT_PROCESS_STATE_T *process)
}
#endif
@ -275,10 +277,10 @@ Index: git/interface/khronos/common/khrn_client.c
process->inited = true;
}
Index: git/interface/khronos/common/khrn_client.h
===================================================================
--- git.orig/interface/khronos/common/khrn_client.h
+++ git/interface/khronos/common/khrn_client.h
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;
@ -296,11 +298,11 @@ Index: git/interface/khronos/common/khrn_client.h
};
extern bool client_process_state_init(CLIENT_PROCESS_STATE_T *process);
Index: git/interface/khronos/common/khrn_client_mangle.h
===================================================================
--- git.orig/interface/khronos/common/khrn_client_mangle.h
+++ git/interface/khronos/common/khrn_client_mangle.h
@@ -83,6 +83,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
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
@ -310,11 +312,11 @@ Index: git/interface/khronos/common/khrn_client_mangle.h
/* OpenGL ES 1.1 and 2.0 functions */
Index: git/interface/khronos/common/khrn_client_platform.h
===================================================================
--- git.orig/interface/khronos/common/khrn_client_platform.h
+++ git/interface/khronos/common/khrn_client_platform.h
@@ -48,6 +48,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
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
@ -334,11 +336,11 @@ Index: git/interface/khronos/common/khrn_client_platform.h
+#endif
+
#endif // KHRN_CLIENT_PLATFORM_H
Index: git/interface/khronos/common/khrn_client_unmangle.h
===================================================================
--- git.orig/interface/khronos/common/khrn_client_unmangle.h
+++ git/interface/khronos/common/khrn_client_unmangle.h
@@ -83,6 +83,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
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
@ -348,11 +350,11 @@ Index: git/interface/khronos/common/khrn_client_unmangle.h
/* OpenGL ES 1.1 and 2.0 functions */
Index: git/interface/khronos/common/linux/khrn_client_platform_linux.c
===================================================================
--- git.orig/interface/khronos/common/linux/khrn_client_platform_linux.c
+++ git/interface/khronos/common/linux/khrn_client_platform_linux.c
@@ -37,6 +37,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
diff --git a/interface/khronos/common/linux/khrn_client_platform_linux.c b/interface/khronos/common/linux/khrn_client_platform_linux.c
index 710d20f..50d60a6 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
@ -364,7 +366,7 @@ Index: git/interface/khronos/common/linux/khrn_client_platform_linux.c
extern VCOS_LOG_CAT_T khrn_client_log;
extern void vc_vchi_khronos_init();
@@ -464,14 +469,37 @@ EGLDisplay khrn_platform_set_display_id(
@@ -464,13 +469,36 @@ EGLDisplay khrn_platform_set_display_id(EGLNativeDisplayType display_id)
return EGL_NO_DISPLAY;
}
#else
@ -392,19 +394,18 @@ Index: git/interface/khronos/common/linux/khrn_client_platform_linux.c
+#endif
+ return EGL_NO_DISPLAY;
+ }
+}
}
+
+#ifdef BUILD_WAYLAND
+struct wl_display *khrn_platform_get_wl_display()
+{
+ return hacky_display;
}
#endif
+}
+#endif
#endif
#ifdef WANT_X
static void dump_hierarchy(Window w, Window thisw, Window look, int level)
@@ -805,22 +833,81 @@ static EGL_DISPMANX_WINDOW_T *check_defa
@@ -805,22 +833,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)
{
@ -435,8 +436,8 @@ Index: git/interface/khronos/common/linux/khrn_client_platform_linux.c
+#ifdef BUILD_WAYLAND
+ }
+#endif
+}
+
}
+#ifdef BUILD_WAYLAND
+static DISPMANX_ELEMENT_HANDLE_T create_dummy_element()
+{
@ -467,9 +468,9 @@ Index: git/interface/khronos/common/linux/khrn_client_platform_linux.c
+ 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);
@ -498,10 +499,11 @@ Index: git/interface/khronos/common/linux/khrn_client_platform_linux.c
}
#endif
Index: git/interface/khronos/common/linux/khrn_wayland.c
===================================================================
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
+++ git/interface/khronos/common/linux/khrn_wayland.c
+++ b/interface/khronos/common/linux/khrn_wayland.c
@@ -0,0 +1,215 @@
+/*
+Copyright (c) 2013, Raspberry Pi Foundation
@ -718,72 +720,74 @@ Index: git/interface/khronos/common/linux/khrn_wayland.c
+
+ return wl_dispmanx_client_buffer;
+}
Index: git/interface/vmcs_host/vc_vchi_dispmanx.h
===================================================================
--- git.orig/interface/vmcs_host/vc_vchi_dispmanx.h
+++ git/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
Index: git/interface/khronos/common/linux/khrn_wayland.h
===================================================================
--- /dev/null
+++ git/interface/khronos/common/linux/khrn_wayland.h
@@ -0,0 +1,33 @@
+/*
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
+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.
+*/
+
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);
Index: git/interface/khronos/egl/egl_client.c
===================================================================
--- git.orig/interface/khronos/egl/egl_client.c
+++ git/interface/khronos/egl/egl_client.c
diff --git a/interface/khronos/egl/egl_client.c b/interface/khronos/egl/egl_client.c
index b8bb374..03fe67b 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>
@ -795,7 +799,7 @@ Index: git/interface/khronos/egl/egl_client.c
#include "interface/khronos/egl/egl_client_cr.c"
@@ -162,17 +166,6 @@ static void egl_current_release(CLIENT_P
@@ -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);
@ -813,17 +817,17 @@ Index: git/interface/khronos/egl/egl_client.c
/*
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 * eglQuery
@@ -450,6 +443,9 @@ EGLAPI const char EGLAPIENTRY * eglQueryString(EGLDisplay dpy, EGLint name)
#ifdef EGL_KHR_fence_sync
"EGL_KHR_fence_sync "
#endif
#endif
+#endif
+#if EGL_WL_bind_wayland_display
+ "EGL_WL_bind_wayland_display "
+#endif
#endif
;
break;
case EGL_VENDOR:
@@ -655,8 +651,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreateW
@@ -655,8 +651,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig c
false,
EGL_NO_TEXTURE,
EGL_NO_TEXTURE,
@ -833,7 +837,7 @@ Index: git/interface/khronos/egl/egl_client.c
if (surface) {
if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
@@ -901,7 +896,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreateP
@@ -901,7 +896,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig
mipmap_texture,
texture_format,
texture_target,
@ -842,7 +846,7 @@ Index: git/interface/khronos/egl/egl_client.c
if (surface) {
if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
@@ -1043,7 +1038,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreateP
@@ -1043,7 +1038,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig c
false,
EGL_NO_TEXTURE,
EGL_NO_TEXTURE,
@ -851,7 +855,7 @@ Index: git/interface/khronos/egl/egl_client.c
if (surface) {
if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
@@ -2245,6 +2240,9 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuf
@@ -2245,6 +2240,9 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
CLIENT_THREAD_STATE_T *thread;
CLIENT_PROCESS_STATE_T *process;
EGLBoolean result;
@ -861,7 +865,7 @@ Index: git/interface/khronos/egl/egl_client.c
vcos_log_trace("eglSwapBuffers start. dpy=%d. surf=%d.", (int)dpy, (int)surf);
@@ -2315,18 +2313,58 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuf
@@ -2315,18 +2313,58 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
vcos_log_trace("eglSwapBuffers server call");
@ -932,11 +936,11 @@ Index: git/interface/khronos/egl/egl_client.c
RPC_CALL6(eglIntSwapBuffers_impl,
thread,
EGLINTSWAPBUFFERS_ID,
Index: git/interface/khronos/egl/egl_client_get_proc.c
===================================================================
--- git.orig/interface/khronos/egl/egl_client_get_proc.c
+++ git/interface/khronos/egl/egl_client_get_proc.c
@@ -254,6 +254,17 @@ EGLAPI void EGLAPIENTRY (* eglGetProcAdd
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
@ -954,11 +958,11 @@ Index: git/interface/khronos/egl/egl_client_get_proc.c
return (void(*)(void)) NULL;
}
Index: git/interface/khronos/egl/egl_client_surface.c
===================================================================
--- git.orig/interface/khronos/egl/egl_client_surface.c
+++ git/interface/khronos/egl/egl_client_surface.c
@@ -46,6 +46,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
diff --git a/interface/khronos/egl/egl_client_surface.c b/interface/khronos/egl/egl_client_surface.c
index 128325e..42350bf 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
@ -1032,7 +1036,7 @@ Index: git/interface/khronos/egl/egl_client_surface.c
RPC_CALL15_OUT_CTRL(eglIntCreateSurface_impl,
thread,
EGLINTCREATESURFACE_ID,
@@ -663,6 +685,18 @@ void egl_surface_free(EGL_SURFACE_T *sur
@@ -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 );
@ -1051,10 +1055,10 @@ Index: git/interface/khronos/egl/egl_client_surface.c
}
/* 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
Index: git/interface/khronos/egl/egl_client_surface.h
===================================================================
--- git.orig/interface/khronos/egl/egl_client_surface.h
+++ git/interface/khronos/egl/egl_client_surface.h
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
*/
@ -1097,7 +1101,7 @@ Index: git/interface/khronos/egl/egl_client_surface.h
} EGL_SURFACE_T;
extern bool egl_surface_check_attribs(
@@ -322,8 +357,7 @@ extern EGL_SURFACE_T *egl_surface_create
@@ -322,8 +357,7 @@ extern EGL_SURFACE_T *egl_surface_create(
EGLenum texture_format,
EGLenum texture_target,
EGLNativePixmapType pixmap,
@ -1107,10 +1111,10 @@ Index: git/interface/khronos/egl/egl_client_surface.h
extern EGL_SURFACE_T *egl_surface_from_vg_image(
VGImage vg_handle,
EGLSurface name,
Index: git/interface/khronos/egl/egl_int_impl.h
===================================================================
--- git.orig/interface/khronos/egl/egl_int_impl.h
+++ git/interface/khronos/egl/egl_int_impl.h
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,
@ -1120,10 +1124,11 @@ Index: git/interface/khronos/egl/egl_int_impl.h
FN(int, eglIntCreatePbufferFromVGImage_impl, (
VGImage vg_handle,
Index: git/interface/khronos/ext/egl_wayland.c
===================================================================
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
+++ git/interface/khronos/ext/egl_wayland.c
+++ b/interface/khronos/ext/egl_wayland.c
@@ -0,0 +1,246 @@
+/*
+Copyright (c) 2013, Raspberry Pi Foundation
@ -1371,11 +1376,11 @@ Index: git/interface/khronos/ext/egl_wayland.c
+
+ return EGL_FALSE;
+}
Index: git/interface/khronos/include/EGL/eglext.h
===================================================================
--- git.orig/interface/khronos/include/EGL/eglext.h
+++ git/interface/khronos/include/EGL/eglext.h
@@ -191,6 +191,29 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLG
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
@ -1405,10 +1410,11 @@ Index: git/interface/khronos/include/EGL/eglext.h
#ifdef __cplusplus
}
#endif
Index: git/interface/khronos/wayland-egl/wayland-egl-priv.h
===================================================================
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
+++ git/interface/khronos/wayland-egl/wayland-egl-priv.h
+++ b/interface/khronos/wayland-egl/wayland-egl-priv.h
@@ -0,0 +1,53 @@
+/* Copied from Mesa */
+
@ -1463,10 +1469,11 @@ Index: git/interface/khronos/wayland-egl/wayland-egl-priv.h
+#endif
+
+#endif
Index: git/interface/khronos/wayland-egl/wayland-egl.c
===================================================================
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
+++ git/interface/khronos/wayland-egl/wayland-egl.c
+++ b/interface/khronos/wayland-egl/wayland-egl.c
@@ -0,0 +1,59 @@
+/* Copied from Mesa */
+
@ -1527,10 +1534,11 @@ Index: git/interface/khronos/wayland-egl/wayland-egl.c
+ if (height)
+ *height = egl_window->attached_height;
+}
Index: git/interface/khronos/wayland-egl/wayland-egl.pc.in
===================================================================
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
+++ git/interface/khronos/wayland-egl/wayland-egl.pc.in
+++ b/interface/khronos/wayland-egl/wayland-egl.pc.in
@@ -0,0 +1,10 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
@ -1542,10 +1550,10 @@ Index: git/interface/khronos/wayland-egl/wayland-egl.pc.in
+Version: @PROJECT_APIVER@
+Libs: -L${libdir} -lwayland-egl
+Cflags: -I${includedir}
Index: git/interface/vmcs_host/CMakeLists.txt
===================================================================
--- git.orig/interface/vmcs_host/CMakeLists.txt
+++ git/interface/vmcs_host/CMakeLists.txt
diff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt
index fde18da..6718215 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)
@ -1576,11 +1584,11 @@ Index: git/interface/vmcs_host/CMakeLists.txt
#add_library(bufman vc_vchi_bufman.c )
# OpenMAX/IL component service
Index: git/interface/vmcs_host/vc_dispmanx.h
===================================================================
--- git.orig/interface/vmcs_host/vc_dispmanx.h
+++ git/interface/vmcs_host/vc_dispmanx.h
@@ -39,6 +39,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
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
@ -1592,7 +1600,7 @@ Index: git/interface/vmcs_host/vc_dispmanx.h
// 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_resourc
@@ -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 );
@ -1604,11 +1612,11 @@ Index: git/interface/vmcs_host/vc_dispmanx.h
#ifdef __cplusplus
}
#endif
Index: git/interface/vmcs_host/vc_vchi_dispmanx.c
===================================================================
--- git.orig/interface/vmcs_host/vc_vchi_dispmanx.c
+++ git/interface/vmcs_host/vc_vchi_dispmanx.c
@@ -1319,3 +1319,45 @@ static void *dispmanx_notify_func( void
diff --git a/interface/vmcs_host/vc_vchi_dispmanx.c b/interface/vmcs_host/vc_vchi_dispmanx.c
index 7a6cdcd..eab146e 100755
--- a/interface/vmcs_host/vc_vchi_dispmanx.c
+++ b/interface/vmcs_host/vc_vchi_dispmanx.c
@@ -1319,3 +1319,45 @@ static void *dispmanx_notify_func( void *arg ) {
}
return 0;
}
@ -1654,10 +1662,35 @@ Index: git/interface/vmcs_host/vc_vchi_dispmanx.c
+ buffer->in_use = in_use;
+}
+#endif
Index: git/interface/wayland/dispmanx.xml
===================================================================
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
+++ git/interface/wayland/dispmanx.xml
+++ b/interface/wayland/dispmanx.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<protocol name="dispmanx">
@ -1782,10 +1815,11 @@ Index: git/interface/wayland/dispmanx.xml
+ </interface>
+
+</protocol>
Index: git/makefiles/cmake/Wayland.cmake
===================================================================
diff --git a/makefiles/cmake/Wayland.cmake b/makefiles/cmake/Wayland.cmake
new file mode 100644
index 0000000..ad90d30
--- /dev/null
+++ git/makefiles/cmake/Wayland.cmake
+++ b/makefiles/cmake/Wayland.cmake
@@ -0,0 +1,72 @@
+#=============================================================================
+# Copyright (C) 2012-2013 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
@ -1859,3 +1893,6 @@ Index: git/makefiles/cmake/Wayland.cmake
+ list(APPEND ${_sources} "${_server_header}")
+ set(${_sources} ${${_sources}} PARENT_SCOPE)
+endfunction()
--
2.19.1

View File

@ -1,16 +1,16 @@
From 20ac7c6af4e826b5c536b6a7c8b2d1d266ced81e Mon Sep 17 00:00:00 2001
From 976cc9355fe18487cd84e313e76f397ab47a4bf8 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 03/16] wayland: Add Wayland example
Subject: [PATCH 03/18] 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 +-
.../linux/apps/hello_pi/CMakeLists.txt | 1 +
.../hello_pi/hello_wayland/CMakeLists.txt | 8 +
.../hello_pi/hello_wayland/Djenne_128_128.raw | 3 +
.../apps/hello_pi/hello_wayland/Makefile | 5 +
.../hello_wayland/cube_texture_and_coords.h | 100 +++
.../apps/hello_pi/hello_wayland/triangle.c | 666 ++++++++++++++++++
.../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
@ -862,5 +862,5 @@ index 8225dd5..0be6ce7 100755
-
+make -C hello_wayland
--
2.16.1
2.19.1

View File

@ -1,7 +1,7 @@
From f17879b691984b5c4950e4b94ebf102c78797ede Mon Sep 17 00:00:00 2001
From c379bd2dc575256084d9e36fc11a347e20660130 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 04/16] wayland-egl: Add bcm_host to dependencies
Subject: [PATCH 04/18] 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.16.1
2.19.1

View File

@ -1,7 +1,7 @@
From 0273b7b9d7a27d8fe7d3ad8680b799f997e75dca Mon Sep 17 00:00:00 2001
From bd940c32878d401f311215270579ff513c2f3999 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 05/16] interface: remove faulty assert() to make weston happy
Subject: [PATCH 05/18] 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 eab146e..29e0dee 100755
}
} else {
--
2.16.1
2.19.1

View File

@ -1,7 +1,7 @@
From 0d678cd2042551cc4e26ec42fa3aba7c72d033b4 Mon Sep 17 00:00:00 2001
From 466f28ce302f68ac39be750f4b55285791f43ab1 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 06/16] zero-out wl buffers in egl_surface_free
Subject: [PATCH 06/18] zero-out wl buffers in egl_surface_free
origins from buildroot
@ -29,5 +29,5 @@ index 42350bf..1f923d9 100644
#endif
}
--
2.16.1
2.19.1

View File

@ -1,7 +1,7 @@
From ec2e00989bf614b259bc9a47b5035f8586e8a214 Mon Sep 17 00:00:00 2001
From b4a2967513f7d0f5f3caee8cf6cbc7a7a085ebac 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 07/16] initialize front back wayland buffers
Subject: [PATCH 07/18] initialize front back wayland buffers
origins from metrological wayland support
@ -30,5 +30,5 @@ index 1f923d9..9a9582c 100644
}
#endif
--
2.16.1
2.19.1

View File

@ -1,7 +1,7 @@
From 59ba66c2ea17f7a57124b9fd6c9bdff4325ff5c9 Mon Sep 17 00:00:00 2001
From 14c22987dfa9fec02794856cd15b2d64b4b81c32 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 08/16] Remove RPC_FLUSH
Subject: [PATCH 08/18] Remove RPC_FLUSH
Origins from buildroot
@ -23,5 +23,5 @@ index f9b7287..b04ffef 100644
}
#endif
--
2.16.1
2.19.1

View File

@ -1,7 +1,7 @@
From 264d82387ea1e607b2e5c899ff6bd46807c7b185 Mon Sep 17 00:00:00 2001
From e510be221276d06e630ab93452ecb712d3921790 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 09/16] fix cmake dependency race
Subject: [PATCH 09/18] fix cmake dependency race
Fixes errors like
@ -74,5 +74,5 @@ index f0bae30..8c44c58 100644
struct wl_resource *resource;
struct wl_dispmanx *dispmanx;
--
2.16.1
2.19.1

View File

@ -1,7 +1,7 @@
From 7c51c2d37bfadaabbbf205237d932b685b09d34f Mon Sep 17 00:00:00 2001
From 8e6cde08077eadfe563dc17c19995ebc48e30b97 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 29 Mar 2016 20:38:30 -0700
Subject: [PATCH 10/16] Fix for framerate with nested composition
Subject: [PATCH 10/18] Fix for framerate with nested composition
frame rate appears irregular and lower than expected when using nested composition.
@ -56,5 +56,5 @@ index 03fe67b..13a110c 100644
#ifdef ANDROID
CLIENT_UNLOCK();
--
2.16.1
2.19.1

View File

@ -1,7 +1,7 @@
From fb3002f77a175633af31019c513754d2ef5f3ac0 Mon Sep 17 00:00:00 2001
From 9a97d60262999093d6ce8cb688279506c210d802 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 2 Apr 2016 10:37:24 -0700
Subject: [PATCH 11/16] build shared library for vchostif
Subject: [PATCH 11/18] build shared library for vchostif
Fixes #149
@ -24,5 +24,5 @@ index c415176..d0cca1a 100755
#add_library(bufman vc_vchi_bufman.c )
--
2.16.1
2.19.1

View File

@ -1,14 +1,14 @@
From df8b9633a45069bdd1bf256d974636ef11aa39cb Mon Sep 17 00:00:00 2001
From fedd7668152049c15ed58c7058e5f4a9c1fac7cb Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 2 Apr 2016 10:54:59 -0700
Subject: [PATCH 12/16] implement buffer wrapping interface for dispmanx
Subject: [PATCH 12/18] implement buffer wrapping interface for dispmanx
Courtesy: Zan Dobersek
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
interface/khronos/ext/egl_wayland.c | 42 +++++++++++++++++++++++++++++++++++++
interface/wayland/dispmanx.xml | 10 +++++++++
interface/khronos/ext/egl_wayland.c | 42 +++++++++++++++++++++++++++++
interface/wayland/dispmanx.xml | 10 +++++++
2 files changed, 52 insertions(+)
diff --git a/interface/khronos/ext/egl_wayland.c b/interface/khronos/ext/egl_wayland.c
@ -88,5 +88,5 @@ index c18626d..11ed1ef 100644
</protocol>
--
2.16.1
2.19.1

View File

@ -1,7 +1,7 @@
From 2e0e331da8556fecd841349cfae294baf0f14485 Mon Sep 17 00:00:00 2001
From 65f8bca55aead676cd06fc3210aeffef1f2158c6 Mon Sep 17 00:00:00 2001
From: Jeff Wannamaker <jeff_wannamaker@cable.comcast.com>
Date: Thu, 19 Jan 2017 18:56:07 +0000
Subject: [PATCH 13/16] Implement triple buffering for wayland
Subject: [PATCH 13/18] Implement triple buffering for wayland
Change from double to triple buffering for wayland.
This enables higher frame rates without tearing artifacts
@ -86,5 +86,5 @@ index e328b77..58a3184 100644
back_wl_buffer
--
2.16.1
2.19.1

View File

@ -1,7 +1,7 @@
From 6e8562b45a2e14490da2ca258c9ce3d7bc8375f3 Mon Sep 17 00:00:00 2001
From dc1d07d835e1fe70c957a655d6fbb8cde65775af Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 10 May 2017 06:39:34 +0000
Subject: [PATCH 14/16] GLES2/gl2ext.h: Define GL_R8_EXT and GL_RG8_EXT
Subject: [PATCH 14/18] GLES2/gl2ext.h: Define GL_R8_EXT and GL_RG8_EXT
weston code uses these defines
Upstream-Status: Pending
@ -31,5 +31,5 @@ index 4eacf7f..b1acc9f 100644
#ifndef GL_EXT_texture_type_2_10_10_10_REV
#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368
--
2.18.0
2.19.1

View File

@ -1,7 +1,7 @@
From a2182e5437a6664cdb0f3330f6cbee873b6f975a Mon Sep 17 00:00:00 2001
From b5fa294c0d8fcb6dd5bfbfb96a0885dd9f3ae609 Mon Sep 17 00:00:00 2001
From: Andrea Galbusera <gizero@gmail.com>
Date: Fri, 14 Jul 2017 09:52:54 +0200
Subject: [PATCH 15/16] EGL/glplatform.h: define EGL_CAST
Subject: [PATCH 15/18] EGL/glplatform.h: define EGL_CAST
C++ / C typecast macros for special EGL handle values: used by libepoxy code
The definition comes from the updated version of this header in mesa.
@ -28,5 +28,5 @@ index 1f7c930..c39d425 100644
+
#endif /* __eglplatform_h */
--
2.16.1
2.19.1

View File

@ -1,7 +1,7 @@
From 6b4c4d469d435bfcfb464356b6ccc9421c6b8fd5 Mon Sep 17 00:00:00 2001
From bff03f92c0d8bae113e0c7234c719f8385808b38 Mon Sep 17 00:00:00 2001
From: Jeff Wannamaker <jeff_wannamaker@cable.comcast.com>
Date: Sat, 27 Jan 2018 12:28:31 -0500
Subject: [PATCH 16/16] Allow multiple wayland compositor state data per
Subject: [PATCH 16/18] Allow multiple wayland compositor state data per
process
When eglBindWaylandDisplayWL is called store the wl_global
@ -15,8 +15,8 @@ Signed-off-by: Jeff Wannamaker <jeff_wannamaker@cable.comcast.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
interface/khronos/common/khrn_client.c | 2 +-
interface/khronos/common/khrn_client.h | 11 +++++++-
interface/khronos/ext/egl_wayland.c | 50 ++++++++++++++++++++++++++++++----
interface/khronos/common/khrn_client.h | 11 +++++-
interface/khronos/ext/egl_wayland.c | 50 ++++++++++++++++++++++----
3 files changed, 55 insertions(+), 8 deletions(-)
diff --git a/interface/khronos/common/khrn_client.c b/interface/khronos/common/khrn_client.c
@ -141,5 +141,5 @@ index 9ef89cd..abd5ab3 100644
CLIENT_UNLOCK();
--
2.16.1
2.19.1

View File

@ -1,7 +1,8 @@
From 8403fb3869f56ea7492fa6265bd6cd1dd5146e6e Mon Sep 17 00:00:00 2001
From 8efd81e96bdd3be68063a6fd32be4755225e93b2 Mon Sep 17 00:00:00 2001
From: Hugo Hromic <hhromic@gmail.com>
Date: Sun, 13 May 2018 10:49:04 +0100
Subject: [PATCH] khronos: backport typedef for EGL_EXT_image_dma_buf_import
Subject: [PATCH 17/18] khronos: backport typedef for
EGL_EXT_image_dma_buf_import
The `gstreamer1.0-plugins-base` package version `1.14` uses `EGL_EXT_image_dma_buf_import`, which
expects the `EGLuint64KHR` typedef that is present in recent versions of Khronos.
@ -13,13 +14,12 @@ See: <https://www.khronos.org/registry/EGL/api/EGL/eglext.h>
Submitted to userland in <https://github.com/raspberrypi/userland/pull/467>
Upstream-Status: Submitted
---
interface/khronos/include/EGL/eglext.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/interface/khronos/include/EGL/eglext.h b/interface/khronos/include/EGL/eglext.h
index d7e5ba7..4ce762d 100755
index d7e5ba7..dcc90ce 100755
--- a/interface/khronos/include/EGL/eglext.h
+++ b/interface/khronos/include/EGL/eglext.h
@@ -190,6 +190,10 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSy
@ -33,3 +33,6 @@ index d7e5ba7..4ce762d 100755
#ifndef EGL_WL_bind_wayland_display
#define EGL_WL_bind_wayland_display 1
--
2.19.1

View File

@ -1,7 +1,7 @@
From ca43aae3e1879d2595cfee80032322f5fdfdea11 Mon Sep 17 00:00:00 2001
From 9cfea4761ba68776fd9bfac671b74c7174f99029 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 15 Jul 2018 00:48:38 -0700
Subject: [PATCH] Add EGL_IMG_context_priority related defines
Subject: [PATCH 18/18] Add EGL_IMG_context_priority related defines
These defines are needed for compiling weston 4.x
taken from Khronos headers
@ -31,5 +31,5 @@ index dcc90ce..6842bf9 100755
#define EGL_KHR_vg_parent_image 1
#define EGL_VG_PARENT_IMAGE_KHR 0x30BA /* eglCreateImageKHR target */
--
2.18.0
2.19.1

View File

@ -12,11 +12,11 @@ COMPATIBLE_MACHINE = "^rpi$"
SRCBRANCH = "master"
SRCFORK = "raspberrypi"
SRCREV = "409dfcd90bae0a09b1b8c1f718a532728d26cde2"
SRCREV = "d574b51a60a075baefe863670466ee24e6c4256e"
# Use the date of the above commit as the package version. Update this when
# SRCREV is changed.
PV = "20180702"
PV = "20181120"
SRC_URI = "\
git://github.com/${SRCFORK}/userland.git;protocol=git;branch=${SRCBRANCH} \