Patchwork [meta-fsl-arm] gpu-viv-bin-mx6q: Adding support to install Wayland GPU libs

login
register
mail settings
Submitter Abhijit Potnis
Date July 24, 2013, 4:50 a.m.
Message ID <1374641433-15469-1-git-send-email-abhijitpotnis@gmail.com>
Download mbox | patch
Permalink /patch/54281/
State Superseded
Delegated to: Otavio Salvador
Headers show

Comments

Abhijit Potnis - July 24, 2013, 4:50 a.m.
This patch installs wayland GPU libs if the DISTRO_FEATURES contains
wayland variable. If both X11 and wayland are present in DISTRO_FEATURES
then wayland is picked as the default backend.

Signed-off-by: Abhijit Potnis <abhijitpotnis@gmail.com>
Signed-off-by: Abhijit Potnis <abhijit_potnis@mentor.com>
---
 .../gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc          |   39 ++++++++++++++++----
 .../gpu-viv-bin-mx6q/gc_wayland_protocol.pc        |   10 +++++
 .../gpu-viv-bin-mx6q/wayland-egl.pc                |   10 +++++
 .../gpu-viv-bin-mx6q/wayland-viv.pc                |   10 +++++
 4 files changed, 62 insertions(+), 7 deletions(-)
 create mode 100644 recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/gc_wayland_protocol.pc
 create mode 100644 recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/wayland-egl.pc
 create mode 100644 recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/wayland-viv.pc
Otavio Salvador - July 24, 2013, 12:30 p.m.
On Wed, Jul 24, 2013 at 1:50 AM, Abhijit Potnis <abhijitpotnis@gmail.com> wrote:
> This patch installs wayland GPU libs if the DISTRO_FEATURES contains
> wayland variable. If both X11 and wayland are present in DISTRO_FEATURES
> then wayland is picked as the default backend.
>
> Signed-off-by: Abhijit Potnis <abhijitpotnis@gmail.com>
> Signed-off-by: Abhijit Potnis <abhijit_potnis@mentor.com>
...
> @@ -20,6 +20,9 @@ SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true \
>             file://glesv1_cm_x11.pc \
>             file://glesv2.pc \
>             file://glesv2_x11.pc \
> +           file://gc_wayland_protocol.pc \
> +           file://wayland-egl.pc \
> +           file://wayland-viv.pc \
>            "

Do we need _wl variant of glesv1_com and glesv2 .pc files?

--
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://projetos.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750
Abhijit Potnis - July 24, 2013, 1:40 p.m.
Hello Otavio,

I don't find a point to have separate pc files for _wl variant. The fb
default .pc files serve the purpose just right.
To compile Wayland applications, one will have to link to wayland-egl.so
separately. That will be provided by wayland-egl.pc file.

If you still think there is need for the same. Then I can send across a
patch incorporating that.

Regards,
Abhijit


On Wed, Jul 24, 2013 at 5:30 AM, Otavio Salvador <otavio@ossystems.com.br>wrote:

> On Wed, Jul 24, 2013 at 1:50 AM, Abhijit Potnis <abhijitpotnis@gmail.com>
> wrote:
> > This patch installs wayland GPU libs if the DISTRO_FEATURES contains
> > wayland variable. If both X11 and wayland are present in DISTRO_FEATURES
> > then wayland is picked as the default backend.
> >
> > Signed-off-by: Abhijit Potnis <abhijitpotnis@gmail.com>
> > Signed-off-by: Abhijit Potnis <abhijit_potnis@mentor.com>
> ...
> > @@ -20,6 +20,9 @@ SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true
> \
> >             file://glesv1_cm_x11.pc \
> >             file://glesv2.pc \
> >             file://glesv2_x11.pc \
> > +           file://gc_wayland_protocol.pc \
> > +           file://wayland-egl.pc \
> > +           file://wayland-viv.pc \
> >            "
>
> Do we need _wl variant of glesv1_com and glesv2 .pc files?
>
> --
> Otavio Salvador                             O.S. Systems
> http://www.ossystems.com.br        http://projetos.ossystems.com.br
> Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750
>
Otavio Salvador - July 24, 2013, 4:27 p.m.
On Wed, Jul 24, 2013 at 10:40 AM, Abhijit Potnis
<abhijitpotnis@gmail.com> wrote:
> Hello Otavio,
>
> I don't find a point to have separate pc files for _wl variant. The fb
> default .pc files serve the purpose just right.
> To compile Wayland applications, one will have to link to wayland-egl.so
> separately. That will be provided by wayland-egl.pc file.

