[oe] [meta-qt5][PATCH V2 2/4] qtwayland: Fix build for raspberryPi

Andreas Müller schnitzeltony at googlemail.com
Tue Aug 25 07:00:05 UTC 2015


On Mon, Aug 24, 2015 at 7:43 PM, Khem Raj <raj.khem at gmail.com> wrote:
> rpi uses bcom EGL implementation and it has descrepency when it comes to
> defining 'EGLNativePixmapType', lets typecast the ussage of this type to
> avoid this sort of errors.
>
> Signed-off-by: Khem Raj <raj.khem at gmail.com>
Upstream-Status?
> ---
>  ...egl-Typecast-proper-EGLNativeWindowType-t.patch | 56 ++++++++++++++++++++++
>  recipes-qt/qt5/qtwayland_git.bb                    |  1 +
>  2 files changed, 57 insertions(+)
>  create mode 100644 recipes-qt/qt5/qtwayland/0001-xcomposite-egl-Typecast-proper-EGLNativeWindowType-t.patch
>
> diff --git a/recipes-qt/qt5/qtwayland/0001-xcomposite-egl-Typecast-proper-EGLNativeWindowType-t.patch b/recipes-qt/qt5/qtwayland/0001-xcomposite-egl-Typecast-proper-EGLNativeWindowType-t.patch
> new file mode 100644
> index 0000000..2e1f2c4
> --- /dev/null
> +++ b/recipes-qt/qt5/qtwayland/0001-xcomposite-egl-Typecast-proper-EGLNativeWindowType-t.patch
> @@ -0,0 +1,56 @@
> +From 91746518a0cd56d7b0bfda69ba6cf743bf051fb9 Mon Sep 17 00:00:00 2001
> +From: Khem Raj <raj.khem at gmail.com>
> +Date: Sun, 23 Aug 2015 17:33:25 -0700
> +Subject: [PATCH] xcomposite-egl: Typecast proper EGLNativeWindowType to
> + eglCreateWindowSurface params
> +
> +This surfaces on rpi which has slightly different definition of
> +EGLNativeWindowType
> +
> +Fixes errors like
> +
> +/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtwayland/5.4.2+gitAUTOINC+182488129c-r0/git/src/hardwareintegration/compositor/xcomposite-egl/xcompositeeglintegration.cpp:117:26: error: no matching function for call
> +      to 'eglCreatePixmapSurface'
> +    EGLSurface surface = eglCreatePixmapSurface(mEglDisplay,config,pixmap,attribList.constData());
> +                         ^~~~~~~~~~~~~~~~~~~~~~
> +/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/sysroots/raspberrypi2/usr/include/EGL/egl.h:270:31: note: candidate function not viable: no known conversion from 'Pixmap' (aka 'unsigned long') to 'EGLNativePixmapType' (aka 'void *') for 3rd argument; take the
> +      address of the argument with &
> +EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
> +                              ^
> +1 error generated.
> +
> +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> +---
> + .../client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp               | 2 +-
> + .../compositor/xcomposite-egl/xcompositeeglintegration.cpp              | 2 +-
> + 2 files changed, 2 insertions(+), 2 deletions(-)
> +
> +diff --git a/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp b/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp
> +index 01d6324..e268ede 100644
> +--- a/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp
> ++++ b/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp
> +@@ -122,7 +122,7 @@ void QWaylandXCompositeEGLWindow::createEglSurface()
> +     XCompositeRedirectWindow(m_glxIntegration->xDisplay(), m_xWindow, CompositeRedirectManual);
> +     XMapWindow(m_glxIntegration->xDisplay(), m_xWindow);
> +
> +-    m_surface = eglCreateWindowSurface(m_glxIntegration->eglDisplay(), m_config, m_xWindow,0);
> ++    m_surface = eglCreateWindowSurface(m_glxIntegration->eglDisplay(), m_config, (EGLNativeWindowType)m_xWindow,0);
> +     if (m_surface == EGL_NO_SURFACE) {
> +         qFatal("Could not make eglsurface");
> +     }
> +diff --git a/src/hardwareintegration/compositor/xcomposite-egl/xcompositeeglintegration.cpp b/src/hardwareintegration/compositor/xcomposite-egl/xcompositeeglintegration.cpp
> +index 2401d67..61664b5 100644
> +--- a/src/hardwareintegration/compositor/xcomposite-egl/xcompositeeglintegration.cpp
> ++++ b/src/hardwareintegration/compositor/xcomposite-egl/xcompositeeglintegration.cpp
> +@@ -114,7 +114,7 @@ void XCompositeEglClientBufferIntegration::bindTextureToBuffer(struct ::wl_resou
> +     attribList.append(EGL_TEXTURE_2D);
> +     attribList.append(EGL_NONE);
> +
> +-    EGLSurface surface = eglCreatePixmapSurface(mEglDisplay,config,pixmap,attribList.constData());
> ++    EGLSurface surface = eglCreatePixmapSurface(mEglDisplay,config,(EGLNativeWindowType)pixmap,attribList.constData());
^ When looking at [1] this does not look correct to me.

Generally I think errors caused by a specific egl implementation
should not be fixed in packets using egl - and yes I know we have
these hacks in qt.

[1] https://www.khronos.org/registry/egl/sdk/docs/man/html/eglCreatePixmapSurface.xhtml

Andreas



More information about the Openembedded-devel mailing list