On Mon, Aug 24, 2015 at 7:43 PM, Khem Raj <[email protected]> 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 <[email protected]> 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 <[email protected]> > +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 <[email protected]> > +--- > + .../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 -- _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-devel