Confusing; it seems we have -wl.so backend files. Which .pc files
should we use for this case?

> If you still think there is need for the same. Then I can send across a
> patch incorporating that.

I am trying to understand :-) I didn't  test wayland yet.

--
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://projetos.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750
Abhijit Potnis - July 24, 2013, 5:57 p.m.
Hello Otavio,

Ya, Its very confusing ! :-)
The following snippet from the .inc file

    # We'll only have one backend here so we rename it to generic name
    # and avoid rework in other packages, when possible
    mv ${D}${libdir}/libEGL-${backend}.so ${D}${libdir}/libEGL.so.1
    ln -sf libEGL.so.1 ${D}${libdir}/libEGL.so
    mv ${D}${libdir}/libGAL-${backend}.so ${D}${libdir}/libGAL.so
    mv ${D}${libdir}/libVIVANTE-${backend}.so ${D}${libdir}/libVIVANTE.so



Renames all the -wl.so backend files to generic files. Like the
libGAL-wl.so is renamed to libGAL.so. Hence was my reason to say that the
default .pc files will do the job. The default .pc files are copied by this
piece of code in the present patch.

+        install -m 0644 ${WORKDIR}/egl.pc ${D}${libdir}/pkgconfig/egl.pc
+        install -m 0644 ${WORKDIR}/glesv1_cm.pc
${D}${libdir}/pkgconfig/glesv1_cm.pc
+        install -m 0644 ${WORKDIR}/glesv2.pc
${D}${libdir}/pkgconfig/glesv2.pc


Rest of the files pertaining to back-ends ( -x11.so, -fb.so ) other that
the one selected in DISTRO_FEATURE will be cleaned accordingly in the
do_install() step and what end up in the image are the .so's without the
backend suffix.

This is my understanding of the situation. I hope I haven't wrongly
analyzed this. Plz do let me know if I am wrong.

Regards,
Abhijit





On Wed, Jul 24, 2013 at 9:27 AM, Otavio Salvador <otavio@ossystems.com.br>wrote:

