diff options
Diffstat (limited to 'meta-raspberrypi/recipes-graphics')
27 files changed, 448 insertions, 319 deletions
diff --git a/meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend b/meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend index 7692133b8d..c152bd9731 100644 --- a/meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend +++ b/meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend @@ -1,2 +1,2 @@ EGLINFO_DEVICE_rpi = "raspberrypi" -COMPATIBLE_HOST_rpi = "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', 'null', '"(.*)"', d)}" +COMPATIBLE_HOST_rpi = "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', 'null', '(.*)', d)}" diff --git a/meta-raspberrypi/recipes-graphics/kmscube/kmscube_%.bbappend b/meta-raspberrypi/recipes-graphics/kmscube/kmscube_%.bbappend new file mode 100644 index 0000000000..9343fb00ff --- /dev/null +++ b/meta-raspberrypi/recipes-graphics/kmscube/kmscube_%.bbappend @@ -0,0 +1,2 @@ +# userland driver EGL implementation does not have all needed bits for it so remove it from build +COMPATIBLE_HOST_rpi = "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', '(.*)', 'null', d)}" diff --git a/meta-raspberrypi/recipes-graphics/mesa/mesa-demos_%.bbappend b/meta-raspberrypi/recipes-graphics/mesa/mesa-demos_%.bbappend new file mode 100644 index 0000000000..c187ab9c10 --- /dev/null +++ b/meta-raspberrypi/recipes-graphics/mesa/mesa-demos_%.bbappend @@ -0,0 +1,2 @@ +# mesa-demos need libgles1 and userland driver does not have it +COMPATIBLE_HOST_rpi = "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', '(.*)', 'null', d)}" diff --git a/meta-raspberrypi/recipes-graphics/mesa/mesa_%.bbappend b/meta-raspberrypi/recipes-graphics/mesa/mesa_%.bbappend index 52fe757a09..8152cc3ea5 100644 --- a/meta-raspberrypi/recipes-graphics/mesa/mesa_%.bbappend +++ b/meta-raspberrypi/recipes-graphics/mesa/mesa_%.bbappend @@ -3,5 +3,5 @@ # as default. To state out clearly that Raspi needs dri3 and to avoid surprises # in case oe-core changes this default, we set dri3 explicitly. PACKAGECONFIG_append_rpi = " gallium ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'x11 dri3', '', d)}" -GALLIUMDRIVERS_rpi = "vc4" +GALLIUMDRIVERS_append_rpi = ",vc4" DRIDRIVERS_rpi = "" diff --git a/meta-raspberrypi/recipes-graphics/piglit/piglit_%.bbappend b/meta-raspberrypi/recipes-graphics/piglit/piglit_%.bbappend new file mode 100644 index 0000000000..0503fd0c34 --- /dev/null +++ b/meta-raspberrypi/recipes-graphics/piglit/piglit_%.bbappend @@ -0,0 +1,5 @@ +# mesa-demos need libgles1 and userland driver does not have it so remove it from piglit rdeps +RDEPENDS_${PN}_remove_rpi = "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', '', 'mesa-demos', d)}" +# it needs EGL >= 11 but userland says it provided version 10, remove it from build +# | -- Requested 'egl >= 11.0' but version of EGL is 10 +COMPATIBLE_HOST_rpi = "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', '(.*)', 'null', d)}" diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0001-Allow-applications-to-set-next-resource-handle.patch b/meta-raspberrypi/recipes-graphics/userland/files/0001-Allow-applications-to-set-next-resource-handle.patch index 933f279af7..d6b2abb21b 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0001-Allow-applications-to-set-next-resource-handle.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0001-Allow-applications-to-set-next-resource-handle.patch @@ -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 diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0002-wayland-Add-support-for-the-Wayland-winsys.patch b/meta-raspberrypi/recipes-graphics/userland/files/0002-wayland-Add-support-for-the-Wayland-winsys.patch index 461350407e..c41cde7793 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0002-wayland-Add-support-for-the-Wayland-winsys.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0002-wayland-Add-support-for-the-Wayland-winsys.patch @@ -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 + diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0003-wayland-Add-Wayland-example.patch b/meta-raspberrypi/recipes-graphics/userland/files/0003-wayland-Add-Wayland-example.patch index e3a0cf277c..d83a9e502e 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0003-wayland-Add-Wayland-example.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0003-wayland-Add-Wayland-example.patch @@ -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 diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0004-wayland-egl-Add-bcm_host-to-dependencies.patch b/meta-raspberrypi/recipes-graphics/userland/files/0004-wayland-egl-Add-bcm_host-to-dependencies.patch index 713fc3e5b2..a42aa144ff 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0004-wayland-egl-Add-bcm_host-to-dependencies.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0004-wayland-egl-Add-bcm_host-to-dependencies.patch @@ -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 diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0005-interface-remove-faulty-assert-to-make-weston-happy-.patch b/meta-raspberrypi/recipes-graphics/userland/files/0005-interface-remove-faulty-assert-to-make-weston-happy-.patch index 8d78333fa5..bbaaddad97 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0005-interface-remove-faulty-assert-to-make-weston-happy-.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0005-interface-remove-faulty-assert-to-make-weston-happy-.patch @@ -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 diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0006-zero-out-wl-buffers-in-egl_surface_free.patch b/meta-raspberrypi/recipes-graphics/userland/files/0006-zero-out-wl-buffers-in-egl_surface_free.patch index 43eb7f0b08..1a5e14f0e0 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0006-zero-out-wl-buffers-in-egl_surface_free.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0006-zero-out-wl-buffers-in-egl_surface_free.patch @@ -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 diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0007-initialize-front-back-wayland-buffers.patch b/meta-raspberrypi/recipes-graphics/userland/files/0007-initialize-front-back-wayland-buffers.patch index 987740b075..72264e4fdc 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0007-initialize-front-back-wayland-buffers.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0007-initialize-front-back-wayland-buffers.patch @@ -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 diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0008-Remove-RPC_FLUSH.patch b/meta-raspberrypi/recipes-graphics/userland/files/0008-Remove-RPC_FLUSH.patch index 4bf05c129e..a100e39533 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0008-Remove-RPC_FLUSH.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0008-Remove-RPC_FLUSH.patch @@ -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 diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0009-fix-cmake-dependency-race.patch b/meta-raspberrypi/recipes-graphics/userland/files/0009-fix-cmake-dependency-race.patch index a2c1df5b6c..4609455a32 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0009-fix-cmake-dependency-race.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0009-fix-cmake-dependency-race.patch @@ -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 diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0010-Fix-for-framerate-with-nested-composition.patch b/meta-raspberrypi/recipes-graphics/userland/files/0010-Fix-for-framerate-with-nested-composition.patch index a6c9a59fbc..dd0b95ed4b 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0010-Fix-for-framerate-with-nested-composition.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0010-Fix-for-framerate-with-nested-composition.patch @@ -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 diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0011-build-shared-library-for-vchostif.patch b/meta-raspberrypi/recipes-graphics/userland/files/0011-build-shared-library-for-vchostif.patch index 55a5be89aa..4bd532080c 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0011-build-shared-library-for-vchostif.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0011-build-shared-library-for-vchostif.patch @@ -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 diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0012-implement-buffer-wrapping-interface-for-dispmanx.patch b/meta-raspberrypi/recipes-graphics/userland/files/0012-implement-buffer-wrapping-interface-for-dispmanx.patch index 28a5fc6d89..9684b4cffc 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0012-implement-buffer-wrapping-interface-for-dispmanx.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0012-implement-buffer-wrapping-interface-for-dispmanx.patch @@ -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 diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0013-Implement-triple-buffering-for-wayland.patch b/meta-raspberrypi/recipes-graphics/userland/files/0013-Implement-triple-buffering-for-wayland.patch index ebff3140f0..3052168c51 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0013-Implement-triple-buffering-for-wayland.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0013-Implement-triple-buffering-for-wayland.patch @@ -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 diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0014-GLES2-gl2ext.h-Define-GL_R8_EXT-and-GL_RG8_EXT.patch b/meta-raspberrypi/recipes-graphics/userland/files/0014-GLES2-gl2ext.h-Define-GL_R8_EXT-and-GL_RG8_EXT.patch index 025b6bcb9a..037d708339 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0014-GLES2-gl2ext.h-Define-GL_R8_EXT-and-GL_RG8_EXT.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0014-GLES2-gl2ext.h-Define-GL_R8_EXT-and-GL_RG8_EXT.patch @@ -1,30 +1,35 @@ -From 8d9299d219a2a4f76f8278973584e1a9f7116c78 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 Signed-off-by: Khem Raj <raj.khem@gmail.com> --- - interface/khronos/include/GLES2/gl2ext.h | 3 +++ - 1 file changed, 3 insertions(+) + interface/khronos/include/GLES2/gl2ext.h | 8 ++++++++ + 1 file changed, 8 insertions(+) diff --git a/interface/khronos/include/GLES2/gl2ext.h b/interface/khronos/include/GLES2/gl2ext.h -index 4eacf7f..283e3e1 100644 +index 4eacf7f..b1acc9f 100644 --- a/interface/khronos/include/GLES2/gl2ext.h +++ b/interface/khronos/include/GLES2/gl2ext.h -@@ -327,6 +327,9 @@ typedef void* GLeglImageOES; +@@ -327,6 +327,14 @@ typedef void* GLeglImageOES; #define GL_RGBX_BRCM 0x80EE #endif ++#ifndef GL_EXT_texture_rg ++#define GL_EXT_texture_rg 1 ++#define GL_RED_EXT 0x1903 ++#define GL_RG_EXT 0x8227 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B ++#endif /* GL_EXT_texture_rg */ + /* GL_EXT_texture_type_2_10_10_10_REV */ #ifndef GL_EXT_texture_type_2_10_10_10_REV #define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 -- -2.16.1 +2.19.1 diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0015-EGL-glplatform.h-define-EGL_CAST.patch b/meta-raspberrypi/recipes-graphics/userland/files/0015-EGL-glplatform.h-define-EGL_CAST.patch index 605d0c043b..02cecb83e7 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0015-EGL-glplatform.h-define-EGL_CAST.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0015-EGL-glplatform.h-define-EGL_CAST.patch @@ -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 diff --git a/meta-raspberrypi/recipes-graphics/userland/userland/0016-Allow-multiple-wayland-compositor-state-data-per-pro.patch b/meta-raspberrypi/recipes-graphics/userland/files/0016-Allow-multiple-wayland-compositor-state-data-per-pro.patch index d20ec829ff..34ad90cd81 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland/0016-Allow-multiple-wayland-compositor-state-data-per-pro.patch +++ b/meta-raspberrypi/recipes-graphics/userland/files/0016-Allow-multiple-wayland-compositor-state-data-per-pro.patch @@ -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 diff --git a/meta-raspberrypi/recipes-graphics/userland/files/0017-khronos-backport-typedef-for-EGL_EXT_image_dma_buf_i.patch b/meta-raspberrypi/recipes-graphics/userland/files/0017-khronos-backport-typedef-for-EGL_EXT_image_dma_buf_i.patch new file mode 100644 index 0000000000..546cd588ae --- /dev/null +++ b/meta-raspberrypi/recipes-graphics/userland/files/0017-khronos-backport-typedef-for-EGL_EXT_image_dma_buf_i.patch @@ -0,0 +1,38 @@ +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 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. +However, the older version included in userland does not provide it. + +This patch backports the missing typedef from recent Khronos into userland. +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..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 + typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); + #endif + ++#ifndef EGL_KHR_uint64_typedef ++#define EGL_KHR_uint64_typedef 1 ++typedef khronos_uint64_t EGLuint64KHR; ++#endif /* EGL_KHR_uint64_typedef */ + + #ifndef EGL_WL_bind_wayland_display + #define EGL_WL_bind_wayland_display 1 +-- +2.19.1 + diff --git a/meta-raspberrypi/recipes-graphics/userland/files/0018-Add-EGL_IMG_context_priority-related-defines.patch b/meta-raspberrypi/recipes-graphics/userland/files/0018-Add-EGL_IMG_context_priority-related-defines.patch new file mode 100644 index 0000000000..f4d865e6e8 --- /dev/null +++ b/meta-raspberrypi/recipes-graphics/userland/files/0018-Add-EGL_IMG_context_priority-related-defines.patch @@ -0,0 +1,35 @@ +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 18/18] Add EGL_IMG_context_priority related defines + +These defines are needed for compiling weston 4.x +taken from Khronos headers + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + interface/khronos/include/EGL/eglext.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/interface/khronos/include/EGL/eglext.h b/interface/khronos/include/EGL/eglext.h +index dcc90ce..6842bf9 100755 +--- a/interface/khronos/include/EGL/eglext.h ++++ b/interface/khronos/include/EGL/eglext.h +@@ -93,6 +93,14 @@ typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGL + typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image); + #endif + ++#ifndef EGL_IMG_context_priority ++#define EGL_IMG_context_priority 1 ++#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3102 ++#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101 ++#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102 ++#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103 ++#endif /* EGL_IMG_context_priority */ ++ + #ifndef EGL_KHR_vg_parent_image + #define EGL_KHR_vg_parent_image 1 + #define EGL_VG_PARENT_IMAGE_KHR 0x30BA /* eglCreateImageKHR target */ +-- +2.19.1 + diff --git a/meta-raspberrypi/recipes-graphics/userland/userland_git.bb b/meta-raspberrypi/recipes-graphics/userland/userland_git.bb index 7f2dca6b66..e6af4bff8d 100644 --- a/meta-raspberrypi/recipes-graphics/userland/userland_git.bb +++ b/meta-raspberrypi/recipes-graphics/userland/userland_git.bb @@ -5,20 +5,18 @@ vcos, openmaxil, vchiq_arm, bcm_host, WFC, OpenVG." LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENCE;md5=0448d6488ef8cc380632b1569ee6d196" -PROVIDES = "virtual/libgles2 \ - virtual/egl" - -RPROVIDES_${PN} += "libgles2 egl libegl" +PROVIDES += "${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "", "virtual/libgles2 virtual/egl", d)}" +RPROVIDES_${PN} += "${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "", "libgles2 egl libegl libegl1 libgl1 libglesv2-2", d)}" COMPATIBLE_MACHINE = "^rpi$" SRCBRANCH = "master" SRCFORK = "raspberrypi" -SRCREV = "11389772c79685442e0ab8aa9be8ad0e32703f68" +SRCREV = "d574b51a60a075baefe863670466ee24e6c4256e" # Use the date of the above commit as the package version. Update this when # SRCREV is changed. -PV = "20180219" +PV = "20181120" SRC_URI = "\ git://github.com/${SRCFORK}/userland.git;protocol=git;branch=${SRCBRANCH} \ @@ -38,6 +36,8 @@ SRC_URI = "\ file://0014-GLES2-gl2ext.h-Define-GL_R8_EXT-and-GL_RG8_EXT.patch \ file://0015-EGL-glplatform.h-define-EGL_CAST.patch \ file://0016-Allow-multiple-wayland-compositor-state-data-per-pro.patch \ + file://0017-khronos-backport-typedef-for-EGL_EXT_image_dma_buf_i.patch \ + file://0018-Add-EGL_IMG_context_priority-related-defines.patch \ " S = "${WORKDIR}/git" @@ -64,6 +64,14 @@ do_install_append () { sed -i 's/include "vcos_futex_mutex.h"/include "pthreads\/vcos_futex_mutex.h"/g' ${f} sed -i 's/include "vcos_platform_types.h"/include "pthreads\/vcos_platform_types.h"/g' ${f} done + if [ "${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "1", "0", d)}" = "1" ]; then + rm -rf ${D}${libdir}/libEGL* + rm -rf ${D}${libdir}/libGLES* + rm -rf ${D}${libdir}/libwayland-* + rm -rf ${D}${libdir}/pkgconfig/egl.pc ${D}${libdir}/pkgconfig/glesv2.pc \ + ${D}${libdir}/pkgconfig/wayland-egl.pc + rm -rf ${D}${includedir}/EGL ${D}${includedir}/GLES* ${D}${includedir}/KHR + fi } # Shared libs from userland package build aren't versioned, so we need @@ -83,3 +91,4 @@ FILES_${PN}-dbg += "${libdir}/plugins/.debug" PACKAGE_ARCH = "${MACHINE_ARCH}" RDEPENDS_${PN} += "bash" +RDEPENDS_${PN} += "${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "libegl1", "", d)}" diff --git a/meta-raspberrypi/recipes-graphics/wayland/wayland_%.bbappend b/meta-raspberrypi/recipes-graphics/wayland/wayland_%.bbappend new file mode 100644 index 0000000000..e5bbf4aaab --- /dev/null +++ b/meta-raspberrypi/recipes-graphics/wayland/wayland_%.bbappend @@ -0,0 +1,7 @@ +# until fully tested, prefer `libwayland-egl` provided by `userland` instead of `wayland` when not using vc4graphics +do_install_append_rpi () { + if [ "${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "1", "0", d)}" = "0" ]; then + rm -f ${D}${libdir}/libwayland-egl* + rm -f ${D}${libdir}/pkgconfig/wayland-egl.pc + fi +} diff --git a/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/10-noglamor.conf b/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/10-noglamor.conf deleted file mode 100644 index 1a562ea03d..0000000000 --- a/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/10-noglamor.conf +++ /dev/null @@ -1,6 +0,0 @@ -# -Section "Device" - Identifier "modeset" - Driver "modesetting" - Option "AccelMethod" "None" -EndSection diff --git a/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config_%.bbappend b/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config_%.bbappend index 919e95e0d4..71e0adcd4f 100644 --- a/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config_%.bbappend +++ b/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xf86-config_%.bbappend @@ -3,19 +3,14 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" SRC_URI_append_rpi = " \ file://xorg.conf.d/98-pitft.conf \ file://xorg.conf.d/99-calibration.conf \ - file://xorg.conf.d/10-noglamor.conf \ " do_install_append_rpi () { PITFT="${@bb.utils.contains("MACHINE_FEATURES", "pitft", "1", "0", d)}" - VC4="${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "1", "0", d)}" if [ "${PITFT}" = "1" ]; then install -d ${D}/${sysconfdir}/X11/xorg.conf.d/ install -m 0644 ${WORKDIR}/xorg.conf.d/98-pitft.conf ${D}/${sysconfdir}/X11/xorg.conf.d/ install -m 0644 ${WORKDIR}/xorg.conf.d/99-calibration.conf ${D}/${sysconfdir}/X11/xorg.conf.d/ fi - if [ "${VC4}" = "1" ]; then - install -Dm 0644 ${WORKDIR}/xorg.conf.d/10-noglamor.conf ${D}/${sysconfdir}/X11/xorg.conf.d/10-noglamor.conf - fi } FILES_${PN}_rpi += "${sysconfdir}/X11/xorg.conf ${sysconfdir}/X11/xorg.conf.d/*" |