summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc315
-rw-r--r--recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.2.p0-aarch32.bb12
-rw-r--r--recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.2.2.p0.bb16
3 files changed, 343 insertions, 0 deletions
diff --git a/recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc b/recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc
new file mode 100644
index 00000000..b6f5f24e
--- /dev/null
+++ b/recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc
@@ -0,0 +1,315 @@
1# Copyright (C) 2012-2016 Freescale Semiconductor
2# Copyright (C) 2012-2016 O.S. Systems Software LTDA.
3# Released under the MIT license (see COPYING.MIT for the terms)
4
5DESCRIPTION = "GPU driver and apps for i.MX"
6SECTION = "libs"
7LICENSE = "Proprietary"
8LIC_FILES_CHKSUM = "file://COPYING;md5=08fd295cce89b0a9c74b9b83ed74f671"
9
10DEPENDS += " \
11 ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', \
12 bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/libx11 libxdamage libxext libxfixes', \
13 '', d), d)} \
14"
15DEPENDS += "libdrm"
16
17# imx-gpu-viv does not provide everything it needs to for virtual/libgl
18# on x11 backend or on Wayland backend with XWayland support.
19# We depend on mesa to fill in what is missing.
20DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'mesa', '', d)}"
21
22EXTRA_PROVIDES = ""
23EXTRA_PROVIDES_append_imxgpu3d = " virtual/libgl virtual/libgles1 virtual/libgles2"
24EXTRA_PROVIDES_append_mx6q = " virtual/opencl-icd opencl-headers"
25PROVIDES += "imx-gpu-viv virtual/wayland-egl virtual/libgal-x11 virtual/egl virtual/libopenvg ${EXTRA_PROVIDES}"
26
27RPROVIDES_${PN}_imxgpu3d += "imx-gpu-viv"
28
29PE = "1"
30
31inherit fsl-eula-unpack
32
33SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true"
34
35# Note : If you add a package here, to prevent a naming conflict see the python_anonymous() futher below
36PACKAGES =+ "libclc-imx libclc-imx-dev \
37 libgl-imx libgl-imx-dev \
38 libgles-imx libgles-imx-dev \
39 libgles2-imx libgles2-imx-dev \
40 libgles3-imx-dev \
41 libglslc-imx libglslc-imx-dev \
42 libopencl-imx libopencl-imx-dev \
43 libopenvg-imx libopenvg-imx-dev \
44 libvdk-imx libvdk-imx-dev \
45 libegl-imx libegl-imx-dev \
46 libgal-imx libgal-imx-dev \
47 libvivante-dri-imx \
48 libvsc-imx \
49 libgbm-imx libgbm-imx-dev \
50 libwayland-viv-imx libwayland-viv-imx-dev \
51 libgc-wayland-protocol-imx libgc-wayland-protocol-imx-dev \
52 libwayland-egl-imx-dev \
53 imx-gpu-viv-tools \
54 imx-gpu-viv-demos \
55 libvulkan-imx libvulkan-imx-dev \
56 libopenvx-imx libopenvx-imx-dev \
57"
58python __anonymous () {
59 has_vivante_kernel_driver_support = (d.getVar('MACHINE_HAS_VIVANTE_KERNEL_DRIVER_SUPPORT', True) or '0')
60 if has_vivante_kernel_driver_support != '1':
61 raise bb.parse.SkipPackage('The kernel of machine needs to have Vivante kernel driver support for this recipe to be used.')
62}
63
64USE_X11 = "${@bb.utils.contains("DISTRO_FEATURES", "x11", "yes", "no", d)}"
65USE_WL = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "yes", "no", d)}"
66
67# Inhibit warnings about files being stripped.
68INHIBIT_PACKAGE_STRIP = "1"
69INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
70
71# FIXME: The provided binary doesn't provide soname. If in future BSP
72# release the libraries are fixed, we can drop this hack.
73REALSOLIBS := "${SOLIBS}"
74SOLIBS = "${SOLIBSDEV}"
75
76# For the packages that make up the OpenGL interfaces, inject variables so that
77# they don't get Debian-renamed (which would remove the -imx suffix).
78#
79# FIXME: All binaries lack GNU_HASH in elf binary but as we don't have
80# the source we cannot fix it. Disable the insane check for now.
81python __anonymous() {
82 packages = d.getVar('PACKAGES', True).split()
83 for p in packages:
84 d.appendVar("INSANE_SKIP_%s" % p, " ldflags")
85
86 for p in (("libegl", "libegl1"), ("libgl", "libgl1"),
87 ("libgles1", "libglesv1-cm1"), ("libgles2", "libglesv2-2"),
88 ("libgles3",) , ("libvulkan",)):
89 fullp = p[0] + "-imx"
90 pkgs = " ".join(p)
91 d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
92 d.appendVar("RREPLACES_" + fullp, pkgs)
93 d.appendVar("RPROVIDES_" + fullp, pkgs)
94 d.appendVar("RCONFLICTS_" + fullp, pkgs)
95
96 # For -dev, the first element is both the Debian and original name
97 fullp += "-dev"
98 pkgs = p[0] + "-dev"
99 d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
100 d.appendVar("RREPLACES_" + fullp, pkgs)
101 d.appendVar("RPROVIDES_" + fullp, pkgs)
102 d.appendVar("RCONFLICTS_" + fullp, pkgs)
103}
104
105IS_MX6SL = "0"
106IS_MX6SL_mx6sl = "1"
107
108do_install () {
109 install -d ${D}${libdir}
110 install -d ${D}${includedir}
111 install -d ${D}${bindir}
112
113 cp -P ${S}/gpu-core/usr/lib/*.so* ${D}${libdir}
114 cp -r ${S}/gpu-core/usr/include/* ${D}${includedir}
115 cp -r ${S}/gpu-demos/opt ${D}
116 cp -r ${S}/gpu-tools/gmem-info/usr/bin/* ${D}${bindir}
117
118
119 install -d ${D}${libdir}/pkgconfig
120
121 # The preference order, based in DISTRO_FEATURES, is Wayland (with or without X11), X11 and fb
122 if [ "${USE_WL}" = "yes" ]; then
123
124 backend=wl
125
126 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/egl_wayland.pc ${D}${libdir}/pkgconfig/egl.pc
127 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv1_cm.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc
128 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv2.pc ${D}${libdir}/pkgconfig/glesv2.pc
129 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/vg.pc ${D}${libdir}/pkgconfig/vg.pc
130 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/gc_wayland_protocol.pc ${D}${libdir}/pkgconfig/gc_wayland_protocol.pc
131 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/wayland-egl.pc ${D}${libdir}/pkgconfig/wayland-egl.pc
132 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/wayland-viv.pc ${D}${libdir}/pkgconfig/wayland-viv.pc
133 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/gbm.pc ${D}${libdir}/pkgconfig/gbm.pc
134
135 if [ "${USE_X11}" = "yes" ]; then
136
137 cp -r ${S}/gpu-core/usr/lib/dri ${D}${libdir}
138
139 fi
140
141 elif [ "${USE_X11}" = "yes" ]; then
142
143 cp -r ${S}/gpu-core/usr/lib/dri ${D}${libdir}
144
145 backend=x11
146
147 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/gl_x11.pc ${D}${libdir}/pkgconfig/gl.pc
148 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/egl_x11.pc ${D}${libdir}/pkgconfig/egl.pc
149 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv1_cm_x11.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc
150 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv2_x11.pc ${D}${libdir}/pkgconfig/glesv2.pc
151 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/vg_x11.pc ${D}${libdir}/pkgconfig/vg.pc
152
153 else
154 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv1_cm.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc
155 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv2.pc ${D}${libdir}/pkgconfig/glesv2.pc
156 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/vg.pc ${D}${libdir}/pkgconfig/vg.pc
157
158 # Regular framebuffer
159 install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/egl_linuxfb.pc ${D}${libdir}/pkgconfig/egl.pc
160
161 backend=fb
162
163 fi
164
165 # Install Vendor ICDs for OpenCL's installable client driver loader (ICDs Loader)
166 install -d ${D}${sysconfdir}/OpenCL/vendors/
167 install -m 0644 ${S}/gpu-core/etc/Vivante.icd ${D}${sysconfdir}/OpenCL/vendors/Vivante.icd
168
169 # We'll only have one backend here so we rename it to generic name
170 # and avoid rework in other packages, when possible
171 mv ${D}${libdir}/libGL.so.1.2 ${D}${libdir}/libGL.so.1.2.0
172 ln -sf libGL.so.1.2.0 ${D}${libdir}/libGL.so.1.2
173 ln -sf libGL.so.1.2.0 ${D}${libdir}/libGL.so.1
174 ln -sf libGL.so.1.2.0 ${D}${libdir}/libGL.so
175 mv ${D}${libdir}/libEGL-${backend}.so ${D}${libdir}/libEGL.so.1.0
176 ln -sf libEGL.so.1.0 ${D}${libdir}/libEGL.so.1
177 ln -sf libEGL.so.1.0 ${D}${libdir}/libEGL.so
178 mv ${D}${libdir}/libGAL-${backend}.so ${D}${libdir}/libGAL.so
179 mv ${D}${libdir}/libVDK-${backend}.so ${D}${libdir}/libVDK.so
180
181 # update libglesv2 as backend dependent
182 rm -rf ${D}${libdir}/libGLESv2*
183 cp ${S}/gpu-core/usr/lib/libGLESv2-${backend}.so ${D}${libdir}/libGLESv2.so.2.0.0
184 ln -sf libGLESv2.so.2.0.0 ${D}${libdir}/libGLESv2.so.2
185 ln -sf libGLESv2.so.2.0.0 ${D}${libdir}/libGLESv2.so
186
187 # skip packaging wayland libraries if no support is requested
188 if [ "${USE_WL}" = "no" ]; then
189 rm ${D}${libdir}/libgc_wayland_protocol.*
190 rm ${D}${libdir}/libwayland-viv.*
191 fi
192
193 for i in wl x11 fb dri; do
194 find ${D}${libdir} -name "*-$i.so" -exec rm '{}' ';'
195 find ${D}${libdir} -name "*.$i.so" -exec rm '{}' ';'
196 done
197
198 # FIXME: MX6SL does not have 3D support; hack it for now
199 if [ "${IS_MX6SL}" = "1" ]; then
200 rm -rf ${D}${libdir}/libCLC* ${D}${includedir}/CL \
201 \
202 ${D}${libdir}/libGL* ${D}${includedir}/GL* ${D}${libdir}/pkgconfig/gl.pc \
203 \
204 ${D}${libdir}/libGLES* ${D}${libdir}/pkgconfig/gles*.pc \
205 \
206 ${D}${libdir}/libOpenCL* ${D}${includedir}/CL \
207 \
208 ${D}${libdir}/libOpenVG.3d.so \
209 \
210 ${D}${libdir}/libVivanteOpenCL.so \
211 \
212 ${D}/opt/viv_samples/vdk \
213 ${D}/opt/viv_samples/es20 ${D}/opt/viv_samples/cl11
214
215 ln -sf libOpenVG.2d.so ${D}${libdir}/libOpenVG.so
216 fi
217
218 find ${D}${libdir} -type f -exec chmod 644 {} \;
219 find ${D}${includedir} -type f -exec chmod 644 {} \;
220
221 chown -R root:root "${D}"
222}
223
224ALLOW_EMPTY_${PN} = "1"
225
226# FIXME: Remove the following lines after adding libopenvx package
227INSANE_SKIP_imx-gpu-viv-dev += "dev-elf"
228INSANE_SKIP_libclc-imx += "dev-deps"
229
230FILES_libclc-imx = "${libdir}/libCLC${SOLIBS}"
231FILES_libclc-imx-dev = "${includedir}/CL ${libdir}/libCLC${SOLIBSDEV}"
232
233# libEGL.so is used by some demo apps from Freescale
234INSANE_SKIP_libegl-imx += "dev-so"
235FILES_libegl-imx = "${libdir}/libEGL${REALSOLIBS} ${libdir}/libEGL${SOLIBSDEV} "
236FILES_libegl-imx-dev = "${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc"
237RDEPENDS_libegl-imx += "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'libgc-wayland-protocol-imx libwayland-viv-imx libgc-wayland-protocol-imx', '', d)}"
238RDEPENDS_libegl-imx-dev += "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'libwayland-egl-imx-dev', '', d)}"
239
240FILES_libgal-imx = "${libdir}/libGAL${SOLIBS} ${libdir}/libGAL_egl${SOLIBS}"
241FILES_libgal-imx-dev = "${libdir}/libGAL${SOLIBSDEV} ${includedir}/HAL"
242RDEPENDS_libgal-imx += "kernel-module-imx-gpu-viv"
243RPROVIDES_libgal-imx += "libgal-imx"
244INSANE_SKIP_libgal-imx += "build-deps"
245
246FILES_libvsc-imx = "${libdir}/libVSC${SOLIBS}"
247
248FILES_libgbm-imx = "${libdir}/libgbm${SOLIBS} ${libdir}/gbm_viv${SOLIBS}"
249FILES_libgbm-imx-dev = "${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h ${libdir}/libgbm${SOLIBSDEV}"
250RDEPENDS_libgbm-imx += "libdrm"
251
252FILES_libvulkan-imx = "${libdir}/vulkan/libvulkan_VSI${SOLIBS}"
253FILES_libvulkan-imx-dev = "${includedir}/vulkan ${libdir}/vulkan/libvulkan_VSI${SOLIBSDEV}"
254INSANE_SKIP_libvulkan-imx += "dev-deps dev-so"
255
256FILES_libopenvx-imx = "${libdir}/libOpenVX${SOLIBS} ${libdir}/libOpenVXC${SOLIBS} ${libdir}/libOpenVXU${SOLIBS}"
257FILES_libopenvx-imx-dev = "${includedir}/VX ${libdir}/libopenVX${SOLIBSDEV}"
258
259FILES_libgl-imx = "${libdir}/libGL${REALSOLIBS}"
260FILES_libgl-imx-dev = "${libdir}/libGL${SOLIBSDEV} ${includedir}/GL"
261# Includes GL headers from mesa
262RDEPENDS_libgl-imx-dev += "libgl-mesa-dev"
263
264# libEGL needs to open libGLESv1.so
265INSANE_SKIP_libgles-imx += "dev-so"
266FILES_libgles-imx = "${libdir}/libGLESv1*${REALSOLIBS} ${libdir}/libGLESv1*${SOLIBS} ${libdir}/libGLES_*${REALSOLIBS} ${libdir}/libGLES_*${SOLIBS}"
267FILES_libgles-imx-dev = "${includedir}/GLES ${libdir}/libGLESv1*${SOLIBS} ${libdir}/libGLES_*${SOLIBSDEV} ${libdir}/pkgconfig/glesv1_cm.pc"
268
269# libEGL needs to open libGLESv2.so
270INSANE_SKIP_libgles2-imx += "dev-so"
271FILES_libgles2-imx = "${libdir}/libGLESv2${REALSOLIBS} ${libdir}/libGLESv2${SOLIBS}"
272FILES_libgles2-imx-dev = "${includedir}/GLES2 ${libdir}/libGLESv2${SOLIBSDEV} ${libdir}/pkgconfig/glesv2.pc"
273RDEPENDS_libgles2-imx = "libglslc-imx"
274
275FILES_libgles3-imx-dev = "${includedir}/GLES3"
276# as long as there is no libgles3: ship libgles3-dev along with
277# libgles2-dev - otherwise GLES3 headers have to be added manually
278RDEPENDS_libgles2-imx-dev += "libgles3-imx-dev"
279
280FILES_libglslc-imx = "${libdir}/libGLSLC${SOLIBS}"
281FILES_libglslc-imx-dev = "${includedir}/CL ${libdir}/libGLSLC${SOLIBSDEV}"
282
283FILES_libopencl-imx = "${libdir}/libOpenCL${SOLIBS} \
284 ${libdir}/libVivanteOpenCL${SOLIBS} \
285 ${sysconfdir}/OpenCL/vendors/Vivante.icd"
286FILES_libopencl-imx-dev = "${includedir}/CL ${libdir}/libOpenCL${SOLIBSDEV}"
287RDEPENDS_libopencl-imx= "libclc-imx"
288
289INSANE_SKIP_libopenvg-imx += "dev-so"
290FILES_libopenvg-imx = "${libdir}/libOpenVG*${SOLIBS}"
291FILES_libopenvg-imx-dev = "${includedir}/VG ${libdir}/libOpenVG*${SOLIBSDEV} ${libdir}/pkgconfig/vg.pc"
292
293FILES_libvdk-imx = "${libdir}/libVDK${SOLIBS}"
294FILES_libvdk-imx-dev = "${includedir}/*vdk*.h ${libdir}/libVDK${SOLIBSDEV}"
295
296FILES_libvivante-dri-imx = "${libdir}/dri/vivante_dri.so"
297RDEPENDS_libvivante-dri-imx = "libdrm"
298
299INSANE_SKIP_libwayland-viv-imx += "dev-so"
300FILES_libwayland-viv-imx = "${libdir}/libwayland-viv${REALSOLIBS} ${libdir}/libwayland-viv${SOLIBS}"
301FILES_libwayland-viv-imx-dev = "${includedir}/wayland-viv ${libdir})/libwayland-viv${SOLIBSDEV} ${libdir}/pkgconfig/wayland-viv.pc"
302RPROVIDES_libwayland-viv-imx += "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'xf86-video-imxfb-vivante', '', d)}"
303
304INSANE_SKIP_libgc-wayland-protocol-imx += "dev-so"
305FILES_libgc-wayland-protocol-imx = "${libdir}/libgc_wayland_protocol${REALSOLIBS} ${libdir}/libgc_wayland_protocol${SOLIBS}"
306FILES_libgc-wayland-protocol-imx-dev = "${libdir}/libgc_wayland_protocol${SOLIBSDEV} ${libdir}/pkgconfig/gc_wayland_protocol.pc"
307
308FILES_libwayland-egl-imx-dev = "${libdir}/pkgconfig/wayland-egl.pc"
309
310FILES_imx-gpu-viv-tools = "${bindir}/gmem_info"
311
312FILES_imx-gpu-viv-demos = "/opt"
313INSANE_SKIP_imx-gpu-viv-demos += "rpaths dev-deps"
314
315# COMPATIBLE_MACHINE = "(mx6q|mx6dl|mx6sx|mx6sl)"
diff --git a/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.2.p0-aarch32.bb b/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.2.p0-aarch32.bb
new file mode 100644
index 00000000..9f3b7cc1
--- /dev/null
+++ b/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.2.p0-aarch32.bb
@@ -0,0 +1,12 @@
1# Copyright (C) 2013-2016 Freescale Semiconductor
2# Copyright 2017 NXP
3# Released under the MIT license (see COPYING.MIT for the terms)
4
5require recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc
6
7SRC_URI[md5sum] = "7d43f73b8bc0c1c442587f819218a1d5"
8SRC_URI[sha256sum] = "4f93a4412c93ca5959aa2437bfed2ecbaf983b5b272be5977f76a967de5db150"
9
10PACKAGE_FP_TYPE = "hardfp"
11
12COMPATIBLE_MACHINE = "(mx6q|mx6dl|mx6sx|mx6sl|mx7ulp)"
diff --git a/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.2.2.p0.bb b/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.2.2.p0.bb
new file mode 100644
index 00000000..8bf61dca
--- /dev/null
+++ b/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.2.2.p0.bb
@@ -0,0 +1,16 @@
1# Copyright (C) 2015-2016 Freescale Semiconductor
2# Copyright 2017 NXP
3
4SUMMARY = "Kernel loadable module for Vivante GPU"
5DESCRIPTION = "Builds the Vivante GPU kernel driver as a loadable kernel module, \
6allowing flexibility to use an older kernel with a newer graphics release."
7LICENSE = "GPLv2"
8LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
9
10SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.tar.gz"
11SRC_URI[md5sum] = "c5922730046c159fd5055ad114e027b9"
12SRC_URI[sha256sum] = "01b13fa5e1ab69475ce401e997fe8e42775b7792b1233e871b2b28555f8a3a66"
13
14inherit module
15
16KERNEL_MODULE_AUTOLOAD = "galcore"