> On Wed, Jul 24, 2013 at 10:40 AM, Abhijit Potnis
> <abhijitpotnis@gmail.com> wrote:
> > Hello Otavio,
> >
> > I don't find a point to have separate pc files for _wl variant. The fb
> > default .pc files serve the purpose just right.
> > To compile Wayland applications, one will have to link to wayland-egl.so
> > separately. That will be provided by wayland-egl.pc file.
>
> Confusing; it seems we have -wl.so backend files. Which .pc files
> should we use for this case?
>
> > If you still think there is need for the same. Then I can send across a
> > patch incorporating that.
>
> I am trying to understand :-) I didn't  test wayland yet.
>
> --
> Otavio Salvador                             O.S. Systems
> http://www.ossystems.com.br        http://projetos.ossystems.com.br
> Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750
>
Otavio Salvador - July 24, 2013, 6:13 p.m.
On Wed, Jul 24, 2013 at 2:57 PM, Abhijit Potnis <abhijitpotnis@gmail.com> wrote:
> Hello Otavio,
>
> Ya, Its very confusing ! :-)
> The following snippet from the .inc file
>
>     # We'll only have one backend here so we rename it to generic name
>     # and avoid rework in other packages, when possible
>     mv ${D}${libdir}/libEGL-${backend}.so ${D}${libdir}/libEGL.so.1
>     ln -sf libEGL.so.1 ${D}${libdir}/libEGL.so
>     mv ${D}${libdir}/libGAL-${backend}.so ${D}${libdir}/libGAL.so
>     mv ${D}${libdir}/libVIVANTE-${backend}.so ${D}${libdir}/libVIVANTE.so
>
>
>
> Renames all the -wl.so backend files to generic files. Like the libGAL-wl.so
> is renamed to libGAL.so. Hence was my reason to say that the default .pc
> files will do the job. The default .pc files are copied by this piece of
> code in the present patch.
>
>
> +        install -m 0644 ${WORKDIR}/egl.pc ${D}${libdir}/pkgconfig/egl.pc
> +        install -m 0644 ${WORKDIR}/glesv1_cm.pc
> ${D}${libdir}/pkgconfig/glesv1_cm.pc
> +        install -m 0644 ${WORKDIR}/glesv2.pc
> ${D}${libdir}/pkgconfig/glesv2.pc
>
>
> Rest of the files pertaining to back-ends ( -x11.so, -fb.so ) other that the
> one selected in DISTRO_FEATURE will be cleaned accordingly in the
> do_install() step and what end up in the image are the .so's without the
> backend suffix.
>
> This is my understanding of the situation. I hope I haven't wrongly analyzed
> this. Plz do let me know if I am wrong.

Yes; your analysis seems correct; so this means the framebuffer .pc
files are compatible with the wl ones? If that is the case, your patch
seems correct.

--
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://projetos.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750
Abhijit Potnis - July 25, 2013, 6:40 a.m.
Hello Otavio,

The present package config files of that of framebuffer are compatible with
the wl ones. Additional wayland package config files are provided
separately by the patch. Thanks for making me recheck the pc files.

But:
There was a gross mistake from my end in the gc_wayland_protocol file, I (
or was it freescale, from where I got them) had worngly copied the contents
of wayland-egl pc file into gc_wayland_protoco.pc. I have now corrected it
and have resubmitted the patch.

Regards,
Abhijit


On Wed, Jul 24, 2013 at 11:43 PM, Otavio Salvador
<otavio@ossystems.com.br>wrote:

> On Wed, Jul 24, 2013 at 2:57 PM, Abhijit Potnis <abhijitpotnis@gmail.com>
> wrote:
> > Hello Otavio,
> >
> > Ya, Its very confusing ! :-)
> > The following snippet from the .inc file
> >
> >     # We'll only have one backend here so we rename it to generic name
> >     # and avoid rework in other packages, when possible
> >     mv ${D}${libdir}/libEGL-${backend}.so ${D}${libdir}/libEGL.so.1
> >     ln -sf libEGL.so.1 ${D}${libdir}/libEGL.so
> >     mv ${D}${libdir}/libGAL-${backend}.so ${D}${libdir}/libGAL.so
> >     mv ${D}${libdir}/libVIVANTE-${backend}.so ${D}${libdir}/libVIVANTE.so
> >
> >
> >
> > Renames all the -wl.so backend files to generic files. Like the
> libGAL-wl.so
> > is renamed to libGAL.so. Hence was my reason to say that the default .pc
> > files will do the job. The default .pc files are copied by this piece of
> > code in the present patch.
> >
> >
> > +        install -m 0644 ${WORKDIR}/egl.pc ${D}${libdir}/pkgconfig/egl.pc
> > +        install -m 0644 ${WORKDIR}/glesv1_cm.pc
> > ${D}${libdir}/pkgconfig/glesv1_cm.pc
> > +        install -m 0644 ${WORKDIR}/glesv2.pc
> > ${D}${libdir}/pkgconfig/glesv2.pc
> >
> >
> > Rest of the files pertaining to back-ends ( -x11.so, -fb.so ) other that
> the
> > one selected in DISTRO_FEATURE will be cleaned accordingly in the
> > do_install() step and what end up in the image are the .so's without the
> > backend suffix.
> >
> > This is my understanding of the situation. I hope I haven't wrongly
> analyzed
> > this. Plz do let me know if I am wrong.
>
> Yes; your analysis seems correct; so this means the framebuffer .pc
> files are compatible with the wl ones? If that is the case, your patch
> seems correct.
>
> --
> Otavio Salvador                             O.S. Systems
> http://www.ossystems.com.br        http://projetos.ossystems.com.br
> Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750
>

Patch

diff --git a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
index c10b837..42d815d 100644
--- a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
+++ b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc
@@ -7,7 +7,7 @@  SECTION = "libs"
 LICENSE = "Proprietary"
 LIC_FILES_CHKSUM = "file://usr/include/gc_vdk.h;endline=11;md5=19f5925343fa3da65596eeaa4ddb5fd3"
 DEPENDS += "${@base_contains('DISTRO_FEATURES', 'x11', 'virtual/libx11 libxdamage libxext libxfixes', '', d)} mesa"
-PROVIDES += "virtual/libgl virtual/libgal-x11 virtual/egl virtual/libgles1 virtual/libgles2"
+PROVIDES += "virtual/wayland-egl virtual/libgl virtual/libgal-x11 virtual/egl virtual/libgles1 virtual/libgles2"
 
 PE = "1"
 
@@ -20,6 +20,9 @@  SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true \
            file://glesv1_cm_x11.pc \
            file://glesv2.pc \
            file://glesv2_x11.pc \
+           file://gc_wayland_protocol.pc \
+           file://wayland-egl.pc \
+           file://wayland-viv.pc \
           "
 
 PACKAGES =+ "libclc-mx6 libclc-mx6-dev libclc-mx6-dbg \
@@ -34,10 +37,14 @@  PACKAGES =+ "libclc-mx6 libclc-mx6-dev libclc-mx6-dbg \
 	libgal-mx6 libgal-mx6-dev libgal-mx6-dbg \
 	libvivante-mx6 libvivante-mx6-dev libvivante-mx6-dbg \
 	libvivante-dri-mx6 \
+	libwayland-viv-mx6 libwayland-viv-mx6-dev libwayland-viv-mx6-dbg \
+	libgc-wayland-protocol-mx6 libgc-wayland-protocol-mx6-dev libgc-wayland-protocol-mx6-dbg \
+	libwayland-egl-mx6-dev \
 "
 
 USE_X11 = "${@base_contains("DISTRO_FEATURES", "x11", "yes", "no", d)}"
 USE_DFB = "${@base_contains("DISTRO_FEATURES", "directfb", "yes", "no", d)}"
+USE_WL = "${@base_contains("DISTRO_FEATURES", "wayland", "yes", "no", d)}"
 
 # Inhibit warnings about files being stripped.
 INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
@@ -85,13 +92,19 @@  do_install () {
     cp -axr ${S}/opt ${D}
 
     install -d ${D}${libdir}/pkgconfig
+  
+#If both X11 and Wayland are set in DISTRO_FEATURES then use Wayland as base window system
+    if [ "${USE_WL}" = "yes" ]; then
+        backend=wl        
 
-    # FIXME: Remove Wayland contents
-    rm -r ${D}${includedir}/wayland-viv
-    find ${D}${libdir} -name '*-wl.so' -exec rm '{}' ';'
-    rm ${D}${libdir}/*wayland*.so*
+        install -m 0644 ${WORKDIR}/egl.pc ${D}${libdir}/pkgconfig/egl.pc
+        install -m 0644 ${WORKDIR}/glesv1_cm.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc
+        install -m 0644 ${WORKDIR}/glesv2.pc ${D}${libdir}/pkgconfig/glesv2.pc
+        install -m 0644 ${WORKDIR}/gc_wayland_protocol.pc ${D}${libdir}/pkgconfig/gc_wayland_protocol.pc
+        install -m 0644 ${WORKDIR}/wayland-egl.pc ${D}${libdir}/pkgconfig/wayland-egl.pc
+        install -m 0644 ${WORKDIR}/wayland-viv.pc ${D}${libdir}/pkgconfig/wayland-viv.pc          
 
-    if [ "${USE_X11}" = "yes" ]; then
+    elif [ "${USE_X11}" = "yes" ]; then
         cp -r ${S}/usr/lib/dri ${D}${libdir}
         backend=x11
 
@@ -118,7 +131,7 @@  do_install () {
     mv ${D}${libdir}/libGAL-${backend}.so ${D}${libdir}/libGAL.so
     mv ${D}${libdir}/libVIVANTE-${backend}.so ${D}${libdir}/libVIVANTE.so
 
-    for backend in x11 fb dfb; do
+    for backend in wl x11 fb dfb; do
         find ${D}${libdir} -name "*-$backend.so" -exec rm '{}' ';'
     done
 
@@ -184,5 +197,17 @@  FILES_libvivante-mx6-dbg = "${libdir}/.debug/libVIVANTE${SOLIBS}"
 
 FILES_libvivante-dri-mx6 = "${libdir}/dri/vivante_dri.so"
 
+INSANE_SKIP_libwayland-viv-mx6 += "dev-so"                            
+FILES_libwayland-viv-mx6 =  "${libdir}/libwayland-viv${REALSOLIBS}  ${libdir}/libwayland-viv${SOLIBS}"
+FILES_libwayland-viv-mx6-dev = "${libdir})/libwayland-viv${SOLIBSDEV} ${libdir}/pkgconfig/wayland-viv.pc "
+FILES_libwayland-viv-mx6-dbg = "${libdir}/.debug/libwayland-viv${SOLIBS}"
+
+INSANE_SKIP_libgc-wayland-protocol-mx6 += "dev-so"
+FILES_libgc-wayland-protocol-mx6 = "${libdir}/libgc_wayland_protocol${REALSOLIBS} ${libdir}/libgc_wayland_protocol${SOLIBS}"
+FILES_libgc-wayland-protocol-mx6-dev = "${libdir}/libgc_wayland_protocol${SOLIBSDEV} ${libdir}/pkgconfig/gc_wayland_protocol.pc"
+FILES_libgc-wayland-protocol-mx6-dbg = "${libdir}/libgc_wayland_protocol${SOLIBS}"
+
+FILES_libwayland-egl-mx6-dev = "${libdir}/pkgconfig/wayland-egl.pc"
+
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 COMPATIBLE_MACHINE = "(mx6)"
diff --git a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/gc_wayland_protocol.pc b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/gc_wayland_protocol.pc
new file mode 100644
index 0000000..66ef31c
--- /dev/null
+++ b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/gc_wayland_protocol.pc
@@ -0,0 +1,10 @@ 
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: wayland-egl
+Description: Vivante Wayland Protocol Extension Library
+Version: 0.1
+Cflags: -I${includedir}
+Libs: -L${libdir} -lwayland-egl
diff --git a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/wayland-egl.pc b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/wayland-egl.pc
new file mode 100644
index 0000000..afaeb13
--- /dev/null
+++ b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/wayland-egl.pc
@@ -0,0 +1,10 @@ 
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: wayland-egl
+Description: Bind the driver EGL to the Wayland API
+Version: 0.1
+Libs: -L${libdir} -lEGL
+Cflags: -I${includedir}
diff --git a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/wayland-viv.pc b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/wayland-viv.pc
new file mode 100644
index 0000000..3fdedd0
--- /dev/null
+++ b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q/wayland-viv.pc
@@ -0,0 +1,10 @@ 
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: Wayland Vivante Lib
+Description: Wayland server side library for Vivante's EGL driver
+Version: 0.1
+Cflags: -I${includedir}/wayland-viv
+Libs: -L${libdir} -lwayland-viv